DirectShow

DirectShow (sometimes abbreviated as DS or DShow), codename Quartz, is a multimedia framework and API produced by Microsoft for software developers to perform various operations with media files or streams.

[1] Based on the Microsoft Windows Component Object Model (COM) framework, DirectShow provides a common interface for media across various programming languages, and is an extensible, filter-based framework that can render or record media files on demand at the request of the user or developer.

[3] Microsoft plans to completely replace DirectShow gradually with Media Foundation in future Windows versions.

One reason cited by Microsoft is to provide "much more robust support for content protection systems"[4] (see digital rights management).

The direct predecessor of DirectShow, ActiveMovie (codenamed Quartz), was designed to provide MPEG-1 support for Windows.

[6][1] The development team used a pre-existing modular digital-media-processor project codenamed "Clockwork" as a basis for DirectShow.

[7] The project was initially named "ActiveMovie", and was released in May 1996, bundled with the beta version of Internet Explorer 3.0.

[8][9] In March 1997, Microsoft announced that ActiveMovie would become part of the DirectX 5 suite of technologies, and around July started referring to it as DirectShow, reflecting Microsoft's efforts at the time to consolidate technologies that worked directly with hardware under a common naming scheme.

[17] DirectShow divides a complex multimedia task (e.g. video playback) into a sequence of fundamental processing steps known as filters.

In the simplest case, DirectShow can create a filter graph automatically from a source such as a file or URL.

[citation needed] Unlike the main C API of QuickTime where it is necessary to call MoviesTask in a loop to load a media file, DirectShow handles all of this in a transparent way.

It creates several background threads that smoothly play the requested file or URL without much work required from the programmer.

[citation needed] Also in contrast to QuickTime, nothing special is required for loading a URL instead of a local file on disk – DirectShow's filter graph abstracts these details from the programmer, although recent developments in QuickTime (including an ActiveX control) have reduced this disparity.

[33] As of March, 2012[34] (and, apparently as early as 2009[35]), Microsoft has stated that the DirectShow Editing Services "API is not supported and may be altered or unavailable in the future."

[citation needed] DirectShow 6.0, released as part of DirectX Media introduced the Overlay Mixer renderer designed for DVD playback and broadcast video streams with closed captioning and subtitles.

Starting with Windows XP, a new filter called the Video Mixing Renderer 7 (VMR-7 or sometimes just referred to as VMR) was introduced.

However, the process may remain relatively complex;[citation needed] the code found in the Base Classes is nearly half the size of the entire MFC library.

[citation needed] As a result, even with the Base Classes, the number of COM objects that DirectShow contains often overwhelms developers.

[citation needed][weasel words] In some cases, DirectShow's API deviates from traditional COM rules, particularly with regard to the parameters used for methods.

[citation needed][weasel words] To overcome their difficulties with DirectShow's unique COM rules, developers often turn to a higher level API that uses DirectShow, notably, Windows Media Player SDK, an API provides the developer with an ActiveX Control that has fewer COM interfaces to deal with.

[50][51] This issue is further exacerbated by DirectShow's merit system, where filter implementations end up competing with one another by registering themselves with increasingly elevated priority.

In contrast, other multimedia frameworks such as QuickTime or Video for Windows allow end-users to perform basic video-related tasks such as re-encoding using a different codec and editing files and streams.

[citation needed] The convenience offered by an end-user GUI is apparent since the AVI format and codecs used by Video for Windows still remain in use, for example VirtualDub.

Filter graph of an mp3 file, as rendered by the DirectShow sample in GraphEdit , an application with a GUI for DirectShow used to visually build and test filter graphs. [ 22 ] In this picture the boxes represent filters and the grey dots appearing on the sides of the filters represent pins.