IP Library Granted Patent US 8,639,830
Granted Patent B2
US 8,639,830 · App. 12/507,749 · Granted Jan 28, 2014

System and method for streaming audio

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,639,830
App. No.
12/507,749
Granted
Jan 28, 2014
Kind
B2
Abstract

A system and method is provided of synchronizing data streaming. The method can include the operation of receiving an incoming media packet having a timestamp from a media server at a client device. A further operation is synchronizing the clocks for a client device with a clock for a media server. The timestamp can be compared with a next play time for a packet. Another operation can be placing the incoming media packet into a user buffer at a playing position in the user buffer based on the next play time. The incoming media packet can then be played using a media output device accessible to an end user.

Claims (39)

1. A method of synchronizing data streaming, comprising:

synchronizing a clock for a client device with a clock for a media server;

receiving an incoming media packet having a timestamp from the media server at the client device;

comparing the timestamp with a next play time for a packet, wherein the next play time is defined by a number of packets to be played in a kernel buffer that receives packets from a user buffer, a number of packets in the user buffer, and a current system time;

placing the incoming media packet into the user buffer at a playing position in the user buffer based on the next play time;

playing the incoming media packet using a media output device accessible to an end user;

receiving an announcement media packet into an announcement buffer; and

mixing the announcement media packet with the incoming media packet from the user buffer directly into the kernel buffer.

2. The method as in claim 1 , wherein playing the incoming media packet further comprises transferring packets from the user buffer to the kernel buffer to enable the packets to be played using an audio speaker for the client.

3. The method as in claim 1 , wherein

the announcement media packet is mixed with the incoming media packet at a point where the announcement media packet will be played.

4. The method as in claim 3 , further comprising inserting a quiet period before and after the announcement media packet.

5. The method as in claim 3 , wherein mixing the announcement further comprises placing data from the announcement media packet into the kernel buffer.

6. The method as in claim 3 , wherein mixing the announcement further comprises placing a combination of data from the announcement media packet and the user buffer into the kernel buffer.

7. The method as in claim 1 , wherein the media server transmits the media packet to a plurality of client devices.

8. The method as in claim 1 , further comprising:

calculating a drift coefficient for the clock of the client device; and

adjusting the timing of the playback of data in the media packet on the client device based on the drift coefficient.

9. The method as in claim 1 , wherein a client device is configured to resample data in the media packet to match a sampling rate used by the user buffer and a kernel buffer.

10. The method as in claim 1 , wherein a first client device plays audio from the media packet within a pre-defined number of milliseconds of when a second client device plays audio from the media packet.

11. A method of synchronizing audio streaming, comprising:

synchronizing a clock for a client device with a clock for a media server;

receiving an incoming media packet on the client device from the media server, the media packet comprising a timestamp and media data;

comparing the timestamp with a next play time for data in the incoming media packet, wherein the next play time is defined by a number of packets to be played in a kernel buffer that receives packets from a user buffer, a number of packets in the user buffer, and a current system time;

placing the incoming media packet into the user buffer at a playing position in the user buffer based on the comparison of the timestamp with the next play time for the data in the incoming media packet;

transferring the media packet from the user buffer to the kernel buffer, the kernel buffer storing data that will play on an audio device;

playing the incoming media packet using a media output device accessible to an end user;

receiving an announcement media packet into an announcement buffer;

mixing the announcement media packet with the incoming media packet from the user buffer directly into the kernel buffer to make a mixed announcement packet.

12. The method as in claim 11 , wherein mixing the announcement media packet with the incoming media packet comprises:

placing the mixed announcement packet in the kernel buffer at a point where the announcement media packet will be played.

13. The method as in claim 12 , further comprising inserting a quiet period before and after the announcement media packet.

14. The method as in claim 12 , wherein mixing the announcement media packet further comprises placing only data from the announcement media packet into the kernel buffer.

15. The method as in claim 12 , wherein mixing the announcement media packet further comprises placing a combination of data from the announcement media packet and the user buffer into the kernel buffer.

16. The method as in claim 11 , wherein the media server transmits the media packet to a plurality of client devices.

17. The method as in claim 16 , wherein a first client device plays audio from the media packet within a pre-defined number of milliseconds of when a second client device, in the plurality of client devices, plays audio from the media packet.

18. The method as in claim 11 , further comprising:

calculating a drift coefficient for the clock of the client device; and

adjusting the timing of the playback of data in the media packet on the client device based on the drift coefficient.

Assignments (7)
SECURITY INTEREST Recorded Jul 18, 2024
From: SNAP ONE, LLC
To: JPMORGAN CHASE BANK, N.A. AS ADMINISTRATIVE AGENT
Reel/Frame 068426/0446 →
SECURITY RELEASE R/F 058439/0014 Recorded Jun 17, 2024
From: MORGAN STANLEY SENIOR FUNDING, INC., AS AGENT
To: SNAP ONE, LLC
Reel/Frame 067768/0139 →
RELEASE OF SECURITY INTEREST Recorded Dec 9, 2021
From: UBS AG, STAMFORD BRANCH
To: CONTROL4 CORPORATION
Reel/Frame 058438/0975 →
SECURITY INTEREST Recorded Dec 9, 2021
From: SNAP ONE, LLC
To: MORGAN STANLEY SENIOR FUNDING INC.
Reel/Frame 058439/0014 →
CHANGE OF NAME Recorded Aug 25, 2021
From: WIREPATH HOME SYSTEMS, LLC
To: SNAP ONE, LLC
Reel/Frame 057298/0014 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 30, 2019
From: CONTROL4 CORPORATION
To: WIREPATH HOME SYSTEMS, LLC
Reel/Frame 051446/0868 →
SECURITY INTEREST Recorded Aug 2, 2019
From: CONTROL4 CORPORATION
To: UBS AG, STAMFORD BRANCH, AS COLLATERAL AGENT
Reel/Frame 049948/0911 →