IP Library Granted Patent US 9,237,324
Granted Patent B2
US 9,237,324 · App. 14/025,658 · Granted Jan 12, 2016

Playback synchronization

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 9,237,324
App. No.
14/025,658
Granted
Jan 12, 2016
Kind
B2
Abstract

Various exemplary embodiments relate to method and media devices for synchronizing media playback between a receiving media device and sending media device, including: receiving, at the receiving media device, a plurality of messages from the sending media device, wherein the plurality of messages include a plurality of sender timestamps; generating a plurality of clock offset values based on the plurality of sender timestamps and a clock of the receiving media device; identifying a minimum clock offset value from the plurality of clock offset values; locating first media data for playback and a first presentation time associated with the first media data; and causing the first media data to be rendered at a first time that matches the first presentation time based on the minimum clock offset.

Claims (93)

1. A method of synchronizing media playback between a sending media device and a receiving media device, the method comprising:

receiving, at the receiving media device, a plurality of messages from the sending media device, wherein the plurality of messages comprise a plurality of sender timestamps;

generating a plurality of clock offset values based on the plurality of sender timestamps and a clock of the receiving media device;

identifying a minimum clock offset value from the plurality of clock offset values;

modifying the value of the clock of the receiving media device by subtracting the minimum offset value from the value of the clock;

locating first media data for playback and a first presentation time associated with the first media data; and

causing the first media data to be rendered at a first time that matches the first presentation time based on the minimum clock offset, wherein the first time matching the first presentation time based on the minimum clock offset value comprises the value of the clock matching the first presentation time.

2. The method of claim 1 , wherein identifying a minimum clock offset value comprises:

generating a first clock offset value of the plurality of clock offset values;

setting the minimum clock offset value equal to the first offset clock value;

generating a second clock offset value of the plurality of clock offset values after setting the minimum clock offset value equal to the first offset clock value;

determining that the second clock offset value is less than the minimum clock offset value; and

setting the minimum clock offset value equal to the second offset clock value based on determining that the second clock offset value is less than the minimum clock offset value.

3. The method of claim 1 , wherein the plurality of messages includes a first plurality of messages and a second plurality of messages, the method further comprising:

generating a first measure of the intervals at which the first plurality of messages arrive;

determining that the first measure of the intervals at which the first plurality of messages arrive indicates that a network is unstable;

instructing the sending media device to transmit additional messages;

generating a second measure of the intervals at which the second plurality of messages arrive after instructing the sending media device to transmit additional messages;

determining that the second measure of the intervals at which the second plurality of messages arrive indicates that the network is stable,

wherein identifying a minimum clock offset value from the plurality of clock offset values comprises utilizing at least one clock offset value of the plurality of clock offset values associated with the second plurality of messages.

4. The method of claim 1 , wherein the plurality of messages includes a first plurality of messages and a second plurality of messages, the method further comprising:

transmitting, by the sending media device, the first plurality of messages,

generating, by the sending media device, a first measure of network performance associated with transmission of the first plurality of messages,

determining that the first measure of network performance indicates that a network is unstable,

transmitting, by the sending media device, the second plurality of messages based on determining that the first measure of network performance indicates that a network is unstable,

generating, by the sending media device, a second measure of network performance associated with transmission of the second plurality of messages, and

determining that the second measure of network performance indicates that the network is stable.

5. A receiving media device for synchronizing media playback with a sending media device, the receiving media device comprising:

a memory configured to store media data for playback;

a network interface configured to communicate with the sending media device; and

a processor configured to:

receive, via the network interface, a plurality of messages from the sending media device, wherein the plurality of messages comprise a plurality of sender timestamps;

generate a plurality of clock offset values based on the plurality of sender timestamps and a clock of the receiving media device;

identify a minimum clock offset value from the plurality of clock offset values;

modify the value of the clock of the receiving media device by subtracting the minimum offset value from the value of the clock;

locate first media data for playback and a first presentation time associated with the first media data; and

