IP Library Granted Patent US 7,348,483
Granted Patent B2
US 7,348,483 · App. 10/666,677 · Granted Mar 25, 2008

Kernel-mode audio processing modules

Assignee: Microsoft Corporation
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 7,348,483
App. No.
10/666,677
Granted
Mar 25, 2008
Kind
B2
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.

Claims (57)

1. One or more computer-readable media having stored thereon a module of a transform module graph for processing audio data, the 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 in the transform module graph a data packet including audio data;

checking in the transform module graph, based at least in part on a channel group identified in a channel group portion of the data packet, whether the data packet corresponds to a set of one or more channel groups; and

forwarding the data packet to an allocator module for re-allocation of the memory space used by the data packet if the data packet corresponds to the set of one or more channel groups.

2. One or more computer-readable media as recited in claim 1 , wherein the set of one or more channel groups is received by the module via a set parameters interface.

3. One or more computer-readable media having stored thereon a module of a transform module graph for processing audio data, the 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 in the transform module graph a data packet including audio data;

checking in the transform module graph, based at least in part on a channel group identified in a channel group portion of the data packet, whether the data packet corresponds to a set of one or more channel groups; and

forwarding the data packet to an allocator module for re-allocation of the memory space used by the data packet if the data packet does not correspond to the set of one or more channel groups.

4. One or more computer-readable media as recited in claim 3 , wherein the set of one or more channel groups is received by the module via a set parameters interface.

5. One or more computer-readable media having stored thereon a module of a transform module graph for processing audio data, the 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 in the transform module graph a data packet including audio data;

checking in the transform module graph, based at least in part on a channel group identified in a channel group portion of the data packet, whether the data packet corresponds to a set of one or more channel groups; and

changing a channel group identifier in the channel group portion of the data packet if the data packet corresponds to the set of one or more channel groups.

6. One or more computer-readable media as recited media as recited in claim 5 , wherein the set of one or more channel group is received by the module via a set parameters interface.

7. One or more computer-readable media having stored thereon a module of a transform module graph for processing audio data, the 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 in the transform module graph a data packet including audio data:

checking in the transform module graph which channel group the data packet corresponds to, wherein the channel group the data packet corresponds to is identified in a channel group portion of the data packet;

identifying in the transform module graph, based at least in part on the channel group, a new channel group for the data packet; and

modifying in the transform module graph the data packet to include the new channel group.

8. One or more computer-readable media as recited in claim 7 , wherein a set of channel group to new channel group mappings for use in the identifying is received by the module via a set parameters interface.

9. One or more computer-readable media having stored thereon a module of a transform module graph for processing audio data, the 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 in the transform module graph a data packet including audio data;

checking in the transform module graph which channel the audio data corresponds to;

identifying in the transform module graph, based at least in part on the channel, a new channel for the data packet; and

modifying in the transform module graph the audio data to include the new channel.

10. One or more computer-readable media as recited in claim 9 , wherein a set of channel to new channel mappings for use in the identifying is received by the module via a set parameters interface.

11. 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; and

maintaining a channel to new channel mapping, for use in the identifying, in which multiple channels can map to the same new channel and in which a single channel can map to multiple new channels.

12. A method implemented in a kernel-mode module of a transform module graph for processing audio data, the method comprising:

receiving in the transform module graph a data packet including audio data;

checking in the transform module graph which channel the audio data corresponds to;

identifying in the transform module graph, based at least in part on the channel, a new channel for the data packet; and

modifying in the transform module graph the audio data to include the new channel.

13. A method as recited in claim 12 , wherein a set of channel to new channel mappings for use in the identifying is received by the module via a set parameters interface.

14. A method as recited in claim 12 , further comprising maintaining a channel to new channel mapping, for use in the identifying, in which multiple channels can map to the same new channel and in which a single channel can map to multiple new channels.

15. A method implemented in a kernel-mode module of a transform module graph for processing audio data, the method comprising:

receiving in the transform module graph a data packet including audio data;

checking in the transform module graph, based at least in part on a channel group identified in a channel group portion of the data packet, whether the data packet corresponds to a set of one or more channel groups; and

forwarding the data packet to an allocator module for re-allocation of the memory space used by the data packet if the data packet corresponds to the set of one or more channel groups.

16. A method as recited in claim 15 , wherein the set of one or more channel groups is received by the module via a set parameters interface.

17. A computing device comprising:

a processor; and

a memory, coupled to the processor, having instructions to implement a kernel-mode module of a transform module graph for processing audio data, the instructions causing the processor to perform acts comprising:

receiving in the transform module graph a data packet including audio data;

checking in the transform module graph, based at least in part on a channel group identified in a channel group portion of the data packet, whether the data packet corresponds to a set of one or more channel groups; and

forwarding the data packet to an allocator module for re-allocation of the memory space used by the data packet if the data packet does not correspond to the set of one or more channel groups.

18. A computing device as recited in claim 17 , wherein the set of one or more channel groups is received by the module via a set parameters interface.

19. A system having a kernel-mode module of a transform module graph for processing audio data comprising:

means for receiving in the transform module graph a data packet including audio data;

means for checking in the transform module graph, based at least in part on a channel group identified in a channel group portion of the data packet, whether the data packet corresponds to a set of one or more channel groups; and

means for changing a channel group identifier in the channel group portion of the data packet if the data packet corresponds to the set of one or more channel groups.

20. A system as recited in claim 19 , wherein the set of one or more channel groups is received by the module via a set parameters interface.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034541/0477 →
Continuity (3)
Continuation 0955998600 · Apr 26, 2000
Provisional Application 6019710000 · Apr 12, 2000
Related Publication 20040060425A1 · Apr 1, 2004