Tuning to Receive VBI Data

[This is preliminary documentation and subject to change.]

Broadcast Architecture supports receiving data transmitted in the vertical blanking interval (VBI) that exists between successive scans of analog television images. Examples of types of data transmitted over the VBI are enhancement files and updates to television listings.

In order to receive VBI data, the television tuner must be tuned to that channel. In the case where the user is watching television on the same channel on which VBI data is being transmitted, the tuner is already set to the necessary channel. However, if the user is not watching television, you must programmatically set the tuner to the appropriate channel in order to receive the VBI data.

You can do this by using the BPCVBIControl to silently tune the television tuner to the appropriate channel. Using this control does not start Microsoft® WebTV® for Windows®, nor does it display video on the client. For example, you can use BPCVBIControl to tune to a channel during the middle of the night and receive updated television listings.

However, if an application is already using the tuner, for example if the user is watching television, the BPCVBIControl returns an error when you attempt to tune to a different channel. The user watching video is always higher priority than VBI data acquisition.

In this manner, the BPCVBIControl is disabled while any application is using video. Any tuners not used by the video application will stay tuned to the last channel a VBI control requested. If an application needs to tune to a VBI transmission while another application is using video, it must create a new instance of the Video control in order to access the tuner.

In order to tune the tuner to the VBI data channel, you must create an instance of BPCVBIControl and call the VBITune method. When your application no longer needs to receive VBI data on that channel it should release the BPCVBIControl object. This causes the tuner to receive VBI data on the default channel, if any, defined in the registry. This enables applications such as EPG data loaders to run in the background and acquire their data.

This is demonstrated in the following code:

Dim vbictrl As BPCVBIControl
Set vbictrl = New BPCVBIControl
 
'Set the tuner to receive VBI data on channel 27
vbictrl.VBITune 0, 2, 27, AMTUNER_SUBCHAN_DEFAULT, _
                                AMTUNER_SUBCHAN_DEFAULT 
 
'Code to receive and process the VBI data.
'Your application can use the VBI Client Interface
'to retrieve data from the VBI of a television signal.
'For more information on this client interface, see the
'Broadcast Architecture Device-Driver Kit (DDK).
 
'Release the tuner to receive VBI data using the default channel
'specified in the system registry.
Set vbictrl = Nothing