# US 12,009,916 B2 · Radio frequency condition aware audio buffering

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

- Number: US 12,009,916 B2
- Document ID: US12009916B2
- Status: Granted
- Kind: B2
- Application number: 17/295,657
- Filed: 2019-07-23
- Published: 2022-01-13
- Granted: 2024-06-11
- Earliest claimed: 2019-07-23
- Assignees: Google Inc.
- Applicants: Google LLC
- Inventors: Jonathan D. Hurwitz
- Web page: https://patentgrep.com/patent/US12009916B2

## CPC

- H04L 1/0002: {by adapting the transmission rate}
- H04L 1/0014: {by adapting the source coding}
- H04L 1/1874: {Buffer management}
- H04L 65/613: for the control of the source by the destination (control signals issued by the client directed to the server or network components specially adapted for selective content distribution H04N21/637)
- H04L 65/752: adapting media to network capabilities
- H04L 65/762: {at the source (reformatting of additional data in video distribution servers H04N21/2355)}
- H04L 65/80: Responding to QoS
- H04N 21/43637: {involving a wireless protocol, e.g. Bluetooth®, RF or wireless LAN [IEEE 802.11] (arrangements for wireless networking or broadcasting of information in indoor or near-field type systems H04B10/114)}
- H04N 21/4392: {involving audio buffer management}
- H04N 21/44227: {Monitoring of local network, e.g. connection or bandwidth variations; Detecting new devices in the local network (configuring of peripheral devices in general G06F9/4411; monitoring connectivity in data switched networks H04L43/0811)}
- H04N 21/4621: {Controlling the complexity of the content stream or additional data, e.g. lowering the resolution or bit-rate of the video stream for a mobile client with a small screen (arrangements for using the results of monitoring on user's side in broadcast systems H04H60/65; flow control in packet networks H04L47/10)}
- H04N 21/6583: Acknowledgement
- H04W 4/80: Services using short range communication, e.g. near-field communication [NFC], radio-frequency identification [RFID] or low energy communication
- G06F 3/165: {Management of the audio stream, e.g. setting of volume, audio stream path}
- H04L: TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION (arrangements common to telegraphic and telephonic communication H04M)
- H04N: PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04W: WIRELESS COMMUNICATION NETWORKS (broadcast communication H04H; communication systems using wireless links for non-selective communication, e.g. wireless extensions H04M1/72)
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

An example method includes receiving, by a communication controller of a source device and from an audio source of the source device, audio data to be wirelessly transmitted to a sink device, wherein the audio data is received from the audio source at a rate; storing, by the communication controller and in a buffer, the audio data as a sequence of audio blocks, wherein each audio block includes audio data for a respective output time; transmitting, by the source device and to the sink device, audio blocks of the sequence of audio blocks using a wireless link between the source device and the sink device; determining a current condition of the wireless link; and automatically adjusting, by the communication controller and based on the current condition of the wireless link, the rate at which audio data is received from the audio source.

## Claims

### Claim 1

A method comprising:
receiving, by a communication controller of a source device and from an audio source of the source device, audio data to be wirelessly transmitted to a sink device, wherein the audio data is received from the audio source at a rate;
storing, by the communication controller and in a buffer, the audio data as a sequence of audio blocks, wherein each audio block includes audio data for a respective output time;
transmitting, by the source device and to the sink device, audio blocks of the sequence of audio blocks using a wireless link between the source device and the sink device;
responsive to determining that a particular audio block has been successfully received by the sink device, removing, by the communications controller and from the buffer, an audio block corresponding to the particular audio block;
determining a current condition of the wireless link; and
automatically adjusting, by the communication controller and based on the current condition of the wireless link, the rate at which audio data is received from the audio source,
wherein automatically adjusting the rate at which audio data is received comprises outputting, by the communication controller and to the audio source, a request to reduce the rate at which the audio source inserts audio blocks into the buffer to defer dropping an oldest audio block from the buffer when the data buffer becomes full.

### Claim 2 (depends on 1)

The method of claim 1, wherein automatically adjusting the rate at which the audio data is received comprises outputting, by the communication controller and to the audio source, an indication of whether the communication controller is currently receiving additional audio data to be wirelessly transmitted to the sink device.

### Claim 3 (depends on 1)

The method of claim 1, wherein transmitting the audio blocks comprises:
encapsulating audio blocks of the sequence of audio blocks in audio data packets of a sequence of audio data packets; and
transmitting, using the wireless link, the audio data packets.

### Claim 4 (depends on 3)

The method of claim 3, wherein determining the current condition of the wireless link comprises:
determining a rate at which the audio data packets are being dropped during transmission using the wireless link; and
determining the current condition of the wireless link based on the rate at which the audio packets are being dropped.

### Claim 5 (depends on 4)

The method of claim 4, further comprising:
receiving, by the source device and from the sink device, one or more acknowledgement messages using the wireless link, each respective acknowledgement message indicating receipt by the sink device of a corresponding audio data packet of the sequence of audio data packets; and
determining, based on whether or not an acknowledgement message of the one or more acknowledgement messages that corresponds to a particular audio data packet of the sequence of audio data packets, whether the particular audio data packet has been dropped or successfully received by the sink device, wherein determining the rate at which the audio packets are being dropped comprises determining the rate at which the audio packets are being dropped based on whether the particular audio data packet has been dropped or successfully received by the sink device.

### Claim 6 (depends on 1)

The method of claim 1, further comprising:
responsive to determining that the buffer is full, removing, by the communication controller and from the buffer, an audio data block corresponding to an oldest audio data packet of the sequence of audio data blocks.

### Claim 7 (depends on 1)

The method of claim 1, wherein the wireless link comprises a BLUETOOTH link.

### Claim 8

A source device comprising:
a communication unit;
an audio source;
a communication controller; and
at least one non-transitory computer-readable storage medium storing instructions that are executable by the communication controller to:
receive, from the audio source and at a rate, audio data to be wirelessly transmitted to a sink device;
store, in a buffer, the audio data as a sequence of audio blocks, wherein each audio block includes audio data for a respective output time;
cause the communication unit to transmit, to the sink device and via a wireless link between the source device and the sink device, audio blocks of the sequence of audio blocks;
remove, by the communications controller and from the buffer, an audio block corresponding to a particular audio block responsive to the particular audio block being successfully received by the sink device;
determine a current condition of the wireless link; and
automatically adjust, based on the current condition of the wireless link, the rate at which audio data is received from the audio source, by the communication controller outputting to the audio source a request to reduce the rate at which the audio source inserts audio blocks into the buffer to defer dropping an oldest audio block from the buffer when the data buffer becomes full.

### Claim 9 (depends on 8)

The source device of claim 8, wherein the instructions that cause the communication controller to automatically adjust the rate at which the audio data is received comprise instructions that cause the communication controller to output, to the audio source, a request to adjust a rate at which the audio source outputs the audio data to be wirelessly transmitted to the sink device.

### Claim 10 (depends on 8)

The source device of claim 8, wherein the instructions that cause the communication controller to automatically adjust the rate at which the audio data is received comprise instructions that cause the communication controller to output, to the audio source, an indication of whether the communication controller is currently receiving additional audio data to be wirelessly transmitted to the sink device.

### Claim 11 (depends on 8)

The source device of claim 8, further comprising instructions that cause the communication controller to transmit the audio blocks, wherein the instructions that cause the communication controller to transmit the audio blocks comprise instructions that cause the communication controller to:
encapsulate audio blocks of the sequence of audio blocks in audio data packets of a sequence of audio data packets; and
transmit, using the wireless link, the audio data packets.

### Claim 12 (depends on 11)

The source device of claim 11, wherein the instructions that cause the communication controller to determine the current condition of the wireless link comprise instructions that cause the communication controller to:
determine a rate at which the audio data packets are being dropped during transmission using the wireless link; and
determine the current condition of the wireless link based on the rate at which the audio packets are being dropped.

### Claim 13 (depends on 12)

The source device of claim 12, further comprising instructions that cause the communication controller to:
receive, from the sink device, one or more acknowledgement messages using the wireless link, each respective acknowledgement message indicating receipt by the sink device of a corresponding audio data packet of the sequence of audio data packets; and
determine, based on whether or not an acknowledgement message of the one or more acknowledgement messages that corresponds to a particular audio data packet of the sequence of audio data packets, whether the particular audio data packet has been dropped or successfully received by the sink device, wherein the instructions that cause the communication controller to determine the rate at which the audio packets are being dropped comprise instructions that cause the communication controller to determine the rate at which the audio packets are being dropped based on whether the particular audio data packet has been dropped or successfully received by the sink device.

### Claim 14 (depends on 8)

The source device of claim 8, further comprising instructions that cause the communication controller to:
remove, responsive to determining that the buffer is full, from the buffer, an audio data block corresponding to an oldest audio data packet of the sequence of audio data blocks.

### Claim 15

A non-transitory computer-readable storage medium storing instructions that, when executed, cause a communication controller of a source device to:
receive, from an audio source of the source device, audio data to be wirelessly transmitted to a sink device, wherein the audio data is received from the audio source at a rate;
store, in a buffer, the audio data as a sequence of audio blocks, wherein each audio block includes audio data for a respective output time;
transmit, to the sink device, audio blocks of the sequence of audio blocks using a wireless link between the source device and the sink device;
remove, from the buffer, an audio block corresponding to a particular audio block responsive to the particular audio block being successfully received by the sink device;
determine a current condition of the wireless link; and
automatically adjust, based on the current condition of the wireless link, the rate at which audio data is received from the audio source by at least outputting, to the audio source, a request to reduce the rate at which the audio source inserts audio blocks into the buffer to defer dropping an oldest audio block from the buffer when the data buffer becomes full.
