Language selection

Search

Patent 2428829 Summary

Third-party information liability

Some of the information on this Web page has been provided by external sources. The Government of Canada is not responsible for the accuracy, reliability or currency of the information supplied by external sources. Users wishing to rely upon this information should consult directly with the source of the information. Content provided by external sources is not subject to official languages, privacy and accessibility requirements.

Claims and Abstract availability

Any discrepancies in the text and image of the Claims and Abstract are due to differing posting times. Text of the Claims and Abstract are posted:

  • At the time the application is open to public inspection;
  • At the time of issue of the patent (grant).
(12) Patent Application: (11) CA 2428829
(54) English Title: DECREASED IDLE TIME AND CONSTANT BANDWIDTH DATA-ON-DEMAND BROADCAST DELIVERY MATRICES
(54) French Title: MATRICES DE DISTRIBUTION DE DIFFUSION DE DONNEES SUR DEMANDE A LARGEUR DE BANDE CONSTANTE ET A TEMPS MORTS REDUITS
Status: Deemed Abandoned and Beyond the Period of Reinstatement - Pending Response to Notice of Disregarded Communication
Bibliographic Data
(51) International Patent Classification (IPC):
  • H04L 12/18 (2006.01)
  • H04H 20/16 (2009.01)
  • H04N 21/482 (2011.01)
(72) Inventors :
  • HOANG, KHOI (United States of America)
(73) Owners :
  • PREDIWAVE CORPORATION
(71) Applicants :
  • PREDIWAVE CORPORATION (United States of America)
(74) Agent: FASKEN MARTINEAU DUMOULIN LLP
(74) Associate agent:
(45) Issued:
(86) PCT Filing Date: 2001-06-27
(87) Open to Public Inspection: 2002-05-16
Availability of licence: N/A
Dedicated to the Public: N/A
(25) Language of filing: English

Patent Cooperation Treaty (PCT): Yes
(86) PCT Filing Number: PCT/US2001/020679
(87) International Publication Number: WO 2002039744
(85) National Entry: 2003-05-08

(30) Application Priority Data:
Application No. Country/Territory Date
09/709,948 (United States of America) 2000-11-10
09/841,792 (United States of America) 2001-04-24
09/892,017 (United States of America) 2001-06-25

Abstracts

English Abstract


A method and system for a decreased idle time scheduling matrix (520) for a
data file reduced into data blocks. A scheduling matrix is generated and idle
time is filled with data blocks that appear later in the matrix, keeping with
the original sequence of data blocks. This is then repeated (550), or equally
a new decreased idle time scheduling matrix is created (560). Specially
designed set-top boxes receive these data blocks.


French Abstract

L'invention concerne un procédé et un système de mise en oeuvre d'une matrice de programmation à temps morts réduits (520) pour un fichier de données mis sous forme de blocs de données. On génère une matrice de programmation et les temps morts sont remplis avec des blocs de données qui apparaissent plus tard dans la matrice, en gardant la séquence originale des blocs de données. Ce processus est répété (550), ou bien il est procédé à la création d'une nouvelle matrice de programmation à temps morts réduits (560). Des décodeurs spécialement conçus permettent de recevoir ces blocs de données.

Claims

Note: Claims are shown in the official language in which they were submitted.


CLAIMS:
1. A computer implemented universal broadcast method comprising the act of
preparing a delivery matrix defining a data transmission sequence suitable for
broadcast, to a
plurality of clients, on-demand data in a non client specific manner, whereby
transmission of
said on-demand data files requires an amount of transmission bandwidth that is
independent of
the number of said plurality of clients.
2. A computer implemented method as recited in claim 1, wherein the act of
generating a delivery matrix comprises the acts of:
preparing a first scheduling matrix suitable for transmission of a first data
file, said first
data file being represented by a first plurality of data blocks, said first
scheduling matrix
providing a first sequence for transmitting said first plurality data blocks
sequentially within time
slots in a manner such that any client receiving transmission of said first
data file according to
said first scheduling matrix may begin accessing said first data file within
one time slot.
3. A computer implemented method as recited in claim 2 wherein said first
scheduling matrix is a constant bandwidth scheduling matrix.
4. A computer implemented method as recited in claim 3 wherein a constant
quantity of data from said first plurality of data blocks are scheduled for
transmission during
allocated bandwidth.
5. A computer implemented method as recited in claim 4 wherein control of
transmission during allocated bandwidth is performed by a low level hardware
device.
6. A computer implemented method as recited in claim 3 wherein said first
scheduling matrix is a variable bandwidth scheduling matrix.
7. A computer implemented method for generating a constant bandwidth,
decreased
idle time scheduling matrix suitable for the delivery of on-demand data in a
non client specific
format, said method comprising the acts of:
generating a scheduling matrix suitable for transmission of a first data file,
said first data
file being represented by a first plurality of data blocks, said first
scheduling matrix providing a
25

first sequence for transmitting said first plurality data blocks sequentially
within time slots in a
manner such that any client receiving transmission of said first data file
according to said first
scheduling matrix may begin accessing said first data file within one time
slot;
determining a desired constant transmission bandwidth, wherein said constant
bandwidth
is then used to stream said data blocks sequentially according to the order of
said first scheduling
matrix.
8. A computer implemented method for controlling a universal set-top-box
(STB),
said method comprising the acts of:
receiving digital data in a plurality of channels and an electronic program
guide (EPG)
indicating the nature of data transmitted in each of said plurality of
channels, wherein a first one
of said plurality of channels includes a data-on-demand program providing on-
demand data in a
non client specific format, said EPG indicating that said data-on-demand
program includes a first
data file being represented by a first plurality of data blocks, said first
plurality of data blocks
being provided sequentially within time slots in a manner such that a user of
said universal STB
may at any time begin accessing said first data file within one time slot;
providing said EPG data to said user of said universal STB;
receiving a data processing instructions from said user of said universal STB
requiring
access of said first data file; and
implementing said instructions from said user of said universal STB.
9. A computer implemented method as recited in claim 8, wherein said act of
implementing instructions from said user of said universal STB includes the
sub-acts of:
tuning said STB to said first channel in order to select data requested by
said user;
processing said first plurality of data blocks as received, said processing
including at least
one of the following:
decoding said received data blocks;
decompressing said received data blocks;
re-assembling said received data blocks as necessary; and
storing said received data blocks to a local memory present within said STB;
26

and
providing said first data file to an output device selected by said user of
said universal
STB.
10. A computer implemented method as recited in claim 9 wherein said output
device
is a television.
11. A computer implemented method as recited in claim 9 wherein said output
device
is a display monitor.
12. A computer implemented method as recited in claim 9 wherein said output
device
is a video cassette recorder (VCR).
13. A computer implemented method as recited in claim 9 wherein said output
device
is a computer system.
14. A computer implemented method as recited in claim 8, wherein said first
plurality
of data blocks is provided in a constant bandwidth manner in that a constant
number of data
blocks are received during each time slot.
15. A computer implemented universal data broadcast method comprising the
acts of:
at a universal data broadcast system, performing the acts of:
preparing a delivery matrix defining a data transmission sequence suitable for
broadcast, to a plurality of clients, on-demand data in a non client specific
manner,
whereby transmission of said on-demand data files requires an amount of
transmission
bandwidth that is independent of the number of said plurality of clients
providing a first channel server suitable for the transmission of on-demand
data
via a first channel;
27

prior to data broadcast, preparing said first channel server for the
transmission of
data-on-demand information, said preparing said first channel server including
the acts
retrieving said delivery matrix into a memory of said first channel server and
retrieving
data blocks scheduled for delivery by said delivery matrix into said memory of
said first
channel server;
transmitting an electronic program guide (EPG) including information
indicating
that said first channel contains on-demand data; and
transmitting data from said first channel and said second channel;
and
at a universal STB, performing the acts of:
receiving digital data including data in said first channel, and said EPG;
providing said EPG data to a user of said universal STB;
receiving data processing instructions from said user of said universal STB;
and
implementing said instructions from said user of said universal STB.
16. A computer implemented method as recited in claim 15, wherein the act of
generating a deliver matrix comprises the acts of:
preparing a first scheduling matrix suitable for transmission of a first data
file, said first
data file being represented by a first plurality of data blocks, said first
scheduling matrix
providing a first sequence for transmitting said first plurality data blocks
sequentially within time
slots in a manner such that any client receiving transmission of said first
data file according to
said first scheduling matrix may begin accessing said first data file within
one time slot.
17. A computer implemented method as recited in claim 16 wherein said first
scheduling matrix is a constant bandwidth scheduling matrix.
18. A computer implemented method as recited in claim 17 wherein a constant
number of said first plurality of data blocks are scheduled for transmission
during each time slot.
19. A computer implemented method as recited in claim 15 wherein said first
scheduling matrix is a variable bandwidth scheduling matrix.
28

