IP Library Granted Patent US 9,898,532
Granted Patent B2
US 9,898,532 · App. 15/227,148 · Granted Feb 20, 2018

Resolving inconsistent queues

Inventor: Arthur L. Coburn, IV (Lexington, MA)
Assignee: Sonos, Inc.
G06F17/3074G06F12/00G06F15/16H04L65/60H04N21/43615H04N21/4583H04N21/4825H04N21/8113
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,898,532
App. No.
15/227,148
Granted
Feb 20, 2018
Kind
B2
Abstract

Embodiments described herein may involve inconsistent queues. An example implementation may involve a computing device receiving a message indicating a playback queue corresponding to a playback zone of a media playback system. The playback queue may include first media items queued in a first order for playback by the playback zone. The computing device determines that a playlist at the computing device is to be queued for playback in the playback queue corresponding to the playback zone, the playlist including second media items in a second order. The computing device determines that the first media items in the first order is different from the second media items in the second order, and based on the determination, causes the first media items in the playback queue to be replaced with the second media items in the playlist.

Claims (67)

1. A method comprising:

receiving, by a first control device via a control interface of a streaming media service, input data representing a selection of a playlist for playback in a playback zone of a media playback system, wherein the playlist includes one or more first media items of the streaming media service in a first playback order, and wherein the playback zone comprises at least one playback device of the media playback system;

in response to receiving the input data representing the selection of the playlist, sending, by the first control device via a network interface, an instruction to queue the playlist in a playback queue of the playback zone, wherein the instruction causes the playback zone to create a private queue for the control interface of the streaming media service;

after sending the instruction to queue the playlist in the playback queue of the playback zone, receiving, by the first control device via the network interface, a message representing one or more state variables indicating a current state of the playback zone, the one or more state variables indicating that the playback queue includes one or more second media items in a second playback order;

responsive to receiving the message representing the one or more state variables, determining, by the first control device, whether the one or more first media items in the first playback order are different from the one or more second media items in the second playback order such that a second control device modified the private queue for the control interface of the streaming media service via another control interface; and

responsive to the determination that the one or more first media items in the first playback order are different from the one or more second media items in the second playback order, causing, by the first control device via the network interface, the one or more second media items in the playback queue to be replaced with the one or more first media items of the playlist.

2. The method of claim 1 , wherein receiving the message representing the one or more state variables indicating the current state of the playback zone comprises receiving, from the at least one playback device, a queue identification that indicates a version of the playback queue corresponding to the playback zone, and wherein the method further comprises:

receiving, by the first control device, an input indicating an alteration of the playlist at the first control device, wherein the alteration of the playlist comprises one or more of (i) modifying the one or more first media items and (ii) modifying the first playback order of the one or more first media items;

based on the received input indicating an alteration of the playlist at the first control device, performing the alteration of the playlist at the first control device; and

after performing the alteration of the playlist at the first control device, sending a message to the at least one playback device indicating: (i) the altered playlist at the first control device, and (ii) the received queue identification.

3. The method of claim 1 , further comprising:

before receiving the message representing the one or more state variables, sending, by the first control device to the playback device, (i) data indicating the one or more first media items in the playback queue, and (ii) a queue identification indicating a version of the playback queue of the playback zone.

4. The method of claim 1 , wherein the playback zone is a first playback zone, wherein the media playback system comprises a second playback zone, and wherein the method further comprises:

before causing the one or more second media items in the playback queue to be replaced with the one or more first media items in the playlist, updating a queue identification, wherein the updated queue identification indicates a version of the playback queue after the one or more first media items replaced the one or more second media items; and

after updating the queue identification, causing the updated queue identification to be sent to at least one playback device in the second playback zone.

5. The method of claim 4 , further comprising:

before updating the queue identification, detecting by the first control device, an input indicating an alteration of the playlist at the first control device, wherein the alteration of the playlist comprises one or more of (i) modifying the one or more first media items and (ii) modifying the first playback order of the one or more first media items; and

deferring the alteration of the playlist at the first control device until after the queue identification is updated.

6. The method of claim 1 , wherein the message indicating the playback queue further indicates a first queue identification that specifies a first version of the playback queue corresponding to the playback zone, the method further comprising:

