IP Library Granted Patent US 10,231,008
Granted Patent B2
US 10,231,008 · App. 15/547,093 · Granted Mar 12, 2019

Self-organizing audio synchronization

Inventors: Brian Thoft Moth Møller (Aalborg SV, DK); Paul Fleischer (Aarhus V, DK); Bjørn Reese (Aarhus V, DK)
Assignee: ROKU, INC.
H04N21/4307G06F3/165H04L65/1066H04L65/403H04N21/4126H04N21/43615H04N21/44227H04R3/12H04R27/00H04W84/20H04R2227/005H04R2420/07
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 10,231,008
App. No.
15/547,093
Granted
Mar 12, 2019
Kind
B2
Abstract

The invention provides a protocol and a method for a plurality of separate devices to stream audio and/or video in a synchronized manner in a computer network. One device is session leader and controls synchronization of the streaming of the other devices. If the session leader device is switched off, or becomes otherwise unavailable, local election algorithms on the other devices serve to automatically elect a new session leader to synchronize to in an autonomous manner, e.g. based on a random number election based algorithm. In this manner, a self-organizing synchronization network is provided.

Claims (54)

1. A method for electing a session leader in a computer network of a plurality of separate devices in a computer network session for playback of audio and/or video from a source in a synchronized manner, wherein the session leader is one of the plurality of separate devices, wherein each of the plurality of separate devices in the computer network session are programmed to:

join the computer network session;

announce the computer network session to the plurality of separate devices; and

detect that the session leader of the computer network session is not present;

based on detecting that the session leader is not present:

participate in an election to elect a new session leader among the plurality of separate devices present in the computer network session according to a predetermined leader election algorithm; and

take a role as the session leader based on the predetermined leader election algorithm;

transmit synchronization information to a first device of the plurality of separate devices at a first polling frequency; and

transmit the synchronization information to a second device of the plurality of separate devices at a second polling frequency, wherein the second polling frequency is different from the first polling frequency.

2. The method according to claim 1 , wherein said leader election algorithm comprises:

selecting a random number in a preselected number interval,

transmitting the random number to the plurality of separate devices present in the computer network session,

receiving random numbers selected by the plurality of separate devices present in the computer network session,

electing the new session leader in response to a result of processing the selected random number and the received random numbers according to a predetermined selection criterion.

3. The method according to claim 2 , wherein said leader election algorithm comprises electing the new session leader based on a separate device of the plurality of separate devices having the highest random number.

4. The method according to claim 2 , wherein, after taking the role of the session leader, the session leader identifies itself to the other separate devices in the computer network session.

5. The method according to claim 1 , wherein based on taking the role of the session leader, each of the plurality of separate devices in the computer network session are further programmed to:

control streaming of audio and/or video data from the source, wherein the source comprises at least one of a smartphone or a server streaming the audio and/or video to the session leader.

6. The method according to claim 1 , wherein based on taking the role of the session leader, each of the plurality of separate devices in the computer network session are further programmed to:

a stream the audio and/or video from the source to the plurality of separate devices in the computer network session.

7. The method according to claim 1 , wherein at least one of the plurality of separate devices comprises a loudspeaker configured to playback audio of the audio and/or video from the source streamed to the at least one of the plurality of separate devices in the computer network session synchronized based on the synchronization information.

8. The method according to claim 1 , wherein at least one of the plurality of separate devices comprises a display configured to display video of the audio and/or video from the source streamed to the at least one of the plurality of separate devices in the computer network session synchronized based on the synchronization information.

9. The method according to claim 1 , wherein the computer network is a wireless computer network.

10. The method according to claim 1 , wherein said leader election algorithm comprises electing the separate device with the lowest random number the new session leader.

11. The method according to claim 1 ; wherein the first polling frequency is based on a first duration of time in which the first device has joined the computer network session and second polling frequency is based on a second duration of time in which the second device has joined the computer network session.

12. The method according to claim 11 , wherein each of the plurality of separate devices in the computer network session are further programmed to:

configure the first polling frequency while the first device is joined to the computer network session; and

