Increased speed of processing of audio samples received over a serial communications link by use of channel map and steering table
First Claim
1. An apparatus for providing efficient support for at least one audio device driver, the apparatus comprising:
- a processor;
at least one input channel map;
at least one output channel map; and
a computer readable apparatus comprising storage media comprising a computer program having a plurality of instructions which, when executed on said processor, enable said apparatus to;
receive a plurality of input packets comprising frames of data, wherein each frame of data comprises a plurality of data channels, each data channel comprising a plurality of data samples;
unpack said plurality of input packets into one or more of said data channels based at least in part on said at least one input channel map; and
direct at least a subset of said unpacked data channels to said at least one audio device driver based at least in part on said at least one output channel map.
2 Assignments
0 Petitions
Accused Products
Abstract
A method and apparatus for processing data samples utilizes a channel map populated by device descriptor, or by an application program interface. Packet processing code loops through all of the samples contained in a packet while incrementing through a channel map and steering table without having to look up a table to determine in what audio buffer the sample is to be stored or read. Additionally, the present invention utilizes a stride map, so the audio subsystem knows how many samples to skip in order to reach the next sample frame. The present invention can be used for handling received packets as well as forming packets to send over a bus.
59 Citations
21 Claims
-
1. An apparatus for providing efficient support for at least one audio device driver, the apparatus comprising:
-
a processor; at least one input channel map; at least one output channel map; and a computer readable apparatus comprising storage media comprising a computer program having a plurality of instructions which, when executed on said processor, enable said apparatus to; receive a plurality of input packets comprising frames of data, wherein each frame of data comprises a plurality of data channels, each data channel comprising a plurality of data samples; unpack said plurality of input packets into one or more of said data channels based at least in part on said at least one input channel map; and direct at least a subset of said unpacked data channels to said at least one audio device driver based at least in part on said at least one output channel map. - View Dependent Claims (2, 3, 4)
-
-
5. A method for processing at least one frame of data comprising a plurality of data channels, each data channel comprising a plurality of sequential data samples, said data channels being packed within said at least one frame of data, the method comprising:
-
receiving a device descriptor comprising information enabling unpacking of said at least one frame of data; reading said at least one frame from a sample buffer; unpacking said read at least one frame into its constituent data channels based at least in part on said information received in said device descriptor; for at least one data channel, storing said at least one data channel within one or more channel buffers, each of said one or more channel buffers being adapted to store at least one of said data channels; and generating, based at least in part on said information enabling unpacking of said frames of data; a steering table indicating a channel order, said channel order describing the order of packed data channels within said frames of data; a stride map indicating at least one stride size, said at least one stride size determining the number of data samples to skip, corresponding to others of said data channels, between sequential data samples of the same data channel; and a channel map indicating one or more start addresses, wherein said start addresses for said data channels reside within said sample buffer. - View Dependent Claims (6)
-
-
7. An apparatus for processing frames of data comprising a plurality of data channels, each data channel comprising a plurality of sequential data samples;
- wherein said data channels are disposed within said frames of data, the apparatus comprising;
a first interface configured to receive packetized data comprising device descriptors, and said frames of data; a sample buffer capable of storage of one or more of said frames of data; one or more channel buffers, said channel buffers capable of storage of at least one of said data channels within said frames of data; a table indicating a channel order, said channel order being descriptive of the order of packed data channels within said frames of data; a first map indicating one or more increment sizes, wherein said each increment size determines the number of data samples to skip between sequential data samples of a data channel; a second map indicating one or more start addresses for said data channels within said sample buffer; and a computer readable apparatus comprising media containing at least one computer program having a plurality of instructions, said plurality of instructions which, when executed, cause said apparatus to; receive a device descriptor comprising information enabling unpacking of said frames of data; read one or more of said frames of data in said sample buffer; unpack said read one or more frames into its constituent data channels based at least in part on said information in said device descriptor; and store at least one unpacked data channel within said one or more channel buffers. - View Dependent Claims (8)
- wherein said data channels are disposed within said frames of data, the apparatus comprising;
-
9. An apparatus for processing frames of data comprising a plurality of data channels, each data channel comprising a plurality of sequential data samples;
- wherein said data channels are disposed within said frames of data, the apparatus comprising;
a first interface configured to receive packetized data comprising device descriptors, and said frames of data; a sample buffer capable of storage of one or more of said frames of data; one or more channel buffers, said channel buffers capable of storage of at least one of said data channels within said frames of data; and a computer readable apparatus comprising media containing at least one computer program having a plurality of instructions, said plurality of instructions which, when executed, cause said apparatus to; receive a device descriptor comprising information enabling unpacking of said frames of data; read one or more of said frames of data in said sample buffer; unpack said read one or more frames into its constituent data channels based at least in part on said information in said device descriptor; and store at least one unpacked data channel within said one or more channel buffers; wherein said first interface is configured to receive said packetized data comprising device descriptors and said frames of data, over a high-speed serialized protocol bus. - View Dependent Claims (10, 11)
- wherein said data channels are disposed within said frames of data, the apparatus comprising;
-
12. A method for processing at least one frame of data comprising a plurality of data channels, each data channel comprising a plurality of data samples, said data channels being packed within said at least one frame of data, the method comprising:
-
receiving a device descriptor comprising information enabling unpacking of said at least one frame of data; reading said at least one frame from a first buffer; unpacking said read at least one frame into its constituent data channels based at least in part on said information received in said device descriptor; for at least one data channel, storing said at least one data channel within one or more channel buffers, each of said one or more channel buffers being adapted to store at least one of said data channels; and generating, based at least in part on said information enabling unpacking of said frames of data; information indicating a channel order, said channel order describing the order of packed data channels within said frames of data; a first map having information determining the number of data samples to skip, corresponding to others of said data channels, between sequential data samples of the same data channel; and a second map indicating one or more start addresses, wherein said start addresses for said data channels reside within said first buffer. - View Dependent Claims (13)
-
-
14. An apparatus for processing frames of data comprising a plurality of data channels disposed within said frames of data, each data channel comprising a plurality of data samples, the apparatus comprising:
-
a first interface configured to receive packetized data comprising one or more descriptors and said frames of data; a first buffer capable of storage of one or more of said frames of data; a second buffer capable of storage of at least one of said data channels within said frames of data; means for indicating the order of packed data channels within said frames of data; means indicating the number of data samples to skip between sequential data samples of a data channel; and a computer readable apparatus comprising media containing at least one computer program having a plurality of instructions, said plurality of instructions configured to, when executed, cause said apparatus to; receive a descriptor comprising information enabling unpacking of said frames of data; read one or more of said frames of data in said first buffer; unpack said read one or more frames into its constituent data channels based at least in part on said information in said received descriptor; and store at least one unpacked data channel within at least said second buffer. - View Dependent Claims (15)
-
-
16. A method for processing at least one frame of data comprising a plurality of data channels, each data channel comprising a plurality of sequential data samples, the method comprising:
-
receiving a device descriptor comprising information enabling unpacking of the at least one frame of data; reading the at least one frame from a sample buffer; unpacking the read at least one frame into its constituent data channels based at least in part on the information received in the device descriptor; for at least one data channel, storing at least a portion of the at least one data channel within one or more channel buffers, each of the one or more channel buffers being adapted to store at least one of the data channels; and generating, based at least in part on the information enabling unpacking of the at least one frame of data; a steering table indicating a channel order, the channel order describing the order of packed data channels within the frames of data; a stride map indicating at least one stride size, the at least one stride size determining the number of data samples to skip, corresponding to others of the data channels, between sequential data samples of the same data channel; and a channel map indicating one or more start addresses, wherein the one or more start addresses for the data channels reside within the sample buffer. - View Dependent Claims (17, 18, 19, 20, 21)
-
Specification