Kernel-mode audio processing modules
AssigneeMicrosoft Corporation
InventorMartin G. Puryear
Life of this patent
Estimating the term…
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.
Claims37
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Dependencies are inferred from the claim text.