IP Library Granted Patent US 9,646,623
Granted Patent B2
US 9,646,623 · App. 13/766,128 · Granted May 9, 2017

Mix buffers and command queues for audio blocks

Inventors: John A. Tardif (Sammamish, WA); Brian Lloyd Schmidt (Bellevue, WA); Sunil Kumar Vemula (Sunnyvale, CA); Robert N. Heitkamp (Sammamish, WA)
Assignee: Microsoft Technology Licensing, LLC
G10L19/125G06F12/00G06F12/02G10L19/24G10L99/00H03H17/0685G06F2213/28G11B20/10037G11B20/10046G11B2220/2516
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 9,646,623
App. No.
13/766,128
Granted
May 9, 2017
Kind
B2
Abstract

The subject disclosure is directed towards a technology that may be used in an audio processing environment. Nodes of an audio flow graph are associated with virtual mix buffers. As the flow graph is processed, commands and virtual mix buffer data are provided to audio fixed-function processing blocks. Each virtual mix buffer is mapped to a physical mix buffer, and the associated command is executed with respect to the physical mix buffer. One physical mix buffer mix buffer may be used as an input data buffer for the audio fixed-function processing block, and another physical mix buffer as an output data buffer, for example.

Claims (39)

1. A method for processing an allocation command corresponding to a virtual mix buffer associated with audio data to be processed, the method comprising:

transmitting, to a mix buffer block by an audio control processor, a request to use the virtual mix buffer;

allocating a physical mix buffer to the virtual mix buffer based on the request;

receiving, from the mix buffer block by the audio control processor, an identifier of the physical mix buffer;

receiving, from the audio control processor by an audio component block, an audio processing-related command associated with the virtual mix buffer; and

using, by the audio component block, the physical mix buffer associated with the received identifier to process the audio data based upon the audio processing-related command.

2. The method of claim 1 wherein using the physical mix buffer comprises writing the audio data to the physical mix buffer as processed output data.

3. The method of claim 1 wherein using the physical mix buffer comprises reading the audio data in the physical mix buffer as input data for processing.

4. The method of claim 1 further comprising tracking a state of the physical mix buffer.

5. The method of claim 4 further comprising transmitting a request to de-allocate the physical mix buffer from the virtual mix buffer based upon the state of the physical mix buffer.

6. The method of claim 1 wherein a state of the physical mix buffer is associated with a number of inputs to be received by the physical mix buffer, the method further comprising waiting for the number of inputs to be received before using the physical mix buffer to process the audio data.

7. The method of claim 6 wherein waiting for the number of inputs to be received comprises skipping to another command.

8. The method of claim 1 further comprising requesting a virtual mix buffer to physical mix buffer lookup to determine the identifier.

9. The method of claim 1 further comprising requesting a lock for the physical mix buffer.

10. The method of claim 1 , wherein allocating the physical mix buffer to the virtual mix buffer comprises:

waiting to allocate the physical mix buffer until the physical mix buffer becomes available for use; and

assigning an identifier of the physical mix buffer to the virtual mix buffer.

11. In a computing environment, a system comprising:

a mix buffer component comprising a physical mix buffer, the mix buffer component configured to:

receive an allocation command requesting allocation of the physical mix buffer to a virtual mix buffer; and

allocate the physical mix buffer to the virtual mix buffer; and

a fixed-function audio processing component configured to:

transmit a request to use the virtual mix buffer based on an execution list command associated with the virtual mix buffer;

receive, from the mix buffer component, an identifier of the physical mix buffer allocated to the virtual mix buffer; and

use the physical mix buffer associated with the received identifier to process audio data based upon the execution list command.

12. The system of claim 11 wherein the fixed-function audio processing component is further configured to process a command queue, including to process a command that inputs data in the physical buffer for output.

13. The system of claim 11 wherein the fixed-function audio processing component is further configured to process a command queue, including to process a command that outputs processed data to the physical buffer.

14. The system of claim 11 wherein the fixed-function audio processing component comprises one or more of a sample rate conversion component, an equalization and compressor-expander component, and a filter and volume component.

15. The system of claim 11 , further comprising at least one application central processing unit (CPU) processor, an intermediate processor coupled to the application CPU processor, and an audio control processor, wherein the audio control processor is coupled to the fixed-function audio processing component.

16. The system of claim 11 further comprising a direct memory access (DMA) component configured to transfer data from the physical mix buffer to a memory device accessible to an application central processing unit (CPU) processor, and to transfer data to the physical mix buffer from the memory device.

17. The system of claim 11 wherein the mix buffer component is further configured to lock down the physical mix buffer.

18. One or more computer-readable media having computer-executable instructions which, when executed, perform operations comprising:

transmitting, to a mix buffer block by an audio control processor, a request to use the virtual mix buffer;

allocating a physical mix buffer to the virtual mix buffer based on the request;

receiving, from the mix buffer block by the audio control processor, an identifier of the physical mix buffer;

receiving, from the audio control processor by an audio component block, an audio processing-related command associated with the virtual mix buffer; and

using, by the audio component block, the physical mix buffer associated with the received identifier to process the audio data based upon the audio processing-related command.

19. The one or more computer-readable media of claim 18 , wherein using the physical mix buffer comprises writing the audio data to the physical mix buffer as processed output data.

20. The one or more computer-readable media of claim 18 , wherein using the physical mix buffer comprises reading the audio data in the physical mix buffer as input data for processing.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 9, 2014
From: MICROSOFT CORPORATION
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 034544/0541 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Feb 13, 2013
From: TARDIF, JOHN A.; SCHMIDT, BRIAN LLOYD; VEMULA, SUNIL KUMAR; HEITKAMP, ROBERT N.
To: MICROSOFT CORPORATION
Reel/Frame 029805/0639 →
Continuity (2)
Provisional Application 61599058 · Feb 15, 2012
Related Publication 20130212341A1 · Aug 15, 2013