US2015271238A1PendingUtilityA1

Interfaces for digital media processing

Assignee: MICROSOFT TECHNOLOGY LICENSING LLCPriority: Jun 30, 2007Filed: May 1, 2015Published: Sep 24, 2015
Est. expiryJun 30, 2027(~0.9 yrs left)· nominal 20-yr term from priority
H04N 21/4431H04N 21/42646G11B 20/10527H04N 21/4325H04N 5/85G06F 3/0656G06F 9/544G11B 2220/2562G11B 2020/10944G11B 2020/10666G11B 2020/10759G11B 2020/10537G06F 3/0611G06F 9/541H04L 65/602H04L 65/762
49
PatentIndex Score
0
Cited by
0
References
0
Claims

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.

Claims

exact text as granted — not AI-modified
What is claimed is: 
     
         1 . 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 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 plurality of media content units received from the media source;   identifying storage locations and offsets within the memory in which each of the plurality of media content units has been stored in the allocated portion of the 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 the hardware component, 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 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.   
     
     
         2 . The method according to  claim 1 , wherein the portion of the memory allocated for storing media content units received from the media source is selected from the group consisting of: a contiguous physical memory, a locked scatter-gathered physical memory, an unlocked scatter-gathered physical memory, a cached virtual memory, and an uncached virtual memory, and wherein the information about the storage locations exposed by the data structure is selected from the group consisting of: a type of the memory; a size of a memory block of the memory; a location of a pointer to the memory; and an offset location of the storage location with respect to a pointer to the memory. 
     
     
         3 . The method-readable medium according to  claim 1 , 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. 
     
     
         4 . The method according to  claim 3 , wherein the hardware component comprises one of the plurality of filters, and wherein the hardware component is selected from the group consisting of: a demultiplexer, a decoder, and a renderer. 
     
     
         5 . The method according to  claim 3 , 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. 
     
     
         6 . The method according to  claim 5 , wherein the method step of 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 locations of a particular media content unit, comprises:
 issuing, by the software component, a call to an application programming interface (“API”) configured to receive information about a storage location of a particular media content unit and to populate the field of the a corresponding data structure with the information about the storage location; and   receiving, by the software component, a response from the application programming interface exposing the field of the corresponding data structure with the information about the storage location.   
     
     
         7 . The method according to  claim 6 , wherein the step of arranging for exposing data structures to a hardware component comprises transmitting, on the output pin configured for communication with the hardware component, the data structure with the field with the information about the storage location exposed. 
     
     
         8 . 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 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 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 portion of the 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 storage location;   arranging for exposing the first data structure to the hardware component, the information about the storage location obtained from the first data structure usable by the hardware component to directly access the first media content unit from the memory without using a central processing unit;   wherein the step of forming a first data structure comprises:
 issuing a call to an application programming interface (“API”) configured to receive information about the storage location and to populate the field of the first data structure with the information about the storage location; and 
 receiving a response from the application programming interface exposing the field of the first data structure with the information about the storage location. 
   
     
     
         9 . The method according to  claim 8 , 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. 
     
     
         10 . The method according to  claim 9 , 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. 
     
     
         11 . The method according to  claim 10 , wherein the step of arranging for exposing the first data structure to a hardware component comprises transmitting, on the output pin configured for communication with the hardware component, the first data structure with the field of the first data structure exposed. 
     
     
         12 . The method according to  claim 8 , wherein the portion of the 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. 
     
     
         13 . The method according to  claim 12 , wherein the beginning memory block is duplicated, using virtual memory, after the ending memory block. 
     
     
         14 . The method according to  claim 13 , wherein the method further comprises the step of:
 when the storage location would include the beginning memory block and the ending memory block, storing a first portion of the first media content unit in the ending memory block and a second portion of the first media content unit in the beginning memory block duplicated using virtual memory.   
     
     
         15 . The method according to  claim 14  wherein after a particular media content unit has been accessed, releasing the particular media content unit from the storage location. 
     
     
         16 . The method according to  claim 12 , 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 a first storage location for the first media content unit in the allocated portion of the 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. 
     
     
         17 . The method according to  claim 16 , the method further comprising:
 after the first media content unit has been transmitted, releasing the first media content unit from the first storage location by moving the begin pointer or the end pointer or both.   
     
     
         18 . The method according to  claim 16 , further comprising:
 maintaining a list of offset positions including storage locations of all media content units stored in the ring buffer; and   using the list of offset positions to ensure that the begin pointer and the end pointer do not bypass each other when media content units are released from the storage locations.   
     
     
         19 . An architecture for a media processing pipeline for use in a media presentation system, the architecture comprising:
 a software component configured to receive media content units and to arrange for storage of the received media content units in a first memory; and   a hardware component having a second memory, the hardware component responsive to the software component and configured to transfer representations of media content units stored in the first memory to the second memory, wherein
 said software component is operable to
 form a first data structure, associated with a first media content unit, having a field for storing information about a first storage location, by issuing a call to an application programming interface (“API”) configured to receive information about the first storage location, and to populate the field, and 
 to receive a response from the application programming interface exposing the field of the first data structure with the information about the first storage location, 
 
 wherein the API is operable at a boundary between said software component and said hardware component, the API configured to expose, at the request of said software component, the at least one data structure field having information about the first storage location of first media content unit within the first memory to said hardware component, the exposed data structure field enabling said hardware component to directly transfer representations of media content units stored in the first memory to the second memory without using a central processing unit. 
   
     
     
         20 . The architecture according to  claim 19 , wherein the software component and the hardware component comprise filters in a filter graph, the software component has an output pin that connects to an input pin of the hardware component, and the API is responsive to a call from the output pin of the software component to expose the data structure field to the input pin of the hardware component.

Join the waitlist — get patent alerts

Track US2015271238A1 — get alerts on status changes and closely related new filings.

We store only your email — no account needed. See our privacy policy.