prior to receiving the message, storing in memory, by the first control device, a second queue identification that specifies a second version of the playback queue of the playback zone, and wherein determining whether the one or more first media items in the first playback order are different from the one or more second media items in the second playback order comprises determining, by the first control device, that the first queue identification is different from the second queue identification.

7. The method of claim 6 , wherein the method further comprises:

replacing in memory, by the first control device, the second queue identification with the first queue identification.

8. The method of claim 1 , further comprising:

after causing the one or more second media items in the playback queue to be replaced with the one or more first media items in the playlist, receiving, by the first control device from the playback device, an indication that the playback queue corresponding to the playback zone matches the playlist at the first control device.

9. The method of claim 1 , wherein causing the one or more second media items in the playback queue to be replaced with the one or more first media items in the playlist comprises:

determining that the at least one playback device in the playback zone is playing a particular media item in the one or more second media items queued in the first playback order; and

causing the at least one playback device in the playback zone to complete playback of the particular media item before causing the one or more second media items in the playback queue to be replaced with the one or more first media items in the playlist.

10. A first control device comprising:

a network interface;

one or more processors; and

tangible, non-transitory computer-readable medium having stored thereon instructions that, when executed by the one or more processors, cause the first control device to perform functions comprising:

receiving, via a control interface of a streaming media service, input data representing a selection of a playlist for playback in a playback zone of a media playback system, wherein the playlist includes one or more first media items of the streaming media service in a first playback order, and wherein the playback zone comprises at least one playback device of the media playback system;

in response to receiving the input data representing the selection of the playlist, sending, via the network interface, an instruction to queue the playlist in a playback queue of the playback zone, wherein the instruction causes the playback zone to create a private queue for the control interface of the streaming media service;

after sending the instruction to queue the playlist in the playback queue of the playback zone, receiving, via the network interface, a message representing one or more state variables indicating a current state of the playback zone, the one or more state variables indicating that the playback queue includes one or more second media items in a second playback order;

responsive to receiving the message representing the one or more state variables, determining whether the one or more first media items in the first playback order are different from the one or more second media items in the second playback order such that a second control device modified the private queue for the control interface of the streaming media service via another control interface; and

responsive to the determination that the one or more first media items in the first playback order are different from the one or more second media items in the second playback order, causing, via the network interface, the one or more second media items in the playback queue to be replaced with the one or more first media items of the playlist.

11. The first control device of claim 10 , wherein receiving the message representing the one or more state variables indicating the current state of the playback zone comprises receiving, from the at least one playback device, a queue identification that indicates a version of the playback queue corresponding to the playback zone, and wherein the functions further comprise:

receiving an input indicating an alteration of the playlist at the first control device, wherein the alteration of the playlist comprises one or more of (i) modifying the one or more first media items and (ii) modifying the first playback order of the one or more first media items;

based on the received input indicating an alteration of the playlist at the first control device, performing the alteration of the playlist at the first control device; and

after performing the alteration of the playlist at the first control device, sending a message to the at least one playback device indicating: (i) the altered playlist at the first control device, and (ii) the received queue identification.

12. The first control device of claim 10 , wherein the functions further comprise:

before receiving the message representing the one or more state variables, sending, by the first control device to the playback device, (i) data indicating the one or more first media items in the playback queue, and (ii) a queue identification indicating a version of the playback queue of the playback zone.

13. The first control device of claim 10 , wherein the playback zone is a first playback zone, wherein the media playback system comprises a second playback zone, and wherein the functions further comprise:

before causing the one or more second media items in the playback queue to be replaced with the one or more first media items in the playlist, updating a queue identification, wherein the updated queue identification indicates a version of the playback queue after the one or more first media items replaced the one or more second media items; and

after updating the queue identification, causing the updated queue identification to be sent to at least one playback device in the second playback zone.

14. The first control device of claim 10 , wherein the message indicating the playback queue further indicates a first queue identification that specifies a first version of the playback queue corresponding to the playback zone, wherein the functions further comprise:

prior to receiving the message, storing in memory, by the first control device, a second queue identification that specifies a second version of the playback queue of the playback zone, and wherein determining whether the one or more first media items in the first playback order are different from the one or more second media items in the second playback order comprises determining, by the first control device, that the first queue identification is different from the second queue identification.

15. The first control device of claim 10 , wherein the functions further comprise:

