Abstract:
In a method for providing a program guide in a program receiver, program schedule data is received, wherein the program schedule data associates programs with time slots on a particular channel of a plurality of channels. For a first time slot of a virtual channel, and using the program schedule data, a first program is selected from a first channel available for reception in a first selected time slot. For a second time slot of the virtual channel, a second program is selected from a second channel available for reception in a second selected time slot. In response to a request to display a schedule of programs, a schedule of the virtual channel is displayed, including the first and second programs scheduled respectively in the first and second time slots of the virtual channel.

Description:
BACKGROUND OF THE INVENTION  
       [0001]     1. Field of the Invention  
         [0002]     The present invention relates generally to methods and systems for producing and displaying an electronic program guide in an entertainment device that receives selected programs, and more specifically to methods and systems for creating and using a custom virtual channel in an entertainment device that receives selected programs.  
         [0003]     2. Description of the Prior Art  
         [0004]     Program receivers for cable, satellite, and broadcast television systems, which may also be referred to as set top boxes or receivers, provide viewers with a large number of television programs broadcast on a large number of television channels. To determine what program a viewer would like to watch, users may consult a printed television program schedule to determine what programs will be broadcast at a particular time. More recently, electronic program guides have been developed, wherein the program schedule information is displayed on a user&#39;s television screen. These electronic program guides allow the user to navigate through the television program schedule by pressing buttons on a remote control.  
         [0005]     In a typical program guide display, television programs are organized and displayed in a grid, where each row in the grid contains television programs for a particular channel. The columns in the grid correspond to a series of program periods or program timeslots for scheduled broadcast times. The user may scroll up or down to view program listings for different channels, or may pan left or right to view information about programs being broadcast at different times.  
         [0006]     As used herein, a channel includes typical television channels broadcast over the airwaves or through cable and satellite distribution systems. In addition, a channel may be any communication link through which program signals or data are transmitted and received for current viewing or later viewing from a storage media. Thus, a channel may include a network, such as the Internet, through which data is transmitted for present, real-time viewing, or a medium through which data is transmitted more slowly, not in real-time, and viewed later when some or all data is received and can be viewed at the intended speed or frames per second.  
         [0007]     It is not uncommon for a program provider to offer hundreds of channels of programs, which can make the viewer&#39;s task of selecting a program to watch tedious and time-consuming. With so many channels and programs to choose from, the user may spend too much time searching for a program rather than watching the program.  
         [0008]     Prior art electronic program guides have provided some tools for enhancing the search for programs. For example, prior art program guides allow the user to select “favorite channels” from the hundreds of channels available, and display only the favorite channels in a program schedule grid from which the viewer may choose a program to watch. This schedule display method filters out hundreds of channels and makes the selection from a few favorite channels easier and quicker.  
         [0009]     While the use of favorite channels can make program selection easier, the viewer still has to scroll through all the favorite channels. With hundreds of channels available, the user may have selected dozens of favorite channels, which means there is still a lot of information displayed in the program schedule grid and it may still take a while to select a program to watch.  
         [0010]     It should be apparent to those persons skilled in the art that a need exists for an improved method and system for producing and displaying an electronic program guide that provides a program viewer with an efficient and user-friendly way of selecting programs to view.  
     
    
     BRIEF DESCRIPTION OF THE DRAWINGS  
       [0011]     For a more complete understanding of the present invention, and the advantages thereof, reference is now made to the following descriptions taken in conjunction with the accompanying drawings, in which like numbers designate like parts, and in which:  
         [0012]      FIG. 1  illustrates a program schedule grid, which may be electronically displayed to a user of the method and system of the present invention;  
         [0013]      FIG. 2  is a high-level schematic block diagram of a system for providing an electronic program guide in accordance with the method and system of the present invention; and  
         [0014]      FIG. 3  is a high-level logic flowchart that illustrates the operation of displaying an electronic program guide in accordance with the method and system of the present invention.  
     
    
     DESCRIPTION OF THE PREFERRED EMBODIMENTS  
       [0015]     With reference now to the drawings, and in particular with reference to  FIG. 1 , there is depicted a program schedule grid  20  in accordance with the method and system of the present invention. As illustrated, program schedule grid  20  includes a plurality of channel rows and time slot columns, such as channel row  22  and time slot column  24 . A plurality of available channels may be listed in channel label column  26 . The time of day for time slot columns  24  may be labeled in time slot label row  28 .  
         [0016]     Program description information, such as the program title “World History”  30 , is displayed in program schedule grid  20  at an intersection of a selected channel row  22  and time slot column  24 . For example, at reference number  32 , the program description information is the title of the program, which in this case is “Evening News.” Therefore, program schedule grid  20  in  FIG. 1  displays program titles as program description information  30 . In alternative embodiments, other information, or additional information, may be displayed to describe programs.  
         [0017]     According to an important aspect of the present invention, a channel row identified as “MyChannel”  34  is shown at the top of program schedule grid  20 . MyChannel  34  is a virtual channel (which may also be referred to herein as virtual channel  34 ,) which means that MyChannel  34  does not exist as a channel that is broadcast by a particular channel or network broadcaster, nor is it a channel provided by a network or program provider, or a cable or satellite provider. Virtual channel  34  is an aggregation of programs that are selected from programs that are available on other channels, or selected programs that may be received in other ways.  
         [0018]     As illustrated in the example of  FIG. 1 , the programs displayed in virtual channel row  34  are selected from programs being broadcast in the same time slot on a different channel. For example, time slot  36  displays program description information  30  copied from, or derived from, time slot  32 , which indicates the program entitled “Evening News.” Similarly, time slot  38  in virtual channel  34  includes program information  30  from channel 4 at 5:30, which is the “Friends” program. At 6:00 and 7:00, time slot  40  includes program description information  30  from channel 7. At 6:30, virtual channel  34  time slots  42  and  44  include program description information  30  from channel 3 at the respective 6:30 and 7:00 time slots.  
         [0019]     When a user displays program schedule grid  20  and decides to watch the currently indicated program in virtual channel  34 , the user will actually be tuned to receive a program being broadcast on another channel, according to shown in the example in  FIG. 1 . If a user tunes into virtual channel  34 , and leaves the tuner on that channel over a period of several time slots, the tuner will automatically tune to the programs selected from other channels, as indicated by the sequence of programs displayed in the channel row of MyChannel  34  in  FIG. 1 .  
         [0020]     Referring now to  FIG. 2 , there is depicted a high-level schematic block diagram of a system for providing an electronic program guide in accordance with the method and system of the present invention. As illustrated, program receiver  50  is coupled via communication links to one or more program sources, which provide programs that may be received and viewed by the program receiver user. For example, satellite data  52  may be received from a satellite receiver that receives signals from an orbiting satellite. Internet data  54  may be received from a data connection to the Internet that allows program receiver  50  to receive or download program data. Cable data  56  may be received via connection to a cable system television program provider, such as a community cable television network which provides program data in either analog or digital formats.  
         [0021]     Program receiver  50  includes tuner  58  that is coupled to one or more sources of program data, such as satellite data  52 , Internet data  54 , or cable data  56 . Tuner  58  includes means for receiving, decoding, demodulating, and otherwise processing analog or digital data that represents programs transmitted on a particular channel, or programs available from a particular data source, during a particular program time slot. Tuner  58  receives program data that represents audio data, or video data, or both, corresponding to a particular program. And tuner  58  may also receive program schedule data, using program schedule receiver  59 , wherein the schedule data represents the particular channel, and time slot for available program data. Tuner  58  is capable of receiving data that is streamed in real time, which may be referred to as live streaming, or data that is stored in a file that may be requested and downloaded at any time, or during selected time periods.  
         [0022]     As illustrated, tuner  58  outputs data to audio/video processor  60 , which is used to provide outputs for television screen  62  and audio output device  64 . Therefore, audio/video processor  60  may include digital-to-analog converters for producing low-level audio signals for one or more audio channels of program sound. Additionally, audio/video processor  60  may include converters for processing video data and producing signals properly formatted to drive either a television or another type of display screen. For example, video may be processed and output as a composite video signal, an S-video signal, component video signals, or data formatted to drive high-definition digital displays or VGA-type computer displays.  
         [0023]     Tuner  58  is also coupled to processor  66 , which may be implemented with a microprocessor or microcontroller integrated circuit, or other specialized application specific integrated circuit. Processor  66  is capable of sending control signals to tuner  58  that instructs tuner  58  to receive particular program data from a particular channel, or from a particular network address for downloading a data file or receiving streaming media data. Additionally, processor  66  is able to receive data from tuner  58 , which data includes status information, and in some cases program schedule data that has been received from program data sources by program schedule receiver  59 .  
         [0024]     Processor  66  may include internal memory, and it may be coupled to external memory  68 , particularly when the capacity of internal memory is too small to perform all needed functions. Memory  68  may be used to store executable program instructions that are executed by processor  66 . Memory  68  may also be used to store program schedule data that represents the particular programs that are available in each time slot for each channel. Memory  68  is also a computer readable storage medium that can be used to store instructions that, when executed by a computer or processor  66 , cause the computer to perform a method for providing a program guide for a program receiver in accordance with the method and system of the present invention. Data representing selections and preferences for virtual channel  34  may also be stored in memory  68 .  
         [0025]     Processor  66  may also be coupled to modem  70 , which in turn may be coupled to telephone line  72  for receiving program schedule data or other instructions or software for controlling the operation of program receiver  50 .  
         [0026]     Processor  66  is coupled to clock  74 , which keeps track of the time of day and the date, which is important to displaying the appropriate program schedule information as shown in  FIG. 1 , and changing the program received by tuner  58  at the proper time.  
         [0027]     Processor  66  is coupled to remote command receiver  76 , which receives and processes commands from remote control  78 . Such commands may be transmitted by an infrared data link, a radio frequency (RF) data link, or other known methods of transferring data commands over a relatively short distance. The user of program receiver  50  may provide input data or other commands to change the channel and control the operation of program receiver  50  by pressing buttons on a conventional remote control.  
         [0028]     Processor  66  may also be coupled to a mass storage device  80 , which may be used to store program data received by tuner  58  so that it may be viewed at a later time, or may be used to store software or data used in the operation of program receiver  50 . Mass storage device  80  may be implemented with a hard disk drive, a writable and readable optical disk drive, solid state memory, or other known memory devices that may be used to store the large amounts of digital data required to store several hours of program data.  
         [0029]     Processor  66  is also coupled to text and graphics processor  82 , which is used to produce display data for displaying text and graphics on television screen  62 . Data output by text and graphics processor  82  may be mixed with video information in audio/video processor  60  so that text and graphics may be superimposed over program information in order to display a program schedule grid, such as program schedule grid  20  shown in  FIG. 1 . Text and graphics generator  82  may also be used to generate menus, prompts, instructions, and other textual and graphical information needed to provide a pleasing and easy-to-use graphical user interface to program receiver  50 .  
         [0030]     With reference now to  FIG. 3 , there is depicted a high-level logic flowchart that illustrates the operation of the method and system of the present invention. As depicted, the process begins at block  200  and thereafter passes to block  202 , wherein the process receives data contained in a program schedule data base. In a preferred embodiment, this data includes data records that associate a program, having a program name, with a channel (or other locator information), and a time of availability. The time of availability is typically a broadcast time slot, which is usually a half-hour period during a broadcast day. This availability data may include several times if the program will be broadcast more than once. For a program that is available on a network such as the Internet, the time available data may indicate that it is available at anytime, or that the program will be streamed live on the network live at a particular time. The program locator information in a preferred embodiment is a broadcast channel that is available over the public airwaves, on a cable distribution system, or via a satellite receiver. Other locator information may include a network address on either a local area network or the Internet, which uses a Universal Resource Locator (URL).  
         [0031]     Thus, the purpose of step  202  is to receive the data that is necessary to create and display program schedule grid  20  in  FIG. 1 . At a minimum, this data includes program names, channels, and the respective time slot data. Additional data may be received, such as program details, which may include a program summary, a content rating, a price if the program is distributed on a pay-per-view basis, and other similar information that may aid the user in selecting a program to view or listen to.  
         [0032]     The program schedule information may be received multiplexed together with program information using program schedule receiver  59  in tuner  58  to decode the information. Or, program schedule information may be received via an alternate data link, such as modem  70 , which is connected to telephone line  72  as shown in  FIG. 2 .  
         [0033]     Next, the process receives user preferences for user-programmed time slots in virtual channel  34 , as depicted at block  204 . As shown in  FIG. 1 , the “MyChannel” virtual channel  34  includes programs available on other channels, or on other networked file servers, that are selected for the user or television viewer. Some of these selections may be made by the user, and some program selections may be made by alternative selection means, or automatic selections based upon selection algorithms. In step  204 , program receiver  50  receives input directly from the user regarding user-programmed time slots. In one embodiment, the user may browse program schedule grid  20  by scrolling or paging through the available programs, selecting a program, and indicating a time slot in virtual channel  34  where the user wants to place the selected program.  
         [0034]     For example, as shown in  FIG. 1 , the user may display program schedule grid  20  and select the Evening News program  32 , which is broadcast on channel 2 at 5:00, so that it will be included in virtual channel  34  at 5:00. Similar selections may be made to fill other time slots in virtual channel  34 . Selections for virtual channel  34  may be made for each day of the week. In one embodiment, arrow keys on a remote control may be used in the selection process to move between selected programs and time slots. Once a program is selected, arrow keys may be used to move to select a time slot in virtual channel  34  in order to place the selected program into that time slot.  
         [0035]     In alternative embodiments, step  204  may be implemented using a computer and software that enables the user to select programs for time slots in virtual channel  34 . Once the user&#39;s selections are known and stored in a data file, the data file may be transferred to program receiver  50  via a local area network, or via Internet data connection  54 . Additionally, a program provider may provide a website with appropriate web pages and scripts that guide the user through the selection of programs for virtual channel  34 . Such a website would display available program choices and allow the user to select programs and fill time slots in virtual channel  34 . When the user is finished making selections at the website, selection information may be transferred to program receiver  50  through satellite data  52 , Internet data  54 , cable data  56 , or via modem  70 .  
         [0036]     Once the user has selected specific programs, the process selects programs for automatically-programmed time slots in virtual channel  34 , as illustrated at block  206 . In this step, the process determines which time slots have not been programmed by the user and automatically selects programs to fill some or all of these time slots. In a preferred embodiment, algorithms are used to select programs that the user will enjoy watching. Such algorithms may examine programs that have already been selected by the user to determine selection characteristics that describe the types of programs that the user has selected. For example, by examining user selections, the algorithm may determine that the user enjoys watching sports programs, and home improvement programs. These selection characteristics—programs about sports and home improvement—may be further characterized by a type of sport, or a type of home improvement, such as programs about gardening rather than building or construction.  
         [0037]     Once the algorithm has determined program selection characteristics, the algorithm examines other programs in the program schedule data to determine if there is a match between the selection characteristics of programs that the user has selected and selection characteristics of other available programs that the user has not selected. If there is a match, the algorithm may select such a matching program and put it in an empty time slot in virtual channel  34 .  
         [0038]     The algorithm for selecting programs may be based upon programs that have already been selected by the user, or the algorithm may use preferences entered by the user regarding selection characteristics. For example, the user may select a preference from a menu that requests that empty time slots be filled with sports programs, or a movie or television show staring a particular actor or actress.  
         [0039]     If program receiver  50  includes a mass storage device  80 , the algorithm for selecting programs in virtual channel  34  may include time shifting, wherein the program selected for a virtual channel time slot is not necessarily broadcast during that same time period in virtual channel  34 . For example, referring to  FIG. 1 , Evening News  32  may be recorded in the 5:00 time slot and placed in the 5:30 time slot in MyChannel  34 , wherein it is recalled and played from mass storage device  80  during the 5:30 time slot  38 . Similarly, programs available at specific times, or at any time, may be automatically selected to fill in the automatically-programmed time slots in virtual channel  34 . Time shifting may also be used when user-programmed time slots are filled  
         [0040]     Once the user has selected programs, and some programs have been automatically selected, the process fills in the remaining time slots in virtual channel  34  with programs from a default channel, as depicted at block  208 . Therefore, if there are unprogrammed time slots after proceeding through steps  204  and  206 , the process will fill the remaining time slots in virtual channel  34  from a user&#39;s favorite channel, or other default channel, so that eventually all the time slots are filled in virtual channel  34 . For example, a default channel might be a 24 hour news channel, or an all sports channel. It may work best if the default channel has half-hour programs so that the time slots may be filled with complete programs. In some embodiments, the default channel may be different for different days of the week, or different times of the day. For example, the default channel on Sunday may be a sports channel, while the default channel on a weekday may be a news channel. Similarly, a default channel for the after school hours may be a cartoon channel, while the default channel in the evening may be a major network channel.  
         [0041]     Next, the process determines whether the television has been initially turned on, as illustrated at block  210 . In this step, if the television has just been turned on or powered up (or similarly if the program receiver  50  has just been turned on), the process proceeds to block  212  wherein the receiver is tuned to “MyChannel”, the virtual channel. Therefore, as soon as the television, or program receiver  50 , is turned on, the tuner tunes to the program scheduled in virtual channel  34  so that the user is likely to be viewing a program of choice without having to make any additional channel selections. If the television has not been initially turned on, the process proceeds to block  214 .  
         [0042]     At block  214 , the process determines whether or not the user has made a request to display a program schedule grid on the television screen. If there is no pending request for displaying a program grid, the process proceeds to block  222 . In a preferred embodiment, the user may make a request to display the program grid by pressing a button on remote control  78 , which transmits a command that is received in program receiver  50  by remote command receiver  76 .  
         [0043]     After receiving a request for the program grid, the process displays the channel and time program grid that includes space for displaying the “MyChannel” virtual channel, as depicted at block  216 . This step is implemented by displaying a schedule grid similar to program schedule grid  20  in  FIG. 1 , wherein, the virtual channel “MyChannel”  34  is displayed in the grid. Text and graphics generator  82  can be used to generate data that can be interpreted and incorporated into video display signals by audio/video processor  60  and displayed as a program grid on television screen  62 .  
         [0044]     Next, the process determines whether or not it is time to turn the display grid off, as illustrated at block  218 . The display grid may be displayed for a short period of time if the user does not input commands or otherwise interact with the grid. If the user is paging through the grid and selecting channels to view more detailed information, the display of the grid continues and the process passes to block  220 . In block  220 , the user is allowed to interact with the displayed program grid by selecting a program or inputing other data or commands while the program schedule grid is displayed.  
         [0045]     If the process has determined that it is time to turn the display grid off, the process turns the grid off and passes to block  222 , wherein the process determines whether or not the currently displayed or playing program is over. If the program is not over, the process iteratively returns to block  214 . Alternatively, if the current program is over, which usually means that the current time is at the end of the time slot that ends on the hour or half-hour, the process passes to block  212  wherein the tuner is set to receive the next program scheduled in virtual channel  34 . By switching back to virtual channel  34 , a person may watch a program on another channel and then be tuned back to virtual channel  34 , which is most likely to have a program coming up in the next time slot that the user will enjoy watching. In some embodiments, the user may be prompted before automatically switching back to the virtual channel, at which point the user can agree or request that the tuner remain on the current channel.  
         [0046]     Note that the user may freely tune to channels other than the virtual channel after block  212 , where the television has been initially turned on. Also note that the process of receiving program database information, and the process or receiving user-programmed time slots, or automatically-programmed time slots has been depicted in the flowchart of  FIG. 3  in a certain order, with the virtual channel program selections shown at the top of the flowchart. Persons skilled in the art should recognize that these selections and inputs may be made at other times, or in parallel with other processes. The operating steps of program receiver  50  have been shown in this exemplary order to illustrate the operating principles of the invention and for ease of understanding. The processes in  FIG. 3  may be executed in a different order, or some processes may be executed in the background or simultaneously with other processes.  
         [0047]     While the example of the present invention shown in  FIG. 1  has only one virtual channel  34  displayed, other embodiments may include more than one virtual channel. For example, if program receiver is used by several persons or family members, each person may be allocated memory and display space for their own personal virtual channel. Alternatively, different virtual channels may be programmed according to different themes, moods, or subject matter. For example, one virtual channel may be programmed for football, while another may have a quiet mood with classical music or other performing arts programs.  
         [0048]     The present invention has the advantage of quickly and easily providing a program viewer with a program that the viewer has selected, or a program that has been automatically selected for the viewer based upon information from or about the user. When program receiver  50  is turned on, it may be programmed to immediately tune to virtual channel  34 , which is comprised of programs selected from other channels, from programs available on a data network, or from programs that have been previously recorded. In some situations, the viewer just needs to turn the equipment on and the selected programs will continue to play for the rest of the evening, without the viewer paging through hundreds of programs displayed in a program schedule grid.  
         [0049]     The foregoing description of a preferred embodiment of the invention has been presented for the purpose of illustration and description. It is not intended to be exhaustive or to limit the invention to the precise form disclosed. Obvious modifications or variations are possible in light of the above teachings. The embodiment was chosen and described to provide the best illustration of the principles of the invention and its practical application, and to enable one of ordinary skill in the art to utilize the invention in various embodiments and with various modifications as are suited to the particular use contemplated. All such modifications and variations are within the scope of the invention as determined by the appended claims when interpreted in accordance with the breadth to which they are fairly, legally, and equitably entitled.