[This is preliminary documentation and subject to change.]
The enhancement filter is an Announcement Listener filter that processes enhancement announcements. Enhancement announcements contain data about an interactive show, such as the file name of the base page, the name of the enhancement, and the show reference of the interactive show.
Only one instance of the enhancement filter should run on a broadcast client at any time. Additional instances after the first do not receive enhancement announcements and slow performance. This functionality exists because the Announcement Listener compares the type of each incoming announcement against all registered filters. The presence of multiple enhancement filters thus increases the number of comparisons the Announcement Listener must perform.
When the enhancement filter receives an announcement, it calls an internal object of Broadcast Architecture to load the enhancement data into the Guide database. Components such as WebTV for Windows, and certain third-party applications, check for this information to determine whether a show is interactive and to locate its base page.
Note The data passed to the enhancement filter through announcements specifies only parameters for the enhancement to come. This data does not contain actual content, such as enhancement HTML files. Enhancement files are broadcast to the user's computer by means such as File Transfer Service (FTS) transmissions, Internet channel broadcasting, and so on.
There are several types of enhancement announcements. These types are described in the following topics.
Future announcements contain information about an upcoming enhancement, either for a show, channel or timeslice. These announcements fully specify all data for the enhancements to come, including the Internet Protocol (IP) multicast address, port, ending time, base page, and show reference. The enhancement filter loads this data into the Guide database by calling an internal Broadcast Architecture object.
Announcements for current broadcasts contain information about the enhancement for the show which the viewer is currently watching. If the viewer tuned to the show in the middle of the broadcast, they may not have received the initial enhancement trigger at the beginning of the show. Current enhancement announcements provide a method for WebTV for Windows and third-party applications to start an enhancement while the related show episode is in midstream.
Current announcements can also be used when a show's broadcast time is not known. For example, video and its enhancement stream (which includes the announcements) might be recorded to tape for later broadcast. Using current announcements ensures the announcements work no matter when the show is broadcast.
Current announcements expire immediately; in other words, their expiration date is the same as their transmission date. This functionality ensures the Announcement Listener re-receives each broadcast of the current enhancement announcement. Otherwise, the default behavior of the Announcement Listener is to ignore duplicate announcements.
Current enhancement announcements are different from future enhancements in that they specify the episode's ending time as the episode length plus 5 minutes, instead of as a fixed time. For example, a future enhancement announcement might specify the ending time as 1/26/98 12:00:00, whereas a current enhancement announcement might specify it as 35 minutes.
When the enhancement filter receives a current enhancement announcement, some further computation and data gathering must be performed. The enhancement filter calculates the episode's ending time and passes the connection information to the internal Broadcast Architecture object that loads the episode into the Guide database.
If the announcement does not specify the show reference for the episode, or the Uniform Resource Locator (URL) for the base page (in other words, the URL from which enhancements are preloaded, or the preload URL), an internal Broadcast Architecture object gets this information from the Enhancement control. When the enhancement information is complete, an internal object loads the enhancement data into the Guide database.
Current channel announcements contain information about an enhancement that enhances the current channel. Like current announcements, current channel announcements expire immediately and can derive some enhancement information from the client. To announce future channel enhancements, use a future announcement.
A channel enhancement enhances a particular channel. For example, MSNBC might create a channel enhancement that displays MSNBC-related content, such as which shows are up next, news items, or sports scores. This enhancement would be displayed any time the viewer tuned to MSNBC.
If an interactive show is broadcast over a channel that is enhanced, the viewer can choose to watch either the show or the channel enhancement.
Current timeslice announcements contain information about an enhancement that enhances the current channel for a set length of time. Like current announcements, current timeslice announcements expire immediately and can derive some enhancement information from the client. To announce future timeslice enhancements, use a future announcement.
A time-slice enhancement runs for the specified length of time regardless of which shows are displayed. An example of a time-slice enhancement is an enhancement that plays for the first four hours of Saturday morning cartoons. This enhancement continues to play even though individual cartoon shows start and end during that period. Broadcasters can use time-slice enhancements to package related shows together and create an extended viewing experience.
If an interactive show is broadcast over a channel that is enhanced, the viewer can choose to watch either the show or the channel enhancement.