Methods and systems for processing digital data rate and directional playback changes
AssigneeMicrosoft Corporation
InventorsGlenn F. Evans, Alok Chakrabarti, Matthijs A. Gates
Life of this patent
Estimating the term…
Abstract
Various methods and systems permit digital data, such as video data, audio/video data, audio/video/subpicture data and the like, to be processed in a manner that permits playback at different speeds in both forward and reverse directions. Various embodiments are also directed to handling playback rate changes in a manner that can enhance the user's experience.
Claims109
A method comprising:
- receiving an indication that reverse playback of digital data is desired;
- responsive to said receiving, arranging one or more data blocks to define, at least in part, a reverse playback order;
- and
- sending the arranged blocks to a downstream component for further processing.
One or more computer-readable media having computer-readable instructions thereon which, when executed by one or more processors, cause one or more processors to:
- receive an indication that reverse playback of digital data is desired;
- responsive to receiving the indication, arrange one or more data blocks to define, at least in part, a reverse playback order;
- and
- send the arranged blocks to a downstream data-processing component for further processing.
A method comprising:
- receiving an indication that reverse playback of digital data is desired;
- responsive to said receiving, reading in one or more blocks, in reverse order, from a medium containing the blocks to define, at least in part, a reverse playback order;
- associating one or more flags with one or more blocks, where one or more flags indicating, to at least one downstream component, that the blocks are subject to reverse playback;
- and
- sending the arranged blocks to a downstream component for further processing.
A method comprising:
- receiving, with a source component, an indication that reverse playback of digital data is desired;
- responsive to said receiving, reading in, with the source component, one or more data blocks, in reverse order, from a medium containing the blocks to define, at least in part, a reverse playback order;
- associating, with the source component, one or more flags with one or more blocks, where one or more flags indicating, to at least one downstream component, that the blocks are subject to reverse playback;
- and
- sending the arranged blocks to a downstream component for further processing.
An architecture comprising:
- a first component configured to receive an indication that reverse playback of digital data is desired, the first component being configured to, responsive to receiving said indication, read in one or more blocks of data, in reverse order, from a medium containing the blocks to define, at least in part, a reverse playback order;
- the first component being further configured to associate one or more flags with one or more blocks, where one or more flags indicating, to at least one downstream component, that the blocks are subject to reverse playback;
- and
- a second component downstream of the first component, the second component configured to receive one or more flagged blocks and emit block sub-portions in reverse order to a downstream component.
A method comprising:
- receiving an indication that reverse playback of digital data is desired;
- reading data blocks from a medium and arranging one or more data blocks to define, at least in part, a reverse playback order;
- and
- associating timestamps with data blocks in addition to, as well as those data blocks subject to the reverse playback, in a monotonically increasing fashion across all data blocks.
A method comprising:
- receiving, at a source, a rate change request for changing a playback rate at which digital data is to be played back;
- determining whether data associated with the rate change request has been provided from the source to a downstream component;
- if the data has not been provided to a downstream component, processing the data effective to at least indicate that the data is subject to a rate change request;
- and
- if the data has been provided to a downstream component, passing the rate change request to a downstream component to attempt to have the rate change implemented.
An architecture comprising:
- a source component configured to:
- receive a rate change request for changing a playback rate at which digital data is to be played back;
- determine whether data associated with the rate change request has been provided from the source component to a first downstream component;
- wherein if the data has not been provided to the first downstream component, the source component is configured to process the data effective to at least indicate that the data is subject to a rate change request;
- wherein if the data has been provided to the first downstream component, the source component is configured to pass the rate change request to the first downstream component to attempt to have the rate change implemented
- a first downstream component configured to:
- receive the rate change request and determine whether data associated with the rate change request has been provided to a second downstream component;
- wherein if the data has not been provided to the second downstream component, the first downstream component is configured to process the data effective to at least indicate that the data is subject to a rate change request;
- wherein if the data has been provided to the second downstream component, the first downstream component is configured to pass the rate change request to the second downstream component to attempt to have the rate change implemented.
A method comprising:
- querying, with a source component that comprises part of a data-rendering pipeline, at least one other component in the data-rendering pipeline to ascertain component capabilities;
- responsive to query results, adjusting one or more of the following:
- (a) a direction in which data is capable of being read by the source component, and (b) a format in which the data is provided by the source component to other components in the data-rendering pipeline.
An architecture comprising:
- a source component comprising part of a data-rendering pipeline;
- at least one other component associated with the source component;
- the source component being configured to query at least said other component in the data-rendering pipeline to ascertain data-processing capabilities of the pipeline;
- the source further being configured to adjust one or more of the following, responsive to receiving query results:
- (a) a direction in which data is capable of being read by the source component, and (b) a format of the data that is provided by the source component to other components in the data-rendering pipeline.
A method comprising:
- initiating a query at a source component that comprises part of a data-rendering pipeline having multiple components, the query being directed to ascertain component capabilities along the pipeline;
- propagating the query along the pipeline, from component to component;
- receiving query results with the source component;
- and
- using the query results, with the source component, to determine how to process data that is to be rendered by the pipeline.
An architecture comprising:
- a source component comprising part of a data-rendering pipeline;
- multiple components associated with the source component for processing data;
- the source component being configured to initiate a query that is directed to ascertain component capabilities along the pipeline;
- individual components being configured to receive the query and propagate the query along the pipeline to other components;
- and
- the source component being configured to receive query results and use the query results to determine how to process data that is to be rendered by the pipeline.
The architecture of claim 89, where said one maximum playback rate comprises a minimum of all of the rates of the components.
A method comprising:
- attaching information to one or more data samples that are to be rendered by a renderer that comprises part of a data-processing pipeline, the information defining:
- rate changes, if any, that a data sample is subject to;
- a timestamp associated with when a data sample should be rendered;
- and
- whether the data sample is to be rendered in forward or reverse direction;
- propagating the one or more data samples and their associated information along the pipeline;
- receiving data samples and their associated information at one or more components downstream of a source that reads in the data samples from a medium;
- processing, at said one or more downstream components, one or more data samples sufficient to implement either or both of a rate change and a rendering direction, said processing comprising at least manipulating timestamp values associated with the data samples.
A method comprising:
- receiving, at a source component, a rate change request for a data sample having particular source time;
- responsive to receiving the rate change request, examining one or more buffers associated with the source component to ascertain whether a corresponding data sample over which the rate change is to occur is present;
- if the data sample is found in the one or more buffers, attaching rate change information to the data sample;
- and
- if the data sample is not found in the source component's buffers, sending the rate change request to a next in line downstream component.
One or more data samples comprising:
- an interface that is used to maintain:
- rate change information associated with a rate at which the data sample can be rendered;
- one or more flags associated with a change in playback direction;
- and
- rate change locations.
An architecture comprising:
- a source for generating and managing timestamp information associated with data samples that are to be rendered, the source being configured to:
- generate monotonically increasing timestamps for data samples that are subject to forward and reverse playback;
- reverse the order of data blocks containing data samples to effect reverse playback;
- tag individual blocks that are to be played in reverse;
- and
- enable rate changes to be scheduled by querying downstream components for the purpose of scheduling the rate change;
- a decoder configured to:
- perform interpolation on data samples responsive to receiving a rate change;
- pass rate changes onto a downstream component;
- break reverse playback blocks into smaller reverse blocks for processing;
- and
- modify output timestamps of data samples to assist in implementing a rate change;
- and
- a renderer configured to:
- compute an effective presentation timestamp of a data sample associated with a rate change;
- receive data samples intended for reverse playback;
- and
- cache data samples so that the renderer can render the data samples in reverse order.
An architecture comprising:
- a source for generating and managing timestamp information associated with data samples that are to be rendered, the source being configured to:
- generate monotonically increasing timestamps for data samples that are subject to forward and reverse playback;
- reverse the order of data blocks containing data samples to effect reverse playback;
- tag each block that is to be played in reverse;
- enable rate changes to be scheduled by querying downstream components for the purpose of scheduling the rate change;
- a decoder configured to decode data samples;
- a renderer configured to render data samples;
- and
- a timestamp manager that can be queried by the source for the next available timestamp and the amount of time available until the timestamp occurs for purposes of implementing a rate change.
Dependencies are inferred from the claim text.