Method and apparatus for managing channel information

A request for content associated with a particular channel is received from a client device. A system identifies service information data associated with the channel. The system then determines how content associated with the channel will be provided to the client device. Instructions are sent to the client device that notify the client device how to access content associated with the channel.

TECHNICAL FIELD

The systems and methods described herein relate to maintaining channel information and distributing the channel information to client devices.

BACKGROUND

A client device in a television-based system can receive video and audio content from a program distributor in the form of broadcast programs, such as news programs, sitcoms, movies, sporting events, commercials, and any other type of television-based information. A client device includes, for example, a set-top box, a digital satellite receiver, a cable box, a digital video recorder (DVR), and a television with a built-in receiver.

To tune channels in existing systems, such as digital cable television systems, a viewer tunes to a particular channel and the client device (e.g., cable box) looks up the requested channel in a channel map to identify a program identifier (PID) associated with the requested channel. The program identifier is used by the client device to receive the requested channel. PID information can change on an irregular basis. For example, channels may be added or deleted, or the bandwidth assigned to a particular channel may change, which may require a rearrangement of channels to accommodate the changed bandwidth. Other changes include changes include addition or deletion of a foreign language audio version of the soundtrack associated with the video content.

If a client device does not contain the current PID information, the client device may not tune the correct channel. To avoid this situation, existing systems receive channel information (including a current channel map) from, for example, a headend on a regular basis. This channel information is typically broadcast by the headend to all client devices capable of receiving data from the headend. The channel information is then stored in the client device. Thus, the client device needs to have a memory device, such as a persistent memory device, capable of storing all channel information. Including such a memory device in a client device increases the cost and complexity of the client device.

If a client device is not powered on or not connected to a communication line (e.g., cable) when a updated channel information is broadcast by the headend, the client device will not receive the updated channel information. Instead, the client device will continue using old channel information, which may cause the client device to improperly tune one or more channels.

SUMMARY

The systems and methods described herein relate to handling channel information and distributing channel information to one or more client devices. In a particular embodiment, a request is received for content associated with a particular channel. This request is received from a client device. Service information data associated with the channel is identified and a determination is made regarding how content associated with the channel will be provided to the client device. Instructions are then sent to the client device. These instructions notify the client device how to access content associated with the channel.

DETAILED DESCRIPTION

The systems and methods described herein relate to maintaining channel information and distributing the channel information to client devices on an as-needed basis. These systems and methods store channel information, such as a channel map, service definition information, and network information in a central location and distribute the channel information to specific client devices when needed by the client device. In one embodiment, this central location is remote from the client devices. For example, the channel information may be stored in a storage device, such as a server or a database coupled to a server, associated with a headend system that provides content to the client devices. This arrangement ensures that each client device has the necessary channel information at the appropriate time, but does not require each client device to have a memory device that continually stores all of the channel information. Additionally, these systems and methods do not require the continual broadcast (and re-broadcast) of channel information to all client devices to be sure each client device has current channel information.

When utilizing the systems and methods discussed herein, the client device may have limited resources, such as no persistent memory, because the channel information and other configuration information that needs to be persisted is stored remotely from the client device. By reducing resources in the client device, the cost and complexity of the client device is also reduced.

The systems and methods discussed herein are described with reference to an environment in which content is distributed to client devices via a data communication network, such as the Internet. These examples represent one possible environment in which the systems and methods can be implemented. In other embodiments, any type of system or architecture can be used to provide content to one or more client devices.

Client devices of the type discussed herein range from clients with substantial memory and processing resources, such as television-enabled personal computers and television recorders equipped with hard-disks, to clients with little or no memory and/or limited processing resources. Although particular examples of client devices are discussed herein, any client device can be used with the systems and methods described. Example client devices include personal computers, DVD players, digital video recorders (DVRs), set top boxes, cable boxes, satellite receivers, televisions, game consoles, and the like. As used herein, the term “user” may also be referred to as “viewer”. Also, as used herein, the terms “state information”, “configuration information”, and “configuration settings” are used interchangeably.

