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 portion of a first memory having blocks that are configured to be separately allocated, the portion allocated 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 hardware component, the hardware component providing scheduling information, responsively to a timing signal, to the decoder/renderer to enable time-based synchronization of the individually-presentable portions of clips,wherein the portion of the first memory allocated for storing media content units received from the media source is arranged as a ring buffer, the ring buffer having a beginning memory block and an ending memory block, andwherein 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, and wherein the step of identifying storage locations for each of a plurality of media content units in the allocated portion of the first memory comprises identifying an offset of the 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 in the allocated portion of the first memory;
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 hardware component having a second memory, the information about the storage locations of the particular media content units obtained from the data structures usable by the hardware component to directly access the particular media content units from the first memory without using a central processing unit; and
after a particular media content unit has been accessed, releasing the particular media content unit from the storage location by moving the begin pointer or the end pointer or both.
2 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
14 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 portion of a first memory having blocks that are configured to be separately allocated, the portion allocated 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 hardware component, the hardware component providing scheduling information, responsively to a timing signal, to the decoder/renderer to enable time-based synchronization of the individually-presentable portions of clips, wherein the portion of the first memory allocated for storing media content units received from the media source is arranged as a ring buffer, the ring buffer having a beginning memory block and an ending memory block, and 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, and wherein the step of identifying storage locations for each of a plurality of media content units in the allocated portion of the first memory comprises identifying an offset of the 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 in the allocated portion of the first memory; 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 hardware component having a second memory, the information about the storage locations of the particular media content units obtained from the data structures usable by the hardware component to directly access the particular media content units from the first memory without using a central processing unit; and after a particular media content unit has been accessed, 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. 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 portion of a first memory having blocks that are configured to be separately allocated, the portion allocated 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 hardware component, the hardware component providing scheduling information, responsively to a timing signal, to the decoder/renderer to enable time-based synchronization of the individually-presentable portions of clips; identifying a first media content unit received from the media source; identifying a first storage location in which the first media content unit has been stored in the allocated portion of the first memory; 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 hardware component having a second memory; the information about the first storage location obtained from the first data structure usable by the hardware component to directly access the first media content unit from the first memory without using a central processing unit; wherein the method is performed within a media processing pipeline comprising a filter graph having a plurality of filters, each filter having one or more input pins and one or more output pins; 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 hardware component; and wherein the method step of 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, comprises; issuing, by the software component, a call to an application programming interface (“
API”
) configured 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; andreceiving, by the software component, a response from the application programming interface exposing the field of the first data structure with the information about the first storage location. - View Dependent Claims (11)
-
-
12. 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: -
identifying a first media sample from the first clip; identifying a second media sample from the second clip, the second media sample synchronously playable with the first media sample; at a first time associated with preparing the first media sample for presentation using a first hardware component at a rate 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 play duration; at a second time associated with preparing the second media sample for presentation using a second hardware component at a rate based on a second timing signal, ascertaining a second elapsed amount of the play duration of the digital media presentation, and ascertaining an elapsed amount of the second play duration; 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 by either the first or second hardware component, responsively to a received timing signal, to the decoder/renderer during playback of the media presentation to enable time-based 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; issuing a first call to a first application programming interface (“
API”
), the first call including information about the first media sample; andbased on the first call, receiving a first response from the first API, the first response including 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; issuing a second call to the first API, the second call including information about the second media sample; and based on the second call, receiving a second response from the first API, 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 (13, 14)
-
Specification