Systems and methods for fast random access and backward playback of video frames using decoded frame cache
First Claim
1. A method of processing a video stream, comprising:
- (a) detecting a request to randomly access a particular frame;
(b) maintaining a list of frame dependencies identifying at least a set of frames required to decode the particular frame; and
(c) determining based at least in part on the list of frame dependencies whether a decoded version of the particular frame is in a decoded frame cache, said cache configured to store an arbitrary number of previously decoded frames, and if it is not and if the particular frame has a frame dependency;
(i) determining a frame dependency for the particular frame;
(ii) determining which of the frames in the frame dependency are in the decoded frame cache;
(iii) decoding any frame in the frame dependency that is not in the decoded frame cache and placing it in the decoded frame cache; and
(iv) using at least one of the decoded frames in the frame dependency to decode the particular frame to create a decoded version of the particular frame.
1 Assignment
0 Petitions
Accused Products
Abstract
In some embodiments, the invention includes a method of processing a video stream. The method involves detecting a request to playback a particular frame. It is determined whether a decoded version of the particular frame is in a decoded frame cache. If it is not, the method includes(i) determining a frame dependency for the particular frame; (ii) determining which of the frames in the frame dependency are in the decoded frame cache; (iii) decoding any frame in the frame dependency that is not in the decoded frame cache and placing it in the decoded frame cache; and (iv) using at least some of the decoded frames in the frame dependency to decode the particular frame to create a decoded version of the particular frame. In some embodiments, the request to playback a particular frame is part of a request to perform frame-by-frame backward playback and the method is performed for successively earlier frames with respect to the particular frame as part of the frame-by-frame backward playback. In some embodiments, the part (i) is performed whether or not it is determined that a decoded version of a particular frame is in the decoded frame cache without part (iv) being performed. Other embodiments are described and claimed.
18 Citations
38 Claims
-
1. A method of processing a video stream, comprising:
-
(a) detecting a request to randomly access a particular frame; (b) maintaining a list of frame dependencies identifying at least a set of frames required to decode the particular frame; and (c) determining based at least in part on the list of frame dependencies whether a decoded version of the particular frame is in a decoded frame cache, said cache configured to store an arbitrary number of previously decoded frames, and if it is not and if the particular frame has a frame dependency; (i) determining a frame dependency for the particular frame; (ii) determining which of the frames in the frame dependency are in the decoded frame cache; (iii) decoding any frame in the frame dependency that is not in the decoded frame cache and placing it in the decoded frame cache; and (iv) using at least one of the decoded frames in the frame dependency to decode the particular frame to create a decoded version of the particular frame. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14)
-
-
15. An article comprising:
-
a computer readable medium having instructions thereon which when executed cause a computer to; (a) detect a request to randomly access a particular frame; and (b) maintaining a list of frame dependencies identifying at least a set of frames required to decode the particular frame; (c) determine base at least in part on the list of frame dependencies whether a decoded version of the particular frame is in a decoded frame cache, said cache configured to store an arbitrary number of previously decoded frames, and if it is not and if the particular frame has a frame dependency; (i) determine a frame dependency for the particular frame; (ii) determine which of the frames in the frame dependency are in the decoded frame cache; (iii) decode any frame in the frame dependency that is not in the decoded frame cache and place it in the decoded frame cache; and (iv) use at least one of the decoded frames in the frame dependency to decode the particular frame to create a decoded version of the particular frame. - View Dependent Claims (16, 17, 18, 19, 20, 21, 22, 23, 24, 25)
-
-
26. A computer system including:
-
a processor and video processing circuitry; a display; and memory including instructions which when executed cause the processor and video processing circuitry to; (a) detect a request to randomly access a particular frame; and (b) maintain a list of frame dependencies identifying at least a set of frames required to decode the particular frame; (c) determine whether a decoded version of the particular frame is in a decoded frame cache, said cache configured to store an arbitrary number of previously decoded frames, and if it is not and if the particular frame has a frame dependency; (i) determine a frame dependency for the particular frame; (ii) determine which of the frames in the frame dependency are in the decoded frame cache; (iii) decode any frame in the frame dependency that is not in the decoded frame cache and place it in the decoded frame cache; and (iv) use at least one of the decoded frames in the frame dependency to decode the particular frame to create a decoded version of the particular frame, (d) provide the decoded version of the particular frame for displaying on the display.
-
-
27. A method for randomly accessing a first frame of a video stream, comprising:
-
maintaining a list of frame dependencies identifying at least a set of frames required to decode the first frame; determining a decoding of the first frame is not in a decoded frame cache, said cache configured to store an arbitrary number of previously decoded frames; determining, based at least in part on the list of frame dependencies, a first frame dependency for the first frame comprising frames required to decode the first frame; decoding at least one of the frames of the frame dependency not present in the decoded frame cache, and placing it in the decoded frame cache; and decoding the first frame using at least one of the decoded frames in the decoded frame cache. - View Dependent Claims (28, 29, 30, 31, 32)
-
-
33. An article comprising a machine-accessible media having associated data for randomly accessing a first frame of a video stream, wherein the data, when accessed, results in a machine performing:
-
maintaining a list of frame dependencies identifying at least a set of frames required to decode the first frame; determining a decoding of the first frame is not in a decoded frame cache, said cache configured to store an arbitrary number of previously decoded frames;
determining, based at least in par on the list of frame dependencies, a first frame dependency for the first frame comprising frames required to decode the first frame;decoding at least one of the frames of the frame dependency not present in the decoded frame cache, and placing it in the decoded frame cache; and decoding the first frame using at least one of the decoded frames in the decoded frame cache. - View Dependent Claims (34, 35, 36)
-
-
37. A method of caching decoded frames of a video in a decoded frame cache configured to store an arbitrary number of previously decoded frames, comprising:
-
maintaining a list of frame dependencies identifying at least a set of frames required to decode a particular frame of the video; determining based at least in part on the list of frame dependencies that a decoded version of the particular frame is not in the decoded frame cache; and determining if the particular frame has a frame dependency, and if so; determining a frame dependency for the particular frame, determining which of the frames in the frame dependency are in the decoded frame cache, decoding any frame in the frame dependency that is not in the decoded frame cache and placing it in the decoded frame cache, and using at least one of the decoded frames in the frame dependency to decode the particular frame to create a decoded version of the particular frame. - View Dependent Claims (38)
-
Specification