High-performance player for distributed, time-based media
First Claim
1. A system for playing digital movie data under the control of a user, wherein the movie data comprises a sequence of frames, said system comprising:
- display means for displaying the movie data to said user;
control means, coupled to said display means, for providing the movie data to said display means under control of said user;
user interface means, coupled to said control means, for interacting with said user to provide said control of said user;
at least one source means that stores a portion of the movie data; and
buffer management means, coupled to said control means and to said source means, for storing a subset of the movie data and providing the movie data as needed to said control means, said buffer management means comprising;
local digital memory that stores a plurality of frames including future frames and history frames,prefetch means for requesting future frames from said source means, wherein said prefetch means requests every dth future frame when said source means cannot provide future frames at the rate at which they are requested, and wherein d is greater than one; and
means for releasing a select frame from said local digital memory when a frame requested by said prefetch means becomes available.
4 Assignments
0 Petitions
Accused Products
Abstract
The present invention is directed to a system and method for enabling a user to view a moving picture with synchronized audio using a workstation connected to a digital network. The user may change both speed and direction, as well as jump between arbitrary points in the movie being played. According to the present invention, digitized movie data may be accessed from different sources (e.g., network servers, local disks). These sources vary in speed and response time as a result of their capabilities (e.g., limited I/O bandwidth) and transient events (e.g., resource contention). The present invention adapts to these varying conditions in order to maintain a stable output.
93 Citations
18 Claims
-
1. A system for playing digital movie data under the control of a user, wherein the movie data comprises a sequence of frames, said system comprising:
-
display means for displaying the movie data to said user; control means, coupled to said display means, for providing the movie data to said display means under control of said user; user interface means, coupled to said control means, for interacting with said user to provide said control of said user; at least one source means that stores a portion of the movie data; and buffer management means, coupled to said control means and to said source means, for storing a subset of the movie data and providing the movie data as needed to said control means, said buffer management means comprising; local digital memory that stores a plurality of frames including future frames and history frames, prefetch means for requesting future frames from said source means, wherein said prefetch means requests every dth future frame when said source means cannot provide future frames at the rate at which they are requested, and wherein d is greater than one; and means for releasing a select frame from said local digital memory when a frame requested by said prefetch means becomes available. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11)
-
-
12. A workstation for playing digital movie data under the control of a user, wherein the movie data comprises a plurality of tracks, the plurality of tracks including at least an audio track and a video track, wherein each of the tracks comprises a sequence of synchronized frames, and wherein at least one remote source means stores a portion of the movie data, the workstation comprising:
-
display means for displaying the movie data to said user; control means, coupled to said display means, for providing the movie data to said display means under control of said user; user interface means, coupled to said control means, for interacting with said user to provide said control of said user; a plurality of buffer management means, one for each of said tracks, coupled to said control means and to the remote source means, for storing a subset of the movie data and providing the movie data as needed to said control means, said buffer management means comprising; local digital memory that stores a plurality of frames including future frames and history frames, prefetch means for requesting future frames from the remote source means, and means for releasing a select frame from said storage means when a frame requested by said prefetch means becomes available; and cliplist management means, coupled to said control means and further coupled between said buffer management means and the remote source means, for tracking where said frames are stored within the remote source means and for routing requests for future frames from said prefetch means to the remote source means. - View Dependent Claims (13, 14)
-
-
15. A method for playing digital movie data under the control of a user, wherein the movie data comprises a sequence of frames, and wherein at least one source stores a portion of the movie data, comprising the steps of:
-
(a) storing a plurality of frames including future frames and history frames in local storage, wherein said future frames and said history frames are a subset of the movie data, and wherein a buffer fill level indicates the degree to which said future frames and said history frames fill the local storage; (b) tracking the location of the frames comprising the movie data within the one or more sources; (c) requesting future frames from the one or more sources, wherein said step of requesting includes the steps of; (I) requesting a first number of future frames based on a comparison of said buffer fill level to a request threshold, and (ii) requesting every dth future frame when said source means cannot provide future frames at the rate at which they are requested, and wherein d is greater than one; and (d) displaying said locally stored frames under the control of the user. - View Dependent Claims (16)
-
-
17. A system for playing digital movie data under the control of a user, wherein the movie data comprises a sequence of frames, said system comprising:
-
display means for displaying the movie data to said user; control means, coupled to said display means, for providing the movie data to said display means under control of said user; user interface means, coupled to said control means, for interacting with said user to provide control to said user; at least one source means that stores a portion of the movie data; and buffer management means, coupled to said control means and to said source means, for storing a subset of the movie data and providing the movie data as needed to said control means, said buffer management means comprising; local digital memory that stores a plurality of frames including future frames and history frames, wherein a buffer fill level indicates the degree to which said future frames and said history frames fill said local digital memory; prefetch means for requesting every dth future frame from said source means, wherein said prefetch means increments d when said buffer fill-level drops below a low threshold and decrements d when said buffer fill-level exceeds a high threshold; and means for releasing a select frame from said local digital memory when a frame requested by said prefetch means becomes available.
-
-
18. A method for playing digital movie data under the control of a user, wherein the movie data comprises a sequence of frames, and wherein at least one source stores a portion of the movie data, comprising the steps of:
-
(a) storing a plurality of frames including future frames and history frames in local storage, wherein said future frames and said history frames are a subset of the movie data, and wherein a buffer fill level indicates the degree to which said future frames and said history frames fill the local storage; (b) tracking the location of the frames comprising the movie data within the one or more sources; (c) requesting future frames from the one or more sources, wherein said step of requesting includes the steps of; (I) requesting a first number of future frames based on a comparison of said buffer fill level to a request threshold, and (ii) requesting every dth future frame, wherein d is incremented when said buffer fill-level drops below a low threshold, and wherein d is decremented when said buffer fill-level exceeds a high threshold; and (d) displaying said locally stored frames under the control of the user.
-
Specification