The present invention will be described in conjunction with drawings in which:
The terminal 400 can receive at least one announcement channel containing one or more triggers. The announcement channel is received over the IP medium. The bandwidth utilized by the announcement channel is a function of the one or more triggers and preferably is minimized in accordance with the one or more triggers. The data packets in the IP medium representing the content of the announcement channel can be received asynchronously by the terminal 400. The one or more triggers can be transmitted only as needed. The announcement channel originates from an announcement content provider. The announcement channel can use a well known protocol such as, for example, the Internet Engineering Task Force (IETF) Request For Comment (RFC) 2974 entitled Session Announcement Protocol (SAP). The announcement content provider can be independent of the program content provider of each of the one or more program channels. The triggers contained in the announcement channel can be independent of the program channels, correspond to the contents of any of the program channels or a combination thereof. In an alternative embodiment, the announcement channel can also contain one or more target applications that each correspond to one or more of the triggers in the announcement channel. The bandwidth utilized by the announcement channel can be a function of the one or more triggers and of the one or more target applications. The bandwidth is preferably minimized in accordance with the one or more triggers and of the one or more target applications. In an alternate embodiment more than one announcement channel can be received concurrently by the terminal 400, with each announcement channel operating as described above.
The terminal 400 also can receive one or more data channels. The data channels are received over the IP medium. Each data channel can provide applications, content data and combinations thereof. The applications can be target applications for the triggers contained in the announcement channel. The content data can be used by target applications executing on the terminal 400 and presented in the user interface to the viewer. For example, the content data can provide information such as professional sporting game results or other similar information that can be posted onto the user interface by a target application such as a ‘football league results summary’ target application executing on the terminal 400 in response to a trigger. The triggers in the announcement channel can contain references to data content in one or more of the data channels. Each of the data channels can be arranged as a data carousel. Alternatively, triggers in the announcement channel can contain references to a web server designated by a universal resource locater (URL) or other similar locator. The web server can be a bidirectional data source that responds to requests for content data received from the terminal 400.
The terminal 400 can use the one or more triggers to alter the viewing experience of a viewer through a user interface 410 such as a television. For example, while the viewer is viewing one of the program channels, the terminal can add a visual prompt to the television screen based on one of the triggers. When the viewer responds to the visual prompt, a target application corresponding to the trigger can be executed. The target application can be built-in or stored on the terminal 400 or can be received as needed from a data channel. Applications stored in the terminal 400 can have been previously received from the announcement channel or from a data channel and stored in volatile or no-volatile memory in the terminal 400. The application can alter the viewer's experience by supplementing or augmenting the contents of a program channel the viewer is viewing (e.g. by captioning or overlaying widgets on the screen), by presenting content in addition to a program channel (e.g. using split screen or picture-in-picture presentation), by replacing the program content being viewed with alternative content (e.g. presenting a web browser or email client user interface) and other similar approaches to alter the content being presented to the viewer.
In addition to triggers received on the announcement channel, the terminal 400 can also receive a trigger encoded into any of the one or more program channels. A trigger can also be derived from other information such as previously captured viewer preferences, program guide (i.e. schedule) information and other similar information. Viewer preferences can include preferred programs (e.g. ‘Movie of the Week’), categories of programming (e.g. news coverage, educational television, home improvement), preferred viewing times (e.g. weekdays between 7:00 and 10:00 PM). Based on individual or combinations of viewer preferences the terminal 400 can present the viewer with one or more triggers selected from the triggers received in the announcement channel that are likely to be of interest to the viewer. The viewer's preference can be combined with other factors such as, for example, time-of-day, day-of-week, and content data received on a data channel when selecting which triggers to present to the viewer.
At least one announcement channel 610 is provided having bandwidth that is a function of triggers 602 contained therein. Alternatively, the announcement channel 610 can contain triggers 602 and target applications 603. In the alternate case the bandwidth of the announcement channel 610 is a function of the triggers 602 and the target applications 603 contained therein. In either alternative the bandwidth of the announcement channel 610 can be a further function of other parameters such as, for example, quality of service (QoS) objectives and other content contained therein.
Each announcement channel 610 can be provided over a multicast IP connections such as, for example, one based on the Internet Group Management Protocol (IGMP) defined in IETF RFC 1112. Alternatively other non-multicast types of connections that allow the source of the announcement channel 610 to send triggers to multiple terminals 400 such as, for example, IP broadcast can be used. The announcement channel 610 delivers one or more triggers. Each trigger can be a single packet in the well known User Datagram Protocol (UDP), from the Internet protocol suite, that contains information about the trigger (including target application, version, and other similar information) as well as a payload that describes a session (i.e. a session payload) associated with the trigger.
The session identifies one or more data channels 620 that are associated with the trigger. The identities of the data channels 620 can be contained in the session payload or alternatively the session payload can contain references to a data source that identifies the data channels 620.
The data source can be local to the terminal 400 or alternatively can reside on another system (e.g. a server) accessible via an IP connection. The data source reference can be specific to an application. The data source reference can, for example, be a reference to a data carousel that can be implemented as one or more multicast channels each containing one or more data channels 620 where the data channels 620 can be multiplexed. Alternatively the data source reference can be a reference to a web server in accordance with, for example, HyperText Transfer Protocol (HTTP) as defined in the World Wide Web Consortium (W3C) RFC 2616 or File Transfer Protocol (FTP) as defined in IETF RFC 0959. The web server is accessible via an IP connection and can be located in the publicly accessible Internet or alternatively in a private network such as, for example, a private network controlled by the program channel provider.
The terminal 400 monitors the announcement channel 610. Meta-data contained in each trigger received on the announcement channel 610 is used by the terminal 400 to identify the purpose of the trigger and to determine the trigger's applicability to the viewer. When a trigger is detected that is applicable to the viewer (e.g. a trigger related to a program channel 600 being viewed, related to a viewer specified topic of interest, or containing an advertisement) the viewer's viewing experience can be altered by making a target application referenced by the trigger available to the viewer.
One or more data channels 620 can be provided each having sufficient bandwidth for contained target applications associated with one or more triggers and other data content. Each data channel 620 can be packetized and provided as a separate data stream by a data content provider. Alternatively, one or more data channels 620 can be encoded (e.g. multiplexed) onto a single data stream. The terminal 400 only needs to receive a data channel 620 when a trigger has been selected that has a target application in the data channel 620. Use of the data channel 620 can be on-demand in response to a trigger selection. Alternatively, the terminal 400 can receive one or more data channels 620 associated with a program channel 600 being viewed by a viewer or with the announcement channel and the target applications contained in the data channels can be cached (i.e. stored) in the terminal 400. A target application cached in the terminal 400 can be used when a corresponding trigger is selected. In a further alternative embodiment, a combination of on-demand data channel access and terminal 400 caching of target applications can be used.
The method for interactive IP TV described above with reference to
It will be apparent to one skilled in the art that numerous modifications and departures from the specific embodiments described herein may be made without departing from the spirit and scope of the present invention.