Synchronizing operations among a plurality of independently clocked digital data processing devices
First Claim
1. A first zone player comprising:
- a network interface that is configured to provide an interconnection with at least one data network;
a local clock that provides a clock time of the first zone player;
at least one processor;
a tangible, non-transitory computer-readable medium; and
program instructions stored on the tangible, non-transitory computer-readable medium that, when executed by the at least one processor, cause the first zone player to perform functions comprising;
operating as a standalone zone player that is configured to play back audio individually rather than in synchrony with another zone player;
while operating as a standalone zone player, receiving a request to enter into a synchrony group with at least a second zone player that is communicatively coupled with the first zone player over a local area network (LAN), wherein the second zone player comprises its own respective local clock that provides a respective clock time of the second zone player;
in response to receiving the request to enter into the synchrony group, entering into the synchrony group with the second zone player and transitioning from operating as a standalone zone player to operating as a slave zone player of the synchrony group that is configured to play back audio in synchrony with the second zone player;
while operating as the slave zone player of the synchrony group;
receiving, from the second zone player over the LAN, clock information that provides an indication of the clock time of the local clock of the second zone player;
based on the received clock information, determining a differential between the clock time of the local clock of the first zone player and the clock time of the local clock of the second zone player;
receiving, from the second zone player over the LAN, (a) audio information for at least a first audio track and (b) playback timing information associated with the audio information for the first audio track that comprises an indicator of a first future time, relative to the clock time of the local clock of the second zone player, at which the first and second zone players are to begin playing back the audio information for the first audio track in synchrony;
updating the first future time to account for the determined differential between the clock time of the local clock of the first zone player and the clock time of the local clock of the second zone player;
adjusting a sample rate of at least a portion of the audio information for the first audio track to compensate for a difference between a clock rate of the local clock of the first zone player and a clock rate of the second zone player; and
when the clock time of the first zone player reaches the updated first future time, beginning to play back the audio information for the first audio track in synchrony with the second zone player.
2 Assignments
0 Petitions
Accused Products
Abstract
Example systems, apparatus, and methods receive audio information including a plurality of frames from a source device, wherein each frame of the plurality of frames includes one or more audio samples and a time stamp indicating when to play the one or more audio samples of the respective frame. In an example, the time stamp is updated for each of the plurality of frames using a time differential value determined between clock information received from the source device and clock information associated with the device. The updated time stamp is stored for each of the plurality of frames, and the audio information is output based on the plurality of frames and associated updated time stamps. A number of samples per frame to be output is adjusted based on a comparison between the updated time stamp for the frame and a predicted time value for play back of the frame.
915 Citations
30 Claims
-
1. A first zone player comprising:
-
a network interface that is configured to provide an interconnection with at least one data network; a local clock that provides a clock time of the first zone player; at least one processor; a tangible, non-transitory computer-readable medium; and program instructions stored on the tangible, non-transitory computer-readable medium that, when executed by the at least one processor, cause the first zone player to perform functions comprising; operating as a standalone zone player that is configured to play back audio individually rather than in synchrony with another zone player; while operating as a standalone zone player, receiving a request to enter into a synchrony group with at least a second zone player that is communicatively coupled with the first zone player over a local area network (LAN), wherein the second zone player comprises its own respective local clock that provides a respective clock time of the second zone player; in response to receiving the request to enter into the synchrony group, entering into the synchrony group with the second zone player and transitioning from operating as a standalone zone player to operating as a slave zone player of the synchrony group that is configured to play back audio in synchrony with the second zone player; while operating as the slave zone player of the synchrony group; receiving, from the second zone player over the LAN, clock information that provides an indication of the clock time of the local clock of the second zone player; based on the received clock information, determining a differential between the clock time of the local clock of the first zone player and the clock time of the local clock of the second zone player; receiving, from the second zone player over the LAN, (a) audio information for at least a first audio track and (b) playback timing information associated with the audio information for the first audio track that comprises an indicator of a first future time, relative to the clock time of the local clock of the second zone player, at which the first and second zone players are to begin playing back the audio information for the first audio track in synchrony; updating the first future time to account for the determined differential between the clock time of the local clock of the first zone player and the clock time of the local clock of the second zone player; adjusting a sample rate of at least a portion of the audio information for the first audio track to compensate for a difference between a clock rate of the local clock of the first zone player and a clock rate of the second zone player; and when the clock time of the first zone player reaches the updated first future time, beginning to play back the audio information for the first audio track in synchrony with the second zone player. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18)
-
-
19. Tangible, non-transitory computer-readable media comprising instructions encoded therein, wherein the instructions, when executed by one or more processors, cause a first zone player to perform a method comprising:
-
the first zone player operating as a standalone zone player that is configured to play back audio individually rather than in synchrony with another zone player, wherein the first zone player comprises a local clock that provides a clock time of the first zone player; while operating as a standalone zone player, the first zone player receiving a request to enter into a synchrony group with at least a second zone player that is communicatively coupled with the first zone player over a local area network (LAN), wherein the second zone player comprises its own respective local clock that provides a respective clock time of the second zone player; in response to receiving the request to enter into the synchrony group, the first zone player entering into the synchrony group with the second zone player and transitioning from operating as a standalone zone player to operating as a slave zone player of the synchrony group that is configured to play back audio in synchrony with the second zone player; while operating as the slave zone player of the synchrony group, the first zone player; receiving, from the second zone player over the LAN, clock information that provides an indication of the clock time of the local clock of the second zone player; based on the received clock information, determining a differential between the clock time of the local clock of the first zone player and the clock time of the local clock of the second zone player; receiving, from the second zone player over the LAN, (a) audio information for at least a first audio track and (b) playback timing information associated with the audio information for the first audio track that comprises an indicator of a first future time, relative to the clock time of the local clock of the second zone player, at which the first and second zone players are to begin playing back the audio information for the first audio track in synchrony; updating the first future time to account for the determined differential between the clock time of the local clock of the first zone player and the clock time of the local clock of the second zone player; adjusting a sample rate of at least a portion of the audio information for the first audio track to compensate for a difference between a clock rate of the local clock of the first zone player and a clock rate of the second zone player; and when the clock time of the first zone player reaches the updated first future time, beginning to play back the audio information for the first audio track in synchrony with the second zone player. - View Dependent Claims (20, 21, 22, 23, 24)
-
-
25. A method comprising:
-
a first zone player operating as a standalone zone player that is configured to play back audio individually rather than in synchrony with another zone player, wherein the first zone player comprises a local clock that provides a clock time of the first zone player; while operating as a standalone zone player, the first zone player receiving a request to enter into a synchrony group with at least a second zone player that is communicatively coupled with the first zone player over a local area network (LAN), wherein the second zone player comprises its own respective local clock that provides a respective clock time of the second zone player; in response to receiving the request to enter into the synchrony group, the first zone player entering into the synchrony group with the second zone player and transitioning from operating as a standalone zone player to operating as a slave zone player of the synchrony group that is configured to play back audio in synchrony with the second zone player; while operating as the slave zone player of the synchrony group, the first zone player; receiving, from the second zone player over the LAN, clock information that provides an indication of the clock time of the local clock of the second zone player; based on the received clock information, determining a differential between the clock time of the local clock of the first zone player and the clock time of the local clock of the second zone player; receiving, from the second zone player over the LAN, (a) audio information for at least a first audio track and (b) playback timing information associated with the audio information for the first audio track that comprises an indicator of a first future time, relative to the clock time of the local clock of the second zone player, at which the first and second zone players are to begin playing back the audio information for the first audio track in synchrony; updating the first future time to account for the determined differential between the clock time of the local clock of the first zone player and the clock time of the local clock of the second zone player; adjusting a sample rate of at least a portion of the audio information for the first audio track to compensate for a difference between a clock rate of the local clock of the first zone player and a clock rate of the second zone player; and when the clock time of the first zone player reaches the updated first future time, beginning to play back the audio information for the first audio track in synchrony with the second zone player. - View Dependent Claims (26, 27, 28, 29, 30)
-
Specification