cause the first media data to be rendered at a first time that matches the first presentation time based on the minimum clock offset value, wherein the first time that matches the first presentation time based on the minimum clock offset value comprises the value of the clock matching the first presentation time.

6. The receiving media device of claim 5 , wherein, in identifying a minimum clock offset value, the processor is configured to:

generate a first clock offset value of the plurality of clock offset values;

set the minimum clock offset value equal to the first offset clock value;

generate a second clock offset value of the plurality of clock offset values after setting the minimum clock offset value equal to the first offset clock value;

determine that the second clock offset value is less than the minimum clock offset value; and

set the minimum clock offset value equal to the second offset clock value based on determining that the second clock offset value is less than the minimum clock offset value.

7. The receiving media device of claim 5 , wherein the plurality of messages includes a first plurality of messages and a second plurality of messages, and the processor is further configured to:

generate a first measure of the intervals at which the first plurality of messages arrive;

determine that the first measure of the intervals at which the first plurality of messages arrive indicates that a network is unstable;

instruct the sending media device to transmit additional messages;

generate a second measure of the intervals at which the second plurality of messages arrive after instructing the sending media device to transmit additional messages;

determine that the second measure of the intervals at which the second plurality of messages arrive indicates that the network is stable,

wherein, in identifying a minimum clock offset value from the plurality of clock offset values, the processor is configured to utilize at least one clock offset value of the plurality of clock offset values associated with the second plurality of messages.

8. A system comprising:

a receiving media device for synchronizing media playback with a sending media device, the receiving media device comprising:

a memory configured to store media data for playback;

a network interface configured to communicate with the sending media device; and

a processor configured to receive, via the network interface, a plurality of messages from the sending media device, wherein the plurality of messages includes a first plurality of messages and a second plurality of messages; and

the sending media device, comprising:

a sending media device network interface configured to communicate with the receiving media device, and

a sending media device processor configured to:

transmit the first plurality of messages,

generate a first measure of network performance associated with transmission of the first plurality of messages,

determine that the first measure of network performance indicates that a network is unstable,

transmit the second plurality of messages based on determining that the first measure of network performance indicates that a network is unstable,

generate a second measure of network performance associated with transmission of the second plurality of messages, and

determine that the second measure of network performance indicates that the network is stable.

9. A non-transitory machine-readable storage medium encoded with instructions for execution by a receiving media device for synchronizing media playback between a sending media device and the receiving media device, the medium comprising:

instructions for receiving, at the receiving media device, a plurality of messages from the sending media device, wherein the plurality of messages comprise a plurality of sender timestamps;

instructions for generating a plurality of clock offset values based on the plurality of sender timestamps and a clock of the receiving media device;

instructions for identifying a minimum clock offset value from the plurality of clock offset values;

instructions for modifying the value of the clock of the receiving media device by subtracting the minimum offset value from the value of the clock;

instructions for locating first media data for playback and a first presentation time associated with the first media data; and

instructions for causing the first media data to be rendered at a first time matches the first presentation time based on the minimum clock offset value, wherein the first time matching the first presentation time based on the minimum clock offset value comprises the value of the clock matching the first presentation time.

10. The non-transitory machine-readable storage medium of claim 9 , wherein the instructions for identifying a minimum clock offset value comprise:

instructions for generating a first clock offset value of the plurality of clock offset values;

instructions for setting the minimum clock offset value equal to the first offset clock value;

instructions for generating a second clock offset value of the plurality of clock offset values after setting the minimum clock offset value equal to the first offset clock value;

instructions for determining that the second clock offset value is less than the minimum clock offset value; and

instructions for setting the minimum clock offset value equal to the second offset clock value based on determining that the second clock offset value is less than the minimum clock offset value.

11. The non-transitory machine-readable storage medium of claim 9 , wherein the plurality of messages includes a first plurality of messages and a second plurality of messages, the medium further comprising:

instructions for generating a first measure of the intervals at which the first plurality of messages arrive;