Various examples discussed herein refer to a “headend” or “head end”. As used herein, these terms refer to any location from which data may be sent. Example headends include traditional broadcast facilities, data centers, network operations centers, locations where one or more servers are situated, and the like.

The systems and methods discussed herein refer to various types of channel information. Although particular examples of channel information are discussed herein, other examples may include additional types of data not described herein. Channel information may include any type of data associated with a channel or other source of content. Channel information may include data associated with tuning or receiving any type of content, such as television content, video-on-demand (VOD) content, pay-per-view (PPV) content, advertising content, computer-based content, radio content, and the like. As used herein, a “channel” may be any communication link, transmission path, or other architecture for communicating data.

FIG. 1illustrates various components of an example architecture100capable of maintaining channel information and providing the channel information to one or more client devices102. In this example architecture100, content (such as television programs, video-on-demand, advertisements, radio programs, and the like) is distributed via a data communication network104, such as the Internet. Architecture100provides two-way communication of data between client devices and one or more servers or other devices via network104. In alternate embodiments, content is distributed to client devices102via a cable network, radio frequency signals, over-the-air broadcast, satellite communication systems, and the like.

In a particular embodiment, client devices102communicate with one or more devices via network104using simple object access protocol (SOAP) messages transported using hypertext transfer protocol (http), a protocol commonly used by the World Wide Web. In other embodiments, any type of protocol and/or messaging format can be used to exchange data between client devices102and one or more servers.

In one embodiment, each client device102has a unique identifier stored within the client device. For example, the unique identifier may be stored in a non-volatile memory device or other component of the client device. Since each client device102has a unique identifier, each client device can be distinguished from the other client devices. Although not shown inFIG. 1, each client device102may be coupled to a display device (such as a television, computer monitor, or projector), a recording device (such as a VCR or DVR), or other device. Alternatively, one or more client devices102may themselves be televisions, recording devices, or other devices.

In the example ofFIG. 1, network104may be any type of data communication network and may include two or more different networks, such as a local area network (LAN) and the Internet. A video router106is also coupled to network104. Video router106is capable of communicating content, configuration information, and other data to one or more client devices102. Additionally, video router106is capable of receiving, handling, and storing various types of content and other data. As discussed below, video router106also receives requests for configuration information and requests for content from client devices102and performs the necessary functions to provide the requested information or content to the requesting client device. In one embodiment, video router106is a server capable of performing a variety of functions. For example, video router106can encrypt data, decrypt data, and distribute different content to different client devices. Video router106can handle any type of data, including video data, audio data, configuration data, and the like. Video router106may also be referred to as a “video server” or a “content server”.

A service information server108is coupled to video router106. Service information server108maintains various service information data that is used by client devices to tune a particular channel. For example, the service information data allows a client device to locate a signal for a particular channel so that the content available on that channel can be displayed to a viewer. The service information data is discussed in greater detail below.

A receiver110is coupled to video router106and network104. Receiver110receives broadcast content, program guide content, service information data, and other data from a variety of sources. For example, receiver110can receive broadcast content from a content broadcaster via network104, a cable network, radio frequency signals, over-the-air broadcast, satellite communication systems, or any other communication medium. Receiver110may receive content from multiple broadcast sources simultaneously.

A database112is coupled to video router106, service information server108and receiver110. Database112stores various information used by video router106, such as service information data, configuration information related to client devices102, and the like. Database112may also store information used by receiver110and may store content received from one or more different data sources.

Traditional television broadcasting systems (such as cable TV broadcasters or satellite broadcasters) originate and communicate signals to customers from a headend. In the architecture ofFIG. 1, the headend may be considered as the equipment used to deliver content and provide other services to multiple customers (e.g., via client devices102). The headend interacts with each client device102to provide content that is appropriate for the client device based on the settings, preferences, and account information associated with the client device. Referring toFIG. 1, any one or more of the following devices may be considered as the “headend”: video router106, service information server108, receiver110, and database112. In other embodiments, one or more additional devices may be considered part of the headend.

