Microsoft DirectX 8.1 (C++) |
This section provides background information on the underlying DirectShow filters and drivers that comprise the Microsoft TV Technologies system architecture. This material is relevant for developers of third-party components such as Guide Store Loaders, MPEG-2 decoders, and BDA device drivers. Applications running on Windows® XP Home Edition and Windows XP Professional do not communicate directly with the filter graph. Applications running on Windows 98SE, Windows Me, or Windows 2000 cannot use the Video Control or Guide Store, and so these applications are responsible for creating and controlling the filter graph and storing tune requests.
The following illustration shows all of the Microsoft TV Technologies system components and their relationships.
BDA Device Filters: The driver specification associated with Microsoft TV Technologies is called Broadcast Driver Architecture (BDA). BDA is used by independent hardware vendors (IHVs) who wish to create digital TV tuning devices that work with Windows. IHVs also use BDA to extend Microsoft TV Technologies support for new network types or custom hardware functionality. BDA-compatible drivers are automatically represented as the BDA tuner, BDA capture filter, and/or BDA demodulator in the filter graph through the KsProxy wrapper filter. The actual names of these filters, and the number of different filters used to represent the BDA device, may vary depending on the IHV who develops the drivers. Application developers do not need to be concerned with the details of BDA. BDA is documented in the Microsoft Platform DDK for Windows XP Home Edition and Windows XP Professional, and in the DirectX 8.1 DDK. The BDA device filters are exposed through the Video Control as the MSVidBDATunerDevice object.
BDA Network Provider: A filter graph based on BDA devices must begin with a BDA Network Provider filter. This user-mode filter works closely with the BDA Tuner, the MPEG-2 Demultiplexer, and the BDA Transport Information Filter to perform tuning and the routing of elementary streams based on the tune request submitted through the Video Control. Microsoft provides two network provider filters, one for ATSC networks and one for DVB networks.
MPEG-2 Demultiplexer: In a digital TV graph, the MPEG-2 demultiplexer accepts the MPEG-2 transport stream from the capture filter and demultiplexes the stream based on packet IDs (PIDs) provided by the Network Provider. The MPEG-2 demultiplexer typically has four output pins. The first pin delivers raw program service information (PSI) packets to the Transport Information Filter. The second pin delivers the video stream to the MPEG-2 decoder. The third pin delivers the audio to the audio decoder, and the fourth pin delivers IP data. The MPEG-2 Demultiplexer also works in non-BDA filter graphs but the application is responsible for setting up the output pins.
Transport Information Filter: So that a receiver can properly acquire all the elementary streams related to a specific program, and so that a receiver can tell what programs are contained in the stream, the transport stream will also contain many sets of tables that act as a catalog of information contained in the transport stream. Under direction of the Network Provider, the MPEG-2 Demultiplexer delivers these tables to the Transport Information Filter, which then parses these tables and provides the information to the Network Provider so that it can control the other receiver filters. The Transport Information Filter also provides an interface that enables a Guide Store Loader to obtain in-band EPG information for storage in the Guide Store. Third parties such as cable providers can provide support for non-standard networks by developing a custom Transport Information Filter to add to the filter graph. For more information, see Adding Support for New Network Types.
HDTV-capable MPEG-2 Decoder: A digital TV filter graph requires a third-party decoder that is capable of decoding High Definition Television (HDTV) video streams. Some decoder implementations may operate on both audio and video streams in the same filter, while others may have separate filters for audio and video. To achieve the performance necessary to support HDTV, the decoder should support Microsoft DirectX Video Acceleration (DXVA). DXVA is a specification for hardware acceleration of digital video decoding processing, with support of alpha blending for such purposes as DVD subpicture support. DXVA is documented in the Microsoft Platform DDK for Windows XP Home Edition and Windows XP Professional, and in the DirectX 8.1 DDK. The user-mode interface for DXVA, IAMVideoAccelerator, is used by software decoders and is documented in this SDK.
Note The illustration above shows a software decoder. Hardware decoders are also supported. When a hardware decoder is used, the Video Port Manager filter connects to one of the decoder’s output pins and manages the video port connection to the graphics card.
Video Mixing Renderer: The Video Mixing Renderer (VMR) is a new DirectShow filter, available exclusively on Windows XP Home Edition and Windows XP Professional, that replaces both the Overlay Mixer filter and Video Renderer filter. For more information, see Using the Video Mixing Renderer. This filter is exposed to applications through the Video Control as the MSVidVideoRenderer object.
DirectSound Audio Renderer: The audio renderer receives the decoded audio stream from the MPEG-2 decoder and plays it through the system’s speakers. The functionality provided by this filter is exposed to applications through the Video Control’s MSVidAudioRenderer object.
Conditional Access Manager: The conditional access objects provide applications and content providers with a simple and extensible means to protect content and prevent unauthorized viewing. Third parties create policies that can limit a user's access unless the user meets certain requirements. A policy may be implemented on a BDA device driver as a CA plug-in, or it may be implemented as a user mode component. The CA Manager is instantiated and controlled by the Video Control. All CA functionality is exposed to applications through the Video Control as an MSVidFeature object.
Data Services Filters: The Data Services filters accept IP data from the MPEG-2 Demultiplexer and pass it either to the renderer (in the case of Line 21 or closed captioning data) or else to Winsock. The data services filters that are present in the graph depend on the type of data being processed. The illustration above shows the series of filters that are used to pass IP data to Winsock: the BDA MPE Filter, and the BDA IP Sink filter. This functionality is exposed to applications through the Video Control as an MSVidFeature object.
Closed Captioning Filters: Microsoft also provides the following filters (not shown) to support closed captioning, DVD subpicture, and World Standard Teletext:
The functionality provided by these filters are exposed to applications through the Video Control as an MSVidFeature object.