|
Claims  |
|
|
What is claimed is:
1. A system for distributing a selected one of a plurality of videos, the
selected video including a plurality of flames, each frame including
digitally encoded video data, the video data representing time sequenced
image signals and audio signals for play-back on a viewing device,
comprising;
means for storing the selected video;
a memory buffer, coupled to said means for storing, for storing a segment
of the selected video, said segment including video data of a forward
moving time interval of the selected video;
a write pointer, coupled to said memory buffer, associated with a first
data stream including video data to be written to said memory buffer;
a read pointer, coupled to said memory buffer associated with a second data
stream including video data to be read from said memory buffer;
means, coupled to said write pointers for writing said first data stream to
said memory buffer while distributing the selected video; and
means, coupled to said read pointer, for reading said second data stream
the video data from said memory buffer while distributing the selected
video, said means for reading operating independently from said means for
writing, to transfer any video data of said segment of the selected video
to the viewing device, while writing said first data stream.
2. The system as in claim 1 including a plurality of read pointers, each
read pointer associated with a different second data stream including
video data of said segment to be read from said memory buffer, and said
means for reading to read each different second data streams from said
memory buffer while distributing said selected video, each different
second data streams transferring a different portions of said segment of
the selected video to a corresponding different viewing devices.
3. The system as in claim 2 further including means for switching the
association of any of said plurality read pointers with any of said
plurality of viewing devices.
4. The system as in claim 1 further including means for positioning said
read pointer to any frame stored in said memory buffer, while writing said
first data stream.
5. The system as in claim 1 further including means to select a particular
frame of the selected video, and wherein said writing means to write the
video data to said memory buffer beginning with said particular frame.
6. The system as in claim 1 wherein said memory buffer is a circular
buffer, said writing means to advance said write pointer to the beginning
of said circular buffer upon reaching the end of said circular buffer,
said reading means to advance said read pointer to the beginning of said
circular buffer upon reaching the end of said circular buffer, and said
writing means to overwrite a particular frame after said particular frame
has been read.
7. The system as in claim 1 wherein said writing means to write the video
data of the selected video to said memory buffer at a different rate than
reading the video data, while distributing the selected video.
8. The system as in claim 7 wherein said different rate is higher than said
rate of reading when said memory buffer is not full.
9. The system as in claim 2 wherein said memory buffer includes a disk
storage device, said means for writing and reading include software
controlled servers connected to said memory buffer, and further including
a communications network for transporting the video data as digital signal
to the viewing device.
10. The system as in claim 1 further including means for reading the video
data in reverse chronological order beginning at said read pointer, while
moving said read pointer in a reverse direction while distributing the
selected video.
11. A method for distributing a selected one of a plurality of videos, the
selected video including a plurality of frames, each frame including
digitally encoded video data, the video data representing time sequenced
image signals and audio signals for play-back on a viewing device,
comprising the steps of:
storing the selected video on a storage device;
storing a segment of the selected video in a memory buffer, said segment
including a forward moving time interval of the selected video, said
memory buffer including a write pointer and at least one read pointer;
writing a first data stream including video data of the selected video to
said memory buffer at said write pointer while advancing said write
pointer while distributing the selected video; and
reading a second data stream including video data from said memory buffer
at said at least one read pointer while advancing said at least one read
pointer, said reading operating independently from said writing to
transfer any video data of said segment of the selected video to the
viewing device.
12. The method as in claim 11 wherein said memory buffer includes a
plurality of different read pointers, each different read pointer
associated with a different second data stream and each different second
data stream associated with one of a plurality of viewing devices, and
concurrently reading the video data at each different read pointer while
advancing each different read pointer to concurrently transfer different
portions of the selected video to each of said plurality of viewing
devices associated with each of said plurality of different read pointers
while writing said second data stream.
13. The method as in claim 12 further including the step of switching the
association of any of said plurality read pointers with any of said
plurality of viewing devices.
14. The method as in claim 11 further including the step of positioning
said at least one read pointer to any of the frames stored in said memory
buffer.
15. The method as in claim 11 further including the steps of selecting a
particular frame of the selected video, and writing the video data to said
memory buffer beginning with said particular frame.
16. The method as in claim 11 wherein said memory buffer is a circular
buffer, said writing step to advance said write pointer to the beginning
of said circular buffer upon reaching the end of said circular buffer,
said reading step to advance said at least one read pointer to the
beginning of said circular buffer upon reaching the end of said circular
buffer, and overwriting a particular frame after said particular frame has
been read.
17. The method as in claim 11 including writing the video data of the
selected video to said memory buffer at a higher rate than reading video
data when said memory buffer is not full while distributing the selected
video.
18. The method as in claim 11 wherein said memory buffer is a disk storage
device, writing and reading are performed by software controlled servers
connected to said memory buffer, and further including the step of
transferring the video data over a communications network as digital
signals to the viewing device.
19. A system for distributing a selected one of a plurality of videos, the
selected video including a plurality of frames, each frame including
digitally encoded video data, the video data representing time sequenced
image signals and audio signals for play-back on a plurality of viewing
devices, comprising;
a memory buffer for storing a segment of the selected video, said segment
including a forward moving time interval of the selected video, said
memory buffer including a write pointer and a plurality of read pointers,
each read pointer associated with one of the plurality of viewing devices;
means for writing the video data of the selected video to said memory
buffer at said write pointer while advancing said write pointer while
distributing the selected video; and
means for concurrently reading the video data from said memory buffer at
each of said plurality of read pointers while advancing each of said
plurality of read pointers to concurrently transfer different portions of
the selected video to each of said associated plurality of viewing devices
while writing to said memory buffer.
20. A system for distributing a selected one of a plurality of videos, the
selected video including a plurality of frames, each frame including
digitally encoded video data, the video data representing time sequenced
image signals and audio signals for play-back on a plurality of viewing
devices, comprising;
a first memory buffer for storing a first segment of the selected video,
said first segment including a first predetermined time interval of the
selected video, said first memory buffer including a first write pointer
and a first read pointer;
a second memory buffer for storing a second segment of the selected video,
said second segment including a second predetermined time interval of the
selected video, said second memory buffer including a second write pointer
and a second read pointer;
means for writing the video data of said first segment to said first memory
buffer at said first write pointer while advancing said first write
pointer, and for writing the video data of said segment to said second
memory buffer at said second write pointer while advancing said second
write pointer;
means for reading the video data of said first segment from said first
memory buffer at said first read pointer while advancing said first read
pointer to transfer the selected video to a first viewing device, and for
reading the video data from said second memory buffer at said second read
pointer while advancing said first read pointer to transfer the selected
video to a second viewing device;
means for determining if said first and second memory buffers include
overlapping video data to be read;
means, responsive to the video data overlapping, for creating a third read
pointer in said first memory buffer transfer the selected video to said
second viewing device beginning at said third read pointer.
21. An apparatus for distributing videos, comprising:
a storage device storing a plurality of videos;
means, coupled to said storage device, for identifying a selected one of
said plurality of videos;
a buffer, coupled to said storage device, storing a segment of said
selected video, said segment including video data of a forward moving time
interval of said selected video;
a write pointer, coupled to said buffer, associated with a first data
stream of video data of said selected video;
a read pointer, coupled to said buffer, associated with a second data
stream of video data of said selected video;
means for writing said first data stream to said buffer at said write
pointer while distributing said selected video;
means for reading said second data stream from said buffer at said read
pointer while distributing said selected video;
means for independently manipulating said read pointer with respect to said
write pointer to read any of said video data stored in said buffer as said
second data stream while writing said first data stream.
22. The apparatus as in claim 21 further including
a plurality of read pointers coupled to said buffer, each read pointer
associated with a different second data stream of said selected video,
means for reading each different second data stream from said buffer, and
means for independently manipulating each read pointer with respect to said
write pointer to read any of said video data stored in said buffer as a
plurality of different second data streams.
23. The apparatus as in claim 22 further including
a plurality of viewing devices coupled to said buffer, and means for
associating any one of said plurality of viewing devices with any of said
plurality of different second data streams while distributing said
selected video.
24. The apparatus as in claim 21 further including
means for reading said second data stream at a different data rate than
writing said first data stream while distributing said selected video.
25. The apparatus as in claim 22 further including
means for reading each of said different second data streams at a different
rate than writing said first data stream while distributing said video.
26. The apparatus as in claim 25 wherein a particular one of said plurality
of different second data streams is read at a different rate than another
one of said plurality of different second data streams while distributing
said selected video.
27. The apparatus as in claim 24 wherein said different rate of writing
said first data stream is higher than a rate of reading said second data
stream when said buffer is not full while distributing said selected
video.
28. The apparatus as in claim 21 wherein said means for manipulating said
read pointer includes means to read said second data stream in a reverse
chronological order with respect to said first data stream while
distributing said selected video.
29. An apparatus for distributing a video, comprising:
means for storing a selected video, said selected video comprising a
plurality of frames;
buffer means for storing a segment of said selected video, said segment
including a subset of said plurality of frames, said subset of frames
representing a predetermined forward moving time interval of said selected
video;
means for writing said subset of frames to said buffer means substantially
continuously;
means for reading different frames from said subset of frames stored in
said buffer means while writing said selected video to said buffer means,
said different frames read from said subset of frames by a plurality of
users;
a write pointer for writing a first data stream of said plurality of frames
to said buffer means; and
a plurality of read pointers for reading a plurality of second data streams
from said buffer means, each read pointer independently movable with
respect to said write pointer. |
|
|
|
|
Claims  |
|
|
Description  |
|
|
FIELD OF THE INVENTION
This invention applies to the general area of information distribution, and
more particularly to information distributed as video signals.
BACKGROUND OF THE INVENTION
There is a need to provide consumers with video services on-demand.
Desirable video on-demand services can include, for example, movies,
sporting events, interactive games, home shopping, textual information,
and educational and arts programs, hereinafter collectively referred to as
"videos". It should be understood that videos generally includes both
video and audio portions, although, a video may only have an image portion
as in textual information, or only an audio portion, as for example music.
Consumers would like videos of their choice to be available at times and
locations convenient for them. It would be an advantage if the videos
could be delivered by any transmission medium, such as commercial
telephone, cable, and satellite networks. The videos should be compatible
with readily available display systems, such as NTSC standard televisions,
or personal computers.
Furthermore, consumers would like to have real-time, interactive VCR-like
control of the videos, skipping, holding, or replaying portions at will.
Home shopping and video games require a much higher level of interaction
between the video and the game-player. In addition, the system used to
provide video on-demand services should be scaleable at a reasonable cost
to maximize the availability of the service to large populations of
consumers.
A major problem with known distribution systems for video services, such as
broadcast or cable television is that the consumer has no control over
program or time selection. Also, known video distribution systems are
limited by predetermined channel allocations in the number of different
videos that are available at any one time. And, most known video services
are generally not interactive.
Some video services allow for on-demand delivery of videos over specialized
high-speed fiber optic cable networks. Generally such services deliver the
video to the customer as one continuous uninterruptable stream. Therefore,
such services generally require expensive mass storage devices and special
play-back equipment at the consumer's location to provide interaction.
Alternative such services require duplicate system resources at the
distribution site for each of the customers, even if multiple customers
are viewing the same video. Consequently, known video on-demand systems
which deliver videos to consumers are not easily expandable to large scale
distribution.
SUMMARY OF THE INVENTION
In view of the foregoing, it should be apparent that there still exists a
need in the art for a method and system for delivering videos which is
readily expandable without substantial incremental costs. In a system for
distributing videos, a plurality of videos are stored on a mass storage
device, such as a video juke box. Each video includes including a
plurality of frames. Each frame including digitally encoded video data,
the video data representing a time sequenced image and audio signals for
play-back on a viewing device.
The system includes a memory buffer for storing a segment of a selected
video. The segment includes a predetermined time interval of the selected
video. In addition, the memory buffer including a write pointer and at
least one read pointer.
Software controlled servers are provided for writing and reading video data
of the selected video to and from the memory buffer. The video data are
written to the memory buffer at memory locations indicated by the write
pointer while advancing the write pointer. The video data are read front
the memory buffer at memory locations indicated by the read pointer while
advancing the read pointer.
The read data of the selected video is therefore transferred to the viewing
device as a moving time interval segment. The video data can be
transported between the mass storage device and the viewing device via a
data communications network such as the telephone system or a packet
switched network.
In an exemplary embodiment, the memory buffer includes a plurality of read
pointers. Each read pointers is associated with a particular viewing
devices. That is the video data of the segment stored in the memory buffer
is viewed by multiple customers. In this embodiment, the read server reads
the video data beginning at each of the read pointers while advancing the
read pointers. Thus, the selected video is transferred as a plurality of
moving time interval segments.
As an advantage, a large number of customers can simultaneously view
different portions of the selected video, even though only a single
relatively small sized memory is required for storing the segment. For
example, if the memory buffer stores about 10 minutes of the video data,
typically about 60 to 100 Megabytes, at most 12 memory buffers are
required to allow many concurrent customers to view any portion of a
typical two hour movie.
In the preferred embodiment the memory buffer is a disk storage device
managed as a circular buffer. Initially, when the buffer does not contain
any video data to he transferred, the video data are written at a higher
rate than the rate at which the video are read for play-back. Thus, the
memory buffer is rapidly filled, so that requests to view different
portions of the video can be fulfilled soon after transfer of the video is
initiated.
BRIEF DESCRIPTION OF THE DRAWINGS
These and other features and advantages of the present invention will
become apparent from reading of the detailed description in conjunction
with the attached drawings, wherein:
FIG. 1 is a high-level schematic view of a system for providing videos
on-demand services;
FIG. 2 is a block diagram of a video on-demand system;
FIG. 3 is a block diagram of a video;
FIG. 4 is a block diagram of a procedure to request a video;
FIG. 5 is a block diagram of a procedure to transfer a video;
FIG. 6 is a timing diagram of a segmented video;
FIG. 7 is a block diagram of a segment cache;
FIG. 8 is a block diagram of a server segment cache;
FIGS. 9 and 10 are block schematics of the segment cache operation;
FIG. 11 is a block diagram of a procedure for managing segmented broadcast
streams; and
FIG. 12 is a block diagram of a customer segment cache.
DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENT
Referring to FIG. 1, there is shown a system for providing videos
on-demand. The system includes customer premises equipment (CPE) 10
located at sites distributed over a large geographical area, one or more
centralized video on-demand systems 20, and a communications network 30.
Generally, videos are transferred from the video on-demand systems 20 to
the CPE 10 over the network 30. However, videos can also be transferred
among the video on-demand systems 20.
The physical medium used for communicating between the video on-demand
system 20 and the CPE 10 can be, for example, a twisted pair of wires, a
co-axial or fiber optic cable, or a micro-wave or satellite link. The
continuous physical path used for communicating is called a circuit. The
circuit includes a relatively small bandwidth "bi-directional" channel for
communicating control signals, and a relatively large bandwidth
"downstream" channel for communicating video signals. The circuit may also
include additional channels, for example, a medium bandwidth channel may
be allocated for two-way communications such as plain old telephone
service.
The configuration of the CPE 10 at each customer location can vary with the
needs of the customer. The CPE 10 includes a network interface box 11, a
viewing device 12, and a video controller 13. The interface box can
include an optional customer segment cache 14.
The interface box 11 is for receiving videos to play-back on the viewing
device 12 via the downstream channel. The interface box 11 also
communicates commands with the video on-demand system 20 via the
bi-directional channel as will be explained hereinafter.
Customer commands can be demands for video services. While a video is being
transferred to the CPE 10, customer commands can include VCR-like control
functions, such as reverse, forward, and pause, generally not available
for known broadcast or cable-TV services. Moreover, customer commands for
more sophisticated functions, such as jump backward or jump forward, to
skip over entire portions of the video are also supported. Furthermore,
specialized customer commands for controlling highly interactive videos,
such as games or home shopping, are possible.
The viewing device 12 can be, for example, a monitor, a television, a VCR,
or data processing equipment such as a personal computer or a
work-station. The video controller 13 for entering customer commands can
be configured as a hand-held remote controller for communicating with the
interface box 11 by using radio or infrared signals. Alternatively, the
video controller 13 can be a telephone capable of generating audible tones
by pressing the dialing buttons.
The optional customer segment cache 14, which will be described in greater
detail hereinafter, is for locally storing portions of videos received by
the CPE 10.
FIG. 2 is a more detailed depiction of one centralized video on-demand
system 20. The video on-demand system 20 includes a gateway server 21, a
video server 22, a library server 23, and an optional server segment cache
24. The video on-demand system 20 also includes a plurality of
communications ports 80 for interfacing with the network 30.
The gateway, video, and library servers 21-23 are connected to each other
for process control by a control bus 26. The video server 22 and the
library server 23 are connected to each other by a data bus 27. The
servers 21-23 can be implemented as workstations, each workstation having
disk and semiconductor memory for executing distributed software programs.
The optional server segment cache 24, which will be described in greater
detail hereinafter, is for locally storing portions of videos to be
transmitted to the CPE 10.
The gateway server 21 includes an interactive gateway unit (IGU) 31 and a
server management unit (SMU) 32. The IGU 31 is for communicating commands
with the CPE 10 over the network 30. The IGU 31 includes a customer
database 33 for containing administrative data identifying customers. The
SMU 32, in response to commands, coordinates the video server 22 and the
library server 23 to deliver the selected video to the CPE 10 for viewing
by the customer.
The library server 23 includes a bulk video storage system, such as a video
juke box 41. The juke box 41 can be in the form of high capacity disks or
tapes storing thousands of videos in encoded, compressed, and digitized
form. A typical two hour compressed VHS movie requires about 1.15
Gigabytes of storage. Of course videos having higher resolutions, such as
HDTV videos, may require greater amounts of storage. It should be
understood that videos can be acquired for storing on the juke box 41 via
the network 30 from, for example, another video on-demand system 20.
Each video server 22 includes a video server controller 51 and a disk
read/write controller 52 having disks 53. By using modern high capacity
disks, for example redundant arrays of inexpensive disks (RAID), a video
server 22 can store over 100 Gigabytes of video data, equivalent to some
one hundred full-length feature movies.
The video server 22 also includes one or more first-in, first-out (FIFO)
video buffers 60 made of, for example, semiconductor dynamic random access
memory (DRAM). Each buffer 60 is partitioned into a plurality of chunks
61. One chunk 61 for storing, for example, 64K bytes of video data. The
size of each FIFO buffer 60 is dynamically adjustable by allocating or
deallocating chunks 61 during operation.
Connected to each FIFO buffer 60 is one or more packet controllers 70. The
packet controllers 70 are for reading variable sized data packets from the
FIFO buffers 60.
The communications ports 80 provide the interface between the video
on-demand system 20 and the network 30. It should be understood that the
video on-demand system 20 can include ports 80 configured for
communicating signals using methods adapted for different types of
networks 30.
Two methods of communicating are used. In a first method, signals are
communicated over a fixed bandwidth, point-to-point circuit which is
established for the duration of the transfer between the source of the
video, the video on-demand system 20 and the destination, the CPE 10.
This method of communicating can be used, for example, with the world's
largest crossbar switch, the public telephone network carrying digital
broadband transmission. In the United States there are about 93 million
home phone connections, and about 43 million business phone connections
providing access to a substantial market for video on-demand services.
The telephone network uses T1-carriers having a bandwidth of 1.544 Megabits
per second (Mb/sec). T1--carriers can readily transfer compressed motion
picture videos. In North America, T2-carriers having a bandwidth of 6
Mb/sec are also available. And, T3-carriers, available at some locations,
have a bandwidth equivalent to 28 T1-carriers. In Europe and elsewhere,
E1-carriers support transmission rates of 2 Mb/sec.
Alternatively, in the United States, Bellcore's Asymetrical Digital
Subscriber Loop (ADSL) services permits limited distance, approximately 5
kilometers, communication of digital encoded signals at T1 speed using
ordinary twisted pair telephone lines. Higher data transfer rates are
possible over shorter distances. A typical ADSL circuit is generally
partitioned into three virtual channels, a 16 Kb/sec bi-directional
channel for carrying control signals between the CPE and to the video
on-demand system 20, a 1.5 Mb/sec downstream channel for carrying video
data signals to the CPE 10, and a 64 Kb/sec two-way communications channel
for plain old telephone signals.
Alternatively, the dedicated point-to-point fixed bandwidth circuit can be
a channel, or a portion of a channel of a commercial cable-TV (CATV)
system. Channel here meaning a traditional 6 MHz broadcast TV channel. A
typical cable system can have a capacity equivalent to hundreds of
broadcast-TV channels. By using frequency and/or time division
multiplexing techniques, it is possible to partition a single traditional
6 MHz CATV channel into several sub-channels to provide two-way
communications and to increase the capacity of the CATV network.
In a second method, the video is transferred using a packet-switching wide
area, or local area network such as are used by computer systems in the
business sector. With this type of transfer, the communication signals are
transferred as packets between addresses on the network. In this case, the
network is shared by all potential sources (the video on-demand systems
20), and destinations (the CPE 10).
The transmission path of digital packet-switching networks typically has a
very high bandwidth and can accommodate burst transmission that are many
times that of the play-back speed of the compressed video. For example, an
Ethernet can accommodate digital signaling rates of 10 Mb/sec, and Fiber
Distributed Data Interconnect (FDDI) can accommodate rates of 100 Mb/sec.
Therefore, in these type of networks, many packets can be sent between
multiple sources and destinations over the same physical medium using time
division multiplexing techniques.
For example, a 10 Mb/sec Ethernet can be partitioned into six 1.5 Mb/sec
sub-channels. However, videos transferred over a full-capacity Ethernet
would probably appear to break-up or run at a slower speed, since a
minimum bandwidth can not always be guaranteed due to signaling
characteristics of the Ethernet such as collisions. Therefore, the network
has to be configured to operate at a lower than theoretical capacity in
order to sustain continuous video play-back speed.
Now with reference to FIG. 3 the internal data structure a video suitable
for transfer over the network 30 will be described. The video 100 is, for
example a 1.2 GB feature length movie, having a start and an end. The data
of the video 100 is in a form suitable for transfer over the network 30 by
using encoding and compressing techniques, for example, the industry
standard Motion Picture Expert Group (MPEG) compression algorithms. MPEG
compression can reduce the video data by as much as a factor of 200 while
achieving a quality comparable with known VCR videos.
The video 100 includes a plurality of packets 110, generally indicated by
the numerals 1-N. The number of packets in the video is dependent on the
"length" or viewing time of the video. Each packet 110 includes a packet
header 120, packet data 140, and an optional packet filler 160.
The packet header 120 includes an ID 121, a RATE 122, and a TIME-STAMP 123,
and a PACKET-SIZE 125. The ID 121 identifies the particular video. The
RATE 122 is determined by the level of compression that is used to
transform the analog signals of the video to digital data. MPEG supports
varying compression rates dependent on space, time, and motion factors of
the video. The TIME-STAMP 123 indicates the position of the packet data
140, time-wise, relative to the beginning of the video 100. The
PACKET-SIZE 125 is used to indicate the number of data bytes of the packet
110. The PACKET-SIZE 125 is used by software that manipulates the various
packets 110 to manage storage requirements.
If the video is being transferred over a packet-switched network having
addressable locations the packet header 120 also includes an ADDRESS 124
to determine the destination of the packet 110. The destination
corresponding to the geographical location of the CPE 10.
The packet data 140 of each packet 110 includes either digital video data
or digital audio data, but not both. In a typical video, there are about
seven "video" packets for every "audio" packet. The packet data 140
includes about 1 to 4 KB of encoded and compressed video or audio data.
The data in the consecutive packets 110 are treated as a continuous bit
stream defining the frames of the video. Typically, the frames 180 are
displayed on the viewing device at a fixed rate of, for example, 30 frames
per second.
Depending on the level of compression, a frame 180 can include 1 KB to 16
KB of digital data. In other words, for highly compressed portions of the
video 100, a single video packet 110 may contain several frames 180. For
images compressed to a lesser extent, several packet 110 may be required
to compose a single frame.
A frame 180 includes a time-stamp bit sequence 181, frame data bits 182,
and an end-of-frame bit sequence 183. Two types of time-stamps 181 are
used with MPEG compression, a program time-stamp and a temporal
time-stamp. A program time-stamp is the absolute time-wise position of the
frame 180 relative to the beginning of the video 100. A temporal
time-stamp indicates the time-wise offset of the frame 180 relative to a
previous frame. Typically every fourth frame will have program time-stamp.
The frequency of time stamping can be programmed at the time that the
video is encoded and comp | | |