In the example ofFIG. 1, service information data is distributed to client devices102via video router106as needed by the client devices. Thus, rather than distributing service information data to all client devices102, the client devices receive service information data when such data is necessary to tune a particular channel. This arrangement ensures that client devices102receive current versions of the service information data.

Although video router106is shown inFIG. 1as a single device, alternate embodiments may use two or more devices to implement the functionality of video router106. In other embodiments, the video router106may be combined with one or more other components into a single device. For example, receiver110and database112may be combined with video router106in a single device.

FIG. 2is a flow diagram illustrating an embodiment of a procedure200for handling channel map information. Initially, a video router identifies a current channel map (block202). For example, the video router may access the current channel map from a database, a service information server, or other device. The channel map defines what channels and/or services are associated with particular channel numbers. The channel map associates a particular identifier with each channel number. For example, a particular channel map entry may associate HBO with channel501and Animal Planet with channel247. Client devices request content associated with a particular channel by communicating a request to the video router with the identifier associated with the desired channel.

The video router then broadcasts the current channel map to multiple client devices (block204). These multiple client devices include some or all of the currently active client devices coupled to the video router. At this point, each of the multiple client devices includes current channel map information that allows each client device to generate a request to tune to a particular channel. Procedure200continues by determining whether a request has been received from a client device for a channel map (block206). For example, a client device may have been powered on or reset after the channel map was broadcast in block204.

If a request for a channel map has been received, the video router identifies the current channel map (block208) and communicates the current channel map to the requesting client device (block210). The procedure continues by determining whether an updated channel map has been received by the video router (block212). If so, the video router identifies the updated channel map (block214) and broadcasts the updated channel map to multiple client devices (block216). The procedure then returns to block206to check for new requests for a channel map.

Thus, when a client device is powered on or reset, the client device quickly receives a current channel map from the video router. As soon as the video router receives an updated channel map, the video router broadcasts the updated channel map to all client devices such that all client devices maintain a current channel map. However, the remaining data necessary to receive content associated with a particular channel is not sent until a specific channel request is received from a client device.

As discussed above, service information server108(FIG. 1) maintains various service information data used by client devices to tune a particular channel. This service information data includes channel map data, service definition data, and network information data. As discussed above, channel map data identifies what services are associated with various channel numbers. The channel map associates a particular identifier with each channel number. In particular embodiments, separate channel maps are maintained for each client device. For example, one client device may map MSNBC data to channel number2, whereas another client device may map the same MSNBC data to channel number10. A user of a client device can revise channel mappings at any time via the client device, via an application program, via a web site capable of accessing service information server108, and the like.

Service definition data identifies various components of the content that are available. These components include, for example, video versions available (regular resolution or high definition television (HDTV)), audio versions available (English, German, or Chinese), and whether subtitles are available. Network information data identifies frequencies, addresses, etc. that are used to tune to a particular channel. For example, network information data may include an Internet protocol (IP) address or a multicast address at which the requested content can be received.

FIG. 3is a flow diagram illustrating an embodiment of a procedure300for providing requested content to a client device. Initially, a client device generates a request to receive a particular channel (block302). This request may be generated, for example, in response to a viewer's request to view the particular channel. A video router receives the request from the client device (block304). The video router identifies service information data associated with the requested channel (block306). For example, the video router may obtain the appropriate service information data from the service information server. The video router then determines how content associated with the requested channel will be provided to the client device (block308). As discussed above, the video router may make this determination based on one or more factors, such as the time of day, current network activity, client device type and capabilities, client preferences (e.g., language preference, video quality preference, etc.), load balancing concerns, and the like. When making this determination, the video router may consider configuration information and a device type identifier associated with the client device to identify capabilities and/or preferences associated with the client device. Additionally, the video router may consider the client device's capability profile or a viewer's rate tier when determining how content will be provided to the client device. For example, the client device may have a profile that states that it has enough bandwidth for standard definition stereo (two channel) delivery. This factor is used to select the appropriate data stream that conforms to the bandwidth processing constraint. A different client profile may specify high definition, multi-channel, multi-lingual audio delivery.

