The systems and methods described herein relate to generating a program guide in a television environment.
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, and a digital video recorder (DVR). Some client devices include a memory component that may store program schedule information, configuration information, viewer preferences, and the like.
Many broadcast services, such as cable services, offer a listing of what programs are being shown on each channel using a non-interactive scrolling program guide. The scrolling program guide automatically scrolls through available programs (e.g., scrolling through programs based on channel number or other parameter). Program guide information can be scrolled vertically, horizontally, or in any other manner. The scrolling program guide may be generated by equipment at a headend (or at another location) by the broadcast service and provided to the users via a particular channel. Thus, when a user tunes the client device to the particular channel, a scrolling program guide is displayed. This scrolling program guide generally requires the same bandwidth as any other analog video channel.
Other broadcast services, such as those services that utilize a set top box or similar device, offer an interactive program guide. In this situation, the client device downloads program schedule information that describes current and upcoming programs on all channels. This program schedule information is used by the client device to generate an interactive program guide that is activated, for example, through a menu system or pressing a “Guide” (or similar) button on a remote control device. The user navigates the interactive program guide using arrow buttons on the remote control device or other control functions. Thus, the interactive program guide requires the user to participate in an active experience with the television. For users that prefer a non-interactive scrolling program guide, this type of participation may not be desired. Additionally, using an interactive program guide may frustrate some users who are not familiar with interactive program guides.
The systems and methods described herein implement a program guide that offers a non-interactive (or passive) scrolling mode as well as an interactive mode. In a particular embodiment, a client device receives a request to display a program guide. Program schedule information is then identified and the client device generates a scrolling program guide. The scrolling program guide is communicated to a display device.
Similar reference numbers are used throughout the figures to reference like components and/or features.
The systems and methods described herein are capable of generating a passive program guide that offers a non-interactive scrolling mode as well as an interactive mode without requiring a dedicated broadcast channel for the non-interactive scrolling program guide. These systems and methods allow a user to transition from a passive scrolling program guide to an interactive program guide without requiring a dedicated broadcast channel for the scrolling program guide. Additionally, the systems and methods described herein can generate a program guide containing additional information that is targeted to a particular viewer.
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 limited memory and/or processing resources, such as traditional set-top boxes. Although particular examples of client devices are discussed herein, any client device can be used with the systems and methods described. As used herein, the term “user” may also be referred to as “viewer”. As used herein, “programs” include news shows, sitcoms, comedies, movies, commercials, talk shows, sporting events, on-demand videos, content recorded to a local hard disk, and any other form of television-based entertainment and information.
Various examples discussed herein refer to a “headend”. As used herein, “headend” or “head end” refers 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.
In the example of
Program guide application 110 executes on processor(s) 108 and can be stored as computer-executable instructions in non-volatile memory (not shown) of client device 104. Program guide application 110 generates a program guide 114 that can be displayed in a display region 116 of display device 104. For example, program guide 114 may be displayed in the on-screen display (OSD) layer generated by client device 102. Alternatively, program guide 114 may be displayed in another layer generated by client device 102, such as the video layer. Although program guide application 110 is illustrated and described herein as a single application configured to generate program guide 114, program guide application 110 can be implemented as multiple component applications distributed such that each performs one or more functions.
Program guide 114 allows a viewer to see what programs are scheduled to be broadcast on particular channels at particular times. As discussed in greater detail below, program guide 114 may operate in a non-interactive scrolling mode or an interactive mode. When operating in the non-interactive scrolling mode, program guide 114 scrolls through some or all of the channels available to the viewer, displaying scheduled programs on those channels. The viewer can simply watch the program listings scroll on display device 104 without interacting with client device 102. When operating in the interactive mode, the information shown in program guide 114 is manipulated by pressing control buttons (e.g., arrow buttons) on a remote control device or other input device.
In the example of
Program guide 202 includes navigation controls 206 and 208 which allow a viewer to control the time period displayed in the program guide. For example, navigation control 206 changes the displayed time period to an earlier time period (e.g., one hour earlier) and navigation control 208 changes the displayed time period to a later time period (e.g., one hour later). Although not shown in
Program guide 202 also includes a selectable control 210 that identifies a particular program. In the example of
In a particular embodiment, program guide 202 includes an indicator (not shown) that, when selected, changes the interactive program guide to a non-interactive scrolling mode. For example, the indicator may be similar to arrows 206 and 208 that can be selected using selectable control 210. Alternatively, a user may activate the non-interactive scrolling mode by activating a button on a remote control, activating a button on a set top box, or otherwise activating a button or indicator on a device or in the program guide.
In other embodiments, program guide 202 may display different groupings of channels that are related to one another. These groupings of channels are not necessarily in sequential order or in numerical order. In essence, program guide 202 may be bound to different channels. For example, if channels 501-508 are HBO channels, program guide 202 can bind a “Now on HBO” guide to channel 500. Thus, when a viewer tunes to channel 500, program guide 202 displays available HBO channels. Other characteristics of program guide 202 are not changed, but the range of displayed channels is limited to HBO channels.
As procedure 300 continues, a program guide application identifies program schedule information (block 304). For example, the program schedule information may be downloaded from the headend or from any other data source. Alternatively, program schedule information may have been previously obtained by the client device and stored in a memory device contained in the client device. Example program schedule information includes a program title, a program date, a program time, a program duration, and a channel associated with the program. Additional program information may include a summary of the program, a program rating, and actors/actresses featured in the program.
After identifying program schedule information, the program guide application requests additional information from a data source (block 306). This additional information may include advertisements, pay-per-view programs, movie trailers, video-on-demand promotions, or other information that might be of interest to the viewer. For example, the additional information can be displayed in background region 204 of program guide 202 (
The program guide application then generates a program guide containing a background portion and a scrolling program schedule portion (block 308). At this point, the client device is operating in a non-interactive scrolling mode. The scrolling program schedule portion of the program guide omits navigation arrows and other navigation controls in the program guide. In this non-interactive scrolling mode, the program guide may also omit the program description. The background portion displays additional information, such as advertisements and movie trailers. The scrolling program schedule portion is the grid that displays the program schedule information for a particular range of time and a particular range of channels. In an alternate embodiment, the program guide application program generates a program guide that contains a background portion and an interactive program schedule portion. In this embodiment, the interactive program schedule portion allows a user to navigate the program guide by manipulating buttons on a remote control device or by entering commands in another manner.
Procedure 300 continues by determining whether a program guide command was received (block 310). A program guide command is any command or function associated with the program guide, such as a navigation command or a request to display a program guide. A program guide command can be entered via a remote control device, via buttons on a client device, or via any other device or system. For example, activating an arrow button or a “Guide” button on a remote control represents on way to enter a program guide command. However, activating a volume button or other button unrelated to the program guide is not considered to be a program guide command. If a program guide command has not been received at block 310, the procedure continues scrolling the program schedule portion of the program guide (block 312). The procedure continues to scroll the program schedule portion of the program guide until a program guide command is received.
Upon receipt of a program guide command, procedure 300 branches to block 314, which changes operation of the program schedule portion of the program guide from the previous scrolling mode to an interactive mode. At this point, the client device is operating in an interactive mode. The interactive mode allows the viewer to navigate through the program guide using various navigation buttons or other commands. After changing to the interactive mode, the procedure determines whether a command timeout has occurred (block 316). A command timeout occurs when a program guide command has not been received for a particular period of time (e.g., a timeout period). The period of time may be any length of time from a few seconds to a few minutes. If a command timeout has not occurred, the operation of the client device remains in the interactive mode. However, if a command timeout occurs, the operating mode of the client device changes such that the program schedule portion of the program guide changes to the scrolling mode (block 318) and the procedure returns to block 310, where the program schedule portion of the program guide is scrolled until another program guide command is received.
Thus, the client device displays a scrolling program guide until a program guide command is received. The client device then changes to an interactive mode and allows the viewer to navigate the program guide by entering one or more navigation commands. If the viewer stops entering program guide commands (such as navigation commands) for a particular period of time, the client device changes back to displaying a scrolling program guide until another program guide command is received. If the viewer selects a particular program, the program guide is removed from the display device and the program selected by the viewer is displayed on the display device.
In this embodiment, the non-interactive scrolling mode is the default mode of operation for the program guide. In other embodiments, the interactive mode may be the default mode. In those other embodiments, the viewer may enter a specific command to activate the scrolling operation of the program guide. The scrolling operation may continue for a particular period of time or may continue until the viewer enters a program guide command or otherwise requests that the client device change to the interactive mode.
As procedure 400 continues, the program guide application identifies the current date and time (block 404). The program guide application then requests additional information for display in the background region of the program guide (block 406). This information may be requested from any data source, such as a headend system, a video server, or other data server. The information requested may vary depending on the capabilities of the client device requesting the information. The client device attempts to avoid advertising or promoting a service that is not supported by the client device. For example, if the client device is capable of accessing video-on-demand services, the requested information may include video-on-demand promotions. However, if the client device is not capable of accessing video-on-demand services, the requested information may include other advertisements or information. Additionally, if the client device contains a disk drive, promotional information may be stored on the disk drive for present or future playback.
Next, the program guide application receives the requested information (block 408). For example, the requested information may be received via a broadcast channel or may be provided to the client device via a network or other data communication link. In one embodiment, the requested information is provided to the client device via a particular broadcast channel. In another embodiment, the requested information is streamed to the client device from a video server via one or more networks, such as a local area network (LAN) or the Internet. In other embodiments, the requested information is retrieved by the client device from one or more data sources via one or more data communication links.
Finally, the program guide application displays the requested information in the background region of the program guide (block 410). The requested information is displayed in the background region regardless of whether the client device is operating in the non-interactive scrolling mode or the interactive mode. The information displayed in the background region may be of particular interest to the viewer since the information was selected based on knowledge of the viewer and/or knowledge of the viewer's viewing habits. Thus, advertisements may be more effective because they are targeted to the viewer and more likely to be of interest to the viewer than general advertisements that are broadcast to all users.
As discussed above, the information displayed in the background region of the program guide may differ from one client device to another based on viewer preferences and the like. Additionally, the programs displayed in the program schedule portion of the program guide may differ from one client device to another based on viewer preferences, previously viewed programs, and/or other parameters. Since the program guide is generated locally on the client device, different information can be displayed in different program guides without requiring additional bandwidth.
In a particular embodiment, a viewer's viewing history is stored at the headend (or any other location). A recommendation system at the headend is used to augment the program guide by sending program listings and other information to various client devices that is likely of interest to users of the client devices. These recommendations can be promoted passively in the non-interactive scrolling program guide with instructions teaching the viewer how to take action and activate content that is being recommended. The recommendations can also be promoted in the interactive program guide with similar instructions.
Operation of the non-interactive scrolling program guide may be configured at the headend by generating a configuration file that is sent to all client devices. This configuration file may include information such as:
Client device 502 includes one or more tuners 506 which 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 device 502. Client device 502 also includes one or more processors 508 (e.g., any of microprocessors, controllers, and the like) which process various instructions to control the operation of client device 502 and to communicate with other electronic and computing devices.
Client device 502 can be implemented with one or more memory components, examples of which include a random access memory (RAM) 510, mass storage media 512, a disk drive 514, and a non-volatile memory 516 (e.g., ROM, Flash, EPROM, EEPROM, etc.). Disk drive 514 can 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 guide data 518, recorded programs 520, configuration information for client device 502, and/or graphical user interface information. Alternative implementations of client device 502 can include a range of processing and memory capabilities, and may include any number of differing memory components than those illustrated in
An operating system 522 and one or more application programs 524 can be stored in non-volatile memory 516 and executed on processor(s) 508 to provide a runtime environment. A runtime environment facilitates extensibility of client device 502 by allowing various interfaces to be defined that, in turn, allow application programs 524 to interact with client device 502. The application programs 524 can include a browser to browse the Web (e.g., “World Wide Web”), an email program to facilitate electronic mail, and any number of other application programs.
A program guide application 526 that executes on processor(s) 508 is also stored in non-volatile memory 516 and is implemented to process the program guide data 518 and generate a non-interactive scrolling program guide or an interactive program guide for display. Using program guide application 526, 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 device 502 further includes one or more communication interfaces 528 and a PSTN, DSL, cable, or other type of modem 530. A communication interface 528 can 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 device 502 to receive control input commands 532 and other information from a user-operated input device, such as from a remote control device 534 or from another infrared (IR), 802.11, Bluetooth, or similar RF input device. Input devices can include a wireless keyboard or another handheld input device 536 such 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 device 502 to interact and communicate with other electronic and computing devices via various communication links. Modem 530 facilitates client device 502 communication with other electronic and computing devices via a conventional telephone line, a DSL connection, cable, and/or other type of connection.
Client device 502 also includes a content processor 538 which 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 processor 538 can include an MPEG-2 or MPEG-4 (Moving Pictures Experts Group) 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 processor 538 generates video and/or display content that is formatted for display on display device 504, and generates decoded audio data that is formatted for presentation by a presentation device, such as one or more speakers (not shown) in display device 504. Content processor 538 can include a display controller (not shown) that processes the video and/or display content to display corresponding images on display device 504. A display controller can include a graphics processor, microcontroller, integrated circuit, and/or similar video processing component to process the images.
Client device 502 also includes an audio and/or video output 540 that provides the audio, video, and/or display signals to television 504 or 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 device 502 to television 504 via an RF (radio frequency) link, S-video link, composite video link, component video link, or other similar communication link.
Although shown separately, some of the components of client device 502 may be implemented in an application specific integrated circuit (ASIC). Additionally, a system bus (not shown) typically connects the various components within client device 502. A system bus can be implemented as one or more of any of several types of bus structures, including a memory bus or memory controller, a peripheral bus, an accelerated graphics port, or a local bus using any of a variety of bus architectures. By way of example, such architectures can include an Industry Standard Architecture (ISA) bus, a Micro Channel Architecture (MCA) bus, an Enhanced ISA (EISA) bus, a Video Electronics Standards Association (VESA) local bus, and a Peripheral Component Interconnects (PCI) bus also known as a Mezzanine bus.
A content provider 602 can be implemented as a satellite operator, a network television operator, a cable operator, and the like. A content provider 602 includes a content server 612 to control distribution of stored content 614, such as movies, television programs, commercials, music, advertisements, and similar audio, video, and/or image content from content provider 602 to the content distribution system 606. Additionally, content server 612 controls distribution of live content (e.g., content that was not previously stored, such as live feeds) and/or content stored at other locations to the content distribution system 606.
A program guide data provider 604 includes a program guide database 616 and a program guide data server 618. The program guide database 616 stores electronic files of program guide data which is used to generate a program guide. Program guide data can include a program title, program broadcast day(s) to identify which days of the week the program will be broadcast, program start times(s) to identify a time that the program will be broadcast on the particular day or days of the week, and a program category. A program category describes the genre of a program and categorizes it as a particular program type. For example, a program can be categorized as a movie, a comedy, a sporting event, a news program, a sitcom, a talk show, or as any number of other category descriptions. Program guide data can also include program ratings, characters, descriptions, actor names, station identifiers, channel identifiers, other schedule information, and so on. Additionally, program guide data may include video on-demand content information, such as movie schedules, as well as application information, such as for interactive games, and other programming information that may be of interest to a viewer.
The program guide data server 618 processes the program guide data prior to distribution to generate a published version of the program guide data which can contain programming information for all broadcast channels and on-demand content listings for one or more days. The processing may involve any number of techniques to reduce, modify, or enhance the program data such as data compression, format modification, and the like. The program guide data server 618 controls distribution of the published version of the program guide data from a program guide data provider 604 to the content distribution system 606 using, for example, a file transfer protocol (FTP) over a TCP/IP network (e.g., Internet or Intranet). Further, the published version of the program guide data can be transmitted from program data provider 604 via a satellite and the content distribution system 606 directly to a client device 608.
Content distribution system 606 is representative of a headend service and/or program data center that provides various content to multiple subscribers (e.g., client devices 608). Each content distribution system 606 may receive a different version of the program guide data that takes into account different programming preferences and lineups. The program guide data server 618 can create different versions of the program guide data that includes those channels of relevance to respective headend services, and the content distribution system 606 transmits the program guide data to the multiple client devices 608. In one implementation, for example, content distribution system 606 utilizes a carousel file system to repeatedly broadcast the program guide data over an out-of-band (OOB) channel to the client devices 608. Alternatively, the multiple client devices 608 can receive standard, or uniform, program guide data and individually determine which program guide data to display based on the associated headend service.
Content distribution system 606 includes a broadcast transmitter 620, one or more content processing applications 622, and one or more program guide data processing applications 624. Broadcast transmitter 620 broadcasts signals, such as cable television signals, across broadcast network 610. Broadcast network 610 can include a cable television network, RF, microwave, satellite, and/or data network, such as the Internet, and may also include wired or wireless transmission media using any broadcast format or broadcast protocol. Additionally, broadcast network 610 can be any type of network, using any type of network topology and any network communication protocol, and can be represented or otherwise implemented as a combination of two or more networks.
A content processing application 622 processes the content received from a content provider 602 prior to transmitting the content across broadcast network 610. Similarly, a program guide data processing application 624 processes the program guide data received from a program guide data provider 604 prior to transmitting the program guide data across broadcast network 610. A particular content processing application 622 may encode, or otherwise process, the received content into a format that is understood by the multiple client devices 608 which are coupled to broadcast network 610. Although
Client devices 608 can be implemented in a number of ways. For example, a client device 608(1) receives broadcast content from a satellite-based transmitter via a satellite dish 626. Client device 608(1) is also referred to as a set-top box or a satellite receiving device. Client device 608(1) is coupled to a television 628(1) for presenting the content received by the client device (e.g., audio data, video data, and image data), as well as a graphical user interface. A particular client device 608 can be coupled to any number of televisions 628 and/or similar devices that can be implemented to display or otherwise render content. Similarly, any number of client devices 608 can be coupled to a single television 628.
Client device 608(2) is also coupled to receive broadcast content from broadcast network 610 and provide the received content to associated television 628(2). Client device 608(N) is an example of a combination television 630 and integrated set-top box 632. In this example, the various components and functionality of the set-top box are integrated into the television, rather than using two separate devices. The set-top box integrated into the television can receive broadcast signals via a satellite dish (similar to satellite dish 626) and/or via broadcast network 610. In alternate implementations, client devices 608 may receive broadcast signals via the Internet or any other broadcast medium, such as back channel 634 which can be implemented as a Internet Protocol (IP) connection or as other protocol connections using a modem connection and conventional telephone line, for example. Further, back channel 634 provides an alternate communication link between each of the client devices 608, and between the client devices 608 and the content distribution system 606.
The exemplary system 600 also includes stored on-demand content 636, such as video-on-demand movie content. The stored on-demand content 636 can be viewed with a television 628 via a client device 608 through an onscreen movie guide, for example, and a viewer can enter instructions to stream a particular movie, or other stored content, to a corresponding client device 608.
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.