Interfaces for digital media processing
First Claim
1. A computer-readable medium, not consisting of a propagated data signal, encoded with computer-executable instructions which, when executed by a processor, perform a method for preparing media content as a media presentation by a software-based media player including a decoder/renderer, the media content receivable from a media source as a plurality of media content units, the method comprising:
- identifying a ring buffer having a beginning memory block and an ending memory block that are configured to be separately allocated, the ring buffer allocated for storing media content units received from the media source which include individually-presentable portion of clips that form the media presentation received at a component, the component providing scheduling information, responsive to a timing signal, to the decoder/renderer to enable time-based synchronization of the individually-presentable portions of clips,wherein the ring buffer is implemented using a begin pointer for referencing the beginning of used memory in the ring buffer and an end pointer for referencing the end of used memory in the ring buffer;
identifying an offset of a first media content unit within the ring buffer, the offset specified relative to the begin pointer or the end pointer or both;
identifying a plurality of media content units received from the media source;
identifying storage locations and offsets within the ring buffer in which each of the plurality of media content units has been stored;
forming data structures associated with each of the plurality of media content units, the data structures each having a field for storing information about the storage location of a particular media content unit;
arranging for exposure of the data structures to a memory, the information about the storage locations of the particular media content units obtained from the data structures usable by the memory to directly access the particular media content unit from the ring buffer; and
after accessing a particular media content unit, releasing the particular media content unit from the storage location by moving the begin pointer or the end pointer or both.
3 Assignments
0 Petitions
Accused Products
Abstract
APIs discussed herein promote efficient and timely interoperability between hardware and software components within the media processing pipelines of media content players. A PhysMemDataStructure API facilitates a hardware component'"'"'s direct access to information within a memory used by a software component, to enable the hardware component to use direct memory access techniques to obtain the contents of the memory, instead of using processor cycles to execute copy commands. The PhysMemDataStructure API exposes one or more fields of data structures associated with units of media content stored in a memory used by a software component, and the exposed fields store information about the physical properties of the memory locations of the units of media content. SyncHelper APIs are used for obtaining information from, and passing information to, hardware components, which information is used to adjust the hardware components'"'"' timing for preparing media samples of synchronously-presentable media content streams.
-
Citations
20 Claims
-
1. A computer-readable medium, not consisting of a propagated data signal, encoded with computer-executable instructions which, when executed by a processor, perform a method for preparing media content as a media presentation by a software-based media player including a decoder/renderer, the media content receivable from a media source as a plurality of media content units, the method comprising:
-
identifying a ring buffer having a beginning memory block and an ending memory block that are configured to be separately allocated, the ring buffer allocated for storing media content units received from the media source which include individually-presentable portion of clips that form the media presentation received at a component, the component providing scheduling information, responsive to a timing signal, to the decoder/renderer to enable time-based synchronization of the individually-presentable portions of clips, wherein the ring buffer is implemented using a begin pointer for referencing the beginning of used memory in the ring buffer and an end pointer for referencing the end of used memory in the ring buffer; identifying an offset of a first media content unit within the ring buffer, the offset specified relative to the begin pointer or the end pointer or both; identifying a plurality of media content units received from the media source; identifying storage locations and offsets within the ring buffer in which each of the plurality of media content units has been stored; forming data structures associated with each of the plurality of media content units, the data structures each having a field for storing information about the storage location of a particular media content unit; arranging for exposure of the data structures to a memory, the information about the storage locations of the particular media content units obtained from the data structures usable by the memory to directly access the particular media content unit from the ring buffer; and after accessing a particular media content unit, releasing the particular media content unit from the storage location by moving the begin pointer or the end pointer or both. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10)
-
-
11. A computer-readable medium, not consisting of a propagated data signal, encoded with computer-executable instructions which, when executed by a processor, perform a method for preparing media content as a media presentation by a software-based media player including a decoder/renderer, the media content receivable from a media source as a plurality of media content units, the method comprising:
-
identifying a first storage location in which a first media content unit has been stored in an allocated portion of a first memory for storing media content units comprising individually-presentable portions of clips received from the media source, the individually-presentable portions of clips being multiplexed into a single program stream comprising the media presentation received at a first component providing scheduling information to the decoder/renderer to enable time-based synchronization of the individually-presentable portions of clips; forming a first data structure associated with the first media content unit, the first data structure having a field for storing information about the first storage location; arranging for exposing the first data structure to the first component; the information about the first storage location obtained from the first data structure usable to access the first media content unit from the first memory; wherein the method is performed by a software component comprising one of the plurality of filters, the software component having an input pin configured to receive media content units and an output pin configured for communication with the first component; and wherein forming the first data structure includes; using the software component to issue a call to receive information about the first storage location and to populate the field of the first data structure with the information about the first storage location; and receiving a response exposing the field of the first data structure with the information about the first storage location. - View Dependent Claims (12, 13, 14, 15)
-
-
16. A computer-readable medium, not consisting of a propagated data signal, encoded with computer-executable instructions which, when executed by a processor, perform a method for playing a digital media presentation having a play duration and a media content component, the media content component comprising:
-
a first clip arranged into a first plurality of media samples for rendering in a multiplexed media content stream, the first clip having a first play duration and playable by a decoder/renderer and a second clip arranged into a second plurality of media samples for rendering in the multiplexed media content stream, the second clip having a second play duration and playable by the decoder/renderer, the method comprising; at a first time associated with preparing a first media sample from the first clip for presentation based on a first timing signal, ascertaining a first elapsed amount of the play duration of the digital media presentation, and ascertaining an elapsed amount of the first and second play durations; at a second time associated with preparing a second media sample from the second clip for presentation at a rate based on a second timing signal, the second media sample synchronously playable with the first media sample, ascertaining a second elapsed amount of the play duration of the digital media presentation, and ascertaining a difference between the first elapsed amount of the play duration of the digital media presentation and the second elapsed amount of the play duration of the digital media presentation, the ascertaining utilizing scheduling information provided responsive to a received timing signal, to the decoder/renderer during playback of the media presentation to enable synchronization of the first and second clips in the multiplexed media content stream; and based on the difference, adjusting either the first time or the second time or both; wherein the steps of ascertaining the first elapsed amount of the play duration of the digital media presentation and the elapsed amount of the first play duration further comprise; based on a first call that includes information about the first media sample, receiving a first response that includes information about the first elapsed amount of the play duration of the digital media presentation and the elapsed amount of the first play duration, and wherein the steps of ascertaining the second elapsed amount of the play duration of the digital media presentation and the elapsed amount of the second play duration further comprise; based on a second call that includes information about the second media sample, receiving a second response, the second response including information about the second elapsed amount of the play duration of the digital media presentation and the elapsed amount of the second play duration. - View Dependent Claims (17, 18, 19, 20)
-
Specification