Another factor used to determine how content will be provided to the client device is the aggregate household bandwidth. With IP-based delivery of content, the total bandwidth available to the client device(s) within a household is considered. For example, if one client device is receiving channel2, a second client device may only have enough bandwidth to receive a lower resolution stream of channel4.

After the video router determines how content associated with the requested channel will be provided to the client device, the video router instructs the client device regarding how to access the content associated with the requested channel (block310). The instructions provided to the client device are limited to the service information data required for the client device to receive the requested signal. By limiting the instructions in this manner, a minimal amount of data is communicated from the video router to the client device, thereby reducing network traffic and reducing the computing requirements of the video router.

The client device then receives the instructions from the video router, accesses the requested channel using the instructions from the video router, and receives the associated content (block312). The client device then renders the received content on a display device coupled to the client device (block314).

Referring again toFIG. 1, the example architecture100is capable of hosting multiple different codecs (compressor/decompressor or coder/decoder). A codec is a technique for compressing and decompressing data. Example codecs include MPEG (Moving Picture Experts Group) and Windows Media® technologies player format. A codec may also be referred to as an “encryption format” or a “decryption format”. Since video router106does not send the service information data associated with a specific channel until a client device102requests that specific channel, the content can be delivered to the client device using any codec. Further, different transport types can be used to deliver content to client devices102. Example transport types include unicast and multicast. Unicast is a communication of data between two devices across a network. Multicast is a communication of data from a single source device to a particular group of destination devices. Architecture100allows content to be delivered to different client devices102using different codecs and/or different transport types. For example, a first client device102(1) may receive content associated with a particular channel via multicast using MPEG-2 encoding. Another client device102(2) receives content associated with the same channel via unicast using Windows Media® technologies player format encoding.

Video router106determines which codec and transport type to use in response to a particular request based on several factors. These factors include any current encoding of the requested content, codecs and transport types supported by the requesting client device, local storage associated with the requesting client device, bandwidth available between the video router and the requesting client device, and load balancing issues between multiple transports, codecs, etc.

As mentioned above, the video router instructs client devices how to access content associated with a requested channel. These instructions include, for example, how to decode (or decrypt) the content and an address on which the content will be delivered. For example, the instructions may notify a particular client device that the requested content is being delivered via multicast on multicast address Y using MPEG-2 encoding. In this example, Y is a particular address associated with the requested content. In the case of a multicast delivery of content, multiple client devices may receive the same content using the same multicast address. In another example, the instructions may notify a particular client device that the requested content is being delivered via unicast on unicast address Z using Windows Media® technologies player format encoding. In this example, Z is a particular address associated with the requested content. The codec and transport type used may vary depending on, for example, load balancing factors, client device capabilities, and whether the requested content is already being delivered to other client devices (such as via a multicast address).

FIG. 4illustrates a television-based system400that includes an example client device. System400also includes a display device404to display, for example, video content, program listings, and other data. Client device402can be implemented as a set-top box, a satellite receiver, a TV recorder with a hard disk, a digital video recorder (DVR) and playback system, a game console, an information appliance, and as any number of similar embodiments.

Client device402includes one or more tuners406which are representative of one or more in-band tuners that tune to various frequencies or channels to receive television signals, as well as an out-of-band tuner that tunes to the broadcast channel over which program data is broadcast to client device402. Client device402also includes one or more processors408(e.g., any of microprocessors, controllers, and the like) which process various instructions to control the operation of client device402and to communicate with other electronic and computing devices.

