Kernel-mode audio processing modules
First Claim
Patent Images
1. One or more computer-readable media having stored thereon a module including a plurality of instructions 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 perform acts including:
- receiving audio data in a hardware-specific format from a hardware driver; and
converting the audio data to 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.
2 Assignments
0 Petitions
Accused Products
Abstract
Multiple kernel-mode audio processing modules or filters are combined to form a module or filter graph. The graph is implemented in kernel-mode, reducing latency and jitter when handling audio data (e.g., MIDI data) by avoiding transfers of the audio data to user-mode applications for processing. A variety of different audio processing modules can be used to provide various pieces of functionality when processing audio data.
62 Citations
37 Claims
-
1. One or more computer-readable media having stored thereon a module including a plurality of instructions 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 perform acts including:
-
receiving audio data in a hardware-specific format from a hardware driver; and
converting the audio data to 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. - View Dependent Claims (2)
-
-
3. One or more computer-readable media having stored thereon a module including a plurality of instructions 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 perform acts including:
-
receiving audio data in 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;
converting the audio data in the data structure to a hardware-specific format expected by a hardware driver; and
transmitting the audio data in the hardware-specific format to the hardware driver. - View Dependent Claims (4)
-
-
5. One or more computer-readable media having stored thereon a module including a plurality of instructions 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 perform acts including:
-
receiving a data packet including audio data;
checking which channel the audio data corresponds to;
identifying, based at least in part on the channel, a new channel for the data packet;
modifying the audio data to include the new channel;
maintaining a channel to new channel mapping, for use in the identifying, in which a single channel can map to multiple new channels; and
if the identifying indicates that the channel corresponds to multiple new channels, then obtaining a new data structure for one of the new channels, copying the audio data from the data packet into the new data structure, and setting the channel in the new data structure to be one of the new channels.
-
-
6. One or more computer-readable media having stored thereon a module including a plurality of instructions 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 perform acts including:
-
receiving a data packet including audio data;
checking a velocity value and a note value that the audio data corresponds to;
identifying, based at least in part on both the velocity value and the note value, a new velocity value and a new note value for the data packet;
obtaining a new data packet from an allocator module;
copying at least a portion of the audio data from the data packet into the new data packet;
setting a note value corresponding to the audio data in the new data packet to equal the new note value; and
setting a velocity value corresponding to the audio data in the new data packet to equal the new velocity value.
-
-
7. One or more computer-readable media having stored thereon a module including a plurality of instructions 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 perform acts including:
-
receiving a data packet including audio data;
checking a presentation time for the audio data; and
operating on the data packet based at least in part on a result of the checking, wherein the operating comprises changing the presentation time to be that of a closest one of a set of pre-determined values.
-
-
8. One or more computer-readable media having stored thereon a module including a plurality of instructions 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 perform acts including:
-
receiving a data packet including audio data;
checking a presentation time for the audio data; and
operating on the data packet based at least in part on a result of the checking, wherein the operating comprises changing the presentation time to be closer to a closest one of a set of pre-determined values.
-
-
9. One or more computer-readable media having stored thereon a module including a plurality of instructions 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 perform acts including:
-
receiving a data packet including audio data;
checking a presentation time for the audio data; and
operating on the data packet based at least in part on a result of the checking, wherein the operating comprises changing the presentation time to differ, by up to a maximum amount, from a closest set of pre-determined values.
-
-
10. One or more computer-readable media having stored thereon a module including a plurality of instructions 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 perform acts including:
-
receiving a data packet including audio data;
obtaining a new data packet from an allocator module;
copying at least a portion of the audio data from the data packet into the new data packet;
setting a presentation time in the new data packet to be a time offset amount later than a presentation time of the data packet; and
setting a velocity value corresponding to the audio data in the new data packet to be a velocity offset amount less than a velocity value corresponding to the audio data in the data packet. - View Dependent Claims (11, 12, 13, 14)
-
-
15. One or more computer-readable media having stored thereon a module including a plurality of instructions 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 perform acts including:
-
receiving a data packet including audio data;
obtaining a new data packet from an allocator module;
copying at least a portion of the audio data from the data packet into the new data packet;
forwarding the data packet to one module for further processing; and
forwarding the new data packet to another module for further processing. - View Dependent Claims (16)
-
-
17. A method, implemented in a kernel-mode of a computer, the method comprising:
-
receiving audio data in a hardware-specific format from a hardware driver; and
converting the audio data to 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.
-
-
18. A method, implemented in a kernel-mode of a computer, the method comprising:
-
receiving a data packet including audio data;
checking a presentation time for the audio data; and
operating on the data packet based at least in part on a result of the checking, wherein the operating comprises changing the presentation time to be that of a closest one of a set of pre-determined values.
-
-
19. A method, implemented in a kernel-mode of a computer, the method comprising:
-
receiving a data packet including audio data;
checking a presentation time for the audio data; and
operating on the data packet based at least in part on a result of the checking, wherein the operating comprises changing the presentation time to be closer to a closest one of a set of pre-determined values.
-
-
20. A method, implemented in a kernel-mode of a computer, the method comprising:
-
receiving a data packet including audio data;
checking a presentation time for the audio data; and
operating on the data packet based at least in part on a result of the checking, wherein the operating comprises changing the presentation time to differ, by up to a maximum amount, from a closest set of pre-determined values.
-
-
21. A method, implemented in a kernel-mode of a computer, the method comprising:
-
receiving a data packet including audio data;
obtaining a new data packet from an allocator module;
copying at least a portion of the audio data from the data packet into the new data packet;
setting a presentation time in the new data packet to be a time offset amount later than a presentation time of the data packet; and
setting a velocity value corresponding to the audio data in the new data packet to be a velocity offset amount less than a velocity value corresponding to the audio data in the data packet. - View Dependent Claims (22, 23, 24, 25)
-
-
26. A method, implemented in a kernel-mode of a computer, the method comprising:
-
receiving a data packet including audio data;
obtaining a new data packet from an allocator module;
copying at least a portion of the audio data from the data packet into the new data packet;
forwarding the data packet to one module for further processing; and
forwarding the new data packet to another module for further processing. - View Dependent Claims (27)
-
-
28. A system comprising:
-
a memory;
a processor, coupled to the memory, to execute a plurality of instructions in a kernel-mode that cause the processor to;
receive a data packet including audio data;
check a presentation time for the audio data; and
operate on the data packet based at least in part on a result of the check, wherein the operation comprises changing the presentation time to be that of a closest one of a set of pre-determined values.
-
-
29. A system comprising:
-
a memory;
a processor, coupled to the memory, to execute a plurality of instructions in a kernel-mode that cause the processor to;
receive a data packet including audio data;
check a presentation time for the audio data; and
operate on the data packet based at least in part on a result of the check, wherein the operation comprises changing the presentation time to be closer to a closest one of a set of pre-determined values.
-
-
30. A system comprising:
-
a memory;
a processor, coupled to the memory, to execute a plurality of instructions in a kernel-mode that cause the processor to;
receive a data packet including audio data;
check a presentation time for the audio data; and
operate on the data packet based at least in part on a result of the check, wherein the operation comprises changing the presentation time to differ, by up to a maximum amount, from a closest set of pre-determined values.
-
-
31. A system comprising:
-
a memory;
a processor, coupled to the memory, to execute a plurality of instructions in a kernel-mode that cause the processor to;
receive a data packet including audio data;
obtain a new data packet from an allocator module;
copy at least a portion of the audio data from the data packet into the new data packet;
set a presentation time in the new data packet to be a time offset amount later than a presentation time of the data packet; and
set a velocity value corresponding to the audio data in the new data packet to be a velocity offset amount less than a velocity value corresponding to the audio data in the data packet. - View Dependent Claims (32, 33, 34, 35)
-
-
36. A system comprising:
-
a memory;
a processor, coupled to the memory, to execute a plurality of instructions in a kernel-mode that cause the processor to;
receive a data packet including audio data;
obtain a new data packet from an allocator module;
copy at least a portion of the audio data from the data packet into the new data packet;
forward the data packet to one module for further processing; and
forward the new data packet to another module for further processing. - View Dependent Claims (37)
-
Specification