Note: Descriptions are shown in the official language in which they were submitted.
CA 02533258 2006-01-18
EXTENDING DATA RECORDS FOR DYNAMIC DATA AND SELECTIVE
ACCEPTANCE BASED ON HARDWARE PROFILE
BACKGROUND OF THE INVENTION
1. Field of the Invention
The present invention relates to information delivery systems and, more
particularly, to efficiently providing information to clients such as set top
boxes
(STBs) having differing capabilities.
2. Description of the Related Art
There is a wide variance in the hardware capabilities of set top boxes
(STBs) coexisting on a single radio frequency (RF) network, such as a cable
television or satellite television distribution system. All of these STBs
typically
require the basic data normally associated with, for example, an interactive
program guide (IPG) application operating within a middleware environment
such that provided by Liberate Technologies, Inc., of San Mateo, California.
The basic data includes several descriptor fields for each program, such as
program title, rating, description, showing times and the like. This
commonality
of basic data leads to a database design geared towards the lowest common
denominator of boxes. Such a database design, while useful in serving a group
of STBs or other clients, is far from optimal in serving at least the higher
capability STBs or other clients.
SUMMARY OF THE INVENTION
Various deficiencies of the prior art are addressed by the present
invention of a system, method and data structure for processing basic client
application data types to add thereto extension types and priority levels
adapted
for use by each of a plurality of set top box classes. The extension types
define
extended data associated with a basic data type, while the priority levels
define
the minimum class level (i.e., capability level) of a STB able to use that
extension type.
In a set top box, a method according to an embodiment of the invention
comprises receiving the basic data needed to implement an application (such
1
CA 02533258 2010-12-21
as an interactive program guide application), comparing the class of the set
top
box to the extension types for the basis data received and, if appropriate,
receiving the extension data for the basis data. Furthermore, an application
programming interface (API) may allow an application to request the basic or
extended data regardless of the STB class, since the request will be denied of
the STB is not of a sufficiently high class.
A method according to an embodiment of the present invention
comprises: receiving, at a client device, basic data associated with an
application; comparing a class of the client device to extension types for the
received basic data; and if the client device class is sufficient for the
extension
type, receiving extended data associated with the received the basic data.
In another aspect, the present invention resides in a method, comprising:
receiving, at a client device, data structures comprising a base portion and
an
extension portion, said extension portion associated with extended data
adapted
for use by a client device of a first class; and processing said extended data
if
said client device has a class level of at least said first class.
In another aspect, the present invention resides in a method, comprising:
receiving, at a client device, basic data associated with an application;
comparing a class of the client device to extension types for the received
basic
data; and if the client device class is sufficient for the extension type,
receiving
extended data associated with the received the basic data.
In another aspect, the present invention resides in an applications
programming interface (API) performing the steps of: receiving, at a client
device, basic data associated with an application; providing said basic data
to
said application; receiving a request from said application for extended data
associated with said basic data; and providing said extended data to said
application if a class of said client device if an extension type associated
with
said extended data indicates that said extended data is appropriate to said
client
device.
In another aspect, the present invention resides in a signal bearing
medium including a representation of software instructions which, when
executed by a processor, perform a method comprising: receiving, at a client
2
CA 02533258 2013-07-17
device, basic data associated with an application; providing said basic data
to
said application; receiving a request from said application for extended data
associated with said basic data; and providing said extended data to said
application if a class of said client device if an extension type associated
with
said extended data indicates that said extended data is appropriate to said
client
device.
In another aspect, the present invention resides in a computer program
product, comprising a computer data signal embodied in a carrier wave having
computer readable code embodied there in for causing a computer to perform a
method comprising: receiving, at a client device, basic data associated with
an
application; providing said basic data to said application; receiving a
request
from said application for extended data associated with said basic data; and
providing said extended data to said application if a class of said client
device if
an extension type associated with said extended data indicates that said
extended data is appropriate to said client device.
In another aspect, the present invention resides in a method, comprising:
receiving, by a client device, a data structure for a content item, the data
structure comprising a base portion, an extension portion and a priority
portion
logically separate from one another, wherein the base portion includes base
data
for rendering the content item and said extension portion includes extended
data
that supplements the base data in rendering the content item, wherein said
priority portion stores a plurality of priority indicators including a first
priority
indicator and a second priority indicator, wherein the first priority
indicator is
assigned to a first class of device and the second priority indicator is
assigned to
a second class of device and wherein the base data is useable by both the
first
class of device and the second class of device; processing, by the client
device,
the base data regardless of a class level of the client device and regardless
of
the plurality of priority indicators; determining, by the client device, that
the client
device corresponds to the first class of device; extracting, by the client
device,
the first priority indicator corresponding to the first class of device from
the
priority portion, wherein the first priority indicator is previously stored in
the
priority portion in association with the first class of device and wherein the
first
priority indicator specifies whether devices of the first class of device are
able to
use the extended data and the second priority indicator specifies whether
2a
CA 02533258 2013-07-17
devices of the second class of device are able to use the extended data;
determining, by the client device, a manner in which to process the extended
data based on the first priority indicator extracted from the priority
portion,
wherein the extended data comprises billing information for the content item;
and
processing, by the client device, said extended data in the determined manner.
In another aspect, the present invention resides in a computer program
product having computer readable memory tangibly embodying computer
readable code, said code comprising: instructions for receiving a data
structure
for a content item, the data structure comprising a base portion, an extension
portion and a priority portion logically separate from one another, wherein
the
base portion includes base data for rendering the content item and said
extension portion includes extended data that supplements the base data in
rendering the content item, wherein said priority portion stores a plurality
of
priority indicators including a first priority indicator and a second priority
indicator,
wherein the first priority indicator is assigned to a first class of device
and the
second priority indicator is assigned to a second class of device and wherein
the
base data is useable by both the first class of device and the second class of
device; instructions for processing the base data regardless of a class level
of
the device and regardless of the plurality of priority indicators;
instructions for
determining that the device corresponds to the first class of device;
instructions
for extracting the first priority indicator corresponding to the first class
of device
from the priority portion, wherein the first priority indicator is previously
stored in
the priority portion in association with the first class of device and wherein
the
first priority indicator specifies whether devices of the first class of
device are
able to use the extended data and the second priority indicator specifies
whether
devices of the second class of device are able to use the extended data;
instructions for determining a manner in which to process the extended data
based on the first priority indicator extracted from the priority portion,
wherein the
extended data comprises billing information for the content item; and
instructions
for processing said extended data in the determined manner.
In another aspect, the present invention resides in an apparatus
comprising: a processor; and memory operatively coupled to the processor and
storing computer readable instructions that when executed cause the apparatus
to: receive a data structure for a content item, the data structure comprising
a
2b
CA 02533258 2013-07-17
base portion, an extension portion and a priority portion logically separate
from
one another, wherein the base portion includes base data for rendering the
content item and said extension portion includes extended data that
supplements the base data in rendering the content item, wherein said priority
portion stores a plurality of priority indicators including a first priority
indicator and
a second priority indicator, wherein the first priority indicator is assigned
to a first
class of device and the second priority indicator is assigned to a second
class of
device and wherein the base data is useable by both the first class of device
and
the second class of device; process the base data regardless of a class level
of
the apparatus and regardless of the plurality of priority indicators;
determine that
the apparatus corresponds to the first class of device; extract the first
priority
indicator corresponding to the first class of device from the priority
portion,
wherein the first priority indicator is previously stored in the priority
portion in
association with the first class of device and wherein the first priority
indicator
specifies whether devices of the first class of device are able to use the
extended data and the second priority indicator specifies whether devices of
the
second class of device are able to use the extended data; determine a manner
in
which to process the extended data based on the first priority indicator
extracted
from the priority portion, wherein the extended data comprises billing
information
for the content item; and process said extended data in the determined manner.
In another aspect, the present invention resides in a method, comprising:
receiving, at a client device, a data structure for a content item, the data
structure comprising a base portion, an extension portion and a priority
portion,
wherein the base portion includes base data of the content item and said
extension portion includes extended data supplemental to the base data,
wherein said priority portion stores a plurality of priority indicators
including a first
priority indicator and a second priority indicator, wherein the first priority
indicator
is assigned to a first class of device and the second priority indicator is
assigned
to a second class of device; extracting, by the client device, the first
priority
indicator corresponding to the first class of device from the priority
portion;
determining, by the client device, a manner in which to process the extended
data based on the first priority indicator; and processing, by the client
device,
said extended data in the determined manner.
2c
CA 02533258 2013-07-17
In another aspect, the present invention resides in a computer program
product having computer readable memory tangibly embodying computer
readable code, said code comprising: instructions for receiving, at a client
device, a data structure for a content item, the data structure comprising a
base
portion, an extension portion and a priority portion, wherein the base portion
includes base data of the content item and said extension portion includes
extended data supplemental to the base data, wherein said priority portion
stores
a plurality of priority indicators including a first priority indicator and a
second
priority indicator, wherein the first priority indicator is assigned to a
first class of
device and the second priority indicator is assigned to a second class of
device;
instructions for extracting, by the client device, the first priority
indicator
corresponding to the first class of device from the priority portion;
instructions for
determining, by the client device, a manner in which to process the extended
data based on the first priority indicator; and instructions for processing,
by the
client device, said extended data in the determined manner.
In another aspect, the present invention resides in an apparatus
comprising: at least one processor; and memory operatively coupled to the at
least one processor and storing computer readable instructions that when
executed cause the apparatus to: receive a data structure for a content item,
the
data structure comprising a base portion, an extension portion and a priority
portion, wherein the base portion includes base data of the content item and
said
extension portion includes extended data supplemental to the base data,
wherein said priority portion stores a plurality of priority indicators
including a first
priority indicator and a second priority indicator, wherein the first priority
indicator
is assigned to a first class of device and the second priority indicator is
assigned
to a second class of device; extract the first priority indicator
corresponding to
the first class of device from the priority portion; determine a manner in
which to
process the extended data based on the first priority indicator; and process
said
extended data in the determined manner.
In another aspect, the present invention resides in a computer-
implemented method, comprising: processing, at a proxy server, a filter object
indicative of search criteria, the filter object being received from a
middleware
application programming interface (API); querying, by the proxy server, each
of a
plurality of data sources using the search criteria; merging, at the proxy
server,
2d
CA 02533258 2010-12-21
record sets provided by the queried data sources into a unified list of
records, the
unified list of records identifying assets remotely stored by at least one of
the
plurality of data sources, wherein at least one record in the record sets
comprises an extension portion and a priority portion; wherein the priority
portion
indicates that a first class of a plurality of classes of devices is to
process the
extension portion; wherein the priority portion identifies a never store
priority
level, a low priority level, a high priority level, or an always store
priority level;
and wherein the first class is a low end class, a mid-range class, or a high
end
class; providing a notification that the unified list of records is available;
and
delivering the unified list of records to the middleware API for merging the
unified
list of records with a second list of records resulting from the middleware
API
querying a local storage device using the filter object, the second list of
records
identifying assets locally stored on the storage device.
In another aspect, the present invention resides in a computer readable
storage medium comprising computer-readable instructions, that when executed,
cause an apparatus to perform operations comprising: processing a filter
object
indicative of search criteria; querying each of a plurality of data sources
using the
search criteria of the filter object, the data sources comprising a broadcast
listing
source, and a video-on-demand (VOD) asset listing; merging record sets,
provided by the queried data sources into a merged list of records, the merged
list of records identifying assets remotely stored by at least one of the
plurality of
data sources, wherein at least one record in the record sets comprises an
extension portion and a priority portion; wherein the priority portion
indicates that
a first class of a plurality of classes of devices is to process the extension
portion; wherein the priority portion identifies a never store priority level,
a low
priority level, a high priority level, or an always store priority level; and
wherein
the first class is a low end class, a mid-range class, or a high end class;
providing a notification that the merged list of records is available; and
causing
delivery of the merged list of records to a middleware application programming
interface (API) for merging with a second list of records resulting from the
middleware API querying a personal video recorder (PVR) using the filter
object,
the second list of records identifying assets locally stored on the PVR.
2e
CA 02533258 2010-12-21
In another aspect, the present invention resides in a computer-
implemented method, comprising: processing, at a proxy, a filter object
indicative of search criteria, the filter object being received from a
middleware
application programming interface (API); querying, by the proxy, each of a
plurality of data sources using the search criteria, the data sources
comprising a
broadcast listing source, and a video-on-demand (VOD) asset listing; merging,
at
the proxy, record sets provided in response to the queries into a merged list
of
records, the merged list of records identifying assets remotely stored by at
least
one of the plurality of data sources, wherein at least one record in the
record
sets comprises an extension portion and a priority portion; wherein the
priority
portion indicates that a first class of a plurality of classes of devices is
to process
the extension portion; wherein the priority portion identifies a never store
priority
level, a low priority level, a high priority level, or an always store
priority level;
and wherein the first class is a low end class, a mid-range class, or a high
end
class; providing, by the proxy, the merged list of records to the middleware
API;querying, by the middleware API, a personal video recorder (PVR) asset
listing using the filter object to obtain a PVR asset record set of assets
locally
stored on a PVR; merging, by the middleware API, the PVR asset record set with
the merged list of records to create a unified list of records; and providing,
by the
middleware API, a notification to an electronic program guide (EPG)
application
that the unified list of records is available.
In another aspect, the present invention resides in a method, comprising:
processing, by a processor, a list of records merged from record sets provided
by queried data sources that satisfy search criteria, the list of records
identifying
assets remotely stored by at least one of a plurality of data sources, wherein
at
least one record in the record sets comprises an extension portion and a
priority
portion; wherein the priority portion indicates that a first class of a
plurality of
classes of devices is to process the extension portion; wherein the priority
portion identifies a never store priority level, a low priority level, a high
priority
level, or an always store priority level; and wherein the first class is a low
end
class, a mid-range class, or a high end class; querying a personal video
recorder
(PVR) asset listing to obtain a PVR asset record set of assets locally stored
on a
PVR that conform to the search criteria; merging the PVR asset record set with
2f
CA 02533258 2010-12-21
the list of records to create a unified list of records; and providing a
notification
to an electronic program guide (EPG) application that the unified list of
records is
available.
In another aspect, the present invention resides in an apparatus
comprising: a processor; and memory storing instructions that when executed
by the processor, cause the apparatus to perform operations comprising:
processing a list of records merged from record sets provided by queried data
sources that satisfy search criteria, the list of records identifying assets
remotely
stored by at least one of a plurality of data sources, wherein at least one
record
in the record sets comprises an extension portion and a priority portion;
wherein
the priority portion indicates that a first class of a plurality of classes of
devices is
to process the extension portion; wherein the priority portion identifies a
never
store priority level, a low priority level, a high priority level, or an
always store
priority level; and wherein the first class is a low end class, a mid-range
class, or
a high end class; querying a personal video recorder (PVR) asset listing to
obtain a PVR asset record set of assets locally stored on a PVR that conform
to
the search criteria; merging the PVR asset record set with the list of records
to
create a unified list of records; and providing a notification to an
electronic
program guide (ERG) application that the unified list of records is available.
In another aspect, the present invention resides in a method comprising:
processing, by a processor, a list of records identifying assets remotely
stored by
a data source and that satisfy a search criterion, wherein at least one record
in
the list comprises an extension portion and a priority portion indicating that
a first
class of a plurality of classes of devices is to process the extension
portion;
querying a local storage to obtain a list of locally stored assets that
conform to
the search criterion; and merging the list of locally stored assets with the
list of
records to create a combined list.
In yet another aspect, the present invention resides in a method
comprising: querying each of a plurality of data sources using a search
criterion;
merging, by a processor, a list of records provided by each of the queried
data
sources into a combined list, wherein at least one record in the combined list
comprises an extension portion and a priority portion indicating that a first
class
of a plurality of classes of devices is to process the extension portion; and
2g
CA 02533258 2014-07-23
causing communication of the combined list to a device for merging with a
second list resulting from querying of a storage device local to the device
using
the search criterion.
In a further aspect, the present invention resides in a method, comprising:
receiving, at a client device, a data record from a server, the data record
comprising a base portion, an extension portion and a priority portion, the
base
portion comprising service data for providing a service of the client device,
the
extension portion comprising extended data supplemental to the service, the
priority portion comprising a plurality of separate priority indicators
dedicated to
defining priority levels for the extension portion, and the plurality of
separate
priority indicators comprising a first priority indicator that is assigned to
a first
class of device and a second priority indicator that is assigned to a second
class
of device; extracting, by the client device, the first priority indicator
corresponding
to the first class of device from the priority portion; determining whether to
process the extension portion based on an examination of the first priority
indicator; upon determining to process the extension portion, processing the
extended data supplemental to the service; and providing, by the client
device,
the service based on the service data.
In yet another aspect, the present invention resides in one or more non-
transitory computer readable media storing computer readable instructions
that,
when executed, cause an apparatus to: receive a data record from a server, the
data record comprising a base portion, an extension portion and a priority
portion, the base portion comprising service data for providing a service of a
client device, the extension portion comprising extended data supplemental to
the service data, the priority portion comprising a plurality of separate
priority
indicators dedicated to defining priority levels for the extension portion,
the
plurality of separate priority indicators comprising a first priority
indicator that is
assigned to a first class of device and a second priority indicator that is
assigned
to a second class of device; extract the first priority indicator
corresponding to the
first class of device from the priority portion; determine whether to process
the
extension portion based on an examination of the first priority indicator;
upon
determining to process the extension portion, processing the extended data
supplemental to the service; and provide the service based on the service
data.
2h
CA 02533258 2014-07-23
In yet another aspect, the present invention resides in an apparatus
comprising: at least one processor; and memory operatively coupled to the at
least one processor and storing computer readable instructions that, when
executed, cause the apparatus to: receive a data record from a server, the
data
record comprising a base portion, an extension portion and a priority portion,
the
base portion comprising service data for providing a service of a client
device,
the extension portion comprising extended data supplemental to the service
data, the priority portion comprising a plurality of separate priority
indicators
dedicated to defining priority levels for the extension portion, the plurality
of
separate priority indicators comprising a first priority indicator that is
assigned to
a first class of device and a second priority indicator that is assigned to a
second
class of device; extract the first priority indicator corresponding to the
first class
of device from the priority portion; determine whether to process the
extension
portion based on an examination of the first priority indicator; upon
determining to
process the extension portion, processing the extended data supplemental to
the
service; and provide the service based on the service data.
In a further aspect, the present invention resides in method comprising:
processing a data record received from a database; segmenting, by a processor,
the data record into a base record comprising basic data for implementing an
application and an extension record comprising extended data for providing
additional features of the application; and causing communication of the data
record.
Further aspects of the invention will become apparent upon reading the
following detailed description and drawings, which illustrate the invention
and
preferred embodiments of the invention.
BRIEF DESCRIPTION OF THE DRAWINGS
The teachings of the present invention can be readily understood by
considering the following detailed description in conjunction with the
accompanying drawings, in which:
FIG. 1 depicts a high-level block diagram of an information distribution
system suitable for use with the present invention;
2i
CA 02533258 2014-07-23
FIG. 2 depicts a high-level block diagram of a controller topology suitable
for use in the information distribution system of FIG.1;
FIGS. 3, 4 and 5 depict flow diagrams of methods according to
embodiments of the present invention; and
FIG. 6 depicts a flow diagram of a server-side method for processing a
request according to an embodiment of the invention.
To facilitate understanding, identical reference numerals have been used,
where possible, to designate identical elements that are common to the
figures.
DETAILED DESCRIPTION
The present invention will be generally described within the context of an
information distribution system that propagates content (e.g., movies, sports
and
the like), various services (e.g., video on demand, Interactive Program Guide
and
the like) and applications (e.g. billing and other services) to clients
2j
CA 02533258 2006-01-18
or set top boxes associated with users. It will be appreciated by those
skilled in
the art that while the invention has specific utility within the context of
the
systems described herein, the invention has broad applicability to any system
supporting client devices of varying capability.
FIG. 1 depicts a high level block diagram of a information distribution
system suitable for use with the present invention. Specifically, the system
100
of FIG. 1 comprises a server 110, a provisioning network 115, a plurality of
head-ends 1201 through 120N (collectively head-ends 120), a network 130 and
a plurality of set-top boxes STBs 1401 through 140N (collectively set top
STBs 140). The server 110 is associated with a plurality of databases 105,
illustratively a video on demand (VOD) database 1051, a broadcast services
database 1052 and other databases 1053. These databases 105 may be local
(e.g., at a content aggregation point within or proximate the server) or
remote
(e.g., at a content provider point such as a studio or cable services source).
Each STB is typically associated with a respective presentation device 150
such
as a television or other video display device such as a television and a user
input device 160 such as a remote control, pointing device and the like.
The server 110 is used to store and provide various assets such as
audio-visual content, music, data, applications and the like to the
head-ends 120. The server may be associated with individual or multiple
content suppliers and/or application providers. The server 110 communicates
with the various head-ends 120 via a provisioning network 115. The
provisioning network may comprise any network topology supporting the
conveyance of information to and from the server 110. Moreover, while
depicted as separate components, the invention may be implemented within a
system wherein the server 110 and head-end 120 are implemented within the
same functional element. Generally speaking, the server 110 operates in part
to provide information to, and receive information from, the STBs 140 via
their
respective head-ends 120 and network 130. The information propagated
between the server 110 and STBs 140 is processed as appropriate by the
head-end 120 and network 130.
Each of the head-ends 120 is associated with a neighborhood of STBs.
For simplicity, only those STBs associated with the second head-end 1202 are
3
CA 02533258 2006-01-18
shown and described herein. Each head-end 120 operates to communicate
content and other data to its respective neighborhood of STBs by broadcast
channels received by all STBs, narrowcast channels received by some of the
STBs or point cast channels received by individual STBs. The head-ends 120
also interact with their STBs 140 to establish and tear down sessions with the
STBs as necessary to enable the delivery of content, information services,
applications, and the like. Generally speaking, the head-ends 120 operate to
distribute content and other information provided by the server to the set-top
boxes as appropriate, as well as return STB messages, billing information and
other data to the server.
Each head-end 120 communicates with the STBs 140 within its
neighborhood via a relatively high bandwidth forward or downstream
communications channel DOWN and a relatively low bandwidth reverse or
upstream communications UP. The downstream DOWN and upstream UP
communications channels are supported by a network topology 130, such as a
hybrid fiber-coax cable television distribution system, a satellite
distribution
system (e.g., using a telephone network or reverse satellite link for upstream
communications) and the like. While not shown in FIG. 1, an out-of-band (00B)
forward communications channel may also be supported by the network
topology 130. In such an implementation of the network topology 130, control
messages and other information may be supplied to the STBs 140 via in-band
messaging using the downstream communications channel DOWN or via
out-of-band messaging using a forward communications channel (not shown).
The STBs 140 operate to receive broadcast (to most or all STBs),
narrowcast (to a region or defined group of STBs) or pointcast (to one STB,
also
known as a unit singlecast) information from the head-ends 120 via the
network 130 using the downstream communications channel DOWN (or
out-of-band forward channel).
Second STB 1402 within the neighborhood associated with second
head-end 1202 is depicted as including a plurality of application
programs 1421-142x (application programs 142). The application programs 142
may comprise any of the applications used within the context of an STB 140,
4
CA 02533258 2006-01-18
such as an interactive program guide (IPG) application, a VOD
selection/billing
application and the like.
Within the system 100 of FIG. 1, the clients or STBs 140 may comprise,
illustratively, "heavy" set top boxes or "thin" set top boxes, where a heavy
STB
or client has significant computational and/or memory resources while a thin
STB or client has constrained memory and/or computational resources. Rather
than simply "heavy" or "thin" set top boxes, many more classes of set top
boxes
may be deployed. To simplify the discussion, it will be assumed that within
the
system 100 of FIG. 1, three classes of set top boxes are deployed.
FIG. 2 depicts a high level block diagram of a controller topology suitable
for use in the system 100 of FIG. 1. Specifically, the controller 200 of FIG.
2
may be employed to implement relevant functions within the server 110,
head-end 120, and/or STB 140.
The controller 200 of FIG. 2 comprises a processor 230 as well as
memory 240 for storing various control programs and other programs 244 and
data 246. The memory 240 may also store an operating system 242 supporting
the programs 244.
The processor 230 cooperates with conventional support circuitry such
as power supplies, clock circuits, cache memory and the like as well as
circuits
that assist in executing the software routines stored in the memory 240. As
such, it is contemplated that some of the steps discussed herein as software
processes may be implemented within hardware, for example as circuitry that
cooperates with the processor 230 to perform various steps. The controller 200
also contains input/output (I/O) circuitry 210 that forms an interface between
the
various functional elements communicating with the controller 200.
Although the controller 200 is depicted as a general purpose computer
that is programmed to perform various control functions in accordance with the
present invention, the invention can be implemented in hardware as, for
example, an application specific integrated circuit (ASIC) or field
programmable
gate array (FPGA). As such, the process steps described herein are intended
to be broadly interpreted as being equivalently performed by software,
hardware
or a combination thereof.
5
CA 02533258 2006-01-18
Topologies such as depicted with respect to the controller 200 of FIG. 2
may be advantageously employed within the context of the server 110,
head-end 120, network 130 and/or STB 140. That is, by utilizing appropriate
operating systems 242, programs 244 and/or data 246, the topology depicted
with respect to controller 200 is used to realize the functional elements
discussed herein with respect to the various figures. As noted in FIG. 2, the
10
circuitry 210 communicates with network 115 as part of a server function,
communicates with network 115 and network 130 as part of a head-end
function, and communicates with input device 160, display device 150, and
network 130 as part of an STB function.
The invention may be implemented as a computer program product
wherein computer instructions, when processed by a computer, adapt the
operation of the computer such that the methods and/or techniques of the
present invention are invoked or otherwise provided. Instructions for invoking
the inventive methods may be stored in fixed or removable media, transmitted
via a data stream in a broadcast media or other signal bearing medium, and/or
stored within a working memory within a computing device operating according
to the instructions.
According to an embodiment of the present invention, basic data records
or structures area adapted to include an "Extension Record," which refers back
to an original, basic record and has specific data associated with it. For
example, a basic event record (i.e., a basic record associated with an event
such as a pay per view event) may be extended to include a promotional image
or jacket art. This solution allows the addition of new data fields to an
existing
record without requiring changes to the middleware supporting an application
or
service. Instead, a new `extension type' is defined on the server for all
applicable set top box classes, and an application request the appropriate
extension record for each applicable base record to access the new fields.
In order to allow low-powered set top boxes to provide as much data as
possible, such as interactive program guide data, the data records themselves
are minimized, and all set top boxes use the same records to conserve
bandwidth (i.e., broadcasting multiple versions of the data for different
boxes is
wasteful). For this reason, we choose to 'extend' the basic data provided for
6
CA 02533258 2006-01-18
each data record with optional 'data extension' records that can either be
accepted or ignored by each set top box.
In one embodiment of the invention, for each type of data record
provided by the Services Database (i.e. Event, Service, Event Details,
Message, Application, etc.), a corresponding number of 'Extension types' are
provided. Each record type/extension type pair on creation at the server is
assigned one of four priorities (never store, low, high, or always store) for
each
of the three set top box classes (low-end, mid-range, high-end).
In one embodiment of the invention, for each specific record of a given
type, if the record has data applicable to one of the extension records, the
server formats that data as an extension record. The extension record is
accessed by an applet or other client program, which client program has the
ability to interpret and otherwise process the extra data. Thus, data
structures
suitable for use within the context of the present invention may be utilized
by an
application programming interface (API) within a middleware environment (e.g.,
on a set top box). For example, in one embodiment for Event Records, an
Extension Type 1 contains an image. This is assigned a low' priority on all
but
high end boxes where, illustratively, the records are to be 'always' stored.
In
this case an applet, such as an applet implementing an interactive program
guide, when displaying details for a given event may request the extension
type 1 for the current event identifier and will be returned data which the
applet
then interprets as, illustratively, an image to display promotional artwork
related
to the event.
The invention provides several advantages, such as (1) additional data
geared to high end boxes may be provided without encumbering low-end boxes
with the data or duplicating basic information for the high-end boxes; (2)
additional data fields can be added to the data schema without requiring
changes to the middleware; and (3) a server U I component allows the addition
of new extension record types dynamically so changes can be driven from third
party applications; and (4) third party software developers to may extend
existing listing (or other data) without needing changes to either the
middleware
or server (e.g., they can dynamically add new fields targeted to the set top
boxes on which they want their application to run).
7
CA 02533258 2006-01-18
FIG. 3 depicts a data structure suitable for use with the present invention.
Specifically, FIG. 3 depicts a single data structure 300, illustratively a
record
within a database including a plurality of similarly structured records. The
data
structure 300 comprises a base record portion 310, an extension portion 320
and a priority portion 330.
The base record portion 310 comprises basic data from a data base
associated with a service provider, such as a video on demand (VOD) provider,
broadcast listing provider, application provider or other service provider.
The
basic data within the base record 310 comprises data that is to be used by
every set top box within an information distribution system, regardless of
class
level (i.e., thin client, thick client and the like).
The extension portion(s) 320 is used to store extended data or a pointer,
address or other indicator to the location of the extended data. The extended
data may comprise still or moving imagery (e.g., promotional imagery and the
like); content related information such as title, genre, actors and the like;
as well
as other data useful in implementing an advanced service or function within
the
client device. Generally speaking, extended data stored within (or pointed to
by) the extension portion 320 of the data structure 300 comprises any data
that
may be used to supplement the service or application supported by the basic
data within the base record portion 310.
The priority portion 330 includes priority per class identifier data.
Specifically, use of the extended data is optionally divided into a plurality
of
priority levels, depending on the type of extended data provided. Some
extended data may be crucial (such as billing information), while other
extended
data may be merely useful to provide. Additionally, the priority level of the
extended data is optionally related to the capability or class of a set top
box
receiving the data structure 300.
For illustrative purposes, four priority levels are used; namely, Never
Store (NS), low (L), high (H), and Always Store (AS). Extended data associated
with a NS priority level is never stored by the set top box, while extended
data
associated with an AS priority level is always stored by the set top box. High
priority data is preferentially stored before low priority data, and then only
if
memory remains after the storage of the always store data. The priority levels
8
CA 02533258 2006-01-18
are used to provide guidance to the STB during the processing of extended
data.
For illustrative purposes, the set top boxes are divided into three classes;
namely, Low End (LE), Mid Range (MR), and High End (HE), set top boxes. A
low end set top box may be considered to be a thin client set top box (i.e.,
severely constrained computational and/or memory resources). A high end set
top box may be considered to be a thick client (i.e., ample computational
and/or
memory resources). A mid range set top box may be considered as having
some constraints on memory and/or computational ability. The STB classes are
used to differentiate between set top boxes based upon a capability level,
such
as a capability level identified according to processing and/or memory
constraints.
It should be noted that a single base record 310 may be associated with
multiple extension records 320, and that each of the multiple extension
records
may be associated with a different set of priorities. For example, an event
record may have an image extension to be stored on heavy set top boxes only,
and a third party data extension to be stored on all set top boxes (e.g., to
enable
access to a third party application by all set top boxes).
Generally speaking, the invention operates to provide services/functions
at a level of functionality appropriate to each set top box. Basic services
are
nominally provided via the base record portion 310 of the data structure 300.
Where additional processing and/or memory resources are available at the
STB, enhanced services and/or functions are provided via the extension record
portion 320 of the data structure 300. The suitability of extended data for
use in
a particular set top box is based on the importance of the extended data to an
application or service (i.e., the priority), as well the ability of the set
top box to
process the extended data (i.e., the STB class). In this manner, basic
application of functionality is delivered to each class of set top box, while
those
set top boxes capable of or benefiting from additional features are given the
opportunity to utilize such features via extended data delivery within the
extension portion 320 of the data structure 300.
FIG. 4 depicts a high level block diagram of a data processing routine
according to an embodiment of an invention. Specifically, the data processing
9
CA 02533258 2006-01-18
routine 400 of FIG. 4 is adapted for use within a set top box processing a
data
stream including data structures such as those described above with respect to
FIG. 3.
At step 410, a next base record is received and stored. Referring to box
405, the next base record is identified via a basic data record operating as a
"table of contents" block which identifies all data blocks available including
those for base records and extension records. Other means of identifying the
next base record may also be used (e.g., a linked list approach).
At step 420, the priority/class indicator is examined to determine, at step
430, whether the extended data included within or referred to by the extension
record is appropriate to the set top box. If the extended data is not
appropriate,
then the method 400 proceeds to step 410 to retrieve and store the next base
record.
If the extended data is appropriate to the set top box, then at step 440
the extended data is retrieved and processed. Referring to box 445, the
extension portion includes either the extended data or information to be
utilized,
or an address or other identification of the extended data or information to
be
utilized. That is, the contents of the extension portion 320 of the data
structure
may contain the specific information needed to invoke an advanced service or
application function (e.g., a promotional file and the like), or an address or
other
indicator that is used merely to identify the specific information needed. If
an
address or indicator is provided, then at step 440 the STB propagates a signal
back to the server to retrieve the specific information needed to invoke the
advanced service or application function. The server processing of this
request
is discussed below with respect to FIG. 6.
At step 450, the extended data is stored according to the priority per
class identifier. That is, extended data denoted as always store, high
priority
and/or low priority is stored as discussed above with respect to FIG. 3.
The routine of 400 of FIG. 4 is adapted to enabling a set top box to
retrieve, process and optionally store extended data records that are
associated
with basic data or base records. This processing is performed in a prioritized
manner and according to the capabilities of the set top box. Thus, the
underlying structures utilized by a service or application may be the same for
CA 02533258 2006-01-18
that application irrespective of the set top box within which that application
is
executed. The application only processes the extended data appropriate to its
host set top box. In this manner, portability of applications, portability of
data
structures, and commonality of application services may be provided within the
context of an information distribution system including set top boxes or
clients
having different capabilities.
FIG. 5 depicts a flow diagram of a server-side method for processing
data according to an embodiment of the invention. Specifically, FIG. 5 depicts
a
flow diagram of a data processing method 500 suitable for use in, for example,
a server 110 or head-end 120 within the system 100 of FIG. 1. The method 500
of FIG. 5 is adapted to generating data structures useful in implementing
various embodiments of the present invention.
At step 510, data records from a services data base are received.
Referring to box 515, the services data base may comprise a video on demand
(VOD) database, a broadcast listings database or some other application or
services database.
At step 520, those records associated with a particular extension type are
identified. Referring to box 525, the particular extension type may comprise
an
event type, a service type, an event detail, an application type or some other
type. Numerous extension types may be defined.
At step 530, the received data records are adapted to include the
extension data. That is, at step 530 the received data records are adapted to
include a base record portion and an extension portion including a type
identifier. Such adaptation may comprise, for example, the segmentation of
application data into the basic data necessary to implement the application
and
extended data useful in providing enhanced application features or functions.
At step 540, the data records are adapted to include priority levels for
each set top box class. Referring to box 543, the priority levels comprise,
illustratively, a never store (NS), low (L), high (H), and always store (AS)
priority
level, as previously discussed. More or fewer priority levels may be utilized.
Referring to box 547, the STB classes may comprise low end, mid range, high
end, as previously discussed. More or fewer STB classes may be utilized.
11
CA 02533258 2013-07-17
b
At step 550, the adapted records are stored or forwarded to set top
boxes per broadcast, narrowcast and/or point cast channels. That is, at step
550 the information provided by the modified data structure is propagated
towards the set top boxes for subsequent processing and/or storage as
appropriate to the service or application.
FIG. 6 depicts a flow diagram of a server-side method for processing a
request according to an embodiment of the invention. Specifically, FIG. 6
depicts a flow diagram of a request processing method 600 suitable for use in,
for example, a server 110 or head-end 120 within the system 100 of FIG. 1.
The method 600 of FIG. 6 is adapted to responding to a STB request for
information needed to invoke the advanced service or application function.
At step 610, a request for extended data item(s) is received from a client
or, more specifically, a middleware API operating within the client to support
an
application or the application/applet itself.
At step 620, a request is propagated to the services database or listing
proxy associated with the extended data item(s). For example, a listing proxy
may comprise an application or functional entity that integrates content
listings
for both VOD and broadcast to provide an integrated listing. On those set top
boxes where VOD operation is available, one application is the generation of
such an integrated listing in a timely and accurate manner. Other services
databases may be accessed to provide appropriate information in response to
the STB request.
At step 630, the requested extended data item(s) are forwarded to the
requesting STB or STBs.
The above methods be used independently or in any combination. More
specifically, various functional elements within the system 100 of FIG. 1 may
be
used to perform all or only a portion of the processing tasks described with
respect to the various Figures. For example, using the method 600 of FIG. 6,
the proxy servers may be used to create merged VOD/broadcast listing IPG
data. The data may be further processed by the server (e.g., per the method
500 of FIG. 5) to provide additional IPG application data.
While the foregoing is directed to certain embodiments of the present
invention, these embodiments are meant to be illustrative, not limiting.
12
CA 02533258 2013-07-17
The scope of the claims should not be limited by the preferred embodiments set
forth in the examples, but should be given the broadest interpretation
consistent
with the description as a whole.
13