Encoded audio synchronization
First Claim
1. A method of synchronizing playback of audio over a plurality of wireless speaker packages that are each adapted to play audio, where the audio comprises an audio track or stream that comprises a plurality of frames of encoded audio data, wherein one of the plurality of wireless speaker packages is a master playback device that receives encoded audio data from an audio source and distributes the encoded audio data to the rest of the plurality of wireless speaker packages, which function as slave playback devices, wherein each of the wireless speaker packages comprises an encoded data buffer that stores frames of encoded audio data, and wherein each of the wireless speaker packages comprises a decoder that decodes encoded data that is stored in the encoded data buffer of the respective wireless speaker package and a decoded data buffer that stores frames of decoded audio data, and wherein the master playback device and the slave playback devices have clocks that are synchronized, the method comprising:
- the master playback device determining and providing to the slave playback devices a play at time for audio received from an audio source, wherein the play at time is provided to the slave playback devices separately from the audio data and is provided only once per track or stream;
using the decoder of the master playback device to determine an offset time for each of a plurality of frames of encoded audio data, where the offset time defines the time after the play at time when the playback of the respective frame is to begin;
using the decoder of the master playback device to determine a checksum on the decoded audio samples or the quantity of audio samples in the frame for each frame of encoded audio data stored in the encoded data buffer of the master playback device;
inserting the determined offset time into the respective frame of encoded audio data;
storing in the encoded data buffer of the master playback device the encoded frames along with the inserted determined offset times and the determined checksum on the decoded audio samples or the quantity of audio samples for the respective frames;
distributing frames from the master encoded data buffer to each of the slave playback devices;
wherein the slave playback devices also determine the checksum on the decoded audio samples or the quantity of audio samples in the frame, for each frame of encoded audio data they receive from the master playback device;
wherein the slave playback devices synchronize playback of audio with the master playback device based at least in part on a match between the determined checksum on the decoded audio samples or the quantity of audio samples in the frame determined by the master and that was stored in the master encoded data buffer along with the respective frame, and the checksum on the decoded audio samples or the quantity of audio samples in the frame as determined by the slave playback device; and
wherein the slave playback devices synchronize playback of audio with the master playback device beginning by playing a first frame when the play at time plus the offset for that first frame equals the current synchronized clock time;
wherein a joining slave playback device is configured to join an ongoing playback of a track or stream by the master playback device, by;
the joining slave playback device pulling from the encoded data buffer of the master playback device a plurality of encoded frames along with the inserted determined offset times and the determined checksums or the quantity of audio samples for each of the plurality of pulled encoded frames; and
placing the decoders of the joining slave playback device and the master playback device in the same state, wherein the state is based on a match between the master playback device and the joining slave playback device on the checksum on the audio samples or the quantity of audio samples in the plurality of pulled encoded frames.
1 Assignment
0 Petitions
Accused Products
Abstract
A method of synchronizing playback of audio over a plurality of wireless speaker packages that are each adapted to play audio, where the audio comprises a plurality of frames of encoded audio data. The method includes determining an offset time of a frame of encoded audio data, where the offset time corresponds to the time when the frame playback is to begin, and inserting the determined offset time into the frame of encoded audio data.
34 Citations
14 Claims
-
1. A method of synchronizing playback of audio over a plurality of wireless speaker packages that are each adapted to play audio, where the audio comprises an audio track or stream that comprises a plurality of frames of encoded audio data, wherein one of the plurality of wireless speaker packages is a master playback device that receives encoded audio data from an audio source and distributes the encoded audio data to the rest of the plurality of wireless speaker packages, which function as slave playback devices, wherein each of the wireless speaker packages comprises an encoded data buffer that stores frames of encoded audio data, and wherein each of the wireless speaker packages comprises a decoder that decodes encoded data that is stored in the encoded data buffer of the respective wireless speaker package and a decoded data buffer that stores frames of decoded audio data, and wherein the master playback device and the slave playback devices have clocks that are synchronized, the method comprising:
-
the master playback device determining and providing to the slave playback devices a play at time for audio received from an audio source, wherein the play at time is provided to the slave playback devices separately from the audio data and is provided only once per track or stream; using the decoder of the master playback device to determine an offset time for each of a plurality of frames of encoded audio data, where the offset time defines the time after the play at time when the playback of the respective frame is to begin; using the decoder of the master playback device to determine a checksum on the decoded audio samples or the quantity of audio samples in the frame for each frame of encoded audio data stored in the encoded data buffer of the master playback device; inserting the determined offset time into the respective frame of encoded audio data; storing in the encoded data buffer of the master playback device the encoded frames along with the inserted determined offset times and the determined checksum on the decoded audio samples or the quantity of audio samples for the respective frames; distributing frames from the master encoded data buffer to each of the slave playback devices; wherein the slave playback devices also determine the checksum on the decoded audio samples or the quantity of audio samples in the frame, for each frame of encoded audio data they receive from the master playback device; wherein the slave playback devices synchronize playback of audio with the master playback device based at least in part on a match between the determined checksum on the decoded audio samples or the quantity of audio samples in the frame determined by the master and that was stored in the master encoded data buffer along with the respective frame, and the checksum on the decoded audio samples or the quantity of audio samples in the frame as determined by the slave playback device; and wherein the slave playback devices synchronize playback of audio with the master playback device beginning by playing a first frame when the play at time plus the offset for that first frame equals the current synchronized clock time; wherein a joining slave playback device is configured to join an ongoing playback of a track or stream by the master playback device, by; the joining slave playback device pulling from the encoded data buffer of the master playback device a plurality of encoded frames along with the inserted determined offset times and the determined checksums or the quantity of audio samples for each of the plurality of pulled encoded frames; and placing the decoders of the joining slave playback device and the master playback device in the same state, wherein the state is based on a match between the master playback device and the joining slave playback device on the checksum on the audio samples or the quantity of audio samples in the plurality of pulled encoded frames. - View Dependent Claims (2, 3, 4, 6, 7, 8, 9, 13, 14)
-
-
5. A method of synchronizing playback of audio over a master wireless speaker package and a slave wireless speaker package that are each adapted to play audio, where the audio comprises an audio track or stream that comprises a plurality of frames of encoded audio data, where the master wireless speaker package plays frames of decoded audio data that each comprise a frame header that includes a checksum on decoded audio samples or the quantity of audio samples in the frame, and where the slave wireless speaker package receives from the master wireless speaker package encoded frames that include in the frame header the checksum on decoded audio samples or the quantity of audio samples in the frame, and wherein the master wireless speaker package and the slave wireless speaker package have clocks that are synchronized to a common reference clock, the method comprising:
-
the slave wireless speaker package receiving from the master wireless speaker package a play at time for audio received from an audio source, wherein the play at time is provided to the slave wireless speaker package separately from the audio data and is provided only once per track or stream; the slave wireless speaker package receiving from the master wireless speaker package frames of audio data that each comprise an offset time that defines the time after the play at time when the playback of the respective frame is to begin; the slave wireless speaker package determining the checksum on decoded audio samples or the quantity of audio samples in a frame that it received from the master wireless speaker package; the slave wireless speaker package beginning playback based at least in part on the slave wireless speaker package determining a match between the checksum on decoded audio samples or the quantity of audio samples in the frame determined by the master, and the checksum on decoded audio samples or the quantity of audio samples in the frame as determined by the slave; and wherein the slave wireless speaker package synchronizes playback of audio beginning by playing a first frame when the play at time plus the offset for that first frame equals the current synchronized clock time; wherein a joining slave playback device is configured to join an ongoing playback of a track or stream by the master playback device, by; the joining slave playback device pulling from the encoded data buffer of the master playback device a plurality of encoded frames along with the inserted determined offset times and the determined checksums or the quantity of audio samples for each of the plurality of pulled encoded frames; and placing the decoders of the joining slave playback device and the master playback device in the same state, wherein the state is based on a match between the master playback device and the joining slave playback device on the checksum on the audio samples or the quantity of audio samples in the plurality of pulled encoded frames. - View Dependent Claims (10, 11, 12)
-
Specification