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. A Multimedia Framework (MMF is a Software framework that handles media on a computer and through a network Microsoft Corporation is an American multinational Computer technology Corporation, which rose to dominate the Home computer A software developer is a person or organization concerned with facets of the software development process wider than design and coding a somewhat broader scope of It is the replacement for Microsoft's earlier Video for Windows technology. Video for Windows (VfW also referred to as Video Compression Manager (VCM was a Multimedia framework developed by Microsoft that allowed Microsoft Windows [1] Based on the Microsoft Windows Component Object Model (COM) framework, DirectShow provides a common interface for media across many programming languages, and is an extensible, filter-based framework that can render or record media files on demand at the behest of the user or developer. Microsoft Windows is a series of Software Operating systems and Graphical user interfaces produced by Microsoft. Component Object Model ( COM) is an interface standard for Software componentry introduced by Microsoft in 1993 A programming language is an Artificial language that can be used to write programs which control the behavior of a machine particularly a Computer. A filter is a computer program to process a Data stream. Some Operating systems such as Unix are rich with filter programs The DirectShow development tools and documentation were originally distributed as part of the DirectX SDK, however, they are currently distributed as part of the Windows SDK (formerly known as the Platform SDK). The Microsoft Windows SDK (Software Development Kit is a Software development kit from Microsoft that contains Header files libraries, [2]
DirectShow's counterparts include Apple's QuickTime framework and gstreamer. Apple Inc, ( formerly Apple Computer Inc, is an American Multinational corporation with a focus on designing and manufacturing Consumer electronics QuickTime is a Multimedia framework developed by Apple Inc, capable of handling various formats of Digital video, Media clips sound text GStreamer is a pipeline based Multimedia framework written in the C programming language with the type system based on GObject. Microsoft plans to replace DirectShow with Media Foundation in future Windows versions beginning with Windows Vista. Microsoft Media Foundation (MF is a COM-based Multimedia framework pipeline and infrastructure platform for digital media in Windows Vista. Windows Vista (ˈvɪstə is a line of Operating systems developed by Microsoft for use on Personal computers including home and business desktops [3]
Contents |
The direct predecessor of DirectShow, ActiveMovie (codenamed Quartz), was originally chartered to provide MPEG-1 file playback support for Windows. ActiveMovie is a Streaming media technology now known as DirectShow, developed by Microsoft to replace Video for Windows. MPEG-1 was an early Standard for Lossy compression of Video and audio. It was also intended as a future replacement for media processing frameworks like Video for Windows, which had never been designed to handle codecs that put video frames into a different order during the compression process, and the Media Control Interface, which had never been fully ported to a 32-bit environment and did not utilize COM. Video for Windows (VfW also referred to as Video Compression Manager (VCM was a Multimedia framework developed by Microsoft that allowed Microsoft Windows A codec is a device or program capable of encoding and/or decoding a Digital Data stream or signal. The Media Control Interface, MCI in short is an aging high-level API developed by Microsoft and IBM for controlling multimedia peripherals connected [1]
The Quartz team started with an existing project called Clockwork. Clockwork was a modular media processing framework in which semi-independent components worked together to process digital media streams, and had previously been used in several projects, including the Microsoft Interactive Television (MITV) project and another project named Tiger. [4]
ActiveMovie was announced in March 1996, [5] and released in May 1996, bundled with the beta version of Internet Explorer 3.0. Windows Internet Explorer (formerly Microsoft Internet Explorer abbreviated MSIE) commonly abbreviated to IE, is a series of graphical [6] In March 1997, Microsoft announced that ActiveMovie would become part of the DirectX 5 suite of technologies,[7] and around July started referring to it as DirectShow,[8] reflecting Microsoft's efforts at the time to consolidate technologies that worked directly with hardware under a common naming scheme. Microsoft DirectX is a collection of Application programming interfaces (APIs for handling tasks related to Multimedia, especially Game programming and [9] DirectShow became a standard component of all Windows operating systems starting with Windows 98. Windows 98 ( codenamed Memphis) is a graphical Operating system released on 25 June 1998 by Microsoft and the successor to Windows 95 [10] In DirectX version 8. 0, DirectShow became part of the mainline distribution of the DirectX SDK and was placed alongside other DirectX APIs. [11]
In October 2004, DirectShow was removed from the main DirectX distribution and relocated to the DirectX Extras download. In April of 2005, DirectShow was removed entirely from DirectX and moved to the Windows Server 2003 SP1 version of the Microsoft Platform SDK. [2] The DirectX SDK was, however, still required to build some of the DirectShow samples. [12]
DirectShow divides a complex multimedia task (e. g. video playback) into a sequence of fundamental processing steps known as filters. A filter is a computer program to process a Data stream. Some Operating systems such as Unix are rich with filter programs [13] [14] Each filter — which represents one stage in the processing of the data — has input and/or output pins that may be used to connect the filter to other filters. The generic nature of this connection mechanism enables filters to be connected in various ways so as to implement different complex functions. [15] To implement a specific complex task, a developer must first build a filter graph by creating instances of the required filters, and then connecting the filters together. A filter graph is used in Multimedia processing For example to capture video from a Webcam. [16]
GraphEdit is the GUI that can be used to visually build and test filter graphs. GraphEdit is a utility which is part of the Microsoft DirectShow SDK A filter graph is used in Multimedia processing For example to capture video from a Webcam. [17] During the rendering process, the filter graph searches the Windows Registry for registered filters and builds its graph of filters based on the locations provided. The Windows registry is a directory which stores settings and options for the Operating system for Microsoft Windows 32-bit versions 64-bit versions and After this, it connects the filters together, and, at the developer's request, executes (i. e. , plays, pauses, etc. ) the created graph. DirectShow filter graphs are widely used in video playback (in which the filters implement functions such as file parsing, video and audio demultiplexing, decompressing and rendering) as well as for video and audio recording and editing. Interactive tasks such as DVD navigation may also be controlled by DirectShow.
In the above example, from left to right, the graph contains a source filter to read an MP3 file, stream splitter and decoder filters to parse and decode the audio, and a rendering filter to play the raw audio samples. In computing the term stream is used in a number of ways in all cases referring to a succession of data elements made available over time Each filter has one or more pins that can be used to connect that filter to other filters. Every pin functions either as an output or input. Depending on the filter, data is either "pulled" from an input pin or "pushed" to an output pin in order to transfer data between filters.
Most filters are built using a set of C++ classes provided in the DirectShow SDK, called the DirectShow Base Classes. [18] These handle much of the creation, registration and connection logic for the filter. For the filter graph to use filters automatically, they need to be registered in a separate DirectShow registry entry as well as being registered with COM. This registration can be managed by the DirectShow Base Classes. However, if the application adds the filters manually, they do not need to be registered at all.
Unfortunately, it is difficult to modify a graph that is already running. It is usually easier to stop the graph and create a new graph from scratch. Starting with DirectShow 8. 0 dynamic graph building, dynamic reconnection, and filter chains were introduced to help alter the graph while it was running. [19] However, many filter vendors ignore this feature, making graph modification problematic after a graph has begun processing.
By default, DirectShow includes a limited number of filters for decoding some common media file formats such as MPEG-1, MP3, Windows Media Audio, Windows Media Video, MIDI, media containers such as AVI, ASF, WAV, some splitters/demultiplexers, multiplexers, source and sink filters and some static image filters. MPEG-1 was an early Standard for Lossy compression of Video and audio. MPEG-1 Audio Layer 3, more commonly referred to as MP3, is a Digital audio encoding format using a form of Lossy data compression Windows Media Audio ( WMA) is an Audio data compression technology developed by Microsoft. Windows Media Video ( WMV) is a compressed Video file format for several proprietary Codecs developed by Microsoft. MIDI ( Musical Instrument Digital Interface, ˈmɪdi is an industry-standard protocol that enables Electronic musical instruments Computers A container format is a computer file format that can contain various types of data compressed by means of standardized audio/video codecs. Advanced Systems Format (formerly Advanced Streaming Format, Active Streaming Format) is Microsoft 's proprietary Digital audio WAV (or WAVE) short for Waveform Audio format, is a Microsoft and IBM Audio file format standard for storing an audio bitstream on [20] Since the associated patented technologies are licensed in Windows, no license fees are required (e. g. , to Fraunhofer, for MP3). The Fraunhofer Society (Fraunhofer-Gesellschaft is a German research organization with 58 institutes spread throughout Germany each focusing on different fields of applied Notably, support for popular and standard modern codecs such as MPEG-4 Advanced Simple Profile, AAC, H.264, Vorbis and containers Ogg, MOV, MP4 is absent. MPEG-4 is a collection of methods defining compression of audio and visual (AV digital data Advanced Audio Coding ( AAC) is a standardized lossy compression and encoding scheme for Digital audio. H264 is a standard for Video compression. It is also known as MPEG-4 Part 10, or MPEG-4 AVC (for Advanced Video Coding) Vorbis is a free and open source, lossy audio Codec project headed by the Xiph To learn how to create video or audio files for Wikipedia and its sister projects check WikipediaCreation and usage of media files. MPEG-4 Part 14, formally ISO / IEC 14496-142003, is a Multimedia Container format standard specified as a part of MPEG-4 Incorporating support for additional codecs such as these involves paying the licensing fees to the involved codec technology developer or patent holder.
However, DirectShow's standard format repertoire can be easily expanded by means of a variety of commercial and open source filters. Such filters enable DirectShow to support virtually any container format and any audio or video codec. For example, filters have been developed for Ogg Vorbis[21], Musepack [22] and AC3 [23]. Vorbis is a free and open source, lossy audio Codec project headed by the Xiph Musepack or MPC is an Open source lossy audio codec, specifically optimized for transparent compression of stereo audio at bitrates of 160&ndash180 Dolby Digital is the marketing name for a series of lossy audio compression technologies developed by Dolby Finally, there are "bridge" filters that simultaneously support multiple formats, as well as functions like stream multiplexing, by exposing the functionality of underlying multimedia APIs such as VLC. [24]
The amount of work required to implement a filter graph depends on several factors. In the simplest case, DirectShow can create a filter graph automatically from a source such as a file or URL. [25] If this is not possible, the developer may be able to manually create a filter graph from a source file, possibly with the addition of a custom filter, and then let DirectShow complete the filter graph by connecting the filters together. At the next level, the developer must build the filter graph from scratch by manually adding and connecting each desired filter. Finally, in cases where an essential filter is unavailable, the developer must create a custom filter before a filter graph can be built.
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. 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 lessened this. ActiveX is a Component object model (COM developed by Microsoft for Windows.
DirectShow Editing Services (DES), introduced in DirectX 8. Microsoft DirectX is a collection of Application programming interfaces (APIs for handling tasks related to Multimedia, especially Game programming and 0 / Windows XP is an API targeted at video editing tasks and built on top of the core DirectShow architecture. Windows XP is a family of 32-bit and 64-bit Operating systems produced by Microsoft for use on Personal computers including home and DirectShow Editing Services was introduced for Microsoft's Windows Movie Maker [1]. It includes APIs for timeline and switching services, resizing, cropping, video and audio effects, as well as transitions, keying, automatic frame rate and sample rate conversion and such other features which are used in non-linear video editing allowing creation of composite media out of a number of source audio and video streams. Compositing is the combining of visual elements from separate sources into single images often to create the illusion that all those elements are parts of the same scene Frame rate, or frame frequency, is the measurement of the Frequency (rate at which an imaging device produces unique consecutive images called frames The Sample rate conversion is the process of converting a (usually digital signal from one Sampling rate to another while changing the information carried by the signal as little "NLE" redirects here For the standardized test see National Latin Examination. DirectShow Editing Services allow higher-level run-time compositing, seeking support, and graph management, while still allowing applications to access lower-level DirectShow functions.
The DirectShow Editing Services API is accessible from C++ languages including Microsoft Visual C++. Recent developments however, have allowed it to be accessible from any other Microsoft . NET compatible language including Microsoft Visual C# and Microsoft Visual Basic by using a third-party code library called DirectShow Lib. Microsoft Visual C# is Microsoft 's implementation of the C# programming language specification included in the Microsoft Visual Studio Visual Basic.NET ( VBNET) is an object-oriented Computer language that can be viewed as an evolution of Microsoft's Visual Basic [26]
Alternatively, the entire DirectShow API, including DirectShow Editing Services, can be accessed from Borland Delphi 5, 6 and 7, C++ Builder 6, and from later versions with a few minor modifications, using a third party software library called DSPack. C++ Builder is a Rapid application development (RAD environment produced by the CodeGear subsidiary of Borland for writing programs in the C++ [27]
Originally, the way to play video in DirectShow was to use the Video Renderer filter. This drew the images using DirectDraw, but could also fall back to GDI drawing in some circumstances. DirectDraw is part of Microsoft 's DirectX API. DirectDraw is used to Render graphics in applications where top performance is important The Graphics Device Interface (GDI is one of the three core components or "subsystems" together with the kernel and the Windows API for the user interface [28] It had limited access to the video window. Video for Windows had been plagued with deadlocks caused by applications' incorrect handling of the video windows, so in early DirectShow releases, the handle to the playback window was hidden from applications. Video for Windows (VfW also referred to as Video Compression Manager (VCM was a Multimedia framework developed by Microsoft that allowed Microsoft Windows A deadlock is a situation wherein two or more competing actions are waiting for the other to finish and thus neither ever does There was also no reliable way to draw caption text or graphics on top of the video.
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. DirectX Media is a set of Multimedia -related APIs for Microsoft Windows complementing DirectX. DVD (also known as " Digital Versatile Disc " or " Digital Video Disc " - see Etymology)is For the band see Broadcast (band Broadcasting is the distribution of audio and/or Video signals which transmit Closed captioning is a term describing several systems developed to display text on a Television or Video screen to provide additional or interpretive The Overlay Mixer uses DirectDraw for rendering. DirectDraw is part of Microsoft 's DirectX API. DirectDraw is used to Render graphics in applications where top performance is important Downstream connection with the Video Renderer is required for window management. Overlay Mixer also supports Video Port Extensions (VPE), enabling to work with analog TV tuners with overlay capability (sending video directly to a video card via an analog link rather than via the PCI bus). A TV tuner card is a computer component that allows Television signals to be received by a Computer. The Peripheral Component Interconnect, or PCI Standard (commonly PCI) specifies a Computer bus for attaching peripheral devices to a Computer Overlay Mixer also supports DXVA connections. DirectX Video Acceleration ( DXVA) is a Microsoft API specification for the Microsoft Windows and Xbox 360 platforms that allows
Windows XP introduced a new filter called the Video Mixing Renderer 7 (VMR-7 or sometimes just referred to as VMR). Windows XP is a family of 32-bit and 64-bit Operating systems produced by Microsoft for use on Personal computers including home and The number 7 was because VMR-7 only used DirectDraw version 7 to render the video and did not have the option to use GDI drawing. DirectDraw is part of Microsoft 's DirectX API. DirectDraw is used to Render graphics in applications where top performance is important The main new feature of VMR-7 was the ability to mix multiple streams and graphics, allowing applications to draw text and graphics over the video. [29] VMR-7 also featured a "windowless mode" which fixed the problems with access to the window handle. [30] VMR-7 was only officially released for Windows XP. Windows XP is a family of 32-bit and 64-bit Operating systems produced by Microsoft for use on Personal computers including home and
DirectX 9 included VMR-9. This version uses Direct3D 9 instead of DirectDraw. Direct3D is part of Microsoft 's DirectX API. Direct3D is only available for Microsoft's various Windows Operating systems ( Windows DirectDraw is part of Microsoft 's DirectX API. DirectDraw is used to Render graphics in applications where top performance is important [31] It is available for all Windows platforms as part of the DirectX 9 redistributable.
Windows Vista ships with a new renderer, available as both a Media Foundation component and a DirectShow filter, called the Enhanced Video Renderer (EVR). Windows Vista (ˈvɪstə is a line of Operating systems developed by Microsoft for use on Personal computers including home and business desktops Microsoft Media Foundation (MF is a COM-based Multimedia framework pipeline and infrastructure platform for digital media in Windows Vista. [32] EVR supports DXVA 2.0, which is exclusive to Windows Vista. DirectX Video Acceleration ( DXVA) is a Microsoft API specification for the Microsoft Windows and Xbox 360 platforms that allows [33]
Commanding DirectShow to play a file is a relatively simple task. However, while programming more advanced customizations, such as commanding DirectShow to display certain windows messages from the video window or creating custom filters, many developers complain of difficulties. [34] [35] [36] It is often regarded as one of Microsoft's most complex development libraries/APIs. [37]
Developers rarely create DirectShow filters from scratch, rather, they employ DirectShow Base Classes. The Base Classes can often simplify development, allowing the programmer to bypass certain tasks. However, the process may remain relatively complex; the code found in the Base Classes is nearly half the size of the entire MFC library. As a result, even with the Base Classes, the number of COM objects that DirectShow contains overwhelms many developers. In some cases, DirectShow's API deviates from traditional COM rules, particularly with regard to the parameters used for methods. In Object-oriented programming, the term method refers to a Subroutine that is exclusively associated either with a class (called class methods 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. This API provides the developer with an ActiveX Control that has fewer COM interfaces to deal with.
Although DirectShow is capable of dynamically building a graph to render a given media type [19], it may become difficult for developers to rely on this functionality and they may need to resort to manually building filter graphs if the resulting filter graph is variable. It is possible for filter graphs to change over time as new filters are install on the computer.
DirectShow has also been criticized for its support of digital rights management (DRM). Digital rights management ( DRM) is a generic term that refers to Access control technologies used by hardware manufacturers publishers and Copyright holders However, this criticism appears misplaced, as DirectShow itself has minimal support for DRM in its API. [38] The Windows Media Player SDK more significantly reflects Microsoft's adherence to DRM.
Codec hell (a term derived from DLL hell) is when multiple DirectShow filters conflict for performing the same task. In Computing, DLL hell is a colloquial term for the complications that arise when working with dynamic link libraries, (DLLs used with Microsoft Windows A large number of companies now develop codecs in the form of DirectShow filters, resulting in the presence of several filters that can decode the same media type. [39] [40] 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. [41]
Microsoft's Ted Youmans explained that "[DirectShow] was based on the merit system, with the idea being that, using a combination of the filter’s merit and how specific the media type/sub type is, one could reasonably pick the right codec every time. It wasn't really designed for a competing merit nuclear arms race. " [41]
A tool to help in the troubleshooting of "codec hell" issues usually referenced is the GSpot Codec Information Appliance [42] which can be useful in determining what codec is used to render video files in AVI and other containers. GraphEdit can also help understanding the sequence of filters that DirectShow is using to render the media file. GraphEdit is a utility which is part of the Microsoft DirectShow SDK Codec hell can be resolved by manually building filter graphs, using a media player that supports ignoring or overriding filter merits, or by using a filter manager that changes filter merits in the Windows Registry. The Windows registry is a directory which stores settings and options for the Operating system for Microsoft Windows 32-bit versions 64-bit versions and
DirectShow is a developer-centric framework and API. It does not directly offer end-user control over encoding content, neither does it incorporate a user interface for encoding using installed codecs or to different formats, instead relying on developers to develop software using the API. 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. QuickTime is a Multimedia framework developed by Apple Inc, capable of handling various formats of Digital video, Media clips sound text Video for Windows (VfW also referred to as Video Compression Manager (VCM was a Multimedia framework developed by Microsoft that allowed Microsoft Windows The convenience offered by an end-user GUI is apparent since the AVI format and codecs used by Video for Windows, remain in use in spite of their obsolescence. Video for Windows (VfW also referred to as Video Compression Manager (VCM was a Multimedia framework developed by Microsoft that allowed Microsoft Windows