Client device402can be implemented with one or more memory components, examples of which include a random access memory (RAM)410, mass storage media412, a disk drive414, and a non-volatile memory416(e.g., ROM, Flash, EPROM, EEPROM, etc.). Disk drive414can include any type of magnetic or optical storage device, such as a hard disk drive, a magnetic tape, a rewriteable compact disc, a DVD, and the like. The one or more memory components store various information and/or data such as received content, program metadata418, recorded programs420, configuration information for client device402, and/or graphical user interface information. Alternative implementations of client device402can include a range of processing and memory capabilities, and may include any number of differing memory components than those illustrated inFIG. 4. For example, full-resource clients can be implemented with substantial memory and processing resources, whereas low-resource clients may have limited processing and memory capabilities.

An operating system422and one or more application programs424can be stored in non-volatile memory416and executed on processor(s)408to provide a runtime environment. A runtime environment facilitates extensibility of client device402by allowing various interfaces to be defined that, in turn, allow application programs424to interact with client device402. The application programs424can include a browser to browse the Web (e.g., “World Wide Web”), an email program to facilitate electronic mail, a program to display and search for available programs and video-on-demand content, and any number of other application programs.

A program guide application426that executes on processor(s)408is also stored in non-volatile memory416and is implemented to generate a program guide for display. Using program guide application426, the viewer can look at schedules of current and future programming, set reminders for upcoming programs, and/or enter instructions to record one or more programs.

Client device402further includes one or more communication interfaces428and a PSTN, DSL, cable, or other type of modem430. A communication interface428can be implemented as a serial and/or parallel interface, as a wireless interface, and/or as any other type of network interface. A wireless interface enables client device402to receive control input commands432and other information from a user-operated input device, such as from a remote control device434or from another infrared (IR), 802.11, Bluetooth, or similar RF input device. Input devices can include a wireless keyboard or another handheld input device436such as a personal digital assistant (PDA), handheld computer, wireless phone, or the like. A network interface and a serial and/or parallel interface enables client device402to interact and communicate with other electronic and computing devices via various communication links. Modem430facilitates client device402communication with other electronic and computing devices via a conventional telephone line, a DSL connection, cable, and/or other type of connection.

Client device402also includes a content processor438which can include a video decoder and/or additional processors to receive, process, and decode broadcast video signals and program data, such as NTSC, PAL, SECAM, or other television system analog video signals, as well as DVB, ATSC, or other television system digital video signals. For example, content processor438can include an MPEG-2 or MPEG-4 decoder that decodes MPEG-encoded video content and/or image data. The systems described herein can be implemented for any type of video encoding format as well as for data and/or content streams that are not encoded.

Typically, video content and program data includes video data and corresponding audio data. Content processor438generates video and/or display content that is formatted for display on display device404, and generates decoded audio data that is formatted for presentation by a presentation device, such as one or more speakers (not shown) in display device404. Content processor438can include a display controller (not shown) that processes the video and/or display content to display corresponding images on display device404. A display controller can include a graphics processor, microcontroller, integrated circuit, and/or similar video processing component to process the images.

Client device402also includes an audio and/or video output440that provides the audio, video, and/or display signals to television404or to other devices that process and/or display, or otherwise render, the audio and video data. Video signals and audio signals can be communicated from client device402to television404via an RF (radio frequency) link, S-video link, composite video link, component video link, or other similar communication link.

FIG. 5illustrates a general computer environment500, which can be used to implement the techniques described herein. For example computer environment500may implement a video router, a service information server, a content server, or other computing device. The computer environment500is only one example of a computing environment and is not intended to suggest any limitation as to the scope of use or functionality of the computer and network architectures. Neither should the computer environment500be interpreted as having any dependency or requirement relating to any one or combination of components illustrated in the example computer environment500.

Computer environment500includes a general-purpose computing device in the form of a computer502. One or more applications can be executed by computer502. The components of computer502can include, but are not limited to, one or more processors or processing units504(optionally including a cryptographic processor or co-processor), a system memory506, and a system bus508that couples various system components including the processor504to the system memory506.

