Interactive video-on-demand system
First Claim
1. A method for providing video-on-demand services to a plurality of users accessing a video through a channel, comprising:
- generating a plurality of service streams, each indicative of the video;
multicasting said service streams to the plurality of users in batches to allow a number of the users to retrieve the video in a single batch;
generating one or more interaction video streams each indicative the video, each being designated to serve a single user for executing an interactive command;
allowing any one of the users in said single batch to execute an interactive command which requires a different viewing than what will be viewed by other users in said single batch who have not executed said interactive command and splitting said one user from said other users by connecting said one user to an interaction video stream to be an interactive user to allow for execution of said interactive command; and
after completion of said interactive command, merging said one user to a service stream with one of said plurality of batches.
7 Assignments
0 Petitions
Accused Products
Abstract
A data distribution system and a protocol for interactive information services over a network and in particular for video-on-demand applications. A shared buffer and a split-and-merge protocol are implemented to allow multiple users to share the same video stream multicasted over a network with true VOD services including the ability to access any available video at any time, and to perform any VCR-like functions and random access. Video requests for a video program are served in batches. A user interaction is first handled by splitting off the interactive user from a shared video stream in a batch, and by subsequently assigning the user a new dedicated video stream. The interactive user is subsequently merged back to one of the batching video streams shared by multiple users upon resuming normal play mode.
570 Citations
29 Claims
-
1. A method for providing video-on-demand services to a plurality of users accessing a video through a channel, comprising:
-
generating a plurality of service streams, each indicative of the video;
multicasting said service streams to the plurality of users in batches to allow a number of the users to retrieve the video in a single batch;
generating one or more interaction video streams each indicative the video, each being designated to serve a single user for executing an interactive command;
allowing any one of the users in said single batch to execute an interactive command which requires a different viewing than what will be viewed by other users in said single batch who have not executed said interactive command and splitting said one user from said other users by connecting said one user to an interaction video stream to be an interactive user to allow for execution of said interactive command; and
after completion of said interactive command, merging said one user to a service stream with one of said plurality of batches. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19)
assigning a new request for said video from said users to an available batch;
continuing to assign additional requests for said video to said available batch until the end of the batching interval;
initiating a new video stream to serve said batch;
determining whether a new video stream is available when there is no batch available for said video;
rejecting a request for said video when a new video stream for said video is not available in said system resources; and
initiating a new batch for said video when a new video stream for said video is available and serving requests in said new batch with said new video stream in normal play at the end of the batching interval.
-
-
3. A method as in claim 1, wherein said interactive command includes a command of one of operations comprising random access to any point in said video, and VCR-like operations which include fast forward, rewind, slow motion, and pause/resume operations.
-
4. A method as in claim 1, further comprising:
providing a synch buffer having a memory element that is connected to said channel and shared by said users, said synch buffer being operable to receive data from an ongoing video stream and to generate one or more virtual video streams which are delayed in time by different amounts with respect to said ongoing video stream, said synch buffer facilitating the merging of said interactive user with one of said batches.
-
5. A method as in claim 1, further comprising:
- adjusting a batching interval for a batch based on a rate of requests for a video.
-
6. A method as in claim 1, wherein said interactive command is an executing of random access to a play point in said video which comprises:
-
determining an availability of an eligible service stream which has a desired time offset with respect to said play point;
performing a first operation and searching for a new service stream when said eligible service stream is not available; and
performing a second operation and searching for an interaction stream when said eligible service stream is available.
-
-
7. A method as in claim 6, wherein said first operation comprises:
-
determining whether said new service stream is available;
continuing normal play in said original video stream for said interactive user and said searching for said eligible service stream when said new service stream is not available; and
initiating said new service stream to serve said interactive user beginning at said play point in normal play by first splitting said interactive user from said original video stream when said new service stream is available, thereby completing said user interaction.
-
-
8. A method as in claim 6, wherein said second operation comprises:
-
continuing normal play for said interactive user in said original video stream when said interaction stream is not available;
continuing said searching for said interaction stream until said interaction steam is available during a period in which said eligible service stream remains eligible; and
beginning a new search for another eligible service stream when said eligible service stream becomes ineligible.
-
-
9. A method as in claim 6, wherein said second operation comprises:
-
splitting said interactive user from said original video stream and assigning said interactive user with a buffer space in said synch buffer when said interaction stream is available;
serving said interactive user with said interaction stream in normal play during a period equal to said time offset while simultaneously beginning to fill said synch buffer from said eligible service stream upon said splitting; and
releasing said interaction stream for another interactive request at the end of said time offset while simultaneously merging said interactive user to said eligible service stream at said play point by connecting said user to said synch buffer.
-
-
10. A method as in claim 6, wherein said desired time offset is less than a play duration in normal play for a maximum amount of data allowed in said synch buffer for said interactive user.
-
11. A method as in claim 1, wherein a user interaction of said fast forward or rewind to a play point in said video comprises:
-
determining an availability of an interaction stream;
continuing to serve said interactive user in normal play from the original video stream that serves said interactive user when said user interaction is requested if an interaction stream is not available;
splitting said interactive user from said original video stream when said interaction stream is available and serving said interactive user with said interaction stream for performing said user interaction until said play point is reached; and
subsequently changing said interaction stream into a normal play mode to continue serving said interactive user and performing a merge operation to switch said interactive user from said interaction stream into a service stream for continuing normal play.
-
-
12. A method as in claim 11, wherein said merge operation comprises:
-
searching for an eligible service stream which has a desired time offset with respect to a data point to which said original video stream reaches when said user interaction is completed;
assigning said interactive user with a space in said synch buffer when said eligible service stream is available and filling said synch buffer with said eligible service stream for a duration equal to said time offset at the end of which said interaction stream is released for another interactive request and said interactive user is merged to said eligible service stream by connecting said interactive user to said synch buffer; and
searching for a new service stream when said eligible service is not available until said new service stream is found and assigned to said interactive user, at which time said interaction stream is released and said interactive user is merged to said new service stream in normal play.
-
-
13. A method as in claim 12, wherein said desired time offset is less than a play duration in normal play for a maximum amount of data allowed in said synch buffer for said interactive user.
-
14. A method as in claim 1, wherein said interactive command is a pause and resume operation for a pause duration which comprises:
-
stopping normal play at a play point for said interactive user in the original video stream that serves said interactive user when said pause is initiated;
assigning said interactive user a space in said synch buffer and feeding said synch buffer with said original video stream beginning at said play point upon initiation of said pause;
performing a first operation before said synch buffer is filled and none of eligible service streams has yet to reach said play point when said pause is terminated, said first operation resuming normal play for said interactive user at said play point by connecting said interactive user to said synch buffer;
performing a second operation before said synch buffer is filled and one of said eligible service streams reaches said play point as said pause continues, said second operation including purging said synch buffer, simultaneously feeding said synch buffer from said eligible service stream beginning at said play point by connecting said user to said eligible service stream, switching said interactive user to a subsequent eligible service stream during said pause, at which time said interactive user is merged to said eligible service stream which is feeding emptied said synch buffer from said play point; and
performing a third operation when said interactive user remains in said pause and said synch buffer is filled.
-
-
15. A method as in claim 14, wherein said third operation comprises:
-
purging said synch buffer;
reserving a new service stream;
determining the availability of an eligible ongoing service stream for said video;
switching to said eligible service stream when said eligible service stream is available by feeding said synch buffer from said eligible service stream starting from the said play point; and
upon termination of the pause operation by the user, resuming normal play by using said reserved new service stream if said eligible ongoing service stream is not available.
-
-
16. A method as in claim 14, further comprising:
-
repeating said first operation, said second operation, or said third operation as said pause continues after switching to said eligible service stream;
performing said first operation before said synch buffer is filled and none of eligible service streams has yet to reach said play point when said pause is terminated;
performing said second operation before said synch buffer is filled and one of said eligible service streams reaches said play point as said pause continues; and
performing said third operation when said interactive user remains in said pause and said synch buffer is filled.
-
-
17. A method as in claim 14, wherein said original video stream is an ongoing service stream.
-
18. A method as in claim 14, wherein said original video stream is a virtual video stream from said synch buffer and said assigning of said space in said synch buffer is accomplished by using a remaining space available to said interactive user in said synch buffer.
-
19. A method as in claim 14, wherein said eligible service stream has a time offset with respect to said original video stream that is the smallest comparing with other ongoing service streams that start later than said original stream.
-
20. A digital data distribution system, comprising:
-
an information channel which transports digital data and communication signals;
a plurality of data receivers connected to said information channel and configured to communicate with said information channel;
at least one digital server connected to said information channel, having a digital data storage device which stores information, said server operating to produce a plurality of data streams indicative of said stored information and multicast said stored information over said information channel to said receivers;
a synchronization buffer memory device connected to receive said data streams from said server and connectable to feed said data receivers, said synchronization buffer memory device operable to duplicate a received data stream into one or more delayed data streams that are delayed in time by different amounts with respect to said received data stream; and
an electronic controller connected to said information channel to select a data stream from said server and from a delayed data stream generated by said synchronization buffer memory device to feed a data receiver according to a user'"'"'s request, said electronic controller operating to control said multicasting by said server such that a number of said receivers receive said stored information in a batch assigned with one of said data streams and to control said multicasting using a split-and-merge protocol in which a data receiver requesting an interactive command is split from said batch and merged into another batch upon completion of said interactive command. - View Dependent Claims (21, 22, 23, 24, 25, 26, 27, 28, 29)
means for controlling initiation of batches according to a batch protocol, wherein each of said batches has at least one request from said receivers;
means for controlling said server and said network to multicast said video streams to said data receivers according to said batch protocol;
means for executing a plurality of user interactions requested by said data receivers in a true video-on-demand manner while achieving a maximum sharing of a video stream in a batch, said user interactions including random access to any point in said video, and VCR-like operations which include fast forward, rewind, slow motion, and pause/resume; and
means for performing said split-and-merge protocol in combination of said synch buffer to provide true video-on-demand services.
-
-
23. A system as in claim 20, further comprising:
means for partitioning said data streams available for said information into a first number of service streams for multicast in normal play and a second number of interaction streams for serving an interactive request during said executing of said interactions, said partitioning designed to reduce delay time of said video-on-demand services and to increase sharing of said data streams.
-
24. A system as in claim 22, wherein said electronic controller includes an execution means for carrying out said batch protocol, said execution means comprising:
-
means for assigning a new request for said information from said data receivers to an available batch;
means for continuing to assign additional requests for said information to said available batch until pre-selected batching interval expires, at which time a new data stream is initiated for said batch;
means for determining whether a new data stream is available when there is no batch available for said information;
means for rejecting a request for said information when a new data stream for said information is not available; and
means for initiating a new batch for said information when a new data stream for said information is available and serving requests in said new batch with said new data stream after initial batching interval expires.
-
-
25. A system as in claim 22, wherein said electronic controller includes an execution means for carrying out said batch protocol, said execution means comprising:
-
means for determining whether an eligible service stream is available for a new request for said information from said data receivers;
means for merging said new request to said eligible service stream immediately when one of said eligible service streams is available for said information;
means for determining whether a new data stream is available when there is no said eligible service stream available for said information; and
means for rejecting a request for said information when a new data stream for said information is not available.
-
-
26. A system as in claim 22, wherein said electronic controller includes an execution means for carrying out said batch protocol, said execution means comprising:
-
means for assigning a new request for said information from said data receivers to an available batch;
means for continuing to assign additional requests for said information to said available batch until rate-varying batching interval expires, at which time a new data stream is initiated for said batch;
means for varying a batching interval from batch to batch based on a rate of request for said video from said users to increase sharing of a video stream in each of said batches and to reduce waiting time for serving each request from said users;
means for decreasing said batching interval as said rate of request for said video increases according to a batching criterion;
means for increasing said batching interval as said rate of request for said video decreases according to a batching criterion;
means for determining whether a new data stream is available when there is no batch available for said information;
means for rejecting a request for said information when a new data stream for said information is not available; and
means for initiating a new batch for said information when a new data stream for said information is available and serving requests in said new batch with said new data stream after initial batching interval expires.
-
-
27. A system as in claim 20, wherein said electronic controller includes an execution means for carrying out said batch protocol, said execution means comprising:
-
means for assigning a new request for said information from said data receivers to an available batch;
means for continuing to assign additional requests for said information to said available batch until fixed-time-slot batching interval expires, at which time a new data stream is initiated for said batch;
means for partitioning time into a set of time slots with equal length interval, initiating a new data stream only when at least one new request arrives in time slot;
means for determining whether a new data stream is available when there is no batch available for said information;
means for rejecting a request for said information when a new data stream for said information is not available; and
means for initiating a new batch for said information when a new data stream for said information is available and serving requests in said new batch with said new data stream after initial batching interval expires.
-
-
28. A system as in claim 20, wherein said split-and-merge protocol includes merging said interactive user into a real data stream from said server or a delayed data stream from said synchronization buffer memory device.
-
29. A system as in claim 20, wherein said synchronization buffer memory device has one input terminal operable to receive data from a feeding data stream and a plurality of output terminals operable to generate said delayed data streams.
Specification