U.S. patent application number 12/928844 was filed with the patent office on 2011-05-26 for program guide optimization system.
This patent application is currently assigned to NDS Limited. Invention is credited to Ian Bastable, Martin Gold, Anthony Platt, David White.
Application Number | 20110126235 12/928844 |
Document ID | / |
Family ID | 34855281 |
Filed Date | 2011-05-26 |
United States Patent
Application |
20110126235 |
Kind Code |
A1 |
White; David ; et
al. |
May 26, 2011 |
Program guide optimization system
Abstract
A method and system of optimizing strings comprised in program
guide data for transmission is described. The method includes
sharing, in the program guide data, a plurality of strings, each
string among the plurality of strings including a shared sorting
key, implementing an order access of a sorted sharing index,
wherein the program guide data and the shared sorting key are
comprised in the same data storage structure. Related methods and
apparatus are also described.
Inventors: |
White; David; (Weymouth,
GB) ; Bastable; Ian; (Fareham, GB) ; Gold;
Martin; (Winchester, GB) ; Platt; Anthony;
(Devizes, GB) |
Assignee: |
NDS Limited
Middlesex
GB
|
Family ID: |
34855281 |
Appl. No.: |
12/928844 |
Filed: |
December 20, 2010 |
Related U.S. Patent Documents
|
|
|
|
|
|
Application
Number |
Filing Date |
Patent Number |
|
|
12799997 |
May 6, 2010 |
|
|
|
12928844 |
|
|
|
|
11921054 |
May 5, 2008 |
|
|
|
PCT/GB2006/002109 |
Jun 9, 2006 |
|
|
|
12799997 |
|
|
|
|
Current U.S.
Class: |
725/44 |
Current CPC
Class: |
H04N 21/26283 20130101;
H04N 21/23109 20130101; H04N 7/165 20130101 |
Class at
Publication: |
725/44 |
International
Class: |
H04N 5/445 20110101
H04N005/445 |
Foreign Application Data
Date |
Code |
Application Number |
Jun 9, 2005 |
GB |
0511774.2 |
Claims
1-9. (canceled)
10. A method of optimizing program guide data associated with a
plurality of broadcast events for display on an electronic program
guide (EPG), the method comprising: associating a data field with a
broadcast event selected from among the plurality of broadcast
events, the data field comprising at least the following fields: a
language data field; a title data field; a channelgroup data field;
a broadcast time data field; a channel data field; and a service
data field; ordering the program guide data associated with the
broadcast event according to the data field associated with the
broadcast event in the following order: Language; Title;
ChannelGroup; Channel; and Service, thereby producing ordered
program guide data associated with the broadcast event; assigning
the broadcast event a LastInChannelFlag (LICF) flag and a
LastInChannelGroupFlag (LICGF) flag; and determining at least one
main event from among the plurality of broadcast events, wherein
the at least one main event comprises an event within the ordered
list of program guide data associated with the broadcast event
comprising an identical Title field within a ChannelGroup within a
first Channel comprised in the ChannelGroup.
11. The method according to claim 10 and wherein a collapsed event
comprises all events within the ordered program guide data
associated with the broadcast event which comprises the
channelgroup, and wherein each channelgroup is terminated by the
LICF set to 1, until the LICGF is set to 1.
12. The method according to claim 10 and wherein the Language data
field comprises an ISO 639 language identifier.
13. The method according to claim 10 and wherein the Title data
field comprises a broadcast event title.
14. The method according to claim 10 and wherein the ChannelGroup
data field comprises a channel group identifier, the channel group
identifier identifying the channelgroup to which a service
broadcasting the event is assigned.
15. The method according to claim 10 and wherein the Time data
field comprises a broadcast time for the broadcast event, the
broadcast time comprising the time at which the broadcast event is
scheduled to be broadcast, on the service broadcasting the
broadcast event.
16. The method according to claim 10 and wherein the Channel data
field comprises a channel identifier within the channelgroup
comprising the service broadcasting the event.
17. The method according to claim 10 and wherein the Service data
field comprises a DVB service identifier.
18. The method according to claim 10 and wherein the
LastInChannelFlag flag: is set to 1 if the ChannelGroup data field,
Time data field, or Channel data field differs from a corresponding
ChannelGroup data field, Time data field, or Channel data field in
a preceding event within the ordered program guide data list,
thereby denoting an end of a channel selection group; and is set to
0 if one of the ChannelGroup data field, Time data field, and
Channel data field do not differ from a corresponding ChannelGroup
data field, Time data field, or Channel data field in the next
event within the ordered program guide data list.
19. The method according to claim 10 and wherein the LICGF is: set
to 1 for any event comprising a last event for a given Title data
field within the channelgroup; and set to 0 for any event not
comprising a last event for a given Title data field within the
channelgroup.
20-22. (canceled)
23. A system for optimizing program guide data associated with
events for display on an electronic program guide (EPG), the system
comprising: a data field associator which associates data fields
with a broadcast event from among a plurality of broadcast events,
the data field comprising at least the following fields: a language
data field; a title data field; a channelgroup data field; a
broadcast time data field; a channel data field; and a service data
field; a program guide data orderer which orders program guide data
associated with the broadcast event according to the data
associated with the broadcast event in the following order:
Language; Title; ChannelGroup; Channel; and Service; thereby
producing ordered program guide data associated with the broadcast
event; a broadcast event assignor which assigns the broadcast event
a LastInChannelFlag (LICF) flag and a LastInChannelGroupFlag
(LICGF) flag; and a determiner which determines at least a main
event from among the plurality of broadcast events, wherein the
main event comprises an event within the ordered program guide data
associated with the broadcast event, the program guide data
associated with the broadcast event comprising an identical Title
field within a ChannelGroup within a first Channel comprised in the
ChannelGroup.
24. A system for optimizing program guide data associated with
events for display on an electronic program guide (EPG), the system
comprising: means for associating data fields with a broadcast
event from among a plurality of broadcast events, each one of the
data fields comprising at least the following fields: a language
data field; a title data field; a channelgroup data field; a
broadcast time data field; a channel data field; and a service data
field; means for ordering program guide data associated with the
broadcast event according to the data associated with the broadcast
event in the following order: Language; Title; ChannelGroup;
Channel; and Service; thereby producing ordered program guide data
associated with the broadcast event; means for assigning the
broadcast event a LastInChannelFlag (LICF) flag and a
LastInChannelGroupFlag (LICGF) flag; and means for determining at
least a main event from among the plurality of broadcast events,
wherein the main event comprises an event within the ordered
program guide data associated with the broadcast event, the program
guide data associated with the broadcast event comprising an
identical Title field within a ChannelGroup within a first Channel
comprised in the ChannelGroup.
Description
RELATED APPLICATION INFORMATION
[0001] The present application is a divisional application of U.S.
Ser. No. 12/799,997 filed 6 May 2010 which was a divisional
application of U.S. Ser. No. 11/921,054 with a 371(c) date of 5 May
2008, which was published on 14 May 2009 with publication number US
2009/0125943 A1, which is a 35 USC .sctn.371 application of
PCT/GB2006/002109, filed on 9 Jun. 2006 and entitled "Program Guide
Optimization System", which was published in the English language
with International Publication Number WO 2006/131746, and which
claims the benefit of priority based on UK Patent Application GB
0511774.2 of NDS Limited, filed 9 Jun. 2005, and titled, "EXTENDED
SERVICE INFORMATION 2 (XSI-2)". The disclosure of UK Patent
Application GB 0511774.2 is incorporated herein by reference.
FIELD OF THE INVENTION
[0002] The present invention, in preferred embodiments thereof,
relates to electronic program guides (EPG), and more particularly,
systems for optimizing EPG data and the transmission thereof.
BACKGROUND OF THE INVENTION
[0003] PATRICIA is an algorithm which provides a flexible means of
storing, indexing, and retrieving information in a large file,
which is economical of index space and of reindexing time. It does
not require rearrangement of text or index as new material is
added. It requires a minimum restriction of format of text and of
keys; it is extremely flexible in the variety of keys it will
respond to. It retrieves information in response to keys furnished
by the user with a quantity of computation which has a bound which
depends linearly on the length of keys and the number of their
proper occurrences and is otherwise independent of the size of the
library. It has been implemented in several variations as FORTRAN
programs for the CDC-3600, utilizing disk file storage of text. It
has been applied to several large information-retrieval problems
and will be applied to others. PATRICIA is described in
PATRICIA-Practical Algorithm To Retrieve Information Coded in
Alphanumeric, Donald R. Morrison, JACM Vol. 15, Issue 4 (October
1968), pages 514-534.
[0004] Patricia Trees are also discussed at length in The Art of
Computer Programming, vol. 3, Donald E. Knuth, Addison-Wesley
Publishing Company, Inc., 1973, on pages 490-504, and 681-687.
[0005] U.S. Pat. No. 6,763,522 to Kondo et al. describes a system
and method for providing an electronic program guide for
broadcasted digital television wherein the electronic program guide
displays only currently broadcasting minor channels, and timely
event and contextual information. The system of the present
invention includes program code in a memory for causing a
tuner/de-multiplexor subsystem to tune to a preselected major
channel broadcast frequency and to provide thereby at least one
transport stream comprising a plurality of associated digital data
elementary streams. The elementary streams include minor channel
audio and video, as well as program and system information tables
(PSIT), all of which are associated by packet identifiers to
provide a table hierarchy. The system of the present invention
compares presently broadcasting minor channel and PSIT information
with corresponding information in memory. If the presently
broadcasting information is more contemporaneous than the stored
information, the stored information is updated, or replaced, with
the presently broadcasting information to enable display of only
actively broadcasting minor channels and up-to-the-minute event and
contextual information.
[0006] U.S. patent application Ser. No. 10/084,106 of Unger,
published as US 2002/0194613, describes a method and apparatus for
reconstituting packetized data streams representing a television
program when the program uses multiple packet identifiers (PID) as
in selective encryption schemes. Transmission of multiple sets of
system information (SI) is avoided by incorporating a lookup table
within a private data packet. A dual buffer arrangement in the
set-top box provides ease of reconstitution of a data stream by
generation of an interrupt upon receipt of a packet with a shadow
PID. The buffers are toggled as a result of the interrupt and a
corresponding packet can be found either at the beginning of the
newly active buffer or the end of the inactive buffer. The stream
of packets representing a program can then be reconstituted by
creation of a new packet having the primary PID and shadow packet's
payload.
[0007] U.S. patent application Ser. No. 11/196,086 of Domegan et
al., published as US 2005/0283799, describes a system for
localizing an EPG program schedule, including an EPG service
provider station including a database of channels and corresponding
EPG program schedule information, a database manager identifying a
plurality of channel line-ups potentially receivable at a viewing
location, a transmitter, and a receiver, a multimedia viewer
situated at the viewing location including an automatic channel
line-up identifier identifying a first line-up of television
channels receivable at the viewing location, a channel line-up
processor at the viewing location calculating a channel line-up
from among the plurality of channel line-ups that substantially
matches the first line-up, a receiver receiving from the EPG
service provider station the plurality of channel line-ups, and a
transmitter transmitting to the EPG service provider station the
identifier of the channel line-up calculated by the channel line-up
processor, and a network connection linking the multimedia viewer
to the EPG service provider, wherein the EPG service provider
station transmitter transmits to the multimedia viewer the
plurality of channel line-ups and also transmits to the multimedia
viewer EPG program schedule information localized to the viewing
location and based on the identifier of the channel line-up
calculated by the channel line-up processor, and wherein the EPG
service provider station receiver receives from the multimedia
viewer the identifier of the calculated channel line-up, and
wherein the multimedia viewer receiver also receives from the EPG
service provider station the EPG program schedule information.
[0008] PCT application PCT/US02/24940 of Diego Inc., published in
the English language as WO 03/015394, describes a method whereby
localized content and corresponding applications can be provided to
thin-client interactive television terminals. Localization may be
performed on general data feeds by applying, at a portal that
receives the data feeds, localization parameters specified in a
plurality of channel configuration records. The local content is
then provided to their corresponding head-ends. From the head-ends,
the local content and its application are carousel broadcasted to
thin-client terminals via different data pipes. A viewer can tune
to a synthetic channel having the local content and application via
familiar television metaphors, such as from a remote control or
from an electronic program guide. The viewer's interaction with the
local content can be limited to a walled garden.
[0009] PCT application PCT/US00/05188 of Index Systems, Inc.,
published in the English language as WO 00/52928, describes a
system and method for providing merged electronic program guides
with redundant listings removed. The television system receives EPG
data of television programs broadcast by a plurality of program
signal sources. Such signal sources may include OTA broadcast,
cable, satellite, and the like. Either the television system or a
merging system separate from the television system receives EPG
data including program scheduling information of television
programs telecast from the various signal sources. The system
further receives channel mapping information for each of the signal
sources. The channel mapping information relates television
channels to television stations carried by the signal sources. The
system creates a merged channel map based on the channel mapping
information with any duplicate television station listings removed.
Each television channel is associated with a unique channel
identifier. Duplicate television station listings are therefore
identified by identifying duplicate channel identifiers. Duplicate
television station listings may be eliminated based on a priority
associated with the various signal sources, or based on the signal
quality of the various sources.
[0010] PCT application PCT/IL02/00190 of NDS Ltd., published in the
English language as WO 02/075596 on 26 Sep. 2002, and corresponding
U.S. patent application Ser. No. 10/469,487 of Sterkin et al.,
published on 29 Jul. 2004 as US 2004/0148637, describes a method
for accessing at least one literal data item in a hierarchical
structure, the method including receiving a request to access at
least one literal data item, and accessing the at least one literal
data item, at least in part, by choosing and using an access method
chosen from the following group: local storage access, back channel
access, and data carousel access. The disclosure of WO 02/075596
and corresponding US 2004/0148637 are hereby incorporated herein by
reference.
[0011] Published European patent application EP 0912054 of General
Instruments Corp. describes an Interactive Program Guide (IPG) data
for television is delivered to integrated receiver-decoders (IRDs)
in a decoder population via, for example, a satellite network. The
IPG data provides scheduling information for global and local
programming services which are carried via the satellite network as
well as another network such as a CATV network or a terrestrial
broadcast network. Each IRD is assigned to an IPG region using unit
addressing. At the IRD, IPG data is filtered so that only the
global data and the region-specific data for the IRD's IPG region
is retained and processed by the IRD. Channel map data is also
delivered to the IRDs so that bundles of IRD data can be filtered
out using firmware filtering to discard program sources that are
not present in the channel map. The IRD data which is retained
after filtering is used to provide scheduling information via an
on-screen display. A preferred source may be designated when there
are duplicative channels on the different networks.
[0012] Standards that are relevant to understanding the state of
the art include the following published standards:
[0013] ETS 300 468, Digital Video Broadcasting (DVB) Specification
for Service Information (SI) in DVB Systems;
[0014] ETR 162, Digital Broadcasting Systems for Television, Sound
and Data Services; Allocation of Service Information (SI) Codes for
Digital Video Broadcasting (DVB) Systems;
[0015] ETR 211, Digital Video Broadcasting (DVB); Guidelines on
Implementation and Usage of Service Information (SI).
[0016] ISO 639 is an international standard listing short codes for
language names.
[0017] The disclosures of all references mentioned above and
throughout the present specification, as well as the disclosures of
all references mentioned in those references, are hereby
incorporated herein by reference.
SUMMARY OF THE INVENTION
[0018] ETS 300 468, Digital Video Broadcasting (DVB) Specification
for Service Information (SI) in DVB Systems specifies a way for a
broadcast headend to provide data that will appear on a program
guide of a personal video recorder (PVR) or set top box (STB). The
terms PVR and STB, unless specifically noted, are used herein
interchangeably. The terms PVR and STB are collectively and
generically referred to herein as a "receiver" or "receivers".
[0019] The data provided typically includes data about: [0020]
events, such as television shows; [0021] DVB SI services, popularly
called TV channels; [0022] Near video on demand (NVOD) services;
[0023] Bouquets, a set of services presented on the program guide;
and [0024] Mosaics.
[0025] In order to improve efficiency and flexibility offered to a
broadcaster in the way each STB builds a list of channels and
services in its channel line up (for example, with the definition
of new selection criteria attribute associated to each channel),
and to support other broadcaster requirements which DVB SI did not
support, Extended Service Information (XSI) was developed. XSI was
originally developed as a proprietary extension of DVB SI by NDS
Limited. XSI utilizes DVB SI and MPEG-2 private data descriptors,
private data tables, and data carousels as a mechanism to deliver
XSI data to STBs.
[0026] Since XSI was deployed, digital television platforms have
grown beyond what XSI was originally designed for, new technology
such as PVRs have been introduced, and the cost of program guide
data storage in the STB has decreased, resulting in the need for a
new service information system.
[0027] The present invention seeks to provide an improved method
and system for sorting data strings for more efficient delivery to
electronic program guides.
[0028] There is thus provided in accordance with a preferred
embodiment of the present invention a method of optimising strings
included in program guide data for transmission, the method
including sharing, in the program guide data, a plurality of
strings, each string among the plurality of strings including a
shared sorting key, implementing an order access of a sorted
sharing index, wherein the program guide data and the shared
sorting key are included in the same data storage structure.
[0029] Further in accordance with a preferred embodiment of the
present invention the sorted sharing index includes a Patricia tree
sort index.
[0030] There is also provided in accordance with another preferred
embodiment of the present invention a method of optimizing program
guide data for transmission, the method including providing, at a
broadcast headend, a list of services and the program guide data,
the program guide data including a list of events to be broadcast
on services corresponding to service identifiers included within
the list of services, associating the services with channels,
further associating the channels into channel groups, selecting a
field included in program guide data associated with each event,
sorting the list of events to be broadcast on the services
according to the selected field, grouping the sorted list of
events, such that all identical instances the field are grouped
together, collapsing the grouped sorted list of events such that
one of the following includes a main event and every other instance
of the event includes a collapsed event one instance of the event
next to be broadcast on at least one service associated with the
channel group, and one instance of the event presently being
broadcast on at least one service associated with the channel
group, thereby producing optimized program guide data.
[0031] Further in accordance with a preferred embodiment of the
present invention and also including transmitting the optimized
program guide data.
[0032] Still further in accordance with a preferred embodiment of
the present invention the transmitting includes broadcasting the
optimized program guide data.
[0033] Additionally in accordance with a preferred embodiment of
the present invention the selected field includes a title string
associated with the event.
[0034] Moreover in accordance with a preferred embodiment of the
present invention the sorting the list of events includes a
Patricia tree sort according to the selected field.
[0035] There is also provided in accordance with still another
preferred embodiment of the present invention a method of
displaying data in a program guide, the method including receiving
a list of events to be displayed in the program guide, the list
including collapsed, sorted, and grouped event data, selecting, for
each collapsed, sorted, and grouped event, a main event and at
least one associated collapsed event, displaying the main event in
a sorted list of events, and displaying the collapsed events upon
selection of the main event from the sorted list of events.
[0036] Further in accordance with a preferred embodiment of the
present invention the sorted list includes an A-Z sorted list.
[0037] There is also provided in accordance with still another
preferred embodiment of the present invention a method of
optimizing program guide data associated with a plurality of
broadcast events for display on an electronic program guide (EPG),
the method including associating a data field with a broadcast
event selected from among the plurality of broadcast events, the
data field including at least the following fields a language data
field, a title data field, a channelgroup data field, a broadcast
time data field, a channel data field, and a service data field,
ordering the program guide data associated with the broadcast event
according to the data field associated with the broadcast event in
the following order Language, Title, ChannelGroup, Channel, and
Service, thereby producing ordered program guide data associated
with the broadcast event, assigning the broadcast event a
LastInChannelFlag (LICF) flag and a LastInChannelGroupFlag (LICGF)
flag, and determining at least one main event from among the
plurality of broadcast events, wherein the at least one main event
includes an event within the ordered list of program guide data
associated with the broadcast event including an identical Title
field within a ChannelGroup within a first Channel included in the
ChannelGroup.
[0038] Further in accordance with a preferred embodiment of the
present invention a collapsed event includes all events within the
ordered program guide data associated with the broadcast event
which includes the channelgroup, and wherein each channelgroup is
terminated by the LICF set to 1, until the LICGF is set to 1.
[0039] Still further in accordance with a preferred embodiment of
the present invention the Language data field includes an ISO 639
language identifier.
[0040] Additionally in accordance with a preferred embodiment of
the present invention the Title data field includes a broadcast
event title.
[0041] Moreover in accordance with a preferred embodiment of the
present invention the ChannelGroup data field includes a channel
group identifier, the channel group identifier identifying the
channelgroup to which a service broadcasting the event is
assigned.
[0042] Further in accordance with a preferred embodiment of the
present invention the Time data field includes a broadcast time for
the broadcast event, the broadcast time including the time at which
the broadcast event is scheduled to be broadcast, on the service
broadcasting the broadcast event.
[0043] Still further in accordance with a preferred embodiment of
the present invention the Channel data field includes a channel
identifier within the channelgroup including the service
broadcasting the event.
[0044] Additionally in accordance with a preferred embodiment of
the present invention the Service data field includes a DVB service
identifier.
[0045] Moreover in accordance with a preferred embodiment of the
present invention the LastInChannelFlag flag is set to 1 if the
ChannelGroup data field, Time data field, or Channel data field
differs from a corresponding ChannelGroup data field, Time data
field, or Channel data field in a preceding event within the
ordered program guide data list, thereby denoting an end of a
channel selection group, and is set to 0 if one of the ChannelGroup
data field, Time data field, and Channel data field do not differ
from a corresponding ChannelGroup data field, Time data field, or
Channel data field in the next event within the ordered program
guide data list.
[0046] Further in accordance with a preferred embodiment of the
present invention the LICGF is set to 1 for any event including a
last event for a given Title data field within the channelgroup,
and set to 0 for any event not including a last event for a given
Title data field within the channelgroup.
[0047] There is also provided in accordance with still another
preferred embodiment of the present invention a system of
optimizing strings included in program guide data for transmission,
the system including a string sharer operative to share, in the
program guide data, a plurality of strings, the plurality of
strings including a shared sorting key, a sorter operative to
implement an order access of a sorted sharing index, wherein the
program guide data and the shared sorting key are included in the
same data storage structure.
[0048] There is also provided in accordance with still another
preferred embodiment of the present invention a system for
optimizing program guide data for transmission, the system
including at a broadcast headend, a list of services and program
guide data, the program guide data including a list of events to be
broadcast on the services, a channel association unit which
associates services with channels, a channel group association unit
which further associates the channels into channel groups, a field
selector which selects a field included in data associated with
each event, a list sorter which sorts the list of events according
to the selected field, a grouping unit which groups the sorted list
of events such that all instances of an event which include an
identical instance of the field are grouped together, a collapsing
unit which collapses the grouped sorted list of events such that
one of the following instances of the event includes a main event
and every other instance of the event within the list includes a
collapsed event one instance of the event next to be broadcast on
at least one service associated with the channelgroup, and one
instance of the event presently being broadcast on at least one
service associated with the channelgroup, thereby producing
optimized program guide data.
[0049] There is also provided in accordance with still another
preferred embodiment of the present invention a system of
displaying data in a program guide, the system including an event
list receiver which receives a list of events to be displayed in
the program guide, the list including collapsed, sorted, and
grouped event data, a selector which selects, for each collapsed,
sorted, and grouped event, a main event and at least one associated
collapsed event, a displaying unit which displays the main event in
a sorted list of events, and displays the at least one collapsed
event upon selection of the main event from the sorted list of
events.
[0050] There is also provided in accordance with still another
preferred embodiment of the present invention a system for
optimizing program guide data associated with events for display on
an electronic program guide (EPG), the system including a data
field associator which associates data fields with a broadcast
event from among a plurality of broadcast events, the data field
including at least the following fields a language data field, a
title data field, a channelgroup data field, a broadcast time data
field, a channel data field, and a service data field, a program
guide data orderer which orders program guide data associated with
the broadcast event according to the data associated with the
broadcast event in the following order Language, Title,
ChannelGroup, Channel, and Service, thereby producing ordered
program guide data associated with the broadcast event, a broadcast
event assignor which assigns the broadcast event a
LastInChannelFlag (LICF) flag and a LastInChannelGroupFlag (LICGF)
flag, and a determiner which determines at least a main event from
among the plurality of broadcast events, wherein the main event
includes an event within the ordered program guide data associated
with the broadcast event, the program guide data associated with
the broadcast event including an identical Title field within a
ChannelGroup within a first Channel included in the
ChannelGroup.
BRIEF DESCRIPTION OF THE DRAWINGS
[0051] The present invention will be understood and appreciated
more fully from the following detailed description, taken in
conjunction with the drawings in which:
[0052] FIG. 1 is a simplified pictorial illustration of an
Electronic Program Guide (EPG) displaying information about
television programs during a period of time, the information
optimized according to a preferred method of the present invention,
and constructed and operative in accordance with a preferred
embodiment of the present invention;
[0053] FIG. 2 is a simplified pictorial illustration of a PATRICIA
tree sort of selected television programs depicted in the EPG of
FIG. 1, as well as additional television programs;
[0054] FIG. 3 is a bit-wise listing of the title strings of some of
the television programs in the PATRICIA tree of FIG. 2;
[0055] FIG. 4 is a simplified UML diagram showing the relationship
between ChannelGroup, Channel, and Service, as implemented in
presenting data in the EPG of FIG. 1;
[0056] FIG. 5 is a simplified block diagram showing the
relationship between ChannelGroup, Channel, and Service, useful in
illustrating the UML diagram of FIG. 4; and
[0057] FIGS. 6-9 are simplified flowchart illustrations of
preferred methods of operation of the system of FIG. 1, in
accordance with preferred embodiments thereof.
DETAILED DESCRIPTION OF A PREFERRED EMBODIMENT
[0058] Reference is now made to FIG. 1, which is a simplified
pictorial illustration of an Electronic Program Guide (EPG)
displaying information about television programs during a period of
time, the information optimized according to a preferred method of
the present invention, and constructed and operative in accordance
with a preferred embodiment of the present invention. The EPG
depicted in FIG. 1, as is well known in the art, comprises a grid
with channels arranged descending along the vertical axis, and time
progressing along the horizontal axis. Programs to be broadcast at
a given time on a given channel are shown at the grid location
comprising the intersection of the given time with the given
channel. The EPG depicted in FIG. 1 comprises program guide
information for four channels, Channel 1, Channel 1+1, Channel 2
West, and Channel 2 South.
[0059] For purposes of the discussion of FIG. 1, Channel 1+1
comprises a so called "time shifted" channel, wherein programming
broadcasted on Channel 1 is broadcast with a time-delay on an
auxiliary channel. Channel 2 West and Channel 2 South comprise
"regional channels". Programming on regional channels comprises
shared programs and region specific programs. Shared programs are
broadcast on both Channel 2 West and Channel 2 South, such as "100
Piece Drill Bit Set" (at 19:30) and "1001 Cultures" (at 20:00).
Region specific programs are programs broadcast with target
audiences of particular regions, such as "West Scene", broadcast
only on Channel 2 West, and "Going South", broadcast only on
Channel 2 South. Both of the region specific programs are scheduled
to be broadcast at the same time, 21:30.
[0060] Typically, EPGs enable viewing program listings in a number
of ways besides the grid depicted in FIG. 1. For example and
without limiting the generality of the foregoing, some EPGs allow
sorting program listings by genre (such as Movies, Sports, etc.)
and sub-genre (such as Drama, Comedy, etc. for Movies, and
Football, Golf, etc. for Sports). Some EPGs allow viewing program
listings sorted in an A-Z list of program listings, typically for
up to the next seven days programming.
[0061] A set top box (STB) or personal video recorder (PVR),
hereinafter, referred to as a "receiver", which preferably receives
and caches data for display in the EPG of FIG. 1 would have to
cache the data for "10 Tasks for Hercules" twice; once for Channel
1 at 19:30 and once for Channel 1+1 at 20:30. Likewise, data for
"1001 Cultures" would have to be cached twice by the receiver; once
for Channel 2 West at 20:00, and once for Channel 2 South at 20:00.
Additionally, fast response times by the EPG are desired in order
to ensure that a viewer's user experience is enhanced.
[0062] In certain broadcast environments, such as, for example, a
broadcast environment implementing XSI-2 (an extended. SI system
commercially available from NDS Ltd.) a full seven days of data is
already cached in the receiver. Furthermore, in the XSI-2 broadcast
environment, title string sharing is implemented, such that two
programs appearing as distinct programs in the EPG preferably
"share" their title string, as described below, in data available
to the receiver. For example and without limiting the generality of
the foregoing, in the EPG depicted in FIG. 1, the title string "10
Tasks for Hercules" is a shared title string, shared by the program
item appearing on the EPG on Channel 1 at 19:30 and the program
item appearing on the EPG on Channel 1+1 at 20:30. Likewise, the
title string of the program item, "100 Piece Drill Bit Set",
appearing on the EPG at 19:30 on both Channel 2 West and Channel 2
South, is a shared title string. Similarly, the title string of the
program item "Emergency", appearing on Channel 1+1 at 19:30 and
20:00 is also a shared title string.
[0063] In a preferred embodiment of the present invention, title
strings and other strings are separated into separate data
repositories. The title string sharing key is defined as an
uncompressed sort string. For example and without limiting the
generality of the foregoing, for the program item "EMERGENCY", the
title string sharing key is "EMERGENCY". If need be, the entire
title is used to distinguish between two title strings, for
instance, if the following two title strings exist in EPG data
"Emergency--Episode 8" and "Emergency--Episode 9", the entire title
is needed to distinguish between the two title strings.
[0064] In a preferred embodiment of the present invention, a
pointer is provided in the EPG data from a shared title string, the
pointer pointing to a list of programs sharing the title string.
For example, if the two episodes of Emergency on Channel 1+1 at
19:30 and at 20:00 are two different episodes, only one title
string, "Emergency" preferably appears in the EPG data. The one
title string preferably comprises a pointer, such that when a
viewer selects one of the two episodes of "Emergency", the EPG
preferably retrieves the list of programs sharing the title string
"Emergency", and, based on the time of the episode selected by the
viewer, the EPG is able to select, from the list which is pointed
to, information about the episode selected by the viewer.
[0065] Reference is now made to FIG. 2, which is a simplified
pictorial illustration of a PATRICIA tree sort of selected
television programs depicted in the EPG of FIG. 1, as well as
additional television programs. As is explained below, in detail,
with reference to FIG. 3, the PATRICIA tree comprises a binary
tree. For ease of depiction, strings in the PATRICIA tree of FIG. 2
are represented in alpha-numeric characters and not in binary. For
a PATRICIA tree comprising some number Q strings, the PATRICIA tree
also comprises Q nodes. As is well known in the art, the time
required for inserting, deleting, and searching the PATRICIA tree
requires is proportional to log(Q). (See D. Knuth, The Art of
Computer Programming, vol. 3, pp. 490-504, and 681-687.)
[0066] Any two children of a given node start with the same
sequence of N bits. For instance, in the PATRICIA tree of FIG. 2,
each string begins with the character "1", thus, each string begins
with the bit string "00110001". The actual location of each node in
the PATRICIA tree of FIG. 2 depends on the method of insertion of
the strings into the PATRICIA tree, as is well known in the art.
(See The Art of Computer Programming, vol. 3, pp. 490-504, and
681-687, particularly Exercise 15 (p. 501), and the solution
thereto (p. 63).)
[0067] Dotted lines in the PATRICIA tree are terminal pointers
which point back to an actual node which can be considered a leaf
(terminal node). Pointing to leaves alleviates the need to store a
given string twice, once in a node and once in a leaf.
[0068] Pointers, both terminal and non-terminal, are depicted in
FIG. 2 with a bit-value indicator (either depicted as a `0` or a
`1`). The bit-value indicator is understood as a "navigational"
aide in comparing nodes. If a node differs from the next node by a
`0`, follow the bit-value indicator for `0`. Similarly, if the node
differs from the next node by a `1`, follow the bit-value indicator
for `1`.
[0069] Reference is now additionally made to FIG. 3, which is a
bit-wise listing of the title strings of some of the television
programs in the PATRICIA tree of FIG. 2. As was explained above
with reference to FIG. 2, the PATRICIA tree comprises a binary
tree. Any two children of a given node start with the same sequence
of N bits, and thus, the two children of the given node differ at
bit N. Thus, each node of the PATRICIA tree represents a single bit
comparison of the string comprised in the node. By way of example,
the top of FIG. 3 depicts a comparison between the first three
characters of the string "112's TOP TEN BAD BOY ARTISTS" ("112")
expressed in binary and the first three characters of the string
"100 DEEDS FOR EDDIE McDOWD" ("100") expressed in binary. Bit 15 is
the first bit to differ between the two strings. Thus, in FIG. 2,
the number 15 appears beside the solid arrow descending from "112's
TOP TEN BAD BOY ARTISTS" to "100 DEEDS FOR EDDIE McDOWD".
[0070] Likewise, the middle portion of FIG. 3 depicts a comparison
between the first three characters of the string "100 DEEDS FOR
EDDIE McDOWD" ("100") expressed in binary the first three
characters of the string "10" ("10<EOS>", where <EOS>
indicates "end of string", and is represented by the binary string
00000000) expressed in binary. Bit 18 is the first bit to differ
between the two strings. Thus, in FIG. 2, the number 18 appears
beside the solid arrow descending from "100 DEEDS FOR EDDIE McDOWD"
to "10".
[0071] Similarly, the bottom of FIG. 3 depicts a comparison between
the first three characters of the string "100 DEEDS FOR EDDIE
McDOWD" ("100") expressed in binary the first three characters of
the string "101 DALMATIANS" ("101") expressed in binary. Since the
bit-value indicator for the `0` pointer from "100 DEEDS FOR EDDIE
McDOWD" points to "10", with an indication that bit 18 is the first
bit to differ, the bit-value indicator for the `0` pointer from
"100 DEEDS FOR EDDIE McDOWD" points to "101 DALMATIANS". However,
as is seen in FIG. 3, 100 DEEDS FOR EDDIE McDOWD" and "101
DALMATIANS" do not differ at bit 18, but rather at bit 23.
[0072] Reference is now made to FIG. 4, which is a simplified UML
diagram showing the relationship between ChannelGroup, Channel, and
Service, as implemented in presenting data in the EPG of FIG. 1.
EPG data is typically broadcast from a broadcast headend to the
receiver. The EPG data preferably comprises lists of programs
broadcast at a given time, and instructions to the receiver as to
which channel (more formally, according to the DVB standard, to
which service) to tune to in order to view a given program at a
given time. For instance, if the viewer selects "100 PIECE DRILL
BIT SET" at 19:30, broadcast on Channel 2 West, the receiver needs
to locate the broadcast data corresponding to the selected program
(based on Program Specific Information in the broadcast EPG data)
at the selected time on the selected channel (based on Service
Information (SI) in the broadcast EPG data). In a preferred
embodiment of the present invention, services (which, according to
the DVB SI standard correspond to conventional television channels)
are grouped into channels, and channels are grouped into groups of
channels.
[0073] Reference is now additionally made to FIG. 5, which is a
simplified block diagram showing the relationship between
ChannelGroup, Channel, and Service, useful in illustrating the UML
diagram of FIG. 4. Services, such as "Channel 1 South", "Channel 1
West", and "Channel 1 Northeast" are grouped together as channels,
"Channel 1 Live". "Channel 1 Live" in turn is a member of a
"Channel 1" channel group. Similarly, for a channel and a time
shifted channel, the "Channel 2" channel group comprises two
channels, "Channel 2 Live" and "Channel 2+1". Each of "Channel 2
Live" and "Channel 2+1" comprise a corresponding broadcast
service.
[0074] A more complex example comprising both time shifted channels
and regional channels is presented for a "Channel 3" channel group.
The "Channel 3" channel group comprises a "Channel 3 Live" channel
and a "Channel 3+1" time shifted channel group". Each of the
"Channel 3 Live" channel and a "Channel 3+1" time shifted channel
group each comprise three regional services.
[0075] It is appreciated that the examples given in FIG. 5 are
purely hypothetical channel groups, channels, and services.
[0076] As mentioned above, it is preferable to enable A-Z listing
of programs in the EPG, as mentioned above. Preferably, EPG A-Z
listing supports: [0077] a minimum of 7.5 days of scheduling;
[0078] multi-letter search; [0079] event collapsing (described
below); [0080] genre and subgenre filtering; and [0081] fast
response times.
[0082] EPGs operative in accordance with preferred embodiments of
the present invention preferably display two types of events:
[0083] main events, comprising events which appear in main
alphabetical listing screens of the EPG; and [0084] collapsed
events, comprising events which share a title (for example, the
20:30 instance of "10 TASKS FOR HERCULES" shown in FIG. 1), which
only appear in a "collapsed" EPG screen. The collapsed EPG screen
is preferably entered by selecting a main event.
[0085] Main events preferably show an event which is the showing of
the event which starts next, or is present on the air for a given
channel group.
[0086] Services associated with the same Channel preferably share a
unique logical channel number (the logical channel number of the
Channel) used in a DVB SI bouquet. Those skilled in the art will
appreciate that, preferably, the unique logical channel number is
used across multiple bouquets. Thus, as explained above, a channel
preferably identifies a combination of regional services comprising
both live and time-shifted services.
[0087] Services grouped within a channel preferably identify a
"collapsing down" of the schedule of the services, such that when a
title is shared on multiple services for the same broadcast time
(as, for example, "1001 CULTURES" in FIG. 1), only one instance of
the title will be displayed in the EPG main A-Z sort screen. The
receiver preferably chooses one of the many instances of the shared
title to display in the EPG main A-Z sort screen.
[0088] It is appreciated that grouping services into channels
enables collapsing the schedule down within a given time period.
Grouping channels into ChannelGroups enables "collapsing along" a
schedule, enabling future broadcasts of the same title to be
collapsed, for instance programming on time shifted services.
[0089] A service need not be assigned to a channel or channel
group. In such a case an arbitrary ChannelGroup number may
preferably be assigned to the service based on a Service
identifier. For example and without limiting the generality of the
foregoing, a service may be assigned an arbitrarily high
ChannelGroup number.
[0090] One preferred method of ordering an A-Z sort of events
within a broadcast stream comprises ordering event data according
to the following fields in the following order: [0091] Language,
Title, ChannelGroup, Time, Channel, Service where: [0092] Language
is according to the ISO 639 language identifier for a language;
[0093] Title comprises a full event title; [0094] ChannelGroup
comprises the channel group to which a service is assigned (as
described above); [0095] Time comprises a broadcast time for the
event on the assigned service; [0096] Channel comprises the channel
within a channel group comprising the assigned service (as
described above); and [0097] Service is a unique identifier for
each service to assist with ordering events with the same title and
time within a Channel
[0098] Once event data is ordered as described above, main and
collapsed events are preferably determined from within the Channel
and the ChannelGroup groupings, where the determination is
preferably signaled by a LastInChannelFlag (LICF) and
LastInChannelGroupFlag (LICGF). The signaling preferably comprises
the order:
[0099] Language, Title, ChannelGroup, Time, Channel, Service,
LastInChannelFlag, LastInChannelGroupFlag
[0100] After the event data is ordered in an ordered list, each
event is examined to determine a value of the
LastInChannelFlag.
[0101] The LastInChannelFlag is set to 1 if the ChannelGroup, Time,
or Channel differs between the event presently being evaluated and
the ChannelGroup, Time, or Channel in the next event within the
ordered event data list. If the ChannelGroup, Time, or Channel does
not differ from the corresponding ChannelGroup, Time, or Channel in
the next event within the ordered event data list,
LastInChannelFlag is set to 0.
[0102] When the LastInChannelFlag is set to 1, the
LastInChannelFlag signals an end of a "channel selection group".
The channel selection group comprises consecutive A-Z ordered
entries wherein LastInChannelFlag is set to 0, up to, and including
the next entry with LastInChannelFlag set to 1.
[0103] The LastInChannelGroupFlag is set to 1 for any event
comprising the last event for a given Title string within a
ChannelGroup. Otherwise, LastInChannelGroupFlag is set to 0.
[0104] For example and without limiting the generality of the
foregoing, using the following ChannelGroups, Channels, and Service
identifiers (and ignoring the Language field), and the schedule
depicted in FIG. 1:
TABLE-US-00001 ChannelGroup Name Channel Group Channel 1 1 Channel
2 2
and,
TABLE-US-00002 Channel Name Channel Channel 1 Live 1 Channel 1 + 1
2 Channel 2 Live 1
and,
TABLE-US-00003 Service Name Service Channel 1 1 Channel 1 + 1 2
Channel 2 West 3 Channel 2 South 4
and thus, the ordered event list comprises:
TABLE-US-00004 Title ChannelGroup Time Channel Service LICF LICGF
10 Tasks for 1 19:30 1 1 1 0 Hercules 20:30 2 2 1 1 100 Deeds 2
20:30 1 3 0 0 20:30 1 4 1 1 100 Piece 2 19:30 1 3 0 0 Drill Bit Set
19:30 1 4 1 1 1001 2 20:00 1 3 0 0 Cultures 20:00 1 4 1 1 101 1
20:30 1 1 1 0 Dalmatians 21:30 2 2 1 1 122's Top 10 1 20:00 1 1 1 0
Bad Boy 21:00 2 2 1 1 Artists Emergency 1 19:30 2 2 1 0 20:00 2 2 1
1 Going South 2 21:30 1 4 1 1 News at 9:00 2 21:00 1 3 0 0 21:00 1
4 1 1 West Scene 2 21:30 1 3 1 1
[0105] Main events comprise those events comprised within the
ordered event list comprising the same Title within a ChannelGroup
within a first Channel comprised in the ChannelGroup.
[0106] Collapsed events comprise events within subsequent channel
grouping, wherein each channel grouping is terminated by LICF set
to 1, until the LICGF is set to 1. For instance, in the table
above, "101 Dalmatians" comprises one main event and one collapsed
event.
[0107] The EPG selects the event for display from each channel
grouping as being the event comprising the lowest logical channel
number used in the DVB SI bouquet.
[0108] Reference is now made to FIGS. 6-9, which are simplified
flowchart illustrations of preferred methods of operation of the
system of FIG. 1, in accordance with preferred embodiments thereof.
FIGS. 6-9 are believed to be self explanatory with reference to the
above discussion.
[0109] It is appreciated that software components of the present
invention may, if desired, be implemented in ROM (read only memory)
form. The software components may, generally, be implemented in
hardware, if desired, using conventional techniques.
[0110] It is appreciated that various features of the invention
which are, for clarity, described in the contexts of separate
embodiments may also be provided in combination in a single
embodiment. Conversely, various features of the invention which
are, for brevity, described in the context of a single embodiment
may also be provided separately or in any suitable
subcombination.
[0111] It will be appreciated by persons skilled in the art that
the present invention is not limited by what has been particularly
shown and described hereinabove. Rather the scope of the invention
is defined only by the claims which follow:
* * * * *