after causing the one or more second media items in the playback queue to be replaced with the one or more first media items in the playlist, receiving, by the first control device from the playback device, an indication that the playback queue corresponding to the playback zone matches the playlist at the first control device.

16. The first control device of claim 10 , wherein causing the one or more second media items in the playback queue to be replaced with the one or more first media items in the playlist comprises:

determining that the at least one playback device in the playback zone is playing a particular media item in the one or more second media items queued in the first playback order; and

causing the at least one playback device in the playback zone to complete playback of the particular media item before causing the one or more second media items in the playback queue to be replaced with the one or more first media items in the playlist.

17. Tangible, non-transitory computer-readable medium having stored thereon instructions that, when executed by one or more processors of a first control device, cause the first control device to perform functions comprising:

receiving, via a control interface of a streaming media service, input data representing a selection of a playlist for playback in a playback zone of a media playback system, wherein the playlist includes one or more first media items of the streaming media service in a first playback order, and wherein the playback zone comprises at least one playback device of the media playback system;

in response to receiving the input data representing the selection of the playlist, sending, via a network interface, an instruction to queue the playlist in a playback queue of the playback zone, wherein the instruction causes the playback zone to create a private queue for the control interface of the streaming media service;

after sending the instruction to queue the playlist in the playback queue of the playback zone, receiving, via the network interface, a message representing one or more state variables indicating a current state of the playback zone, the one or more state variables indicating that the playback queue includes one or more second media items in a second playback order;

responsive to receiving the message representing the one or more state variables, determining whether the one or more first media items in the first playback order are different from the one or more second media items in the second playback order such that a second control device modified the private queue for the control interface of the streaming media service via another control interface; and

responsive to the determination that the one or more first media items in the first playback order are different from the one or more second media items in the second playback order, causing, via the network interface, the one or more second media items in the playback queue to be replaced with the one or more first media items of the playlist.

18. The tangible, non-transitory computer-readable medium of claim 17 , wherein receiving the message representing the one or more state variables indicating the current state of the playback zone comprises receiving, from the at least one playback device, a queue identification that indicates a version of the playback queue corresponding to the playback zone, and wherein the functions further comprise:

receiving an input indicating an alteration of the playlist at the first control device, wherein the alteration of the playlist comprises one or more of (i) modifying the one or more first media items and (ii) modifying the first playback order of the one or more first media items;

based on the received input indicating an alteration of the playlist at the first control device, performing the alteration of the playlist at the first control device; and

after performing the alteration of the playlist at the first control device, sending a message to the at least one playback device indicating: (i) the altered playlist at the first control device, and (ii) the received queue identification.

19. The tangible, non-transitory computer-readable medium of claim 17 , wherein the playback zone is a first playback zone, wherein the media playback system comprises a second playback zone, and wherein the functions further comprise:

before causing the one or more second media items in the playback queue to be replaced with the one or more first media items in the playlist, updating a queue identification, wherein the updated queue identification indicates a version of the playback queue after the one or more first media items replaced the one or more second media items; and

after updating the queue identification, causing the updated queue identification to be sent to at least one playback device in the second playback zone.

20. The tangible, non-transitory computer-readable medium of claim 17 , wherein the message indicating the playback queue further indicates a first queue identification that specifies a first version of the playback queue corresponding to the playback zone, wherein the functions further comprise:

prior to receiving the message, storing, in memory, a second queue identification that specifies a second version of the playback queue of the playback zone, and wherein determining whether the one or more first media items in the first playback order are different from the one or more second media items in the second playback order comprises determining, by the first control device, that the first queue identification is different from the second queue identification.

Assignments (4)
RELEASE OF SECURITY INTEREST Recorded Oct 18, 2021
From: JPMORGAN CHASE BANK, N.A.
To: SONOS, INC.
Reel/Frame 058213/0597 →
SECURITY AGREEMENT Recorded Oct 15, 2021
From: SONOS, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 058123/0206 →
SECURITY INTEREST Recorded Aug 30, 2018
From: SONOS, INC.
To: JPMORGAN CHASE BANK, N.A.
Reel/Frame 046991/0433 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Aug 3, 2016
From: COBURN, ARTHUR L, IV
To: SONOS, INC.
Reel/Frame 039330/0325 →
Continuity (2)
Continuation 14330694 · Jul 14, 2014
Related Publication 20160342605A1 · Nov 24, 2016