# US 2012/0023274 A1 · Increased speed of processing of data received over a communications link

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 2012/0023274 A1
- Document ID: US20120023274A1
- Status: Published application
- Kind: A1
- Application number: 13/252,106
- Filed: 2011-10-03
- Published: 2012-01-26
- Earliest claimed: 2006-04-14
- Assignees: Apple Computer, Inc.
- Inventors: Matthew Xavier Mora; Niel D. Warren
- Web page: https://patentgrep.com/patent/US20120023274A1

## CPC

- H04L 49/90: Buffering arrangements
- G06F 3/162: {Interface to dedicated audio devices, e.g. audio drivers, interface to CODECs}
- G06F 5/065: {Partitioned buffers, e.g. allowing multiple independent queues, bidirectional FIFO's}
- H04L 49/901: using storage descriptor, e.g. read or write pointers
- H04L 49/9063: {Intermediate storage in different physical parts of a node or terminal}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## 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.

## Claims

### Claim at position 1

1-25. (canceled)

### Claim 26

An apparatus for providing efficient support for at least one media 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:
unpack a plurality of input packets into a first set of said data channels based at least in part on said at least one input channel map;
publish a second set of data channels to at least one media device driver; and
where the at least one media device driver is configured to process only the published second set of data channels.

### Claim 27 (depends on 26)

The apparatus of claim 26, wherein the published second set of data channels substantially offloads processing from said media device driver.

### Claim 28 (depends on 26)

The apparatus of claim 26, wherein each of said data channels comprises a plurality of sequential data samples.

### Claim 29 (depends on 26)

The apparatus of claim 26, further comprising instructions which, when executed on the processor publish a third set of data channels to at least one other media device driver.

### Claim 30

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;
publishing, 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, wherein the channel map accomodates a mismatched sample size or packet size with respect to an application stream size.

### Claim 31 (depends on 30)

The method of claim 30, wherein the act of publishing the steering table, the stride map, and the channel map substantially offloads processing from said audio device driver.

### Claim 32 (depends on 30)

The method of claim 30, further comprising unpacking said at least one frame into its constituent data channels based at least in part on said information received in said device descriptor.

### Claim 33 (depends on 30)

The method of claim 30, wherein the mismatched sample size or packet size is larger than the application stream size,

### Claim 34 (depends on 33)

The method of claim 33, wherein a driver need only process the application stream size.

### Claim 35

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;
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:
read 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
publish only a subset of the constituent data channels to an audio device driver, wherein the audio device driver responsively processes only the published subset.

### Claim 36 (depends on 35)

The method of claim 35, wherein the subset of the constituent data channels is further stored in an output channel map.

### Claim 37 (depends on 36)

The method of claim 36, wherein the audio device driver directly plays the output channel map.

### Claim 38 (depends on 35)

The method of claim 35, wherein the published subset of constituent data channels is provided to at least one other audio device driver.

### Claim 39 (depends on 38)

The method of claim 38, wherein each data channel comprises one or more Common Isochronous Packets (CIP).

### Claim 40

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 a first set of data channels based at least in part on said information in said device descriptor;
publish a second set of data channels to at least one audio device driver; and
where the at least one audio device driver processes only the published second set of data channels.

### Claim 41 (depends on 40)

The apparatus of claim 40, wherein said first interface comprises a IEEE Std. 1394 compliant bus.

### Claim 42 (depends on 40)

The apparatus of claim 40, wherein said first interface comprises a Universal Serial Bus (USB) compliant bus.

### Claim 43 (depends on 40)

The apparatus of claim 40, further comprising a second interface configured to transmit the second set of data channels to at least one second device.

### Claim 44 (depends on 43)

The apparatus of claim 43, wherein the at least one audio device driver is resident within the at least one other second device.

### Claim 45 (depends on 43)

The apparatus of claim 43, wherein the at least one audio device driver is local to the apparatus.