20. A data delivery matrix comprising
a data file divided into a number of data blocks;
said number of data blocks being arranged into an order determined by the
steps of:
a) dividing said data file into said number of data blocks;
b) setting a first variable to zero;
c) clearing a reference array;
d) comparing said first variable to the total number of said number of data
blocks;
e) if said first variable is less than the total number of said number of data
blocks, set a
second variable to zero;
f) compare said second variable to the total number of said number of data
blocks;
g) if said second variable is less than the total number of said number of
data blocks
writing one or more stored data blocks stored in a column of a scheduling
matrix into said
reference array, said column determined by the [(i + j) mod (x)] where i is
said second variable, j
is said first variable and x is said number of data blocks;
h) if said reference array already has at least one of said stored data
blocks, do not write a
second copy;
i) check if said reference array contains a block corresponding to said second
variable;
j) if said reference array does not contain said data block corresponding to
said second
variable, said data block is added to said reference array and said scheduling
matrix at a position
in said matrix equal to [(i + j) mod(x),j] and said second variable is
increased by 1;
k) if said reference array does contain said data block corresponding to said
second
variable, said second variable is increased by 1;
l) repeat steps g) through k) until said second variable is equal to said
total number of
data blocks;
m) increase said first variable by 1;
n) repeat steps c) through m) until said first variable is equal to said total
number of data
blocks; and
o) reconfigure said scheduling matrix into a stream;
wherein said order is transmitted in a repeating signal over a medium having a
bandwidth
assigned to said data file, and wherein said bandwidth is fully used by said
repeating signal.
21. The data delivery matrix of claim 20, wherein said step of reconfiguring
said
scheduling matrix into a stream involves determining the size of said
bandwidth assigned to said
data file.
29

22. The data delivery matrix of claim 21, wherein determining the size of said
bandwidth assigned to said file minimizes said bandwidth.
23. The data delivery matrix of claim 21, wherein determining the size of said
bandwidth assigned to said file maximizes said bandwidth.
24. The data delivery system having a plurality of data delivery streams
derived from
a data delivery matrix as in claim 20, wherein said data file comprises a
plurality of distinct data
files.
25. A computer implemented method for transmission of an on-demand data file
comprising:
an act of preparing a delivery matrix defining a repeating data transmission
sequence
suitable for broadcast over a medium to a plurality of clients in a non-
specific manner;
wherein said act of preparing said delivery matrix further comprises reducing
a data file
into data blocks having at least a first block, and ordering said data blocks
into a said repeating
data transmission sequence;
wherein a user may receive said repeating data transmission sequence and begin
using
said data file in an uninterrupted manner as soon as said first block is
received;
wherein said repeating data transmission sequence requires a pre-determined
bandwidth
and further wherein there is deminimus idle time in transmission of said
repeating data
transmission sequence; and
whereby transmission of said data on-demand file requires an amount of
transmission
bandwidth that is independent of the number of said plurality of clients.
26. The computer implemented method for transmission of an on-demand data file
as
in claim 25, wherein said repeating data transmission sequence converted into
a new decreased
idle time scheduling matrix.
27. The computer implemented method for transmission of an on-demand data file
as
in claim 25, wherein said data transmission sequence has a constant bandwidth.
30

28. The computer implemented method for transmission of an on-demand data file
as
in claim 27, wherein a constant number of said data blocks axe scheduled for
transmission during
each time slot.
29. The computer implemented method for transmission of an on-demand data file
as
in claim 27 wherein said data transmission sequence has a variable bandwidth.
30. A computer implemented universal data broadcast method comprising the
acts of:
preparing a delivery matrix defining a data transmission sequence suitable for
broadcast, to a plurality of clients, on-demand data in a non client specific
manner,
whereby transmission of said on-demand data files requires an amount of
transmission
bandwidth that is independent of the number of said plurality of clients, and
wherein the
use of said amount of transmission bandwidth is fully optimized;
providing a first channel server suitable for the transmission of on-demand
data
via a first channel;
prior to data broadcast, preparing said first channel server for the
transmission of
data-on-demand information, said preparing said first channel server including
the acts of
retrieving said delivery matrix into a memory of said first channel server and
retrieving
data blocks scheduled for delivery by said delivery matrix into said memory of
said first
channel server;
transmitting an electronic program guide (EPG) including information
indicating
that said first channel contains on-demand data; and
transmitting data from said first channel and said second channel;
and, at a universal set-top box (STB), performing the acts of:
receiving digital data including data in said first channel, and said EPG;
providing said EPG data to a user of said universal STB;
receiving data processing instructions from said user of said universal STB;
and
implementing said instructions from said user of said universal STB.
31. A computer implemented method as recited in claim 30, wherein the act of
generating a deliver matrix comprises the acts of:
31

preparing a first scheduling matrix suitable for transmission of a first data
file, said first
data file being represented by a first plurality of data blocks, said first
scheduling matrix
providing a first sequence for transmitting said first plurality data blocks
sequentially within time
slots in a manner such that any client receiving transmission of said first
data file according to
said first scheduling matrix may begin accessing said first data file within
one time slot.
32. A computer implemented method as recited in claim 31 wherein said first
scheduling matrix is a constant bandwidth scheduling matrix.
33. A computer implemented method as recited in claim 32 wherein a constant
number of said first plurality of data blocks are scheduled for transmission
during each time slot.
34. A computer implemented method as recited in claim 30 wherein said first
scheduling matrix is a variable bandwidth scheduling matrix.
35. A computer implemented method for generating a constant bandwidth,
decreased
idle time scheduling matrix suitable for the delivery of on-demand data in a
non client specific
format, said method comprising the acts of:
generating a scheduling matrix suitable for transmission of a first data file,
said first data
file being represented by a first plurality of data blocks, said first
scheduling matrix providing a
first sequence for transmitting said first plurality data blocks sequentially
within time slots in a
manner such that any client receiving transmission of said first data file
according to said first
scheduling matrix may begin accessing said first data file within one time
slot;
determining a desired constant transmission bandwidth, wherein said constant
bandwidth
is defined by the transmission of a defined constant number of data blocks per
time slot; and
for a next time slot, selecting sequentially a number of data blocks for
transmission being
equal to the defined constant number of data blocks, cycling back to the
beginning of said first
sequence of data blocks once the entire first sequence of data blocks has been
scheduled for
transmission, wherein use of said constant bandwidth is fully optimized.
32

Description

Note: Descriptions are shown in the official language in which they were submitted.


CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
DECREASED IDLE TIME AND CONSTANT BANDWIDTH DATA-ON-
DEMAND BROADCAST DELIVERY MATRICES
BACKGROUND OF THE INVENTION
Video-on-demand (VOD) systems are one type of data-on-demand (DOD) system. In
VOD systems, video data files are provided by a server or a network of servers
to one or more
clients on a demand basis. These systems will be well understood by those of
skill in the art.
In a conventional VOD architecture, a server or a network of servers
communicates with
clients in a standard hierarchical client-server model. For example, a client
sends a request to a
server for a data file (e.g., a video data file). In response to the client
request, the server sends
the requested file to the client. In the standard client-server model, a
client's request for a data
file can be fulfilled by one or more servers. The client may have the
capability to store any
received data file locally in non-volatile memory for later use. The standard
client-server model
requires a two-way communications infrastructure. Currently, two-way
communications
requires building new infrastructure because existing cables can only provide
one-way
communications. Examples of two-way communications infrastructure are hybrid
fiber optics
coaxial cables (HFC) or all fiber infrastructure. Replacing existing cables is
very costly and the
resulting services may not be affordable to most users.
In addition, the standard client-server model has many limitations when a
service
provider (e.g., a cable company) attempts to provide VOD services to a large
number of clients.
One limitation of the standard client-server model is that the service
provider has to implement a
mechanism to continuously listen and fulfill every request from each client
within the network;
thus, the number of clients who can receive service is dependent on the
capacity of such a
mechanism. One mechanism uses massively-parallel computers having large and
fast disk arrays
as local servers. However, even the fastest existing local server can only
deliver video data
streams to about 1000 to 2000 clients at one time. Thus, in order to service
more clients, the
number of local servers must increase. Increasing local servers requires more
upper level servers
to maintain control of the local servers.
Another limitation of the standard client-server model is that each client
requires its own
bandwidth. Thus, the total required bandwidth is directly proportional to the
number of
subscribing clients. Cache memory within local servers has been used to
improve bandwidth
limitation but using cache memory does not solve the problem because cache
memory is also
limited.
1

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
Presently, in order to make video-on-demand services more affordable for
clients,
existing service providers are increasing the ratio of clients per local
server above the local
server's capabilities. Typically, a local server, which is capable of
providing service to 1000
clients, is actually committed to service 10,000 clients. This technique may
work if most of the
subscribing clients do not order videos at the same time. However, this
technique is set up for
failure because most clients are likely to want to view videos at the same
time (i.e., evenings and
weekends), thus, causing the local server to become overloaded.
Thus, it is desirable to provide a system that is capable of providing on-
demand services
to a large number of clients over virtually any transmussion medium without
replacing existing
infrastructure.
2

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
SUMMARY OF THE INVENTION
In an exemplary embodiment, at a server side, a method for sending data to a
client to
provide data-on-demand services comprising the steps of: receiving a data
file, specifying a time
interval, parsing the data file into a plurality of data blocks based on the
time interval such that
each data block is displayable during the time interval, determining a
required number of time
slots to send the data file, allocating to each time slot at least a first of
the plurality of data blocks
and optionally one or more additional data blocks, such that the plurality of
data blocks is
available in sequential order to a client accessing the data file during any
time slot, and sending
the plurality of data blocks based on the allocating step. In one embodiment,
the parsing step
includes the steps of: determining an estimated data block size, determining a
cluster size of a
memory in a channel server, and parsing the data file based on the estimated
data block size and
the cluster size. In another embodiment, the determining step includes the
step of assessing
resource allocation and bandwidth availability.
In an exemplary embodiment, at a client side, a method for processing data
received from
a server to provide data-on-demand services comprises the steps of: (a)
receiving a selection of a
data file during a first time slot; (b) receiving at least one data block of
the data file during a
second time slot; (c) during a next time slot: receiving any data block not
already received,
sequentially displaying a data block of the data file, and repeating step (c)
until all data blocks of
the data file has been received and displayed. In one embodiment, the method
for processing
data received from a server is performed by a set-top box at the client side.
In an exemplary embodiment, a data file is divided into a number of data
blocks and a
i
scheduling matrix is generated based on the number of data blocks. At the
server side, the
scheduling matrix provides a send order for sending the data blocks, such that
a client can access
the data blocks in sequential order at a random time. In an exemplary
embodiment, a method for
generating a scheduling matrix for a data file comprises the steps of: (a)
receiving a number of
data blocks [x] for a data file; (b) setting a first variable [j] to zero; (c)
setting a second variable
[i] to zero; (d) clearing all entries in a reference array; (e) writing at
least one data block stored in
matrix positions of a column [(i+j) modulo x] in a matrix to a reference
array, if the reference
array does not already contain the data block; (f) writing a data block [i]
into the reference array
and a matrix position [(i+j) modulo x,j] of the matrix, if the reference array
does not contain the
data block [i]; (g) incrementing the second variable [i] by one and repeating
step (e) until the
second variable [i] is equal to the number of data blocks [x]; and (h)
incrementing the first
variable [j] by one and repeating the step (c) until the first variable [j] is
equal to the number of
data blocks [x]. In one embodiment, a scheduling matrix is generated for each
data file in a set
3

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
of data files and a convolution method is applied to generate a delivery
matrix based on the
scheduling matrices for sending the set of data files.
A data-on-demand system comprises a first set of channel servers, a central
controlling
server for controlling the first set of channel servers, a first set of up-
converters coupled to the
first set of channel servers, a combiner/amplifier coupled to the first set of
up-converters, and a
combiner/amplifier adapted to transmit data via a transmission medium. In an
exemplary
embodiment, the data-on-demand system further comprises a channel monitoring
module for
monitoring the system, a switch matrix, a second set of channel servers, and a
second set of up-
converters. The channel monitoring module is configured to report to the
central controlling
server when system failure occurs. The central controlling server, in response
to a report from
the channel monitoring module, instructs the switch matrix to replace a
defective channel server
in the first set of channel servers with a channel server in the second set of
channel servers and a
defective up-converter in the first set of up-converters with an up-converter
in the second set of
up-converters.
A method for providing data-on-demand services comprises the steps of
calculating a
delivery matrix of a data file, sending the data file in accordance with the
delivery matrix, such
that a large number of clients is capable of viewing the data file on demand.
In one embodiment,
the data file includes a video file.
In yet another embodiment of the present invent, the idle time created in a
delivery matrix
can be decreased by moving up the next data blocks in the matrix until all
time slots are full and
the entire bandwidth is used. In this manner, the delivery matrix can be
thought of more as a
stream of data maintaining the order of the original matrix. At any time a
user may join the
stream and being using data-on-demand services as soon as a starting block is
received.
Since the matrix can be thought of as a stream, a user can enter the stream at
any given
time, and wait only as long as it takes to receive a starting block to being
using the data-on-
demand services, which would be no longer than the predetermined time slots of
the original
delivery matrix.
Another embodiment of the present invention teaches a universal STB capable of
receiving and
handling a plurality of digital services such as VOD and digital broadcast.
This embodiment
teaches a universal STB having a highly flexible architecture capable of
sophisticated processing
of received data. This architecture includes a databus, a first communication
device suitable for
coupling to a digital broadcast communications medium, a memory typically
including persistent
and transient memory bi-directionally coupled to the databus, a digital data
decoder bi-
directionally coupled to the databus, and a central processing unit (CPU) bi-
directionally coupled
to the databus. The CPU of this embodiment of the present invention implements
a STB control
4

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
process for controlling the memory, the digital decoder, and the demodulator.
The STB control
process is operable to process digital data such as that received at the first
communications
device. The STB control process should be capable of receiving data blocks
derived from a
decreased idle time scheduling matrix as well as parallel streaming of such
data blocks.
5

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
BRIEF DESCRIPTION OF THE DRAWINGS ~i
FIGURE 1 A illustrates an exemplary DOD system in accordance with an
embodiment of the invention.
FIGURE 1B illustrates an exemplary DOD system in accordance with another
embodiment of the invention.
FIGURE 2 illustrates an exemplary channel server in accordance with an
embodiment of the invention.
FIGURE 3 illustrates an exemplary set-top box in accordance with an
embodiment of the invention.
FIGURE 4 illustrates an exemplary process for generating a scheduling matrix
in
accordance with an embodiment of the invention.
FIGURE 5 graphically illustrates an example of a scheduling matrix of a six
data block
file.
FIGURE 6 graphically illustrates how the data blocks of the scheduling matrix
in Figure
6 are moved up until all idle time slots are filled.
FIGURE 7 graphically illustrates a new decreased idle time scheduling matrix.
FIGURE 8 depicts the addition of the decreased idle time embodiment.
FIGURE 9 shows in flow chart form how the decreased idle time embodiment is
accomplished.
FIGURE 10 graphically depicts multiple stream of repeating data being created
from an
original scheduling matrix.
6

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
DETAILED DESCRIPTION OF THE INVENTION
Figure 1A illustrates an exemplary DOD system 100 in accordance with an
embodiment
of the invention. In this embodiment, the DOD system 100 provides data files,
such as video
files, on demand. However, the DOD system 100 is not limited to providing
video files on
demand but is also capable of providing other data files, for example, game
files on demand.
The DOD system 100 includes a central controlling server 102, a central
storage 103, a plurality
of channel servers 104a-104n, a plurality of up-converters 106a-106n, and a
combiner/amplifier
108. The central controlling server 102 controls the channel servers 104. The
central storage
103 stores data files in digital format. In an exemplary embodiment, data
files stored in the
central storage 103 are accessible via a standard network interface (e.g.,
Ethernet connection) by
any authorized computer, such as the central controller server 102, connected
to the network.
Each channel server 104 is assigned to a channel and is coupled to an up-
converter 106. The
channel servers 104 provide data files that are retrieved from the central
storage 103 in
accordance with instructions from the central controlling server 102. The
output of each channel
server 104 is a quadrature amplitude modulation (QAM) modulated intermediate
frequency (IF)
signal having a suitable frequency for the corresponding up-converter 106. The
QAM-
modulated IF signals are dependent upon adopted standards. The current adopted
standard in the
United States is the data-over-cable-systems-interface-specification (DOCSIS)
standard, which
~ requires an approximately 43.75MHz IF frequency. The up-converters 106
convert IF signals
received from the channel servers 104 to radio frequency signals (RF signals).
The RF signals,
which include frequency and bandwidth, are dependent on a desired channel and
adopted
standards. For example, under the current standard in the United States for a
cable television
channel 80, the RF signal has a frequency of approximately 559.25MHz and a
bandwidth of
approximately 6MHz. The outputs of the up-converters 106 are applied to the
combiner/amplifier 108. The combiner/amplifier 108 amplifies, conditions, and
combines the
received RF signals then outputs the signals out to a transmission medium 110.
In an exemplary embodiment, the central controlling server 102 includes a
graphics user
interface (not shown) to enable a service provider to schedule data delivery
by a drag-and-drop
operation. Further, the central controlling server 102 authenticates and
controls the channel
servers 104 to start or stop according to delivery matrices. In an exemplary
embodiment, the
central controlling server 102 automatically selects a channel and calculates
delivery matrices for
transmitting data files in the selected channel. The central controlling
server 102 provides
offline addition, deletion, and update of data file information (e.g.,
duration, category, rating,
andlor brief description). Further, the central controlling server 102
controls the central storage
7

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
103 by updating data files and databases stored therein.
In an exemplary embodiment, an existing cable television system 120 may
continue to
feed signals into the combiner/amplifier 108 to provide non-DOD services to
clients. Thus, the
DOD system 100 in accordance with the invention does not disrupt present cable
television
services.
Figure 1B illustrates another exemplary embodiment of the DOD system 100 in
accordance with the invention. In addition to the elements illustrated in
Figure 1A, the DOD
system 100 includes a switch matrix 112, a channel monitoring module 114, a
set of back-up
channel servers 116a-116b, and a set of back-up up-converters 118a-118b. In
one embodiment,
the switch matrix 112 is physically located between the up-converters 106 and
the
combinerlamplifier 108. The switch matrix 112 is controlled by the central
controlling server
102. The channel monitoring module 114 comprises a plurality of configured set-
top boxes,
which simulate potential clients, for monitoring the health of the DOD system
100. Monitoring
results are communicated by the channel monitoring module 114 to the central
controlling server
102. In case of a channel failure (i.e., a channel server failure, an up-
converter failure, or a
communication link failure), the central controlling server 102 through the
switch matrix 112
disengages the malfunctioning component and engages a healthy backup component
116 and/or
118 to resume service.
In an exemplary embodiment, data files being broadcasted from the DOD system
100 are
contained in motion pictures expert group (MPEG) files. Each MPEG file is
dynamically
divided into data blocks and sub-blocks mapping to a particular portion of a
data file along a
time axis. These data blocks and sub-blocks are sent during a pre-determined
time in accordance
with three-dimensional delivery matrices provided by the central controlling
server 102. A
feedback channel is not necessary for the DOD system 100 to provide DOD
services. However,
if a feedback channel is available, the feedback channel can be used for other
purposes, such as
billing or providing Internet services.
Figure 2 illustrates an exemplary channel server 104 in accordance with an
embodiment
of the invention. The channel server 104 comprises a server controller 202, a
CPU 204, a QAM
modulator 206, a local memory 208, and a network interface 210. The server
controller 202
controls the overall operation of the channel server 104 by instructing the
CPU 204 to divide
data files into blocks (further into sub-blocks and data packets), select data
blocks for
transmission in accordance with a delivery matrix provided by the central
controlling server 102,
encode selected data, compress encoded data, then deliver compressed data to
the QAM
modulator 206. The QAM modulator 206 receives data to be transmitted via a bus
(i.e., PCI,
CPU local bus) or Ethernet connections. In an exemplary embodiment, the QAM
modulator 206
8

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
may include a downstream QAM modulator, an upstream quadrature amplitude
modulation/quadrature phase shift keying (QAM/QPSK) burst demodulator with
forward error
correction decoder, and/or an upstream tuner. The output of the QAM modulator
206 is an IF
signals that can be applied directly to an up-converter 106.
The network interface 210 connects the channel server 104 to other channel
servers 104
and to the central controlling server 102 to execute the scheduling and
controlling instructions
from the central controlling server 102, reporting status.back to the central
controlling server
102, and receiving data files from the central storage 103. Any data file
retrieved from the
central storage 103 can be stored in the local memory 208 of the channel
server 104 before the
data file is processed in accordance with instructions from the server
controller 202. In an
exemplary embodiment, the channel server 104 may send one or more DOD data
streams
depending on the bandwidth of a cable channel (e.g., 6, 6.5, or 8MHz), QAM
modulation (e.g.,
QAM 64 or QAM 256, and a compression standard/bit rate of the DOD data stream
(i.e., MPEG-
1 or MPEG-2).
FIG. 3 illustrates a universal set-top box (STB) 300 in accordance with one
embodiment
of the invention. The STB 300 comprises a QAM demodulator 302, a CPU 304, a
local memory
308, a buffer memory 310, a decoder 312 having video and audio decoding
capabilities, a
graphics oveflay module 314, a user interface 318, a communications link 320,
and a fast data
bus 322 coupling these devices as illustrated. The CPU 302 controls overall
operation of the
universal STB 300 in order to select data in response to a client's request,
decode selected data,
decompress decoded data, re-assemble decoded data, store decoded data in the
local memory 308
or the buffer memory 310, and deliver stored data to the decoder 312. In an
exemplary
embodiment, the local memory 308 comprises non-volatile memory (e.g., a hard
drive) and the
buffer memory 310 comprises volatile memory.
In one embodiment, the QAM demodulator 302 comprises transmitter and receiver
modules and one or more of the following: privacy encryption/decryption
module, forward error
correction decoder/encoder, tuner control, downstream and upstream processors,
CPU and
memory interface circuits. The QAM demodulator 302 receives modulated IF
signals, samples
and demodulates the signals to restore data.
In an exemplary embodiment, when access is granted, the decoder 312 decodes at
least
one data block to transform the data block into images displayable on an
output screen. The
decoder 312 supports commands from a subscribing client, such as play, stop,
pause, step,
rewind, forward, etc. The decoder 312 provides decoded data to an output
device 324 for use by
the client. The output device 324 may be any suitable device such as a
television, computer, any
appropriate display monitor, a VCR, or the like.
9

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
The graphics overlay module 314 enhances displayed graphics quality by, for
example,
providing alpha blending or picture-in-picture capabilities. In an exemplary
embodiment, the
graphics overlay module 314 can be used for graphics acceleration during game
playing mode,
for example, when the service provider provides games-on-demand services using
the system in
accordance 'with the invention.
The user interface 318 enables user control of the STB 300, and may be any
suitable
device such as a remote control device, a keyboard, a smartcard, etc. The
communications link
320 provides an additional communications connection. This may be coupled to
another
computer, or may be used to implement bi-directional communication. The data
bus 322 is
preferably a commercially available "fast" data bus suitable for performing
data communications
in a real time manner as required by the present invention. Suitable examples
are USB, firewire,
etc.
In an exemplary embodiment, although data files are broadcast to all cable
television
subscribers, only the DOD subscriber who has a compatible STB 300 will be able
to decode and
enjoy data-on-demand services. In one exemplary embodiment, permission to
obtain data files
on demand can be obtained via a smart card system in the user interface 318. A
smart card may
be rechargeable at a local store or vending machine set up by a service
provider. In another
exemplary embodiment, a flat fee system provides a subscriber unlimited access
to all available
data files.
In preferred embodiments, data-on-demand interactive features permits a client
to select
at any time an available data file. The amount of time between when a client
presses a select
button and the time the selected data file begins playing is referred to as a
response time. As
more resources are allocated (e.g., bandwidth, server capability) to provide
DOD services, the
response time gets shorter. In an exemplary embodiment, a response time can be
determined
based on an evaluation of resource allocation and desired quality , of
service. When combined
with the embodiment of placing the first data block in a parallel stream, the
response time
becomes a factor only of the time it takes to receive and process that first
data block.
In one embodiment, the number of data blocks (NLTM OF_BLKS) for each data file
can
be calculated as follows:
Estimated BLK_Size = (DataFile Size * TS) / DataFile_Length (1)
BLK SIZE = (Estimated BLK Size + CLUSTER SIZE - lByte) / CLUSTER SIZE (2)
BLK_SIZE BYTES = BLK SIZE * CLUSTER_SIZE (3)

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
NUM OF BLKS =(DataFile_Size + BLK_SIZE_BYTES - lByte)/BLK_SIZE BYTES (4)
In equations (1) to (4), the Estimated_BLK Size is an estimated block size (in
Bytes); the
DataFile_Size is the data file size (in Bytes); TS represents the duration of
a time slot (in
seconds); DataFile_Length is the duration of the data file (in seconds); BLK
SIZE is the number
of clusters needed for each data block; CLUSTER SIZE is the size of a cluster
in the local
memory 208 for each channel server 104 (e.g., 64KBytes); BLK_SIZE BYTES is a
block size in
Bytes. In this embodiment, the number of blocks (NUM OF BLKS) is equal to the
data file size
(in Bytes) plus a data block size in Bytes minus 1, Byte and divided by a data
block size in Bytes.
Equations ( 1 ) to (4) illustrate one specific embodiment. A person of skill
in the art would
recognize that other methods are available to calculate a number of data
blocks for a data file.
For example, dividing a data file into a number of data blocks is primarily a
function of an
estimated block size and the cluster size of the local memory 208 of a channel
server 104. Thus,
the invention should not be limited to the specific embodiment presented
above.
Figure 4 illustrates an exemplary process for generating a scheduling matrix
for sending a
data file in accordance with an embodiment of the invention. In an exemplary
embodiment, this
invention uses time division multiplexing (TDM) and frequency division
multiplexing (FDM)
technology to compress and schedule data delivery at the server side. In an
exemplary
embodiment, a scheduling matrix is generated for each data file. In one
embodiment, each data
file is divided into a number of data blocks and the scheduling matrix is
generated based on the
number of data blocks. Typically, a scheduling matrix provides a send order
for sending data
blocks of a data file from a server to clients, such that the data blocks are
accessible in sequential
order by any client who wishes to access the data file at a random time.
At step 402, a number of data blocks (x) for a data file is received. A first
variable, j, is
set to zero (step 404). A reference array is cleared (step 406). The reference
array keeps track of
data blocks for internal management purposes. Next, j is compared to x (step
408). If j is less
than x, a second variable, i, is set to zero (step 412). Next, i is compared
to x (step 414). If i is
less than x, data blocks stored in the column [(i+j) modulo (x)] of a
scheduling matrix are written
into the reference array (step 418). If the reference array already has such
data block(s), do not
write a duplicate copy. Initially, since the scheduling matrix does not yet
have entries, this step
can be skipped. Next, the reference array is checked if it contains data block
i (step 420).
Initially, since all entries in the reference array have been cleared at step
406, there would be
nothing in the reference array. If the reference array does not contain data
block i, data block i is
added into the scheduling matrix at matrix position [(i+j) modulo (x), j] and
the reference array
(step 422). After the data block i is added to the scheduling matrix and the
reference array, i is
11

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
incremented by 1, such that i = i + 1 (step 424), then the process repeats at
step 414 until i = x. If
the reference array contains data block i, i is incremented by 1, such that i
= i + 1 (step 424), then
the process repeats at step 414 until i = x. When i = x, j is incremented by
1, such that j = j + 1
(step 416) and the process repeats at step 406 until j = x. The entire process
ends when j = x (step
410).
In an exemplary embodiment, if a data file is divided into six data blocks (x
= 6), the
scheduling matrix and the reference arrays are as follows:
Scheduling Matrix (SM)
TS0 TS1 TS2 TS3 TS4 TS5
[0, 0] [1,0] blkl [2, 0] blk2[3, 0] [4, 0] [5, 0]
blk0 blk3 blk4 blk5
[0, 1] [1, 1] blk0[2, 1] [3, 1] [4, 1] [5, 1]
[0, 2] [1, 2] [2, 2] blk0[3, 2] [4, 2] [5, 2]
blkl
[0, 3] [1, 3] [2, 3] [3, 3] [4, 3] [5, 3]
blk0 , blk2
[0, 4] [l, 4] blk3[2, 4] [3, 4] [4, 4] [5, 5]
blk0 blk2
[0, 5] [1, 5] [2, 5] [3, 5] [4, 5] [5, 5]
blk4 blk0
Reference Array (RA)
space0 spacel space2 space3 space4 spaces
TSO blk0 blkl blk2 blk3 blk4 blk5
TS1 blkl blk0 blk2 blk3 blk4 blk5
TS2 blk2 blk0 blk3 blkl blk4 blk5
TS3 blk3 blkl blk0 blk4 blk5 blk2
TS4 blk4 blk0 blk5 blk2 blkl blk3
TS5 blk5 blk2 blkl blk0 blk3~ blk4
Appendix A attached to this application describes a step-by-step process of
the
exemplary process illustrated in Figure 4 to generate the above scheduling
matrix and reference
arrays. In this exemplary embodiment, based on the scheduling matrix above,
the six data blocks
of the data file are sent in the following sequence:
12

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
TSO => blk0
TSI => blk0, blkl, blk3
TS2, _> blk0, blk2
TS3 => blk0, blkl, blk3, blk4
TS4 => blk0, blk4
TS5 => blk0, blkl, blk2, blk5
In another exemplary embodiment, a look-ahead process can be used to calculate
a look-
ahead scheduling matrix to send a predetermined number of data blocks of a
data file prior to a
predicted access time. For example, if a predetermined look-ahead time is the
duration of one
time slot, for any time slot greater than or equal to time slot number four,
data block 4 (blk4) of a
data file should be received by a STB 300 at a subscribing client at or before
TS3, but blk4
would not be played until TS4. The process steps for generating a look-ahead
scheduling matrix
is substantially similar to the process steps described above for Figure 4
except that the look-
ahead scheduling matrix in this embodiment schedules an earlier sending
sequence based on a
look-ahead time. Assuming a data file is divided into six data blocks, an
exemplary sending
sequence based on a look-ahead scheduling matrix, having a look-ahead time of
the duration of
two time slots, can be represented as follows:
TSO => blk0
TS 1 => blk0, blkl, blk3, blk4
TS2 => blk0, blk2
TS3 => blk0, blkl, blk3, blk4, blk5
TS4 => blk0, blk5
TS5 => blk0, blkl, blk2
A three-dimensional delivery matrix for sending a set of data files is
generated based on
the scheduling matrices for each data file of the set of data files. In the
three-dimensional
delivery matrix, a third dimension containing IDs for each data file in the
set of data files is
generated. The three-dimensional delivery matrix is calculated to efficiently
utilize available
bandwidth in each channel to deliver multiple data streams. In an exemplary
embodiment, a
convolution method, which is well known in the art, is used to generate a
three-dimensional
delivery matrix to schedule an efficient delivery of a set of data files. For
example, a
convolution method may include the following policies: ( 1 ) the total number
of data blocks sent
in the duration of any time slot (TS) should be kept at a smallest possible
number; and (2) if
13

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
multiple partial solutions are available with respect to policy (1), the
preferred solution is the one
which has a smallest sum of data blocks by adding the data blocks to be sent
during the duration
of any reference time slot, data blocks to be sent during the duration of a
previous time slot (with
respect to the reference time slot), and data blocks to be sent during the
duration of a next time
slot (with respect to the reference time slot). For example, assuming an
exemplary system
sending two short data files, M and N, where each data file is divided into
six data blocks, the
sending sequence based on a scheduling matrix is as follows:
TSO => blk0
TS 1 => blk0, blkl, blk3, blk4
TS2 => blk0, blk2
TS3 => blk0, blkl, blk3, blk4
TS4 => blk0, blk4
TS5 => blk0,blkl,blk2, blk5
Applying the exemplary convolution method as described above, possible
combinations of
delivery matrices are as follows:
Option 1: Send video file N at shift 0 TS Total Data Blocks
TSO => M0, NO 2
TSl => MO,M1,M3,NO,NI,N3 6
TS2 => M0, M2, N0, N2 4
TS3 => M0, Ml, M3, M4, N0, N1, N3, N4 8
TS4 => M0, M4, N0, N4 4
TS5 => M0, MI, M2, M5, N0, NI, N2, N5 8
Option 2: Send video file N at shift 1 TS Total Data Blocks
TSO => M0, N0, N1, N3 4
TS 1 => M0, MI, M3, N0, N2 5
TS2 => M0, M2, N0, N1, N3, N4 6
TS3 =>M0, Ml, M3, M4, N0, N4 6
14

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
TS 4 => M0, M4, N0, N 1, N2, N5
TS5 => M0, Ml, M2, M5, NO 5
Option 3: Send video file N at shift 2 TS Total Data Blocks
TSO => M0, N0, N2 3
TS 1 => M0, M1, M3, N0, Nl, N3, N4 7
TS2 => M0, M2, N0, N4 4
TS3 =>M0, Ml, M3, M4, N0, N1, N2, N5 8
TS4 => M0, M4, NO 3
TS5 => M0, Ml, M2, M5, N0, Nl, N3 7
Option 4: Send video file N at shift 3 TS Total Data Blocks
TSO => M0, N0, N1, N3, N4 5
TS1 => M0, M1, M3, N0, N4 5
TS2 => M0, M2, N0, Nl, N2, N5 6
TS3 =>M0, Ml, M3, M4, NO 5
TS4 => M0, M4, N0, N1, N3 5
TS5 => M0, Ml, M2, M5, N0, N1, N2 6
15

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
Option 5: Send video file N at shift 4 TS Total Data Blocks
TSO =>M0, N0, ~N4 3
TS1 => M0, Ml, M3, N0, Nl, N2,, N5 7
TS2 =>M0, M2, NO 3
TS3 =>M0, MI, M3, M4, N0, N1, N3 7
TS4 => M0, M4, N0, N2 4
TS5 =>M0, Ml, M2, MS, N0, N1, N3, N4 8
Option 6: Send video file N at shift 5 TS Total Data Blocks
TSO =>M0, N0, N1, N2, N5 5
TS 1 => M0, M 1, M3, NO 4
TS2 => M0, M2, N0, N1, N3 5
TS3 =>M0, M1, M3, M4, N0, N2 6
TS4 =>M0, M4, N0, N1, N3, N4 6
TS5 =>M0, Ml, M2, M5, N0, N4 6
Applying policy (1), options 2, 4, and 6 have the smallest maximum number of
data
blocks (i.e., 6 data blocks) sent during any time slot. Applying policy (2),
the optimal delivery
matrix in this exemplary embodiment is option 4 because option 4 has the
smallest sum of data
blocks of any reference time slot plus data blocks of neighboring time slots
(i.e., 16 data blocks).
Thus, optimally for this embodiment, the sending sequence of the data file N
should be shifted
by three time slots. In an exemplary embodiment, a three-dimensional delivery
matrix is
generated for each channel server 104.
When data blocks for each data file are sent in accordance with a delivery
matrix, a large
number of subscribing clients can access the data file at a random time and
the appropriate data
blocks of the data file will be timely available to each subscribing client.
In the example
provided above, assume the duration of a time slot is equal to 5 seconds, the
DOD system 100
sends data blocks for data files M and N in accordance with the optimal
delivery matrix (i.e.,
shift delivery sequence of data file N by three time slots) in the following
manner:
Time 00:00:00=> MO NO N1 N3 N4
16

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
Time 00:00:05=> MO Ml M3 NO N4
Time 00:00:10=> MO M2 NO N 1 N2 N5
Time 00:00:15=> MO Ml M3 M4 NO
Time 00:00:20=> MO M4 NO N 1 N3
Time 00:00:25=> MO Ml M2 M5 NO N2
Time 00:00:30=> MO NO N1 N3 N4
Time 00:00:35=> MO Ml M3 NO N4
Time 00:00:40=> MO M2 NO N 1 N2 N5
Time 00:00:45=> MO M1 M3 M4 NO
Time 00:00:50=> MO M4 NO N 1 N3
Time 00:00:55=> MO M1 M2 M5 NO N2
If at time 00:00:00 a client A selects movie M, the STB 300 at client A
receives, stores,
plays, and rejects data blocks as follows:
Time 00:00:00=> Receive MO => play M0, store M0.
Time 00:00:05=> Receive Ml, M3 => play Ml, store M0, Ml, M3.
Time 00:00:10=> Receive M2 => play M2, store M0, Ml, M2, M3.
Time 00:00:15=> Receive M4 => play M3, store M0, Ml, M2, M3, M4.
Time 00:00:20=> Receive none => play M4, store M0, Ml, M2, M3, M4.
Time 00:00:25 => Recv M5 => play M5, store M0, Ml, M2, M3, M4, M5.
If at time 00:00:10, a client B selects movie M, the STB 300 at client B
receives, stores,
plays, and rejects data blocks as follows:
Time 00:00:10 => Rcv M0, M2 => play M0, store M0, M2.
Time 00:00:15 => Rcv Ml, M3, M4 => play Ml, store M0, M1, M2, M3,M4.
Time 00:00:20 => Rcv none => play M2, store M0, Ml, M2, M3, M4.
Time 00:00:25 => Rcv M5 => play M3, store M0, Ml, M2, M3, M4, M5.
Time 00:00:30 => Rcv none => play M4, store M0, Ml, M2, M3, M4, M5.
Time 00:00:35 => Rcv none => play M5, store M0, Ml, M2, M3, M4, M5.
If at time 00:00:15, a client C selects movie N, the STB 300 of the client C
receives,
stores, plays, and rejects data blocks as follows:
Time 00:00:15 => Rcv NO => play N0, store N0.
Time 00:00:20=> Rcv Nl N3 => play N1, store N0, Nl, N3.
17

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
Time 00:00:25=> => play N2, tore N0, N1, N2, N3.
Rcv N2
Time 00:00:30=> => play N3, store N0, Nl, N2, N3, N4.
Rcv N4
Time 00:00:35=> => play N4, store N0, N1, N2, N3, N4.
Rcv none
Time 00:00:40=> => play N5, store N0, N1, N2, N3, N4, N5.
Rcv N5
If at time 00:00:30, a client D also selects movie N, the STB 300 at the
client D receives,
stores, plays, and rejects data blocks as follows:
Time 00:00:30=> Rcv N0, Nl, N3, N4 => play N0, store N0, N1, N3, N4.
Time 00:00:35=> Rcv none => play N1, store N0, Nl, N3, N4.
Time 00:00:40=> Rcv N2, N5 => play N2, store N0, N1, N2, N3, N4, N5.
Time 00:00:45=> Rcv none => play N3, store N0, Nl, N2, N3, N4, N5.
Time 00:00:50=> Rcv none => play N4, store N0, N1, N2, N3, N4, N5.
Time 00:00:55=> Rcv none => play N5, store N0, N1, N2, N3, N4, N5.
As shown in the above examples, any combination of clients can at a random
time
independently select and begin playing any data file provided by the service
provider. The above
denotation of "Receive" is slightly misleading as the system is always
receiving a continuous
stream of data blocks determined by the time slot, but at any given point, the
receiving STB may
only require certain data blocks, having already received and stored the other
received data
blocks. This need is referred to as "receive" above, but may be more
accurately referred to as
"non rejected." Therefore, "receive M4" could be termed "reject all but M4"
and "receive none"
could better be termed "reject all."
What becomes apparent from the examples given above is that available
bandwidth is not
being fully used during certain time slots. In particular, during at least
some time slots there is
"idle time" wherein no transmission occurs. This idle time is an inherently
ineffective use of
available bandwidth. Let's take as an example option 4 shown above wherein two
data blocks
are transmitted during the respective time slot. In other words, in a time
slot having bandwidth
suitable for transmitting six data blocks, four data block transmission
periods are left idle.
Although this is not dramatic in option 4, it becomes more extreme as data
files become
thousands of data blocks big. Even using optimal combination protocols for
combining data,
there may still be significant sections of empty block space.
This empty block space equates to bandwidth which is not being used, and
therefore is
wasted bandwidth. A goal of this invention is to decrease as much idle time as
possible, and
' therefore one embodiment of the current invention is to perform another step
after the scheduling
matrix is determined, referred to herein as a decreased idle time scheduling
matrix.
18

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
An exemplary model of a decreased idle time scheduling matrixes can be
explained with
reference to the six block scheduling matrix described above, but repeated
here for convenience.
Idle time during which bandwidth could be utilized to transmit a data block is
denoted "<-->"
for clarity:
TSO => blk0, <-->,
<-->, <-->
TS 1 => blk0, blkl,
blk3, <-->
TS2 => blk0, blk2,
<-->, <-->
TS3 => blk0, blkl,
blk3, blk4
TS4 => blk0, blk4,
<-->, <-->
TS5 => blk0, blkl,
blk2, blk5
This is shown in graphical form in Fig 5. The scheduling matrix clearly has
unused
bandwidth in the form of idle time during most time slots. The present
invention teaches
reduction of this idle time by utilizing constant bandwidth from time slot to
time slot. The key to
accomplishing decreased idle transmission time through constant bandwidth
utilization is an
understanding that the delivery sequence of the data blocks must be adhered
to, while the exact
time slot in which a data block is delivered is not relevant except that the
data block must be
received prior to or at the time in which it must be accessed. Accordingly,
constant bandwidth
utilization is accomplished by transmitting a constant number of data blocks
within each time
slot according to the delivery sequence set forth by the scheduling matrix and
with disregard to
the time slot assigned by the scheduling matrix.
In the six block scheduling matrix described above in detail, there is a
significant amount
of idle time in TSO, TS l, TS2 and TS4. For the sake of example, assume the
desired constant
bandwidth corresponds to transmission of four data blocks per time slot.
Accordingly, the idle
time is decreased by moving forward data blocks until four data blocks are
scheduled for
transmission during each time slot. The procedure for this is to take the next
data block in
sequence, and move it to the empty space. So for this example, the first block
in TS l, blk0, is
moved to TSO. The next block in TS1, blkl, is also moved up. Then, since TSO
still has an
empty data block space, blk3 from TS 1 is also moved up. TSO then has all of
its spaces filled,
and now looks like:
TSO => blk0, blk0, blkl, blk3
19

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
Now TS 1 and most of TS2 are empty, so the data blocks from TS3 get moved up.
Once
this sequence is finished, the matrix looks like:
TSO => blk0, blk0, blkl, blk3
TS 1 => blk0, blk2,
blk0, blkl
TS2 => blk3, blk4,
blk0, blk4
TS3 => blk0, blkl,
blk2, blk5
TS4 =>
TS5 =>
This is also shown graphically in Fig. 6. Empty and incomplete time slots,
such as TS4
and TS5 in this example, get filled up simply by repeating the original
sequence, while still
filling up the idle time. Hence the first six time slots would appear as:
TSO => blk0, blk0,
blkl, blk3
TS 1 => blk0, blk2,
blk0, blkl
TS2 => blk3, blk4,
blk0, blk4
TS3 => blk0, blkl,
blk2, blk5
TS4 => blk0, blk0,
blkl, blk3
TS5 => blk0, blk2,
blk0, blkl
The next two time slots in this sequence, TS6 and T57, would have the same
data blocks as TS2
and TS3. Therefore what is actually produced by this process in a new, shorter
scheduling
matrix, now only four time slots long. Fig. 7 graphically depicts this new
repeating matrix
created by filling up idle time.
It is obvious from the example given above that as long as the original order
is followed,
a user can now receive the data file ahead of time in contrast with the on
time delivery of the
original scheduling matrix. A user may even enter the system mid-time slot and
begin using the
data as soon as a starting block, blk0, is received.
In this fashion, time slots become largely a computational fiction, as the
data blocks
become a continuous stream, and at any point in the stream a user may jump
onto the system and
begin receiving data. As can be seen in Fig. S, this additional step is a
relatively simple step 510,
performed at what was the end of the procedure 410.
For simplicity's sake, the above description of FIGS. 4 - 10 dealt with an
instance where
the selected bandwidth was set to a constant equal to an integer number of
data blocks.

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
However, the constant bandwidth need not be equal to an integer number of data
blocks.
Instead, what is simply required is that the delivery sequence adhere to the
sequence developed
as in FIG. 8. The data stream generated by the delivery sequence developed in
FIG. 8 is then
provided to a lower level hardware device (e.g., a network card or the channel
server) which
controls broadcast of the digital data. Rather than broadcasting an integer
number of data blocks,
the lower level hardware device will transmit as much data as possible within
the bandwidth
allocated to the file.
As will be appreciated by those of skill in the art, at the abstraction level
of the delivery
sequence, one need not worry about the actual transmission of data. Instead,
the delivery matrix
provides the sequence and the lower level hardware device controls broadcast
of data utilizing
the allocated bandwidth. Hence an allocated bandwidth which includes a
fraction of a data block
size can be fully utilized. Once the allocated bandwidth has been utilized,
the lower level device
will pause broadcast of this particular data file until bandwidth is again
available.
GENERAL OPERATION
A service provider can schedule to send a number of data files (e.g., video
files) to
channel servers 104 prior to broadcasting. The central controlling server 102
calculates and sends
to the channel servers 104 three-dimensional delivery matrices (ID, time slot,
and data block
send order). During broadcasting, channel servers 104 consult the three-
dimensional delivery
matrices to send appropriate data blocks in an appropriate order. Each data
file is divided into
data blocks so that a large number of subscribing clients can separately begin
viewing a data file
continuously and sequentially at a random time. The size of a data block of a
data file is
dependent on the duration of a selected time slot and the bit rate of the data
stream of the data
file. For example, in a constant bit rate MPEG data stream, each data block
has a fixed size of:
Block Size (MBytes) = BitRate (Mb/s) x TS (see) / 8 (1).
In an exemplary embodiment, a data block size is adjusted to a next higher
multiple of a
memory cluster size in the local memory 208 of a channel server 104. For
example, if a
calculated data block length is 720Kbytes according to equation (1) above,
then the resulting
data block length should be 768Kbytes if the cluster size of the local memory
208 is 64Kbytes.
In this embodiment, data blocks should be further divided into multiples of
sub-blocks each
having the same size as the cluster size. In this example, the data block has
twelve sub-blocks of
64KBytes.
A sub-block can be further broken down into data packets. Each data packet
contains a
packet header and packet data. The packet data length depends on the maximum
transfer unit
(MTU) of a physical layer where each channel server's CPU sends data. In the
preferred
21

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
embodiment, the total size of the packet header and packet data should be less
than the MTU.
However, for maximum efficiency, the packet data length should be as long as
possible.
In an exemplary embodiment, data in a packet header contains information that
permits
the subscriber client's STB 300 to decode any received data and determine if
the data packet
belongs to a selected data file (e.g., protocol signature, version, ID, or
packet type information).
The packet header may also contain other information, such as block/sub-
block/packet number,
packet length, cyclic redundancy check (CRC) and offset in a sub-block, and/or
encoding
informaxion.
Once received by a channel server 104, data packets are sent to the QAM
modulator 206
where another header is added to the data packet to generate a QAM modulated
IF output signal.
The maximum bit rate output for the QAM modulator 206 is dependent on
available bandwidth.
For example, for a QAM modulator 206 with 6MHz bandwidth, the maximum bit rate
is 5.05
(bit/symbol) x 6 (MHz) = 30.3 Mbitlsec.
The QAM-modulated IF signals are sent to the up-converters 106 to be converted
to RF
signals suitable for a specific channel (e.g., for CATV channel 80, 559.250MHz
and 6MHz
bandwidth). For example, if a cable network has high bandwidth (or bit rate),
each channel can
be used to provide more than one data stream, with each data stream occupying
a virtual sub
channel. For example, three MPEG1 data streams can fit into a 6MHz channel
using QAM
modulation. The output of the up-converters 106 is applied to the
combiner/amplifier 108, which
sends the combined signal to the transmission medium 110.
In an exemplary embodiment, the total system bandwidth (BW) for transmitting
"N" data
streams is BW = N x bw, where bw is the required bandwidth per data stream.
For example,
three MPEG-1 data streams can be transmitted at the same time by a DOCSIS
cable channel
having a system bandwidth of 30.3 Mbits/sec. because each MPEG-1 data stream
occupies 9
Mbitslsec of the system bandwidth.
Typically, bandwidth is consumed regardless of the number of subscribing
clients
actually accessing the DOD service. Thus, even if no subscribing client is
using the DOD
service, bandwidth is still consumed to ensure the on-demand capability of the
system.
The STB 300, once turned on, continuously receives and updates a program guide
stored
in the local memory 308 of a STB 300. In an exemplary embodiment, the STB 300
displays data
file information including the latest program guide on a TV screen. Data file
information, such
as video file information, may include movielD, movie title, description (in
multiple languages),
category (e.g., action, children), rating (e.g., R, PG13), cable company
policy (e.g., price, length
of free preview), subscription period, movie poster, and movie preview. In an
exemplary
embodiment, data file information is sent via a reserved physical channel,
such as a channel
22

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
reserved for firmware update, commercials, and/or emergency information. In
another exemplary
embodiment, information is sent in a physical channel shared by other data
streams.
A subscribing client can view a list of available data files arranged by
categories
displayed on a television screen. When the client selects one of the available
data files, the STB
300 controls its hardware to tune into a corresponding physical channel and/or
a virtual sub
channel to start receiving data packets for that data file. The STB 300
examines every data
packet header, decodes data in the data packets, and determines if a received
data packet should
be retained. If the STB 300 determines that a data packet should not be
retained, the data packet
is discarded. Otherwise, the packet data is saved in the local memory 308 for
later retrieval or is
temporarily stored, in the buffer memory 310 until it is sent to the decoder
312.
To improve performance efficiency by avoiding frequent read/write into the
local
memory 308, in an exemplary embodiment, the STB 300 uses a "sliding window"
anticipation
technique to lock anticipated data blocks in the memory buffer 310 whenever
possible. Data
blocks are transferred to the decoder 312 directly out of the memory buffer
310 if a hit in an
anticipation window occurs. If an anticipation miss occurs, data blocks are
read from the local
memory 308 into the memory buffer 310 before the data blocks are transferred
to the decoder
312 from the memos y buffer 310.
In an exemplary embodiment, the STB 300 responds to subscribing client's
commands
via infrared (IR) remote control unit buttons, an IR keyboard, or front panel
pushbuttons,
including buttons to pause, play in slow motion, rewind, zoom and single step.
In an exemplary
embodiment, if a subscribing client does not input any action for a
predetermined period of time
(e.g., scrolling program menu, or selecting a category or movie), a scheduled
commercial is
played automatically. The scheduled commercial is automatically stopped when
the subscribing
client provides an action (e.g., press a button in a remote control unit). In
another exemplary
embodiment, the STB 300 can automatically insert commercials while a video is
being played.
The service provider (e.g., a cable company) can set up a pricing policy that
dictates how
frequently commercials should interrupt the video being played.
If an emergency information bit is found in a data packet header, the STB 300
pauses any
data receiving operation and controls its hardware to tune into the channel
reserved for receiving
data file information to obtain and decode any emergency information to be
displayed on an
output screen. In an exemplary embodiment, when the STB 300 is idled, it is
tuned to the
channel reserved for receiving data file information and is always ready to
receive and display
any emergency information without delay.
The foregoing examples illustrate certain exemplary embodiments of the
invention from
which other embodiments, variations, and modifications will be apparent to
those skilled in the
23

CA 02428829 2003-05-08
WO 02/39744 PCT/USO1/20679
art. The invention should therefore not be limited to the particular
embodiments discussed above,
but rather is defined by the following claims.
24

Representative Drawing
A single figure which represents the drawing illustrating the invention.
Administrative Status

2024-08-01:As part of the Next Generation Patents (NGP) transition, the Canadian Patents Database (CPD) now contains a more detailed Event History, which replicates the Event Log of our new back-office solution.

Please note that "Inactive:" events refers to events no longer in use in our new back-office solution.

For a clearer understanding of the status of the application/patent presented on this page, the site Disclaimer , as well as the definitions for Patent , Event History , Maintenance Fee  and Payment History  should be consulted.

Event History

Description Date
Inactive: IPC removed 2016-10-12
Inactive: First IPC assigned 2016-09-29
Inactive: IPC assigned 2016-09-29
Inactive: IPC assigned 2016-09-29
Inactive: IPC assigned 2016-09-29
Inactive: IPC expired 2011-01-01
Inactive: IPC expired 2011-01-01
Inactive: IPC removed 2010-12-31
Inactive: IPC removed 2010-12-31
Application Not Reinstated by Deadline 2006-06-27
Time Limit for Reversal Expired 2006-06-27
Inactive: IPC from MCD 2006-03-12
Inactive: IPC from MCD 2006-03-12
Deemed Abandoned - Failure to Respond to Maintenance Fee Notice 2005-06-27
Letter Sent 2004-09-28
Inactive: Delete abandonment 2004-09-28
Inactive: Abandoned - No reply to Office letter 2004-08-11
Inactive: Single transfer 2004-08-11
Inactive: IPRP received 2003-08-08
Inactive: Courtesy letter - Evidence 2003-07-15
Inactive: Cover page published 2003-07-14
Inactive: Notice - National entry - No RFE 2003-07-10
Application Received - PCT 2003-06-13
National Entry Requirements Determined Compliant 2003-05-08
Application Published (Open to Public Inspection) 2002-05-16

Abandonment History

Abandonment Date Reason Reinstatement Date
2005-06-27

Maintenance Fee

The last payment was received on 2004-06-25

Note : If the full payment has not been received on or before the date indicated, a further fee may be required which may be one of the following

  • the reinstatement fee;
  • the late payment fee; or
  • additional fee to reverse deemed expiry.

Please refer to the CIPO Patent Fees web page to see all current fee amounts.

Fee History

Fee Type Anniversary Year Due Date Paid Date
MF (application, 2nd anniv.) - standard 02 2003-06-27 2003-05-08
Basic national fee - standard 2003-05-08
MF (application, 3rd anniv.) - standard 03 2004-06-28 2004-06-25
Registration of a document 2004-08-11
Owners on Record

Note: Records showing the ownership history in alphabetical order.

Current Owners on Record
PREDIWAVE CORPORATION
Past Owners on Record
KHOI HOANG
Past Owners that do not appear in the "Owners on Record" listing will appear in other documentation within the application.
Documents

To view selected files, please enter reCAPTCHA code :



To view images, click a link in the Document Description column. To download the documents, select one or more checkboxes in the first column and then click the "Download Selected in PDF format (Zip Archive)" or the "Download Selected as Single PDF" button.

List of published and non-published patent-specific documents on the CPD .

If you have any difficulty accessing content, you can call the Client Service Centre at 1-866-997-1936 or send them an e-mail at CIPO Client Service Centre.


Document
Description 
Date
(yyyy-mm-dd) 
Number of pages   Size of Image (KB) 
Description 2003-05-08 24 1,251
Drawings 2003-05-08 9 187
Claims 2003-05-08 8 387
Representative drawing 2003-05-08 1 12
Abstract 2003-05-08 1 13
Cover Page 2003-07-14 2 41
Claims 2003-05-09 8 409
Notice of National Entry 2003-07-10 1 189
Request for evidence or missing transfer 2004-05-11 1 101
Courtesy - Certificate of registration (related document(s)) 2004-09-28 1 129
Courtesy - Abandonment Letter (Maintenance Fee) 2005-08-22 1 173
Reminder - Request for Examination 2006-02-28 1 117
PCT 2003-05-08 6 217
Correspondence 2003-07-10 1 26
PCT 2003-05-09 34 1,675
Fees 2004-06-25 1 30