The Evolution of DirectShow

The Evolution of DirectShow

In the early 1990s, after the release of Windows 3.1, a number of hardware devices were introduced to exploit the features of its graphical user interface. Among these were inexpensive digital cameras (known as webcams today), which used charge-coupled device (CCD) technology to create low-resolution black-and-white video. These devices often connected to the host computer through the computer s parallel port (normally reserved for the printer) with software drivers that could handle data transfer from the camera to the computer. As these devices became more common, Microsoft introduced Video for Windows (VFW), a set of software application program interfaces (APIs) that provided basic video and audio capture services that could be used in conjunction with these new devices. Although VFW proved to be sufficient for many software developers, it has a number of limitations; in particular, it s difficult to support the popular MPEG standard for video. It would take a complete rewrite of Video for Windows to do that.

As Windows 95 was nearing release, Microsoft started a project known as Quartz, chartered to create a new set of APIs that could provide all of Video for Window s functionality with MPEG support in a 32-bit environment. That seemed straightforward enough, but the engineers working on Quartz realized that a much broader set of devices just coming to market, such as digital camcorders and PC-based TV tuners, would require a more comprehensive level of support than anything they d planned to offer in a next-generation tool. Everywhere they looked, the designers of Quartz realized they couldn t possible imagine every scenario or even try to get it all into a single API.

Instead, the designers of Quartz chose a framework architecture, where the components can be snapped together, much like LEGO bricks. To simplify the architecture of a complex multimedia application, Quartz would provide a basic set of building components known as filters to perform essential functions such as reading data from a file, playing it to the speaker, rendering it to the screen, and so on.

Using the newly developed Microsoft Component Object Model (COM), Quartz tied these filters together into filter graphs, which orchestrated a flow of bits a stream from capture through any intermediate processing to its eventual output to the display. Through COM, each filter would be able to inquire about the capabilities of other filters as they were connected together into a filter graph. And because Quartz filters would be self-contained COM objects, they could be created by third-party developers for their own hardware designs or software needs. In this way, Quartz would be endlessly extensible; if you needed some feature that Quartz didn t have, you could always write your own filter.

The developers of Quartz raided a Microsoft research project known as Clockwork, which provided a basic framework of modular, semi-independent components working together on a stream of data. From this beginning, Quartz evolved into a complete API for video and audio processing, which Microsoft released in 1995 as ActiveMovie, shipping it as a component in the DirectX Media SDK. In 1996, Microsoft renamed ActiveMovie to DirectShow (to indicate its relationship with DirectX), a name it retains to this day.

In 1998, a subsequent release of DirectShow added support for DVDs and analog television applications, both of which had become commonplace. Finally, in 2000, DirectShow was fully integrated with DirectX, shipping as part of the release of DirectX 8. This integration means that every Windows computer with DirectX installed (and that s most PCs nowadays) has the complete suite of DirectShow services and is fully compatible with any DirectShow application. DirectX 8 also added support for Windows Media, a set of streaming technologies designed for high-quality audio and video delivered over low-bandwidth connections, and the DirectShow Editing Services, a complete API for video editing.

Microsoft bundled a new application into the release of Windows Millennium Edition: Windows Movie Maker. Built using DirectShow, it gives novice users of digital camcorders an easy-to-use interface for video capture, editing, and export an outstanding demonstration of the capabilities of the DirectShow API. In the two years after the release of DirectX 8, it s probably safe to say that most of the popular video editing applications have come to use DirectShow to handle the intricacies of communication with a wide array of digital camcorders. Those programmers of these applications made the same choice I did, using DirectShow to handle the low-level sorts of tasks that would have consumed many, many hours of research, programming, and testing.

With the release of DirectX 9 (the most recent, as this book is written), very little has changed in DirectShow, with one significant exception: the Video Mixing Renderer (VMR) filter. The VMR allows the programmer to mix multiple video sources into a single video stream that can be played within a window or applied as a texture map, a bit like wallpaper, to a surface of a 3D object created in Microsoft Direct3D.

Nearly any Windows application or tool that records or plays audio and/or video can benefit from DirectShow. The list of uses for DirectShow is lengthy, but the two most prominent examples are Windows Movie Maker (mentioned previously) and Windows Media Player. Both have shipped as standard components of Microsoft operating systems since Windows Millennium Edition, and tens of millions of people use them each day.



Programming Microsoft DirectShow for Digital Video and Television
Programming Microsoft DirectShow for Digital Video and Television (Pro-Developer)
ISBN: 0735618216
EAN: 2147483647
Year: 2002
Pages: 108
Authors: Mark D. Pesce

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net