Extensible kernel-mode audio processing architecture
First Claim
Patent Images
1. A method comprising:
- maintaining a pool of memory available for allocation to a plurality of transform filters executing at a privileged level;
allocating a portion of the pool of memory to one of the plurality of transform filters to use to store audio data, wherein the portion comprises sufficient memory to store a data structure including;
a data portion that can include one of;
audio data, a pointer to a chain of additional data structures that include the audio data, and a pointer to a data buffer;
a structure byte count portion that identifies the size of the data structure;
a channel group portion that identifies which of a plurality of channel groups the data identified in the data portion corresponds to;
a presentation time portion indicating when audio data is to be rendered;
a flag portion indicating whether the data portion includes either the pointer to the chain of additional data structures or one of either the audio data or the pointer to the data buffer; and
an event byte count portion that identifies, if the data portion does not include the pointer to the chain of additional data structures, whether the data portion includes the audio data or a pointer to the data buffer; and
returning the allocated portion to the pool of memory after the plurality of transform filters have finished processing the audio data.
1 Assignment
0 Petitions
Accused Products
Abstract
An extensible kernel-mode audio (e.g., MIDI) processing architecture is implemented using multiple modules that together comprise a module graph. The module graph is implemented in kernel-mode, reducing latency and jitter when handling audio data by avoiding transfers of the audio data to user-mode applications for processing. In one embodiment, the audio processing architecture is readily extensible. A graph builder can readily change the module graph, adding new modules, removing modules, or altering connections as necessary, all while the graph is running.
24 Citations
19 Claims
-
1. A method comprising:
-
maintaining a pool of memory available for allocation to a plurality of transform filters executing at a privileged level;
allocating a portion of the pool of memory to one of the plurality of transform filters to use to store audio data, wherein the portion comprises sufficient memory to store a data structure including;
a data portion that can include one of;
audio data, a pointer to a chain of additional data structures that include the audio data, and a pointer to a data buffer;
a structure byte count portion that identifies the size of the data structure;
a channel group portion that identifies which of a plurality of channel groups the data identified in the data portion corresponds to;
a presentation time portion indicating when audio data is to be rendered;
a flag portion indicating whether the data portion includes either the pointer to the chain of additional data structures or one of either the audio data or the pointer to the data buffer; and
an event byte count portion that identifies, if the data portion does not include the pointer to the chain of additional data structures, whether the data portion includes the audio data or a pointer to the data buffer; and
returning the allocated portion to the pool of memory after the plurality of transform filters have finished processing the audio data. - View Dependent Claims (2, 3)
-
-
4. A system having stored therein a transform filter for execution in kernel-mode comprising:
-
a first interface means for allowing identification to the transform filter of a next transform filter in a transform filter graph to which audio data packets should be communicated by the transform filter; and
a second interface means for allowing the audio data packets to be communicated to the next transform filter;
wherein each of the audio data packets includes a flag portion that includes an event incomplete flag that can be set to indicate that data identified in a data portion of the audio data packet extends beyond a buffer pointed to by a pointer maintained in the data portion. - View Dependent Claims (5, 6, 7, 8, 9, 10)
-
-
11. A computer comprising:
-
a processor; and
a memory, coupled to the processor, storing a transform filter for execution in kernel-mode that, when executed in kernel-mode by the processor, causes the processor to implement;
a ConnectOutput interface to allow identification to the transform filter of a next transform filter in a transform filter graph to which audio data packets should be communicated by the transform filter; and
a PutMessage interface to allow the audio data packets to be communicated to the next transform filter;
wherein each of the audio data packets includes a flag portion that includes an event incomplete flag that can be set to indicate that data identified in a data portion of the audio data packet extends beyond a buffer pointed to by a pointer maintained in the data portion. - View Dependent Claims (12, 13, 14, 15, 16, 17, 18, 19)
-
Specification