Computer502typically includes a variety of computer readable media. Such media can be any available media that is accessible by computer502and includes both volatile and non-volatile media, removable and non-removable media.

The system memory506includes computer readable media in the form of volatile memory, such as random access memory (RAM)510, and/or non-volatile memory, such as read only memory (ROM)512. A basic input/output system (BIOS)514, containing the basic routines that help to transfer information between elements within computer502, such as during start-up, is stored in ROM512. RAM510typically contains data and/or program modules that are immediately accessible to and/or presently operated on by the processing unit504.

Computer502may also include other removable/non-removable, volatile/non-volatile computer storage media. By way of example,FIG. 5illustrates a hard disk drive516for reading from and writing to a non-removable, non-volatile magnetic media (not shown), a magnetic disk drive518for reading from and writing to a removable, non-volatile magnetic disk520(e.g., a “floppy disk”), and an optical disk drive522for reading from and/or writing to a removable, non-volatile optical disk524such as a CD-ROM, DVD-ROM, or other optical media. The hard disk drive516, magnetic disk drive518, and optical disk drive522are each connected to the system bus508by one or more data media interfaces525. Alternatively, the hard disk drive516, magnetic disk drive518, and optical disk drive522can be connected to the system bus508by one or more interfaces (not shown).

Any number of program modules can be stored on the hard disk516, magnetic disk520, optical disk524, ROM512, and/or RAM510, including by way of example, an operating system526, one or more application programs528, other program modules530, and program data532. Each of such operating system526, one or more application programs528, other program modules530, and program data532(or some combination thereof) may implement all or part of the resident components that support the distributed file system.

A user can enter commands and information into computer502via input devices such as a keyboard534and a pointing device536(e.g., a “mouse”). Other input devices538(not shown specifically) may include a microphone, joystick, game pad, satellite dish, serial port, scanner, and/or the like. These and other input devices are connected to the processing unit504via input/output interfaces540that are coupled to the system bus508, but may be connected by other interface and bus structures, such as a parallel port, game port, or a universal serial bus (USB).

A monitor542or other type of display device can also be connected to the system bus508via an interface, such as a video adapter544. In addition to the monitor542, other output peripheral devices can include components such as speakers (not shown) and a printer546which can be connected to computer502via the input/output interfaces540.

Computer502can operate in a networked environment using logical connections to one or more remote computers, such as a remote computing device548. By way of example, the remote computing device548can be a personal computer, portable computer, a server, a router, a network computer, a peer device or other common network node, game console, and the like. The remote computing device548is illustrated as a portable computer that can include many or all of the elements and features described herein relative to computer502.

Logical connections between computer502and the remote computer548are depicted as a local area network (LAN)550and a general wide area network (WAN)552. Such networking environments are commonplace in offices, enterprise-wide computer networks, intranets, and the Internet.

When implemented in a LAN networking environment, the computer502is connected to a local network550via a network interface or adapter554. When implemented in a WAN networking environment, the computer502typically includes a modem556or other means for establishing communications over the wide network552. The modem556, which can be internal or external to computer502, can be connected to the system bus508via the input/output interfaces540or other appropriate mechanisms. It is to be appreciated that the illustrated network connections are exemplary and that other means of establishing communication link(s) between the computers502and548can be employed.

In a networked environment, such as that illustrated with computing environment500, program modules depicted relative to the computer502, or portions thereof, may be stored in a remote memory storage device. By way of example, remote application programs558reside on a memory device of remote computer548. For purposes of illustration, application programs and other executable program components such as the operating system are illustrated herein as discrete blocks, although it is recognized that such programs and components reside at various times in different storage components of the computing device502, and are executed by the data processor(s) of the computer.

Although the description above uses language that is specific to structural features and/or methodological acts, it is to be understood that the invention defined in the appended claims is not limited to the specific features or acts described. Rather, the specific features and acts are disclosed as exemplary forms of implementing the invention.