instructions for determining that the first measure of the intervals at which the first plurality of messages arrive indicates that a network is unstable;

instructions for instructing the sending media device to transmit additional messages;

instructions for generating a second measure of the intervals at which the second plurality of messages arrive after instructing the sending media device to transmit additional messages;

instructions for determining that the second measure of the intervals at which the second plurality of messages arrive indicates that the network is stable,

wherein the instructions for identifying a minimum clock offset value from the plurality of clock offset values comprise instructions for utilizing at least one clock offset value of the plurality of clock offset values associated with the second plurality of messages.

12. A set of non-transitory machine-readable media, the set comprising:

a non-transitory machine-readable storage medium encoded with instructions for execution by a receiving media device for synchronizing media playback between a sending media device and the receiving media device, comprising instructions for receiving, at the receiving media device, a plurality of messages from the sending media device, wherein the plurality of messages includes a first plurality of messages and a second plurality of messages; and

an additional non-transitory machine-readable storage medium encoded with instructions for execution by the sending media device, the additional non-transitory machine-readable storage medium comprising:

instructions for transmitting the first plurality of messages,

instructions for generating a first measure of network performance associated with transmission of the first plurality of messages,

instructions for determining that the first measure of network performance indicates that a network is unstable,

instructions for transmitting the second plurality of messages based on determining that the first measure of network performance indicates that a network is unstable,

instructions for generating a second measure of network performance associated with transmission of the second plurality of messages, and

instructions for determining that the second measure of network performance indicates that the network is stable.

Assignments (6)
PARTIAL RELEASE OF SECURITY INTEREST IN PATENTS Recorded Oct 27, 2022
From: BANK OF AMERICA, N.A., AS COLLATERAL AGENT
To: VEVEO LLC (F.K.A. VEVEO, INC.); DTS, INC.; PHORUS, INC.; IBIQUITY DIGITAL CORPORATION
Reel/Frame 061786/0675 →
RELEASE OF SECURITY INTEREST Recorded Jun 11, 2020
From: ROYAL BANK OF CANADA
To: TESSERA, INC.; INVENSAS BONDING TECHNOLOGIES, INC. (F/K/A ZIPTRONIX, INC.); FOTONATION CORPORATION (F/K/A DIGITALOPTICS CORPORATION AND F/K/A DIGITALOPTICS CORPORATION MEMS); INVENSAS CORPORATION; TESSERA ADVANCED TECHNOLOGIES, INC; DTS, INC.; DTS LLC; PHORUS, INC.; IBIQUITY DIGITAL CORPORATION
Reel/Frame 052920/0001 →
SECURITY INTEREST Recorded Jun 1, 2020
From: ROVI SOLUTIONS CORPORATION; ROVI TECHNOLOGIES CORPORATION; ROVI GUIDES, INC.; TIVO SOLUTIONS INC.; VEVEO, INC.; INVENSAS CORPORATION; INVENSAS BONDING TECHNOLOGIES, INC.; TESSERA, INC.; TESSERA ADVANCED TECHNOLOGIES, INC.; DTS, INC.; PHORUS, INC.; IBIQUITY DIGITAL CORPORATION
To: BANK OF AMERICA, N.A.
Reel/Frame 053468/0001 →
SECURITY INTEREST Recorded Dec 2, 2016
From: INVENSAS CORPORATION; TESSERA, INC.; TESSERA ADVANCED TECHNOLOGIES, INC.; ZIPTRONIX, INC.; DIGITALOPTICS CORPORATION; DIGITALOPTICS CORPORATION MEMS; DTS, LLC; DTS, INC.; PHORUS, INC.; IBIQUITY DIGITAL CORPORATION
To: ROYAL BANK OF CANADA, AS COLLATERAL AGENT
Reel/Frame 040797/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 1, 2013
From: DTS, INC.
To: PHORUS, INC.
Reel/Frame 031530/0208 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Oct 2, 2013
From: LEE, CHUNHO; LAU, DANNIE
To: DTS, INC.
Reel/Frame 031331/0749 →