Basic Tasks for TV Applications
This topic applies to Windows XP Home Edition and Windows XP Professional only.
Application development using Microsoft TV Technologies is based on a few fundamental tasks. Only the first two tasks are required of all applications; all the rest are optional, depending on what type of application you are developing. This section briefly describes those tasks in general terms and provides links to more detailed information.
- Create an instance of the Video Control: This is typically the first task for any application. The Video Control provides access to the TV tuner devices as well as rendering devices and four "features" which an application can enable or disable at any time, assuming that the data is present in the broadcast stream. For more information, see Video Control.
- Activate the desired features: IP Data Services, Closed Captioning, and Conditional Access are exposed to applications as "features" by the Video Control. To enable a feature, an application retrieves it from the Video Control's FeaturesAvailable collection, adds it to a features collection object that the application has created, and then sets this collection as the FeaturesActive collection property.
- Create an instance of the Guide Store and query for program info: By using the Guide Store, applications are freed from all responsibility for creating tune requests. An application typically queries the Guide Store for program information according to some user-defined rules, and then populates a user interface based on the results. When the user selects a program, the application retrieves the tune request associated with the schedule entry and passes it to the Video Control. The Guide Store is populated by an application or a separate Guide Store loader. (In this version of Microsoft® Windows® XP Home Edition and Windows XP Professional, third parties are responsible for implementing their own Guide Store loader.)
- Create Tune Requests: If an application does not use the Guide Store to obtain a ready-made tune request, then it must create its own tune requests to provide to the Video Control in the View method. To create a tune request, the application must access the appropriate tuning space and use its CreateTuneRequest method. Different network types have different requirements for tune requests, and the application is responsible for knowing those rules.
- Enforce Conditional Access rules: Conditional access provides an easy way to limit a user's viewing access, through the use of plug-in components called policies. A service provider can install a policy to enforce a subscription fee, or a parent might install a policy that restricts a child's access to mature programming. The Conditional Access feature automatically monitors policies and determines whether a program is restricted. It is the application's responsibility to refuse to show a restricted program.
- Configure the Video Mixing Renderer for custom rendering: With the new Video Mixing Renderer (VMR) you can create custom mixing effects, such as overlaying an alpha-blended bitmap over the video rectangle. The VMR is exposed to applications through the Video Control as the MSVidVideoRenderer object.
- Set up to receive events from the Video Control or other components: You will probably want to receive event notifications from the Video Control and the CA Manager. The techniques for receiving events are very specific to the language you are developing in.
- Access IP data in the broadcast stream: Once the Data Services feature is enabled through the Video Control, any IP data in the broadcast stream is routed to the NDIS stack. To receive this data, the application must open a socket using Winsock and listen on the specified multicast address, as it would for any other IP data.
- Create a default tune request in the registry (required for script applications only): When Microsoft Internet Explorer encounters a "TV:" URL in a Web page, it automatically loads the Video Control and tunes it to the default tune request, which is stored in the system registry. The creation of this registry entry is the responsibility of application developers, and it must be done using C++, since script applications cannot access the registry.