Method and apparatus for frame accurate access of digital audio-visual information
DCFirst Claim
1. A method for playing at a second presentation rate an audio-visual work that has been digitally encoded in a digital data stream for playback at a first presentation rate, wherein said digital data stream includes a sequence of video frame data, each video frame data in said sequence of video frame data corresponding to a video frame in said audio-visual work, the method comprising the computer-implemented steps of:
- selecting a selected set of video frames from said audio-visual work based on said second presentation rate;
constructing a second digital data stream that includes the video frame data that corresponds to each video frame of said selected set of video flames; and
transmitting said second digital data stream to a decoder;
wherein said step of selecting said selected set of video flames includes repeatedly performing the steps of;
determining a bit budget based on a first time value associated with a most recently selected video frame, a second time value associated with a current frame, said second presentation rate and a data transfer rate;
determining a size of the frame data that corresponds to the current frame;
if the size of the frame data that corresponds to the current frame exceeds said bit budget, thennot selecting said current frame as a video frame in said selected set of video flames, andselecting a new frame as a new current frame; and
if the size of the frame data that corresponds to the current frame does not exceed said bit budget, then selecting said current frame as a video frame in said selected set of video frames;
wherein said step of selecting said selected set of video flames includes the steps of;
determining whether selection of said current frame would cause said second digital data stream to have a padding rate less than a predetermined padding rate; and
if selection of said current frame would cause said second digital data stream to have a padding rate less than said predetermined padding rate, then not selecting said current frame as a video frame in said selected set of video flames.
18 Assignments
Litigations
0 Petitions
Accused Products
Abstract
A method and apparatus for use in a digital video delivery system is provided. A digital representation of an audio-visual work, such as an MPEG file, is parsed to produce a tag file. The tag file includes information about each of the frames in the audio-visual work. During the performance of the audio-visual work, data from the digital representation is sent from a video pump to a decoder. Seek operations are performed by causing the video pump to stop transmitting data from the current position in the digital representation, and to start transmitting data from a new position in the digital representation. The information in the tag file is inspected to determine the new position from which to start transmitting data. To ensure that the data stream transmitted by the video pump maintains compliance with the applicable video format, prefix data that includes appropriate header information is transmitted by said video pump prior to transmitting data from the new position. Fast and slow forward and rewind operations are performed by selecting video frames based on the information contained in the tag file and the desired presentation rate, and generating a data stream containing data that represents the selected video frames. A video editor is provided for generating a new video file from pre-existing video files. The video editor selects frames from the pre-existing video files based on editing commands and the information contained in the tag files of the pre-existing video files. A presentation rate, start position, end position, and source file may be separately specified for each sequence to be created by the video editor.
-
Citations
42 Claims
-
1. A method for playing at a second presentation rate an audio-visual work that has been digitally encoded in a digital data stream for playback at a first presentation rate, wherein said digital data stream includes a sequence of video frame data, each video frame data in said sequence of video frame data corresponding to a video frame in said audio-visual work, the method comprising the computer-implemented steps of:
-
selecting a selected set of video frames from said audio-visual work based on said second presentation rate; constructing a second digital data stream that includes the video frame data that corresponds to each video frame of said selected set of video flames; and transmitting said second digital data stream to a decoder; wherein said step of selecting said selected set of video flames includes repeatedly performing the steps of; determining a bit budget based on a first time value associated with a most recently selected video frame, a second time value associated with a current frame, said second presentation rate and a data transfer rate; determining a size of the frame data that corresponds to the current frame; if the size of the frame data that corresponds to the current frame exceeds said bit budget, then not selecting said current frame as a video frame in said selected set of video flames, and selecting a new frame as a new current frame; and if the size of the frame data that corresponds to the current frame does not exceed said bit budget, then selecting said current frame as a video frame in said selected set of video frames; wherein said step of selecting said selected set of video flames includes the steps of; determining whether selection of said current frame would cause said second digital data stream to have a padding rate less than a predetermined padding rate; and if selection of said current frame would cause said second digital data stream to have a padding rate less than said predetermined padding rate, then not selecting said current frame as a video frame in said selected set of video flames. - View Dependent Claims (2, 3, 6, 7, 8, 9, 10, 11, 12, 13)
-
-
4. A method for playing at a second presentation rate an audio-visual work that has been digitally encoded in a digital data stream for playback at a first presentation rate, wherein said digital data stream includes a sequence of video frame data, each video frame data in said sequence of video frame data corresponding to a video frame in said audio-visual work, the method comprising the computer-implemented steps of:
-
selecting a selected set of video frames from said audio-visual work based on said second presentation rate; constructing a second digital data stream that includes the video frame data that corresponds to each video frame of said selected set of video flames; and transmitting said second digital data stream to a decoder; wherein said sequence of video frame data includes video frame data from which said corresponding video frame can be constructed without reference to any other video frame data, and video frame data from which said corresponding video frame cannot be constructed without reference to any other video frame data, said step of selecting a selected set of video frames including not selecting for said selected set any video frame that corresponds to video frame data from which said corresponding video frame cannot be constructed without reference to any other video frame data; and wherein said second presentation rate is negative relative to said first presentation rate. - View Dependent Claims (5, 14, 15, 16, 17, 18, 21, 22)
-
-
19. A method of preprocessing an original digital data stream that represents an audio-visual work to create tag information, the audio-visual work including a sequence of frames, the original digital data stream including a sequence of frame data, each frame data corresponding to a frame in said sequence of frames, the method comprising the steps of:
-
for each frame in said sequence of frames, performing the steps of determining boundaries within said original digital data stream for the frame data corresponding to said frame; generating tag data that includes boundary data that indicates said boundaries of said frame data; and storing said tag data separate from said original digital data stream; wherein a decoder uses one or more state machines to decode said original digital data stream; wherein said tag data includes, for each frame in said sequence of frames, state data that represents a state of said one or more state machines, said state data for a given frame indicating a state that said one or more state machines would be in when said decoder receives the frame data corresponding to said given frame during a normal-speed performance of said audio-visual work. - View Dependent Claims (20, 23, 24)
-
-
25. A method for selecting frames for display during a performance at a specified presentation rate of a work represented in a digital video file, wherein the performance is produced by decoding a data stream generated from the digital video file over a channel having a predetermined data transfer rate, the method comprising:
-
selecting for display a first frame represented by frame data in said digital video file, said first frame being associated with a first time; inspecting a second frame that is represented by frame data in said digital video file, said second frame being associated with a second time; determining a bit budget based on said presentation rate, a time difference between said first time and said second time and said predetermined data transfer rate; comparing the bit budget to the size of the frame data that represents said second frame; if the size of the frame data exceeds the bit budget, then skipping the second frame; if the size of the frame data is less than the bit budget, then selecting the second frame for display; and wherein said method is performed in real time during the performance at the specified presentation rate of the work represented in the digital video file. - View Dependent Claims (26, 27)
-
-
28. A method for selecting frames for display during a performance at a specified presentation rate of a work represented in a digital video file, wherein the performance is produced by decoding a data stream generated from the digital video file over a channel having a predetermined data transfer rate, the method comprising:
-
selecting for display a first time represented by frame data in said digital video file, said first time being associated with a first time; inspecting a second time that is represented by frame data in said digital video file, said second frame being associated with a second time; determining a bit budget based on said presentation rate, a time difference between said first time and said second time and said predetermined data transfer rate; comparing the bit budget to the size of the frame data that represents said second frame; if the size of the frame data exceeds the bit budget, then skipping the second frame; and if the size of the frame data is less than the bit budget, then selecting the second frame for display; determining whether selection of said second frame would cause said data stream to have a padding rate less than a predetermined padding rate; and skipping said second frame if selection of said second frame would cause said data stream to have a padding rate less than said predetermined padding rate.
-
-
29. A method for selecting frames for display during a performance at a specified presentation rate of a work represented in a digital video file, wherein the performance is produced by decoding a data stream generated from the digital video file over a channel having a predetermined data transfer rate, the method comprising:
-
selecting for display a first frame represented by frame data in said digital video file, said first frame being associated with a first time; inspecting a second frame that is represented by frame data in said digital video file, said second frame being associated with a second time; determining a bit budget based on said presentation rate, a time difference between said first time and said second time and said predetermined data transfer rate; comparing the bit budget to the size of the frame data that represents said second frame; if the size of the frame data exceeds the bit budget, then skipping the second frame; and if the size of the frame data is less than the bit budget, then selecting the second frame for display; wherein said method is performed in real time during the performance at the specified presentation rate of the work represented in the digital video file.
-
-
30. A method for selecting frames for display during a performance at a specified presentation rate of a work represented in a digital video file, wherein the performance is produced by decoding a data stream generated from the digital video file over a channel having a predetermined data transfer rate, the method comprising:
-
selecting for display a first frame represented by frame data in said digital video file, said first frame being associated with a first time; inspecting a second frame that is represented by frame data in said digital video file, said second frame being associated with a second time; determining a bit budget based on said presentation rate, a time difference between said first time and said second time and said predetermined data transfer rate; comparing the bit budget to the size of the frame data that represents said second frame; if the size of the frame data exceeds the bit budget, then skipping the second frame; and if the size of the frame data is less than the bit budget, then selecting the second flame for display; receiving data representing a rate for skipping a particular type of reference frames; determining whether said second frame is said particular type of reference frame; and if the size of the frame data is less than the bit budget, then skipping said second frame if necessary to maintain said rate of skipping said particular type of reference frame. - View Dependent Claims (31)
-
-
32. A method for creating a second digital video stream from one or more other digital video streams, the method comprising the computer-implemented steps of:
-
receiving a series of editing commands, each editing command in said series of editing commands specifying a start position, an end position, and a presentation rate; for each editing command in said series of editing commands, performing the steps of selecting a selected set of video flames between said start position and said end position in said one or more other digital video streams based on said presentation rate; and storing frame data corresponding to said selected set of video flames in said second digital video stream; wherein said one or more other digital video streams includes a plurality of other digital video streams; wherein each editing command in said series of editing commands specifies one of said other digital video streams; and wherein said step of selecting said selected set of video flames includes selecting video flames that are represented by data that is located between said start position and said end position in the digital video stream specified in said editing command.
-
-
33. A method for creating a second digital video stream from one or more other digital video streams, the method comprising the computer-implemented steps of:
-
receiving a series of editing commands, each editing command in said series of editing commands specifying a start position, an end position, and a presentation rate; for each editing command in said series of editing commands, performing the steps of selecting a selected set of video frames between said start position and said end position in said one or more other digital video streams based on said presentation rate; and storing frame data corresponding to said selected set of video frames in said second digital video stream; wherein said start position indicates a first amount of elapsed time; and
wherein said end position indicates a second amount of elapsed time.
-
-
34. A method for creating a second digital video stream from one or more other digital video streams, the method comprising the computer-implemented steps of:
-
receiving a series of editing commands, each editing command in said series of editing commands specifying a start position, an end position, and a presentation rate; for each editing command in said series of editing commands, performing the steps of selecting a selected set of video flames between said start position and said end position in said one or more other digital video streams based on said presentation rate; and storing frame data corresponding to said selected set of video frames in said second digital video stream; wherein the step of selecting said selected set of video frames between said start position and said end position in said one or more other digital video streams based on said presentation rate comprises the steps of; determining a bit budget based on a first time value associated with a most recently selected video frame, a second time value associated with a current frame, said presentation rate and a data transfer rate; determining a size of the frame data that corresponds to the current frame; if the size of the frame data that corresponds to the current frame exceeds said bit budget, then not selecting said current frame as a video frame in said selected set of video frames, and selecting a new frame as a new current frame; and if the size of the frame data that corresponds to the current frame does not exceed said bit budget, then selecting said current frame as a video frame in said selected set of video frames.
-
-
35. A method for creating a second digital video stream from one or more other digital video streams, the method comprising the computer-implemented steps of:
-
receiving a series of editing commands, each editing command in said series of editing commands specifying a start position, an end position, and a presentation rate; for each editing command in said series of editing commands, performing the steps of selecting a selected set of video frames between said start position and said end position in said one or more other digital video streams based on said presentation rate; and storing frame data corresponding to said selected set of video frames in said second digital video stream; storing data between said frame data corresponding to said selected set of video frames to cause said second digital video stream to conform to a predetermined format. - View Dependent Claims (36, 37, 38)
-
-
39. A method for performing a seek operation during a performance of an audio-visual work, said performance being performed by decoding a digital data stream transmitted to a decoder, the method comprising the steps of:
-
receiving a seek instruction while transmitting to said decoder data from a first position in a digital representation of said audio-visual work; in response to said seek instruction, performing the steps of;
ceasing to transmit data from said first position;transmitting data from a second position in said digital representation of said audio-visual work; generating prefix data that indicates a state of one or more state machines; transmitting said prefix data after ceasing to transmit data from said first position and prior to transmitting data from said second position.
-
-
40. A method for performing a seek operation during a performance of an audio-visual work, said performance being performed by decoding a digital data stream transmitted to a decoder, the method comprising the steps of:
-
receiving a seek instruction while transmitting to said decoder data from a first position in a digital representation of said audio-visual work; in response to said seek instruction, performing the steps of;
ceasing to transmit data from said first position;transmitting data from a second position in said digital representation of said audio-visual work; wherein said seek instruction indicates a predetermined period of time, the method further comprising the step of; determining said second position based on said first position and said predetermined period of time. - View Dependent Claims (41, 42)
-
Specification