configure the second polling frequency while the second device is joined to the computer network session.

13. The method according to claim 1 , wherein based on taking the role of the session leader, each of the plurality of separate devices in the computer network session are further programmed to:

receive a remote control command for controlling the computer network session; and

synchronize execution of the remote control command by the plurality of separate devices in the computer network session.

14. A non-transitory, computer-readable device having instructions stored thereon that, when executed by a device, cause the device to perform operations comprising:

joining a computer network session comprising a plurality of separate devices;

announcing the computer network session to the plurality of separate devices; and

detecting that a session leader of the computer network session is not present;

based on detecting that the session leader is not present:

participating in an election to elect, for the computer network session, a session leader among the plurality of separate devices in the computer network session according to a predetermined leader election algorithm; and

taking a role as the session leader based on the predetermined leader election algorithm;

receiving a first request for synchronization information from a first device of the plurality of separate devices at a first polling frequency; and

receiving a second request the synchronization information from a second device of the plurality of separate devices at a second polling frequency, wherein the second polling frequency is different from the first polling frequency.

15. The non-transitory, tangible computer-readable device according to claim 14 , wherein said leader election algorithm comprises electing the new session leader as the separate device with the lowest random number.

16. The non-transitory, tangible computer-readable device according to claim 14 , wherein the first polling frequency is based on a first duration of time in which the first device has joined the computer network session and second polling frequency is based on a second duration of time in which the second device has joined the computer network session.

17. A device comprising a processor and a network interface arranged to receive audio and/or video via a computer network session for playback of audio and/or video from a source in a synchronized manner from a source in a synchronized manner in response to synchronization information from a session leader, wherein the processor is programmed to perform operations, the operations comprising:

joining the computer network session comprising a plurality of separate devices;

announcing the computer network session to the plurality of separate devices; and

detecting that the session leader of the computer network session is not present;

based on detecting that the session leader is not present:

participating in an election to elect, for the computer network session, the session leader among the plurality of separate devices present in the computer network session according to a predetermined leader election algorithm; and

taking a role as the session leader based on the predetermined leader election algorithm;

transmitting synchronization information to a first device of the plurality of separate devices at a first polling frequency; and

transmitting the synchronization information to a second device of the plurality of separate devices at a second polling frequency wherein the second polling frequency is different from the first polling frequency.

18. The device according to claim 17 , wherein said leader election algorithm comprises electing the separate device with the lowest random number as the session leader.

19. The device according to claim 17 , wherein said leader election algorithm comprises electing the separate device with the lowest random number the new session leader.

20. The device according to claim 17 , wherein the first polling frequency is based on a first duration of time in which the first device has joined the computer network session and second polling frequency is based on a second duration of time in which the second device has joined the computer network session.

Assignments (5)
SECURITY INTEREST Recorded Sep 18, 2024
From: ROKU, INC.
To: CITIBANK, N.A.
Reel/Frame 068982/0377 →
TERMINATION AND RELEASE OF INTELLECTUAL PROPERTY SECURITY AGREEMENT (REEL/FRAME 048385/0375) Recorded Feb 22, 2023
From: MORGAN STANLEY SENIOR FUNDING, INC.
To: ROKU, INC.
Reel/Frame 062826/0001 →
PATENT SECURITY AGREEMENT Recorded Feb 20, 2019
From: ROKU, INC.
To: MORGAN STANLEY SENIOR FUNDING, INC.
Reel/Frame 048385/0375 →
SHARE SALE AND PURCHASE AGREEMENT Recorded Sep 21, 2018
From: DYNASTROM APS
To: ROKU, INC.
Reel/Frame 046956/0772 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 1, 2017
From: MØLLER, BRIAN THOFT MOTH; REESE, BJØRN; FLEISCHER, PAUL
To: DYNASTROM APS
Reel/Frame 043157/0265 →
Priority Claims (1)
DK 2015 70048 · Jan 28, 2015 · national
Continuity (1)
Related Publication 20180020253A1 · Jan 18, 2018
Cited By (2)
US 12,418,870 US 12,645,417