Extensible kernel-mode audio processing architecture
First Claim
Patent Images
1. An extensible architecture for kernel-mode processing of audio messages, the architecture comprising:
- a plurality of modules coupled together, in a module graph implemented in kernel-mode, each of the modules performing an operation in the processing of the audio messages; and
a plurality of additional modules that can be added to the module graph, wherein each of the plurality of additional modules is coupled to one of the plurality of modules.
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.
31 Citations
67 Claims
-
1. An extensible architecture for kernel-mode processing of audio messages, the architecture comprising:
-
a plurality of modules coupled together, in a module graph implemented in kernel-mode, each of the modules performing an operation in the processing of the audio messages; and
a plurality of additional modules that can be added to the module graph, wherein each of the plurality of additional modules is coupled to one of the plurality of modules. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)
-
-
13. One or more computer-readable media having stored thereon a sequence of instructions that, when executed by one or more processors of a computer, causes the one or more processors to perform acts including:
-
identifying a plurality of modules to be used in a module graph to process, in kernel-mode, audio data in a user-identified manner; and
configuring the plurality of modules to process the audio data. - View Dependent Claims (14, 15, 16, 17, 18, 19, 20, 21, 22, 23)
-
-
24. A system comprising:
-
a plurality of modules that can be coupled in various combinations to process, at a privileged level, audio data; and
a graph builder, communicatively coupled to the plurality of modules, to connect together selected ones of the plurality of modules to process the audio data in a particular manner. - View Dependent Claims (25, 26, 27)
-
-
28. A computer-readable medium having stored thereon a data structure, the data structure comprising:
-
a presentation time portion indicating when audio data is to be rendered;
a data portion that can include audio data or a pointer to a chain of additional data structures that include the audio data; and
a flag portion indicating to a kernel-mode transform filter whether the data portion includes the pointer to the chain of additional data structures. - View Dependent Claims (29, 30, 31, 32, 33, 34, 35)
-
-
36. A method of processing audio data in a privileged level module, the method comprising:
receiving a data packet including a pointer to a chain of additional data packets that include audio data. - View Dependent Claims (37, 38, 39)
-
40. A method of processing audio data in a kernel-mode transform filter, the method comprising:
passing, to another kernel-mode transform filter, a data packet including a pointer to a chain of additional packets that include audio data. - View Dependent Claims (41, 42)
-
43. A system comprising:
-
a first module implemented in kernel-mode and coupled to receive audio data from hardware;
a second module implemented in kernel mode and coupled to communicate processed audio data to an application executing in user-mode; and
a third module, implemented in kernel-mode, to receive the audio data form the first module, process the audio data, and communicate the processed audio data to the second module. - View Dependent Claims (44, 45, 46)
-
-
47. One or more computer-readable media having stored thereon a series of instructions that, when executed by one or more processors of a computer, causes the one or more processors to perform acts including:
-
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; 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 (48, 49, 50, 51)
-
-
52. A method of initializing a module for processing audio data in kernel-mode, the method comprising:
-
receiving, from a software component, an indication of a next module in a module graph to which the module is to output data; and
receiving, from the software component, a state identifier indicating that the module is to begin processing data. - View Dependent Claims (53, 54, 55, 56)
-
-
57. One or more computer-readable media having stored thereon a transform filter for execution in kernel-mode that, when executed in kernel-mode by one or more processors of a computer, causes the one or more processors 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. - View Dependent Claims (58, 59, 60, 61, 62, 63, 64, 65, 66, 67)
-
Specification