DATABASE FOR USE IN METHOD AND APPARATUS FOR DISPLAYING
TELEVISION PROGRAMS AND RELATED TEXT
BACKGROUND OF THE INVENTION This invention relates to the field of television and, more particularly, to a database for use in displaying television program information on a television screen through the use of a television program schedule system.
Television program schedule systems, such as the one disclosed in application Serial No.
08/475,395, allow users to visually inquire into television viewing options through the use of a program guide. In these systems television program information is stored in an electronic memory connected to the television receiver. A database is used to organize and store television program information within the electronic memory.
SUMMARY OF THE INVENTION According to the invention television program schedule data is received from the vertical blanking interval of a television signal, analyzed, and stored within a database. The database contains a static area for information which is not subject to frequent change and a dynamic area for information which will frequently change.
Within each area information is stored within data structures which enable a television program schedule system to interpret and analyze the information. The data structures are designed to facilitate the rapid lookup and display of program information. The data structures are also designed to reduce the size of the electronic memory and to increase the efficiency of searches through the data.
The system facilitates a method for sorting the database and creating various displays of information to the user. In the current embodiment such lookups, sorts and displays include: a program guide which displays schedule information for a specific time or channel; a primary category guide which displays schedule information for a category of programs, i.e. movies, sports, children's shows, etc.; a sub category guide which displays schedule information for a sub-category of programs, i.e. under the primary category "movies" the sub-categories could be drama, action, comedy, etc.; a recording queue which facilitate the scheduling of recordings and the display of programs set to be recorded; a titles guide which displays information for programs by title, rather then by station or time; a conflict resolver which displays information about conflicts in time or channel when the user desires to watch, or record, two programs that conflict; and a when else feature which searches and displays when a selected program will air. The database also contains a channel map which is used to link television guide sequence numbers with data providing channel numbers and station call letters. The database also contains a channel inhibit feature which allows the user to block the display of program information for a certain channel or channels.
The database is periodically updated through the use of a designated data providing channel so that updated television program information is always available for operator selected program guides. In an alternate embodiment each channel provider can independently update schedule data for television programs appearing on that channel
BRIEF DESCRIPTION OF THE DRAWINGS
The features of specific embodiments of the best mode contemplated of carrying out the invention are illustrated in the drawings, in which'
FIG. 1 is a diagram of an electronic memory that illustrates the static and dynamic areas of memory
FIG. 2 is an illustration of a show information package data structure FIG. 3 is an illustration of a section of a show information package data structure. FIG. 4 is a representation of the pre-established time list data structure contained in the static area of the database FIG 5 is a representation of a section of a show information package data structure.
FIG 6 is a representation of the channel map data structure contained in the static area of the database
FIG 7 is a representation of the control array data structure contained in the static area of the database. FIG 8 is a representation of the call letter map data structure contained in the static area of the database.
FIG. 9 is a representation of the record queue data structure contained in the static area of the database
FIG. 10 is a diagram of the download packet received by the database FIG 11 is a table illustrating the memory pπonty scheme employed by the database.
FIG 12 is a representation of the memory bit map employed by the database FIG. 13 is a schematic block diagram of a television receiver that has an electronic television program guide incorporating the principles of the invention.
FIG. 14 is a time specific program guide generated by the principles of the invention. FIG. 15 is a channel specific program guide generated by the principles of the invention.
FIG. 16 is a title guide generated by the principles of the invention. FIG. 17 is a title search by letter guide generated by the principles of the invention. FIG. 18 is a program category guide generated by the principles of the invention. FIG. 19 is a diagram of the download packet received by the database. FIG. 20 is a diagram of the packet stored by the database.
DETAILED DESCRIPTION OF A SPECIFIC EMBODIMENT
In the following embodiments of the invention, common reference numerals are used to represent the same components If the features of all the embodiments are incorporated into a single system, these components can be shared and perform all the functions of the descπbed embodiments
FIGS 13 to 15 are taken from application Seπal No 08/475,395 With reference to FIG 13, a source of television signals 10 such as a terrestrial antenna, or a cable is connected to a television tuner 11 The output of tuner 11 is a modulated intermediate frequency signal containing video and audio television information Tuner 11 is connected by an intermediate frequency amplifier (IF AMP) 12 to a picture detector (PICTURE DET) 13 and a sound detector
(SOUND DET) 14, which produce base band video and audio signals, respectively The audio signal is coupled by a sound amplifier (SOUND AMP) 15 to a loudspeaker 16 The video signal is coupled by a video amplifier not shown to one input of a switch 18 Sound detector 14 and picture detector 13 are connected to the audio and video inputs, respectively, of a video cassette recorder (VCR) 17 (Alternatively, television signal source 10 could be directly connected to the
RF input of VCR 17, if its internal tuner and demodulating circuitry is to be utilized ) The output of VCR 17 is connected to the other input of switch 18 The output of switch 18 is connected to one input of a conventional picture-in-picture (PIP) integrated circuit chip 19 The output of PIP chip 19 is connected to the video input of a tele- ision receiver or monitor (TV) 20 having a screen (not shown)
An updatable data base of the schedule of program listings of all the available channels for a prescπbed peπod of time, e g a day or a week, is electronically stored in a program schedule memory 22 These program listings typically include for each program the title, a program descπption, the day of the week, the start time of the day, the program length, and the channel on which the program is transmitted and thus available for reception at source 10 In a preferred embodiment of the invention, the period of time for which the program listings are stored is different for the guides, depending upon viewer pπoπties and preferences For example, the information needed to display the TISPG and CSPG may be stored for one or two days and the information needed to display the TSPG may be stored for a week or more The data base can be updated by a continuous data link in the vertical blanking interval (VBI) of one television channel broadcast to the television receiver in well known fashion Alternatively, the data base can be updated by unplugging memory 22 and replacing it with a memory having the updated data base Memory 22 is connected to a microprocessor 24 that is programmed to control the operation of the descπbed equipment An operating program for microprocessor 24 is stored in a read only memory (ROM) 26 A viewer input device 28, preferably in the form of a remote IR controller, is coupled to microprocessor 24 to provide commands from the viewer A video processor 30 is coupled to microprocessor 24 When the viewer wishes to see television program listings, microprocessor 24 recalls a portion of the program schedule data base from memory 22
and couples it to video processor 30, where the program listings are formatted for display.
Preferably, the information stored in video processor 30 is a bit map of what is displayed on the screen of television receiver 20. Video processor 30 is connected to the other input of PIP chip 19. Preferably, viewer input device 28 controls microprocessor 24 by cursor movement on the screen of television receiver 20. To this end, microprocessor 24 and video processor 30 are coupled to a cursor position register 32. (Alternatively, the viewer can select items of information displayed on the screen by keying into viewer input device 28 code numbers assigned to these items.) Microprocessor 24 is also coupled to tuner 11 for channel change, to VCR 17 for play/record selection and start/ stop, to switch 18 for selection of one of its inputs, and to PIP chip 19 for selection of the mode of PIP operation.
Several formats of the electronic program guide are shown in FIGS. 14, 15, 16, 17 and 18. Each format has a background area 40 and an overlaid PIP window 42 in the upper left-hand corner of the screen. The real time, i.e., 6: 15 p.m., is displayed in a sub-area 42a PIP window 42. Background area 40 includes a banner and message prompting area 43 at the top of the screen, a program description area 44 in the upper right-hand corner of the screen adjacent to PIP window 42, and a program schedule area 46 below areas 42 and 44. Program description area 44 includes the start time and length (duration) of the program being described. The viewer can move a cursor 48 vertically to highlight one of the program listings displayed in area 46. The highlighted background of cursor 48 and the background of program description area 44 are the same color or shade. In each format, the complete, moving images of a currently broadcast television program in real time and the current time are displayed in PIP window 42 and the audio portion of the television program displayed in PIP window 42 is reproduced by the sound system of monitor 20. The information displayed in areas 43, 44, and 46 varies depending upon the format. In FIG. 14 a time specific program guide comprising listings of programs being broadcast at a specific future time, i.e., 8:00 p.m., is displayed in area 46. The viewer can select the time of the program listings to be displayed at intervals such as one-half hour. The selected future time, i.e., 8:00 p.m., for the program listings displayed in area 46 is shown in a sub-area 43a of area 43. A brief program description of the program listing highlighted in area 46 by cursor 48 is displayed in area 44. The current program being broadcast remains displayed in PIP window
42, and a banner 49 which identifies the current program by channel name, channel number, and program title is displayed between PIP window 42 and area 46 on a background having a different color or shade than cursor 48.
In FIG. 15, a channel specific program guide comprising listings of programs being broadcast on a specific channel is displayed in area 46. All the program listings for a selected channel, i.e., FOX Channel 7, are displayed in area 46, from the currently broadcast program into the future for a specified time period, e.g., 24 hours or until the end of the next day. Area 46 has a column for time and a column for program title; each line of area 46 represents a separate
program listing. The moving, real time images of the current television program are displayed in PIP window 42. If the cursor also highlights the current program, a brief program description of the current program is displayed in area 44. If the cursor highlights another program listing, as shown in FIG. 4, a brief program description of the highlighted program is displayed in area 44 and the current program is identified in banner 49 by time and title.
In FIG. 16, a title guide comprising of listings of programs being broadcast sorted by title is displayed in area 46. All the programs in memory are listed by title in area 46, starting with the letter A, through the letter Z and then titles beginning with numbers or symbols. Area 46 has a column for time and a column for program title; each line of area 46 represents a separate program listing. The moving, real time images of the current television program are displayed in PIP window 42. If the cursor also highlights the current program, a brief program description of the current program is displayed in area 44. If the cursor highlights another program listing, as shown in FIG. 4, a brief program description of the highlighted program is displayed in area 44 and the current program is identified in banner 49 by time and title. In FIG. 17, a title guide comprising of listings of programs being broadcast sorted by the first letter in the program's title is displayed in area 46. All the programs in memory that begin with the user selected letter are listed by title in area 46. In this example, the user selected the letter "M" to for display. Area 46 has a column for time and a column for program title; each line of area 46 represents a separate program listing. The moving, real time images of the current television program are displayed in PIP window 42. If the cursor also highlights the current program, a brief program description of the current program is displayed in area 44. If the cursor highlights another program listing, as shown in FIG. 4, a brief program description of the highlighted program is displayed in area 44 and the current program is identified in banner 49 by time and title. In FIG. 18, a program category guide comprising listings of programs that correspond to the selected category is displayed in area 46. All the programs in memory that correspond to the category are listed by title in area 46. Area 46 has a column for time and a column for program title; each line of area 46 represents a separate program listing. The moving, real time images of the current television program are displayed in PIP window 42. If the cursor also highlights the current program, a brief program description of the current program is displayed in area 44. If the cursor highlights another program listing, as shown in FIG. 4, a brief program description of the highlighted program is displayed in area 44 and the current program is identified in banner 49 by time and title.
All four areas of background 40 are formatted in video processor 30. The memory space of video processor 30 corresponding to the area in which PIP window 42 appears on the screen is left blank; i.e., although overlaid on background area 40, PIP window 42 does not cover up any of the information of background area 40. By means of a pair of up/down arrows on viewer input device 28, the viewer can move a cursor 48 vertically to highlight the listing of one of the
currently playing television programs displayed in area 46. Preferably, to reduce delays in displaying the program schedules, all the program listings for the particular screen format are stored in video processor 30, even though only a fraction of them are displayed at the same time. When the cursor reaches the top or bottom listing in area 46, microprocessor 24 recalls further program listings from video processor 30 for display on the screen of television receiver 20.
Preferably, two levels of detail are available for the program description. Normally, the first level detail of the program description is displayed in area 44 as described above. When more detail is desired, the viewer operates input device 28 to display a second level detail of the program description. There are two options for the display of the second level detail. As one option, the second level detail can replace the first level detail in area 44. This has the advantage that the program listings can continue to be seen by the viewer while more detail about the program description is displayed. As the other option, the second level detail can replace the program listings in area 46. This has the advantage that more space is available to display the second level of detail than the first level. In the preferred embodiment, a television program schedule system ("schedule system") contains a database used to store all the information needed to create program guides and to carry out user requests, such as requests to record specific future programs. The database is stored in a memory accessible by the schedule system microprocessor.
The database contains a static area and a dynamic area. The static area contains several fixed tables used to store data not subject to frequent change such as the call letters for each received channel. The dynamic area is used to store data which is frequently updated such as the actual television program schedule data. Partitioning memory into static and dynamic areas provides for efficient database operation because each area of memory (static or dynamic) can be addressed separately leading to smaller address sizes and faster searches. The partitioning also allows for efficient memory management as only the dynamic area, 301, would need to be pruned.
FIG. 1 depicts the television program schedule database. Static area 300 contains the call letter map, the pre-established time list, the channel map, the control array, the memory map and the record queue. These structures will be described in greater detail below. Dynamic area 301 is used to store television program schedule data that falls within a seven day window. This data takes the form of show information packages (SIPs). These structures are also described more fully below.
In the current embodiment, the database only stores SIPs for the current day, the next day and any SIPs that contain category information for the next seven days. This method of selective storage reduces the memory needed and increases the processing speed of the schedule system.
In alternate embodiments the database could be expanded to contain additional days of program schedule data. The number of days for which program schedule data is stored will of course impact on the size of the memory needed and the processing speed of the schedule system.
Data Structures
Data in television schedule database is stored in data structures. The data structures enable a schedule system to interpret the data stored therein. Several of the data structures have a fixed size and reside in the static area 300. Other data structures are of variable size and reside in the dynamic area 301. The fixed data structures include: the pre-established time list, the channel map, the control array, the call letter map, the memory map and the record queue. The variable data structures contain the show information packages.
Show Information Packages Show information packages are variable length data structures that contain actual television program schedule data. Each show information package contains data for a four hour block of television programming for a specific channel. The show information package size is variable because the number of shows in any four hour block will depend on the duration of each individual show. For example a four hour block may contain: eight - half hour shows, two - two hour movies, four - one hour shows, one - two hour movie and four - half hour shows, etc.
FIG. 2 depicts a show information package. A show information package contains several general data fields which refer to the entire package. These are: amount of memory - used to determine how much space is needed to store the show information package; control date - used to determine which day the SIP contains data for; program category - used to indicate the categories, if any, of the programs inside the SIP; first letter in the program's title (FLPT) - used to indicate the first letter of the programs' title contained within the SIP.
Following the general data is specific data for each show that fits within the four-hour time block. For a given show, represented by block 314, the following fields are present in the show information package: multiple show flag field - used to determine if this show is the last show within the package, or if there are other shows following this show in the four hour block; start time field - contains an offset from the start time of the four-hour block, this offset is added to the time of the four-hour block to determine the start time of the show; duration field - specifies the air time for the show; program category - contains information on the type of show; for example, the show may be a sporting event, a news program, or a movie; program sub category - contains information on the type of show; for example, the show may be a dramatic (sub category) movie (a category); CC field determines whether or not the show is closed captioned; stereo field - determines whether or not the show is broadcast in stereo; add-ons field - is an extra field for expansion, this field may contain other information about the show (i.e. rating of the show) as that information becomes standard in the art. In alternative embodiments a variety of other information can be included for each show.
Following these fields are fields representing program title, primary description - a short description of the program, secondary description - a longer description of the program and VCR+ PLUSCODE. Each of these items are represented by two separate fields, one containing
the length of a specific item, such as title length, and one containing the item itself, such as title.
The length fields are used to determine how many of the following bytes comprise the data item. For example if the secondary description length field is 40 bytes, the schedule system will know that the next forty bytes comprise the secondary description. Following this information is an end-of-show field. The end-of-show field is used to indicate that the information for that particular show is finished. A show information package may contain information for one or more shows depending on how many shows are broadcast within the four hour block. The presence of multiple shows is represented by 315 and 316.
A show information package is structured so as to provide several unique features for storing data. The title length, primary description length, secondary description length and
VCR+ PLUSCODE length fields can be expanded for values that are too large to fit within one byte. For example, referring to FIG. 3, if the secondary description length is greater than 255 (the maximum length value that can be stored within one byte), the length byte is set to 255 (the maximum value). Setting the length byte to the maximum value indicates that the following byte is also a length byte and the two bytes should be added to determine the length of the secondary description. In this way, a show information package can be used to dynamically allocate space to accommodate longer descriptions or longer titles.
The end-of-show field allows for the inclusion of data in the show information package that is not read by a current version of a schedule system but may be utilized by for later versions. As shown again in FIG. 2, following the VCR+ PLUSCODE field, there are two fields of unspecified data. This is data which may be read by future versions of a schedule system but is currently not processed. When processing show information package data, a schedule system will discard this data until it reads an end-of-show field. The schedule system will not begin processing data for a new show until an end-of-show field is found. This feature allows a schedule system to access the same data as a different schedule system which may incorporate other information besides title, description, etc.
Pre-established Time List
The pre-established time list is used to locate television program information for each channel in the schedule system. Television programming schedule data is located through the use of pointers which contain the addresses of show infoπnation packages stored in memory. Each pointer points to one show information package containing a four hour block of schedule data. The pre-established time list contains 42 pointers for each channel and therefore can reference 7 days of program schedule data. In alternate embodiments where schedule data is stored for more then seven days the pre-established time list would contain a correspondingly larger number of pointers.
FIG. 4 illustrates the pre-established time list. The pre-established time list, which is a grid of times and channels. A designated location in static area 300 is assigned to each telecast
time and channel Specifically, four hour blocks of telecast time are designated by base letters
A-AO and telecast channels are designated by subscπpts 1-N — contains a set of forty two pointers 313 for each channel in the schedule system Each pointer corresponds to a show information package that contains data for a four hour block of television programming For example, in FIG 4. the pointer El corresponds to program data from four p m to eight p m, on one channel Twelve pointers represent 48 hours of programing information (24 hours for the current day and 24 hours for the next day)
Referring to FIG 4, pointers A2 through AO2 are used to represent the program data associated with the second channel in the schedule system Each pointer contains an address, m dynamic area 301, of a show information package of variable length containing actual television program data When searching for specific television schedule data, the schedule system first looks in the pre-established time list to secure the appropπate pointer, then uses the address found in that pointer to determine where the data is stored For example if data for the second channel in the schedule system is needed for a television program between eight p m and twelve midnight the schedule system will use the address in pointer F2 to determine the location in dynamic area 301 of the show information package containing the associated data
In summary, the address of the show information package of a given television program is stored in static area 300 in a location assigned to the telecast time and channel of that program, e g , the address of the show information package of a program to be telecast between eight p m and twelve midnight on the second channel is stored in location F2
Channel Map
The database also contains a channel map located in static area 300 The channel map, depicted in FIG 6, links the television programming provider channel number with the internal channel number For example, in FIG 6, channel 7 is assigned to internal channel 1 and channel
11 is assigned to internal channel 3 The channel map is used to identify the provider channel number when creating a program guide display
Control Array The database also contains a fixed control array located in static area 300 The control array is used by a schedule system to identify channels which have been inhibited for display by the user The control array is depicted in FIG 7 For each channel, a display field 320 is set to "1" if the channel is to be displayed and set to the "0" if the channel is to be inhibited Referπng to FIG 7, channels 1, 2, 4, and 5 will be displayed in a program guide while channel 3 will be inhibited
There is also a field for each channel for additional "add-on" information This field allows for the addition of other user controlled functions m future versions of a schedule system such as a specified time peπod for inhibiting display of a channel
Call Letter Map
The database also contains a call letter map located in static area 300. The call letter map links the call letters corresponding to a television provider with the internal guide channel. For example, in FIG. 8. the call letters KABC are linked to internal channel 1 and the letters WWOR are linked to internal channel 2. The call letter map is used to identify provider channel call letters for display in a program guide.
Record Queue
User requests for recording future programs are stored in the record queue. The record queue is a fixed length table of twenty entries located in static area 300. The record queue is depicted in FIG. 9.
Each entry in the queue contains the channel that the show will air on and the start time of the show. The record queue is structured so that programs are in time sequence order. That is, the first item in the list will be broadcast earlier than any of the other items, and so on. This structure eliminates the need to search the record queue in order to find the next program for recording.
Data Transmission
Television schedule data is continuously transmitted to the database from the vertical blanking interval (VBI) of the data provider channel. In order to receive schedule data the television must be tuned to the data provider channel. For example, if the data provider channel is channel 7, the television must first be tuned to channel 7 before schedule data can be received. The schedule system attempts to receive data from the provider channel four times a day.
Because a user may be watching a different channel when the schedule system attempts to download data, a download is attempted four times in an effort to ensure the database receives a complete set of data. The four download attempts are spaced six hours apart over a 24-hour period to provide a high probability that during one of those attempts a user will not have the television tuned to another channel. For example, download attempts may occur at twelve midnight, six a.m., twelve noon, and six p.m. It is unlikely that someone will be watching television at all four of these times.
In an alternate embodiment schedule data updates can occur on an individual basis for each channel. Each channel provider can supply schedule updates in the VBI signal for that channel. When the user selects a channel for display the schedule system can interrogate the VBI on that channel and receive schedule updates. The entire dynamic area 301 is erased before the first download of the day. This complete erasure ensures that all data for shows that have already aired is removed from the schedule system. All television program data is sent and received in download packets. The download packet is comprised of the schedule information, along with a header which contains
routing data, enabling the schedule system to determine how to store the contents of the packet.
FIG. 10 illustrates a download packet. The packet begins with a packet header containing packet ID number 302 used to distinguish this packet from other packets. The packet header also contains number of bytes 303 and number of blocks 304. These values are used to determine the size of the packet.
The packet header is followed by the show information package (SIP) header. There is a show information package header for each show information package in the packet. The SIP header contains: guide number 305 which specifies the internal channel number of the data in the show information package; channel ID 306 which specifies the source of the data in the show information package; and time slot 307 used to designate the time of day of the data in the show information package. A show information package 308 follows the SIP header.
Upon receipt, a show information package is extracted from the download packet and temporarily stored in memory. The show information package contains a control date field that is used to determine which day and time the data is for, a guide channel field that specifies the internal channel number for the data and a program category that specifies which categories of programs are included within the package.
Before new show information packages are stored, a check is made to determine if the internal channel number in the show information package header corresponds to a channel which is enabled for display. If the internal channel does correspond to an enabled channel the control date is checked. If the SIP is outside of the seven-day system window, or for a channel not enabled, it is discarded.
Before new show information packages are stored, a check is made to determine if the
SIP is beyond the two-day all program listing window and contains a program that corresponds to a predetermined category. If so, the SIP is rewritten to include only programs corresponding to predetermined categories prior to storage. This scheme is outlined in FIG. 19 and FIG. 20.
All non-matching program category shows are discarded. If the show information package is outside of the current two-day window and does not contain program category information, the show information package is discarded.
All other SIPs must fall within the two-day all program listing window and are stored as follows: The SIPs are written into memory location 301. The pointers used in the pre-established time list data structure are updated to indicated where the corresponding SIP was stored.
The schedule system contains a memory prioritization scheme to efficiently use the memory space available. The scheme is outlined in FIG. 11. The prioritization scheme is keyed to the number of channels that are selected for display. If the operator has selected twenty-nine or less channels for display, all titles, first level descriptions and second level descriptions for programs that fall within the 2-day window are stored.
If the user has selected over 30 channels for display, but less than 39 channels, all shows that will air on the current day are stored with title, first level and second level descriptions. All shows broadcast for the second day, however, will only be stored with the title and the first level description. Program category shows will only be stored with their titles. If the operator has selected over 40 channels for display, only titles are stored.
Memory Management
The database includes a memory bit map in order to track the parts of dynamic area 301 that are currently holding program data as opposed to the parts of the program schedule memory that are free to store new program data. The memory bit map divides the memory into 32 byte blocks. Each block is represented by a bit in the memory bit map.
The memory bit map is depicted in FIG. 12. Each bit in the map 310 represents a 32 byte block of memory. A "1" in the bit position 311 indicates that program data is stored in that block. A "0" in the position 312 indicates that the block is free. When new data is to be stored, a search can be made through the memory bit map to locate a sufficient number of free positions in which to store the data. When the positions are located, the data is stored and the corresponding numbers in the memory bit map are changed from "0" to "1" to indicate that those memory locations are occupied.
For example, referencing FIG. 12, if data is received that requires ten blocks of storage, a schedule system will scan the memory map and store the data in the space represented by bits
0-7 in row 3 and bits 0-1 in row 4. These bits will then be set to "1" in the memory bit map.
A schedule system can also periodically re-order the memory so that free space is grouped contiguously. For example, referencing FIG. 12, the data starting in the block represented by bit 2 in row 0 and ending in the block represented by bit 1 in row 1 would be slid over to the block represented by bit 3 in row 0. This will remove the "0" gap in row zero. This process is repeated throughout the memory map so that all free space is grouped together at the end of memory.
As previously stated, all the information in dynamic area 301 is cleared out once a day. This process ensures that the database does not contain data which is more than one day old. A schedule system can also prune data to remove data for shows that have already aired. This pruning is accomplished by searching through show lists in dynamic area 301 to identify shows that have start times that have occurred before the current time. Data for any of these identified shows is removed from the database, and a garbage collection routine would secure the memory that contained these old shows by changing the appropriate bits in the memory bit map.
The schedule system may also remove data for channels which have been disabled. For example, if the operator disables a channel for display, the schedule system can delete any program schedule data for that channel. The garbage collection routine will then secure the memory space that was represented by shows for the deleted channel. If the operator were to
select the channel for display again the schedule system would have no data for that channel until the next update period.
Database Processing In addition to traditional database processing using common retrieve and parse functions, the schedule system also facilitates faster searching for certain types of searches by the use of indexing bits placed in the header of the SIP package. In the present embodiment, qualifying fields of bits exist for program category (2 bytes), program sub category (2 bytes), and the first letter in a program's title (26 bits - one bit per letter) as shown in FIG. 2. For example, FIG. 5 shows the header of a SIP package that contains a program category "MOVIE", sub category "ACTION", titled "ZORRO". For this SIP the bit mapped to "MOVIE" 500 within the program category field is set to "1", the bit mapped to "ACTION" 501 within the sub program category field is set to "1", and the bit mapped to "Z" within the FLPT is set to "1".
SIPs that contain multiple programs have bits properly set for all the programs in the SLP, using a logic "OR" function. For example, if a SIP contained three programs, ZORRO, Magnum
PI and Monty Python, the first letter of the program bits for "Z" and "M" are set to "1", all other bits are "0".
When performing searches involving a bit field the schedule system first checks that the corresponding bit in the SIP's header matches the search criteria. If the criterion is met the system then parses the data from the SIP, if the criteria is not met the system skips that SIP altogether. This method significantly reduces search times by limiting the number of SIPs that must be parsed.
Interaction between the database and a television program schedule system is illustrated through the following examples:
1. The user requests a time specific program guide (TISPG), the current time is 7 p.m. When the user requests a TISPG for information pertaining to television shows that are currently being broadcast, the schedule system first reads the current time (7 p.m.) from a microprocessor clock. The schedule system then determines the pointers that correspond to current time in the pre-established time list, FIG. 4. Since the current time is 7 p.m. the schedule system will look to the fifth pointer (this pointer corresponds to the data from 4 p.m. to 8 p.m.) for each channel: Channel 1 - El, Channel 2 - E2, Channel 3 - E3, . . ., Channel N - EN.
For each pointer the schedule system accesses the associated show information package, FIG. 2. The schedule system adds the start time of the four hour block (4 p.m.) to the time offset in each show in the show information package to determine the show that is currently airing on that channel. Information for the show is then extracted from the show information package. The extracted information includes title, primary description, secondary description and VCR+ PLUSCODE.
Internal channel numbers are also used to index into the channel map, FIG. 6.
Specifically, the channel number is used to select a specific source channel ID for display in the guide: Channel 1 - 7, Channel 2 - 6, Channel 3 - 11, . . . Channel n - 172. The internal channel number is also used to index into the call letter map, FIG. 7. Specifically, the internal channel number is used to pull out the station identification call letters for display in the guide: Channel
1 - KABC, Channel 2 -WWOR, . . . Channel 3 - KTVR. All of the information from the show information package, the channel map and the call letter map is used to create formatted text lines for display in a guide.
2. The user requests a channel specific program guide (CSPG), the current channel being viewed is channel 6, the current time is 3 p.m.
When the user requests a CSPG for information pertaining to television shows that are airing or will be broadcast on a specific channel (e.g., channel 6) at a specific time (e.g., 3 p.m.) the schedule system determines the channel number corresponding to the displayed channel by interrogating a system variable. For this example the channel is channel 2. The schedule system then reads the cuπent time (3 p.m.) from a microprocessor clock. The schedule system determines the pointer that corresponds to current time for the selected internal channel in the pre-established time list, FIG. 4. Since the current time is 3 p.m. and the selected internal channel is channel 1 the schedule system will look to the fourth pointer (this pointer corresponds to the data from 12 noon to 4 p.m.) in the second set of pointers. This pointer is D2, FIG. 4.
The schedule system then accesses the associated show information package, FIG. 2, for pointer D2. The schedule system adds the start time of the four hour block (12 noon) to the time offset in each show in the show information package to determine the show that is currently airing. Information for the show is then extracted from the show information package. The extracted information includes title, primary description, secondary description and VCR+
PLUSCODE. The schedule system extracts data for all shows in the show information package pointed to by D2 that occur after the selected show. Information is then extracted for all shows in show information packages pointed to by pointers E2 - L2.
The internal channel number is also used to index into the channel map, FIG. 6. Specifically, the internal channel number is used to pull out the specific source channel ID, channel 6, for display in the guide. The internal channel number is also used to index into the call letter map, FIG. 7. Specifically, the internal channel number is used to pull out the station identification call letters, WWOR, for display in the guide. All of the information from the show information package, the channel map and the call letter map is used to create formatted text lines for display in the guide.
3. The user requests a program category guide (PCG), the selected category is "MOVIE", the current time is 10:30 a.m.
When the user requests a PCG for information pertaining to television shows within a specific category (MOVIE) that are airing or will be broadcast, the schedule system first reads the current time (10:30 a.m.) from a microprocessor clock. The schedule system then determines the pointers that correspond to current time in the pre-established time list, FIG. 4. Since the current time is 10:30 a.m. the schedule system will look to the third pointer (this pointer corresponds to the data from 8 a.m. to 12 noon) for each channel: Channel 1 - Cl, Channel 2 - C2, Channel 3 - C3, . . . , Channel N - CN.
For each pointer the schedule system accesses the associated show information package, FIG. 2. The schedule system checks the category bit in each SIP header to determine if a category (MOVIE) is contained in the SIP. If a "MOVIE" is contained in the SIP the schedule system adds the start time of the four hour block (8 a.m.) to the time offset in each show in the show information package to determine the show that is currently airing on that channel. If the current show is a "MOVIE", information for the show is extracted from the show information package. The extracted information includes title, primary description, secondary description and VCR+ PLUSCODE.
The schedule system then increments the current time by five minutes (10:35) and repeats the above process on the SIP package. The clock is incremented again by five minutes and the process is repeated until the clock time is at the end of the four hour block, i.e. 12 noon. The schedule system then access all remaining pointers in like manner, Dl - DN, El - EN, . . . AO1 -AON and extracts information for all shows that contain the category "MOVIE".
4. The operator requests a title guide (TG), of all the program titles that begin with the letter "Z", the current time is 10:30 a.m.
When the user requests a TG for information pertaining to television shows that begin with a specific letter that are airing or will be broadcast, the schedule system first reads the current time (10:30 a.m.) from a microprocessor clock. The schedule system then determines the pointers that correspond to current time in the pre-established time list, FIG. 4. Since the current time is 10:30 a.m. the schedule system will look to the third pointer (this pointer corresponds to the data from 8 a.m. to 12 noon) for each channel: Channel 1 - Cl, Channel 2 - C2, Channel 3 - C3, . . . , Channel N - CN.
For each pointer the schedule system accesses the associated show information package, FIG. 2. The schedule system checks the bit corresponding to the first letter in a program's title (FLPT) in the SIP header to determine if there is a match. If a show contains a "Z" the schedule system adds the start time of the four hour block (8 a.m.) to the time offset in each show in the show information package to determine the show that is currently airing on that channel. If the current show begins with a "Z", information for the show is extracted from the show information package. The extracted information includes title, primary description, secondary description and VCR+ PLUSCODE.
The schedule system then increments the current time by five minutes (10:35) and repeats the above process on the SIP package. The clock is incremented again by five minutes and the process is repeated until the clock time is at the end of the four hour block, i.e. 12 noon. The schedule system then access all remaining pointers in like manner, Dl - DN, El - EN, . . . AO1 -AON and extracts information for all shows that contain the category "MOVIE".
5. The user requests a "when else" (WE) display of a selected program, ZORRO (ie when else is ZORRO airing?), the current time is 10:30 a.m.
When the user requests WE information pertaining to a selected television show the schedule system first reads the current time (10:30 a.m.) from a microprocessor clock. The schedule system then determines the pointers that correspond to current time in the pre-established time list, FIG. 4. Since the current time is 10:30 a.m. the schedule system will look to the third pointer (this pointer corresponds to the data from 8 a.m. to 12 noon) for each channel: Channel 1 - Cl, Channel 2 - C2, Channel 3 - C3, . . . , Channel N - CN. For each pointer the schedule system accesses the associated show information package,
FIG. 2. The schedule system compares the FLPT bit from the selected program with that of the SIP header to determine if there is a match. If there is a match the schedule system reads the data from the SIP and compares the show titles with the selected show.
The clock is incremented by five minutes and the process is repeated until the clock time is at the end of the four hour block, i.e. 12 noon. The schedule system then access all remaining pointers in like manner, Dl - DN, El - EN, . . . AO1 -AON and displays all matches, including the show's channel number and the day and time of airing.
Inhibiting Channels The control array , FIG. 7, provides the capability to block channels for display. Blocking a channel inhibits the channel from being displayed on a schedule system, therefore the channel would not be part of the TISPG, CSPG, or CG.
When the user selects a channel for non-display, the display flag in the control array is set to "0". Whenever the schedule system user requests a program guide display, the schedule system first checks the control array before proceeding with processing on the pre-established time list. If the control array for a specific channel is set to "0" no other processing is performed for that channel and the schedule system goes on with the next channel. If the user were to re-select that channel for display in subsequent processing, the schedule system would enact the change the next time a program guide was created. The control array may also be used to inhibit the storing of data for selected channels. For example, a television program schedule system could first check the control array before storing data for a specific channel. If the control array for a specific channel contained a "0" no data
corresponding to that channel would be stored. Note that a channel may be inhibited for display as described above without necessarily blocking the storage of data.
Recording When the user selects a program for recording the schedule system stores the channel number of the selected program and the program start time in the record queue, FIG. 9. The program start time is computed by adding the offset contained in the show information package to the start time of the associated four hour block of data.
The record queue is put in time order whenever a new entry is added. This ordering facilitates periodic polling of the start time in the first show of the queue to determine the next recording command to be executed. The address of the queue is easily accessible as it is stored in static area 300. After a show is recorded the next show in the queue is moved to the beginning of the queue.