Microsoft DirectX 8.0

Basic Concepts in DirectShow Editing Services

This article contains the following topics.

Architecture

The following illustration shows the architecture of Microsoft® DirectShow® Editing Services (DES).

DirectShow Editing Services Architecture

DES and the DirectShow Core API

DirectShow controls streams of multimedia data through modular components called filters. A filter is a component that takes a media stream as input, does something to it, and passes the result as output. Filters can also combine multiple streams or split one stream into multiple output streams. A filter graph is a collection of filters chained together. Source filters take media data from a source file and introduce it into the filter graph. Rendering filters render the stream as video, audio, or some other type of finished output. The media stream travels from source filter to rendering filter, typically passing through other filters along the way.

A timeline in DES is an abstract description of a video editing project. It specifies the source clips used in the project, their start and stop times, the placement of any effects or transitions, and so forth. By itself, however, the timeline cannot render the video and audio that it represents. This is the function of the render engine. The render engine translates a timeline into a filter graph. The filter graph, when run, renders the project—either directly to the screen as a preview, or as output to a file. An application manipulates the timeline rather than directly manipulating the filter graph, which would be cumbersome and error prone.

Structure of a Typical Application

The following table lists the primary tasks that a typical video editing application performs, along with the DES interfaces that support each task. Later sections describe these tasks and the interfaces in more detail.

TaskInterface(s)
Construct or modify a timeline.IAMTimeline and the other IAMTimelineXXXX interfaces
Save and load project files.IXml2Dex
Preview a project or write it to a file.IRenderEngine, ISmartRenderEngine

In addition to these primary tasks, an application might perform some or all of the following secondary tasks.

TaskInterface(s)
Obtain information about media files. (Number of streams; format and duration of each stream.)IMediaDet
Set properties on transitions and effects.IPropertySetter
Receive notification when errors occur during rendering.IAMSetErrorLog, IAMErrorLog
Retrieve poster frames.IMediaDet, ISampleGrabber