IP Library Granted Patent US 8,537,811
Granted Patent B1
US 8,537,811 · App. 13/330,447 · Granted Sep 17, 2013

Speaker-buffer management for voice-over-internet-protocol (VoIP) triggered by microphone-buffer arrival

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 8,537,811
App. No.
13/330,447
Granted
Sep 17, 2013
Kind
B1
Abstract

A Voice-over-Internet-Protocol (VoIP) system has improved audio-buffer control. Voice captured by a microphone (mic) is loaded into mic buffers by the sound card and sent to a VoIP application. When a mic buffer arrives from the sound card, a speaker buffer manager is activated. Voice data extracted from incoming VoIP packets is loaded into a speaker buffer and sent to a speaker queue on the sound card for playback. A speaker-buffer count is kept and increased as each speaker buffer is sent to the sound card, and decreased as each empty speaker buffer is recycled from the sound card back to the VoIP application. As each mic buffer arrives, the speaker buffer manager compares the speaker-buffer count to upper and lower limits and sends zero, one, or two speaker buffers when the speaker-buffer count is above, between, or below the limits. Speaker-buffer latency and playback timing irregularities are reduced.

Claims (40)

1. A Voice-over-Internet-Protocol (VoIP) application executing on at least one processor, the VoIP application comprising:

a microphone buffer processor configured to generate a speaker buffer management activation signal responsive to receiving audio data from an audio device; and

a speaker buffer manager configured to:

define an upper limit of a speaker buffer count for the audio device, the speaker buffer count being a number of speaker buffers, of a plurality of speaker buffers stored in a memory of the audio device, that contain audio data to be played by the audio device, and

responsive to determining, for a plurality of received speaker buffer management activation signals, that the speaker buffer count is higher than the upper limit, remove audio data from at least one of the speaker buffers that contain audio data to be played out by the audio device.

2. The Voice-over-Internet-Protocol (VoIP) application of claim 1 , wherein the speaker buffer manager is further configured to:

identify audio data contained in at least one of the plurality of speaker buffers stored in the memory of the audio device as being different than voice data; and

discard the audio data identified as being different than voice data from the corresponding at least one speaker buffer of the plurality stored in the memory of the audio device.

3. The Voice-over-Internet-Protocol (VoIP) application of claim 1 , wherein the speaker buffer manager is further configured to:

calculate, during a specified time interval, an average number of the plurality of speaker buffers stored in the memory of the audio device that contain audio data to be played out; and

use the calculated average to define the upper limit of the speaker buffer count.

4. The Voice-over-Internet-Protocol (VoIP) application of claim 1 , wherein the speaker buffer manager is further configured to:

generate a timer event in response to determining that no speaker buffer management activation signals have been generated by the microphone buffer processor for a specified time interval; and

in response to the timer event being generated, determine whether the speaker buffer count is higher than the upper limit.

5. A method for managing audio data storage for an audio device in communication with a computing device, the method comprising:

defining, by the computing device, an upper limit of a speaker buffer count for the audio device, the speaker buffer count being a number of speaker buffers, of a plurality of speaker buffers stored in a memory of the audio device, that contain audio data to be played out by the audio device;

generating, by the computing device, a speaker buffer management activation signal responsive to receiving audio data from the audio device; and

in response to determining, for a plurality of generated speaker buffer management activation signals, that the speaker buffer count is higher than the upper limit, the computing device removing audio data from at least one of the speaker buffers that contain audio data to be played out by the audio device.

6. The method of claim 5 , wherein removing audio data from at least one of the speaker buffers that contain audio data to be played out by the audio device includes:

identifying audio data contained in at least one of the plurality of speaker buffers stored in the memory of the audio device as being different than voice data; and

discarding the audio data identified as being different than voice data from the corresponding at least one speaker buffer of the plurality stored in the memory of the audio device.

7. The method of claim 5 , further comprising:

calculating, by the computing device, during a specified time interval, an average number of the plurality of speaker buffers stored in the memory of the audio device that contain audio data to be played out; and

using the calculated average to define the upper limit of the speaker buffer count.

8. The method of claim 5 , further comprising:

generating a timer event in response to determining that no speaker buffer management activation signals have been generated for a specified time interval; and

in response to the timer event being generated, the computing device determining whether the speaker buffer count is higher than the upper limit.

9. A non-transitory computer-readable medium comprising computer-executable instructions that when executed cause a computer device to perform a method comprising:

defining an upper limit of a speaker buffer count for an audio device, the speaker buffer count being a number of speaker buffers, of a plurality of speaker buffers stored in a memory of the audio device, that contain audio data sent from a computer for playout by the audio device;

generating a speaker buffer management activation signal in response to the computer receiving audio data from the audio device; and

in response to determining, for a plurality of generated speaker buffer management activation signals, that the speaker buffer count is higher than the upper limit, removing audio data from at least one of the speaker buffers that contain audio data to be played out by the audio device.

10. The non-transitory computer-readable medium of claim 9 , wherein the computer-executable instructions further cause the computer device to perform:

identifying audio data contained in at least one of the plurality of speaker buffers stored in the memory of the audio device as being different than voice data; and

discarding the audio data identified as being different than voice data from the corresponding at least one speaker buffer of the plurality stored in the memory of the audio device.

11. The non-transitory computer-readable medium of claim 9 , wherein the computer-executable instructions further cause the computer device to perform:

calculating, during a specified time interval, an average number of the plurality of speaker buffers stored in the memory of the audio device that contain audio data to be played out; and

using the calculated average to define the upper limit of the speaker buffer count.

12. The non-transitory computer-readable medium of claim 9 , wherein the computer-executable instructions further cause the computer device to perform:

generating a timer event in response to determining that no speaker buffer management activation signals have been generated for a specified time interval; and

in response to the timer event being generated, determining whether the speaker buffer count for the audio device is higher than the upper limit.

Assignments (1)
CHANGE OF NAME Recorded Dec 5, 2017
From: GOOGLE INC.
To: GOOGLE LLC
Reel/Frame 044695/0115 →