US8239748B1 - Media stream synchronization using device and host clocks - Google Patents

Media stream synchronization using device and host clocks Download PDF

Info

Publication number
US8239748B1
US8239748B1 US12/709,317 US70931710A US8239748B1 US 8239748 B1 US8239748 B1 US 8239748B1 US 70931710 A US70931710 A US 70931710A US 8239748 B1 US8239748 B1 US 8239748B1
Authority
US
United States
Prior art keywords
media stream
media
stream
computer system
output
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active, expires
Application number
US12/709,317
Inventor
Jeff Moore
Jean-Michel Berthoud
Tim Cherna
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Apple Inc
Original Assignee
Apple Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Apple Inc filed Critical Apple Inc
Priority to US12/709,317 priority Critical patent/US8239748B1/en
Application granted granted Critical
Publication of US8239748B1 publication Critical patent/US8239748B1/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/40Information retrieval; Database structures therefor; File system structures therefor of multimedia data, e.g. slideshows comprising image and additional audio data
    • G06F16/43Querying
    • G06F16/438Presentation of query results
    • G06F16/4387Presentation of query results by the use of playlists
    • G06F16/4393Multimedia presentations, e.g. slide shows, multimedia albums

Definitions

  • the present invention relates generally to synchronization of media streams, and more specifically to utilizing clocks on multiple media devices and on a single host to synchronize multiple media streams.
  • synchronization can be achieved by the associated device driver delaying the audio output until a vertical synchronization cycle begins, adjusted for the time of the audio output latency.
  • This solution only works for a single device.
  • the synchronizing device driver is not aware of other output devices, and the other output devices and their controlling software have no information concerning the operations of the synchronizing device driver.
  • a synchronization manager synchronizes multiple media streams.
  • the synchronization manager queries a media stream output device associated with each media stream to synchronize.
  • the synchronization manager receives the current device clock time of each device, each device's next available media stream output time, according to its device clock, and each device's delta between available media stream output times.
  • the synchronization manager determines an earliest available media stream output time common to each media stream output device, and synchronizes the output of the media streams by providing each stream to its associated output device at the earliest available common output time.
  • the synchronization manager defines one media stream as a master and slaves other stream(s) off the master stream.
  • the synchronization manager does not define a master, and instead independently sends each media stream to its associated output device as close to the common output time as possible.
  • FIG. 1 is a block diagram, illustrating a high level overview of a system for practicing some embodiments of the present invention.
  • FIG. 2 is a flowchart, illustrating steps for synchronizing multiple media streams, according to some embodiments of the present invention.
  • FIG. 3 is a flowchart, illustrating steps for correlating each received device clock time into a common host clock time, according to some embodiments of the present invention.
  • FIG. 1 illustrates a high level overview of a system 100 for performing some embodiments of the present invention.
  • a synchronization manager 101 synchronizes the output of multiple media streams. It is to be understood that although the synchronization manager 101 is illustrated as a single entity, as the term is used herein a synchronization manager 101 refers to a collection of functionalities which can be implemented as software, hardware, firmware or any combination of the three. Where a synchronization manager 101 is implemented as software, it can be implemented as a standalone program, but can also be implemented in other ways, for example as part of a larger program, as a plurality of separate programs, or as one or more statically or dynamically linked libraries.
  • FIG. 1 illustrates the synchronization of a video stream 103 , an audio stream 105 and an additional media stream 107 . It is to be understood that the present invention is not limited to the illustrated types or number of media streams.
  • the synchronization manager 101 synchronizes a variety of types of two or more media streams. Examples of other media stream types are a closed captioning data stream, a stream of MIDI events, a stream of text to Braille data and a stream of side band data. Streams of any type of data that can be metered by time can be synchronized according to the present invention. Other examples of data types will be apparent to those of ordinary skill in the relevant art in light of this specification.
  • Each media stream type is accompanied by an associated output device 109 (in some instances, more than one data stream type can be processed by a single device 109 , e.g., audio and video).
  • FIG. 1 illustrates a video output device 109 , an audio output device 109 and an additional media output device 109 , but of course other device 109 types are possible.
  • the synchronization manager 101 sends a query 111 to each output device 109 , requesting the current time according to the device's 109 clock. Because each device 109 has its own hardware clock, the synchronization manager 101 gleans the local time according to each device 109 in order to facilitate the synchronization, as described further below. The synchronization manager 101 also requests the next available time at which each device 109 can begin outputting a received media stream. Recall that because of device 109 specific output latency and output timing constraints, the next available output time for each device 109 varies. Of course, each device 109 expresses its next available output time according to its own clock.
  • each device 109 requests the device's 109 delta between media stream output times.
  • Each device 109 has a specific amount of time between its possible output start times (e.g., in the case of a video device 109 , the time between vertical synchronization cycles). This information can be utilized by the synchronization manager 101 to facilitate the stream synchronization, as explained below.
  • the synchronization manager 101 Responsive to the queries 111 , the synchronization manager 101 receives the above-described timing data 113 from each output device 109 .
  • the synchronization manager 101 uses the timing data 113 from each device 109 to determine the earliest available common time 115 at which each device 109 can begin output of a received media stream. Because the synchronization manager 101 has the device clock time for each device 109 , the next available output start time for each device 109 and the delta between available start times for each device 109 , the synchronization manager 101 can calculate the earliest available start time 115 common to all devices 109 .
  • the mechanics of performing the relevant calculations will be apparent to those of ordinary skill in the art in light of this specification.
  • the synchronization manager 101 synchronizes the output of the multiple media streams by providing each media stream to its associated output device 109 at the calculated time 115 (optionally, within an acceptable margin of error).
  • the synchronization manager 101 performs this synchronization by slaving one or more media streams off a master stream. For example, in one embodiment the synchronization manager 101 synchronizes a video stream 103 and an audio stream 105 by slaving the audio stream 105 off the video stream 103 . In other embodiments, rather than defining one stream as a master and the other(s) as slave(s), the synchronization manager 101 instead individually sends each stream to its associated device 109 as close to the calculated common start time 115 as possible.
  • FIG. 2 illustrates steps for the synchronization manager 101 to synchronize multiple media streams, according to some embodiments of the present invention.
  • the synchronization manager 101 queries 201 the output devices 109 , as described above.
  • the synchronization manager 101 receives 203 the timing data 113 from each output device 109 .
  • the synchronization manager 101 uses the timing data 113 to determine 205 the next available common output time 115 , and synchronizes 207 the output of the media streams accordingly.
  • the synchronization manager 101 synchronizes 207 the output of the media streams by defining one stream as a master, and slaving 209 the other stream(s) off the master stream.
  • the synchronization manager 101 has the local device clock time of each device 109 .
  • the synchronization manager 101 correlates each received device clock time into a common host clock time. This process is illustrated in FIG. 3 , according to some embodiments of the present invention.
  • the synchronization manager 101 receives 301 the device clock time of each media stream output device 109 , and correlates 303 each received device clock time into host clock time (the time according to the clock of the computing device associated with the synchronization manager 101 , e.g., the clock of the central processing unit of the computing device on which the synchronization manager 101 is executing). With this correlation, the synchronization manager 101 can reference 101 events on the plurality of media stream output devices 109 in the common host clock time.
  • referencing of device 109 events in host clock time is not limited to referencing media stream start times.
  • the synchronization manager 101 can use the correlation of each device clock time into host time to calculate the time of the playback of specific frames and the like, by output devices 109 , in host clock time.
  • the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof.
  • the particular naming and division of the modules, features, attributes, methodologies, managers and other aspects are not mandatory or significant, and the mechanisms that implement the invention or its features may have different names, divisions and/or formats.
  • the modules, features, attributes, methodologies, managers and other aspects of the invention can be implemented as software, hardware, firmware or any combination of the three.
  • a component of the present invention is implemented as software, the component can be implemented as a standalone program, as part of a larger program, as a plurality of separate programs, as a statically or dynamically linked library, as a kernel loadable module, as a device driver, and/or in every and any other way known now or in the future to those of skill in the art of computer programming.
  • the present invention is in no way limited to implementation in any specific programming language, or for any specific operating system or environment. Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Databases & Information Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

A synchronization manager synchronizes multiple media streams. The synchronization manager queries a media stream output device associated with each media stream to synchronize, and in response receives the current device clock time of each device, each device's next available media stream output time, and each device's delta between available media stream output times. The synchronization manager uses this timing information to determine an earliest available media stream output time common to each media stream output device, and synchronizes the output of the media streams by providing each stream to its associated output device at the earliest available common output time.

Description

BACKGROUND
1. Field of Invention
The present invention relates generally to synchronization of media streams, and more specifically to utilizing clocks on multiple media devices and on a single host to synchronize multiple media streams.
2. Background of Invention
In a multimedia environment, it is often necessary to synchronize multiple streams of data (e.g., a video stream and an audio stream). Although synchronizing video with audio is a common example, such a challenge occurs whenever it is desired to simultaneously output at least two streams of data of any type that is metered by time. Although it is desirable to start each stream at the same time, simply simultaneously sending each media stream to its physical output hardware will not necessarily ensure synchronization. Physical output devices typically have constraints binding available output start times. For example, a video output device can only begin outputting received data at the beginning of a vertical synchronization cycle. Other devices such as audio are somewhat more flexible, but still have some inherent latency between the time data is received and the subsequent output time. Latency and constraints on possible output start times are a function of the specific hardware, and thus vary a great deal, not only between media types, but also from device to device.
When the video and audio streams are output by a common device, synchronization can be achieved by the associated device driver delaying the audio output until a vertical synchronization cycle begins, adjusted for the time of the audio output latency. However, this solution only works for a single device. The synchronizing device driver is not aware of other output devices, and the other output devices and their controlling software have no information concerning the operations of the synchronizing device driver.
What is needed are methods, systems and computer program products that synchronize multiple media streams, even where the media streams are processed by separate devices.
SUMMARY OF INVENTION
A synchronization manager synchronizes multiple media streams. The synchronization manager queries a media stream output device associated with each media stream to synchronize. In response, the synchronization manager receives the current device clock time of each device, each device's next available media stream output time, according to its device clock, and each device's delta between available media stream output times. Using this timing information, the synchronization manager determines an earliest available media stream output time common to each media stream output device, and synchronizes the output of the media streams by providing each stream to its associated output device at the earliest available common output time. In some embodiments, the synchronization manager defines one media stream as a master and slaves other stream(s) off the master stream. In other embodiments, the synchronization manager does not define a master, and instead independently sends each media stream to its associated output device as close to the common output time as possible.
The features and advantages described in this summary and the following detailed description are not all-inclusive, and particularly, many additional features and advantages will be apparent to one of ordinary skill in the art in view of the drawings, specification, and claims hereof. Moreover, it should be noted that the language used in the specification has been principally selected for readability and instructional purposes, and may not have been selected to delineate or circumscribe the inventive subject matter, resort to the claims being necessary to determine such inventive subject matter.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram, illustrating a high level overview of a system for practicing some embodiments of the present invention.
FIG. 2 is a flowchart, illustrating steps for synchronizing multiple media streams, according to some embodiments of the present invention.
FIG. 3 is a flowchart, illustrating steps for correlating each received device clock time into a common host clock time, according to some embodiments of the present invention.
The figures depict embodiments of the present invention for purposes of illustration only. One skilled in the art will readily recognize from the following discussion that alternative embodiments of the structures and methods illustrated herein may be employed without departing from the principles of the invention described herein.
DETAILED DESCRIPTION
FIG. 1 illustrates a high level overview of a system 100 for performing some embodiments of the present invention. A synchronization manager 101 synchronizes the output of multiple media streams. It is to be understood that although the synchronization manager 101 is illustrated as a single entity, as the term is used herein a synchronization manager 101 refers to a collection of functionalities which can be implemented as software, hardware, firmware or any combination of the three. Where a synchronization manager 101 is implemented as software, it can be implemented as a standalone program, but can also be implemented in other ways, for example as part of a larger program, as a plurality of separate programs, or as one or more statically or dynamically linked libraries.
FIG. 1 illustrates the synchronization of a video stream 103, an audio stream 105 and an additional media stream 107. It is to be understood that the present invention is not limited to the illustrated types or number of media streams. In various embodiments, the synchronization manager 101 synchronizes a variety of types of two or more media streams. Examples of other media stream types are a closed captioning data stream, a stream of MIDI events, a stream of text to Braille data and a stream of side band data. Streams of any type of data that can be metered by time can be synchronized according to the present invention. Other examples of data types will be apparent to those of ordinary skill in the relevant art in light of this specification.
Each media stream type is accompanied by an associated output device 109 (in some instances, more than one data stream type can be processed by a single device 109, e.g., audio and video). Thus, FIG. 1 illustrates a video output device 109, an audio output device 109 and an additional media output device 109, but of course other device 109 types are possible.
In order to synchronize the streams, the synchronization manager 101 sends a query 111 to each output device 109, requesting the current time according to the device's 109 clock. Because each device 109 has its own hardware clock, the synchronization manager 101 gleans the local time according to each device 109 in order to facilitate the synchronization, as described further below. The synchronization manager 101 also requests the next available time at which each device 109 can begin outputting a received media stream. Recall that because of device 109 specific output latency and output timing constraints, the next available output time for each device 109 varies. Of course, each device 109 expresses its next available output time according to its own clock. Additionally, the synchronization manager's 101 query 111 of each device 109 requests the device's 109 delta between media stream output times. Each device 109 has a specific amount of time between its possible output start times (e.g., in the case of a video device 109, the time between vertical synchronization cycles). This information can be utilized by the synchronization manager 101 to facilitate the stream synchronization, as explained below.
Responsive to the queries 111, the synchronization manager 101 receives the above-described timing data 113 from each output device 109. The synchronization manager 101 uses the timing data 113 from each device 109 to determine the earliest available common time 115 at which each device 109 can begin output of a received media stream. Because the synchronization manager 101 has the device clock time for each device 109, the next available output start time for each device 109 and the delta between available start times for each device 109, the synchronization manager 101 can calculate the earliest available start time 115 common to all devices 109. The mechanics of performing the relevant calculations will be apparent to those of ordinary skill in the art in light of this specification.
Once the synchronization manager 101 has calculated the earliest available start time 115 common to each device 109, the synchronization manager 101 synchronizes the output of the multiple media streams by providing each media stream to its associated output device 109 at the calculated time 115 (optionally, within an acceptable margin of error).
In some embodiments, the synchronization manager 101 performs this synchronization by slaving one or more media streams off a master stream. For example, in one embodiment the synchronization manager 101 synchronizes a video stream 103 and an audio stream 105 by slaving the audio stream 105 off the video stream 103. In other embodiments, rather than defining one stream as a master and the other(s) as slave(s), the synchronization manager 101 instead individually sends each stream to its associated device 109 as close to the calculated common start time 115 as possible.
FIG. 2 illustrates steps for the synchronization manager 101 to synchronize multiple media streams, according to some embodiments of the present invention. The synchronization manager 101 queries 201 the output devices 109, as described above. In response to querying 201 the output devices 109, the synchronization manager 101 receives 203 the timing data 113 from each output device 109. As described above, the synchronization manager 101 uses the timing data 113 to determine 205 the next available common output time 115, and synchronizes 207 the output of the media streams accordingly. In some embodiments, the synchronization manager 101 synchronizes 207 the output of the media streams by defining one stream as a master, and slaving 209 the other stream(s) off the master stream.
Note that the synchronization manager 101 has the local device clock time of each device 109. In some embodiments of the present invention, the synchronization manager 101 correlates each received device clock time into a common host clock time. This process is illustrated in FIG. 3, according to some embodiments of the present invention. The synchronization manager 101 receives 301 the device clock time of each media stream output device 109, and correlates 303 each received device clock time into host clock time (the time according to the clock of the computing device associated with the synchronization manager 101, e.g., the clock of the central processing unit of the computing device on which the synchronization manager 101 is executing). With this correlation, the synchronization manager 101 can reference 101 events on the plurality of media stream output devices 109 in the common host clock time. Note this referencing of device 109 events in host clock time is not limited to referencing media stream start times. For example, the synchronization manager 101 can use the correlation of each device clock time into host time to calculate the time of the playback of specific frames and the like, by output devices 109, in host clock time.
As will be understood by those familiar with the art, the invention may be embodied in other specific forms without departing from the spirit or essential characteristics thereof. Likewise, the particular naming and division of the modules, features, attributes, methodologies, managers and other aspects are not mandatory or significant, and the mechanisms that implement the invention or its features may have different names, divisions and/or formats. Furthermore, as will be apparent to one of ordinary skill in the relevant art, the modules, features, attributes, methodologies, managers and other aspects of the invention can be implemented as software, hardware, firmware or any combination of the three. Of course, wherever a component of the present invention is implemented as software, the component can be implemented as a standalone program, as part of a larger program, as a plurality of separate programs, as a statically or dynamically linked library, as a kernel loadable module, as a device driver, and/or in every and any other way known now or in the future to those of skill in the art of computer programming. Additionally, the present invention is in no way limited to implementation in any specific programming language, or for any specific operating system or environment. Accordingly, the disclosure of the present invention is intended to be illustrative, but not limiting, of the scope of the invention, which is set forth in the following claims.

Claims (10)

1. A computer system for synchronizing multiple media streams, the computer system comprising:
a processor;
a computer readable storage medium storing computer-executable program instructions, the program instructions when executed by one or more processing units cause the one or more processing units to perform steps comprising:
initiating queries to a plurality of media stream output devices;
receiving a) current time of each queried media stream output device according to its device clock, b) next available media stream output time of each queried media stream output device according to its device clock and c) a delta between available media stream output times;
determining an earliest available media stream output time common to each media stream output device based on data received responsive to the queries; and
providing each media stream an associated media stream output device at the earliest available common media stream output time for synchronizing output of the plurality of media streams.
2. The computer system of claim 1, wherein the program instruction when executed further cause the one or more processing units to perform steps comprising:
defining one media stream of the plurality as a master media stream; and
slaving at least one additional media stream of the plurality off the master media stream.
3. The computer system of claim 1 wherein the plurality of media streams comprises at least a video stream and an audio stream.
4. The computer system of claim 1 wherein at least one of the plurality of media streams comprises a video stream.
5. The computer system of claim 1 wherein at least one of the plurality of media streams comprises a audio stream.
6. The computer system of claim 1 wherein at least one of the plurality of media streams comprises a closed captioning data stream.
7. The computer system of claim 1 wherein at least one of the plurality of media streams comprises a stream of MIDI events.
8. The computer system of claim 1 wherein at least one of the plurality of media streams comprises a stream of text to Braille data.
9. The computer system of claim 1 wherein at least one of the plurality of media streams comprises a stream of side band data.
10. The computer system of claim 1, wherein the program instructions when executed further cause the one or more processing units to perform steps comprising:
correlating each received device clock time to a common host clock time; and
referencing events on the plurality of media stream output devices based on the common host clock time.
US12/709,317 2004-01-30 2010-02-19 Media stream synchronization using device and host clocks Active 2024-12-18 US8239748B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US12/709,317 US8239748B1 (en) 2004-01-30 2010-02-19 Media stream synchronization using device and host clocks

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/769,139 US7669113B1 (en) 2004-01-30 2004-01-30 Media stream synchronization using device and host clocks
US12/709,317 US8239748B1 (en) 2004-01-30 2010-02-19 Media stream synchronization using device and host clocks

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/769,139 Continuation US7669113B1 (en) 2004-01-30 2004-01-30 Media stream synchronization using device and host clocks

Publications (1)

Publication Number Publication Date
US8239748B1 true US8239748B1 (en) 2012-08-07

Family

ID=41692302

Family Applications (2)

Application Number Title Priority Date Filing Date
US10/769,139 Expired - Fee Related US7669113B1 (en) 2004-01-30 2004-01-30 Media stream synchronization using device and host clocks
US12/709,317 Active 2024-12-18 US8239748B1 (en) 2004-01-30 2010-02-19 Media stream synchronization using device and host clocks

Family Applications Before (1)

Application Number Title Priority Date Filing Date
US10/769,139 Expired - Fee Related US7669113B1 (en) 2004-01-30 2004-01-30 Media stream synchronization using device and host clocks

Country Status (1)

Country Link
US (2) US7669113B1 (en)

Cited By (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20110302442A1 (en) * 2010-06-04 2011-12-08 David Garrett Method and System for Combining and/or Blending Multiple Content From Different Sources in a Broadband Gateway
US9348354B2 (en) 2003-07-28 2016-05-24 Sonos, Inc. Systems and methods for synchronizing operations among a plurality of independently clocked digital data processing devices without a voltage controlled crystal oscillator
US9374607B2 (en) 2012-06-26 2016-06-21 Sonos, Inc. Media playback system with guest access
US9516440B2 (en) 2012-10-01 2016-12-06 Sonos Providing a multi-channel and a multi-zone audio environment
US9665341B2 (en) 2015-02-09 2017-05-30 Sonos, Inc. Synchronized audio mixing
US9729115B2 (en) 2012-04-27 2017-08-08 Sonos, Inc. Intelligently increasing the sound level of player
US9734242B2 (en) 2003-07-28 2017-08-15 Sonos, Inc. Systems and methods for synchronizing operations among a plurality of independently clocked digital data processing devices that independently source digital data
US9749760B2 (en) 2006-09-12 2017-08-29 Sonos, Inc. Updating zone configuration in a multi-zone media system
US9756424B2 (en) 2006-09-12 2017-09-05 Sonos, Inc. Multi-channel pairing in a media system
US9766853B2 (en) 2006-09-12 2017-09-19 Sonos, Inc. Pair volume control
US9781513B2 (en) 2014-02-06 2017-10-03 Sonos, Inc. Audio output balancing
US9787550B2 (en) 2004-06-05 2017-10-10 Sonos, Inc. Establishing a secure wireless network with a minimum human intervention
US9794707B2 (en) 2014-02-06 2017-10-17 Sonos, Inc. Audio output balancing
US9977561B2 (en) 2004-04-01 2018-05-22 Sonos, Inc. Systems, methods, apparatus, and articles of manufacture to provide guest access
US10306364B2 (en) 2012-09-28 2019-05-28 Sonos, Inc. Audio processing adjustments for playback devices based on determined characteristics of audio content
US10359987B2 (en) 2003-07-28 2019-07-23 Sonos, Inc. Adjusting volume levels
US20190297591A1 (en) * 2013-10-31 2019-09-26 At&T Intellectual Property I, L.P. Synchronizing media presentation at multiple devices
US10613817B2 (en) 2003-07-28 2020-04-07 Sonos, Inc. Method and apparatus for displaying a list of tracks scheduled for playback by a synchrony group
US11106424B2 (en) 2003-07-28 2021-08-31 Sonos, Inc. Synchronizing operations among a plurality of independently clocked digital data processing devices
US11106425B2 (en) 2003-07-28 2021-08-31 Sonos, Inc. Synchronizing operations among a plurality of independently clocked digital data processing devices
US11265652B2 (en) 2011-01-25 2022-03-01 Sonos, Inc. Playback device pairing
US11294618B2 (en) 2003-07-28 2022-04-05 Sonos, Inc. Media player system
US11403062B2 (en) 2015-06-11 2022-08-02 Sonos, Inc. Multiple groupings in a playback system
US11429343B2 (en) 2011-01-25 2022-08-30 Sonos, Inc. Stereo playback configuration and control
US11481182B2 (en) 2016-10-17 2022-10-25 Sonos, Inc. Room association based on name
US11650784B2 (en) 2003-07-28 2023-05-16 Sonos, Inc. Adjusting volume levels
US11894975B2 (en) 2004-06-05 2024-02-06 Sonos, Inc. Playback device connection
US11995374B2 (en) 2016-01-05 2024-05-28 Sonos, Inc. Multiple-device setup

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7996699B2 (en) 2005-04-11 2011-08-09 Graphics Properties Holdings, Inc. System and method for synchronizing multiple media devices
US8677002B2 (en) * 2006-01-28 2014-03-18 Blackfire Research Corp Streaming media system and method
US8239559B2 (en) * 2006-07-15 2012-08-07 Blackfire Research Corp. Provisioning and streaming media to wireless speakers from fixed and mobile media sources and clients
US8341454B1 (en) 2007-12-28 2012-12-25 Marvell International Ltd. Rendering a video stream based on digital clock generated based on timing information
JP5439892B2 (en) * 2009-03-27 2014-03-12 ヤマハ株式会社 Digital audio equipment and program
CN102185998B (en) * 2010-12-31 2013-05-22 北京中科大洋科技发展股份有限公司 A method for synchronizing video signals by employing AES/EBU digital audio signals
JP6281603B2 (en) * 2016-06-23 2018-02-21 日本電気株式会社 Information processing system, information processing method, and information processing program
US10412441B2 (en) 2016-12-06 2019-09-10 Rgb Spectrum Systems, methods, and devices for high-bandwidth digital content synchronization

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5661665A (en) * 1996-06-26 1997-08-26 Microsoft Corporation Multi-media synchronization
US5719786A (en) * 1993-02-03 1998-02-17 Novell, Inc. Digital media data stream network management system
US5815689A (en) * 1997-04-04 1998-09-29 Microsoft Corporation Method and computer program product for synchronizing the processing of multiple data streams and matching disparate processing rates using a standardized clock mechanism
US6212574B1 (en) * 1997-04-04 2001-04-03 Microsoft Corporation User mode proxy of kernel mode operations in a computer operating system
US20020112247A1 (en) * 2001-02-09 2002-08-15 Horner David R. Method and system for creation, delivery, and presentation of time-synchronized multimedia presentations
US6505153B1 (en) * 2000-05-22 2003-01-07 Compaq Information Technologies Group, L.P. Efficient method for producing off-line closed captions
US20050125734A1 (en) * 2003-12-08 2005-06-09 Microsoft Corporation Media processing methods, systems and application program interfaces

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5719786A (en) * 1993-02-03 1998-02-17 Novell, Inc. Digital media data stream network management system
US5661665A (en) * 1996-06-26 1997-08-26 Microsoft Corporation Multi-media synchronization
US5815689A (en) * 1997-04-04 1998-09-29 Microsoft Corporation Method and computer program product for synchronizing the processing of multiple data streams and matching disparate processing rates using a standardized clock mechanism
US6212574B1 (en) * 1997-04-04 2001-04-03 Microsoft Corporation User mode proxy of kernel mode operations in a computer operating system
US6505153B1 (en) * 2000-05-22 2003-01-07 Compaq Information Technologies Group, L.P. Efficient method for producing off-line closed captions
US20020112247A1 (en) * 2001-02-09 2002-08-15 Horner David R. Method and system for creation, delivery, and presentation of time-synchronized multimedia presentations
US20050125734A1 (en) * 2003-12-08 2005-06-09 Microsoft Corporation Media processing methods, systems and application program interfaces

Cited By (124)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10963215B2 (en) 2003-07-28 2021-03-30 Sonos, Inc. Media playback device and system
US9733892B2 (en) 2003-07-28 2017-08-15 Sonos, Inc. Obtaining content based on control by multiple controllers
US9348354B2 (en) 2003-07-28 2016-05-24 Sonos, Inc. Systems and methods for synchronizing operations among a plurality of independently clocked digital data processing devices without a voltage controlled crystal oscillator
US9354656B2 (en) 2003-07-28 2016-05-31 Sonos, Inc. Method and apparatus for dynamic channelization device switching in a synchrony group
US11650784B2 (en) 2003-07-28 2023-05-16 Sonos, Inc. Adjusting volume levels
US10365884B2 (en) 2003-07-28 2019-07-30 Sonos, Inc. Group volume control
US11625221B2 (en) 2003-07-28 2023-04-11 Sonos, Inc Synchronizing playback by media playback devices
US9658820B2 (en) 2003-07-28 2017-05-23 Sonos, Inc. Resuming synchronous playback of content
US11556305B2 (en) 2003-07-28 2023-01-17 Sonos, Inc. Synchronizing playback by media playback devices
US9727303B2 (en) 2003-07-28 2017-08-08 Sonos, Inc. Resuming synchronous playback of content
US9727304B2 (en) 2003-07-28 2017-08-08 Sonos, Inc. Obtaining content from direct source and other source
US11550536B2 (en) 2003-07-28 2023-01-10 Sonos, Inc. Adjusting volume levels
US9727302B2 (en) 2003-07-28 2017-08-08 Sonos, Inc. Obtaining content from remote source for playback
US10387102B2 (en) 2003-07-28 2019-08-20 Sonos, Inc. Playback device grouping
US9734242B2 (en) 2003-07-28 2017-08-15 Sonos, Inc. Systems and methods for synchronizing operations among a plurality of independently clocked digital data processing devices that independently source digital data
US9733891B2 (en) 2003-07-28 2017-08-15 Sonos, Inc. Obtaining content from local and remote sources for playback
US9733893B2 (en) 2003-07-28 2017-08-15 Sonos, Inc. Obtaining and transmitting audio
US9740453B2 (en) 2003-07-28 2017-08-22 Sonos, Inc. Obtaining content from multiple remote sources for playback
US11550539B2 (en) 2003-07-28 2023-01-10 Sonos, Inc. Playback device
US10359987B2 (en) 2003-07-28 2019-07-23 Sonos, Inc. Adjusting volume levels
US11301207B1 (en) 2003-07-28 2022-04-12 Sonos, Inc. Playback device
US9778900B2 (en) 2003-07-28 2017-10-03 Sonos, Inc. Causing a device to join a synchrony group
US9778897B2 (en) 2003-07-28 2017-10-03 Sonos, Inc. Ceasing playback among a plurality of playback devices
US9778898B2 (en) 2003-07-28 2017-10-03 Sonos, Inc. Resynchronization of playback devices
US11294618B2 (en) 2003-07-28 2022-04-05 Sonos, Inc. Media player system
US10956119B2 (en) 2003-07-28 2021-03-23 Sonos, Inc. Playback device
US11132170B2 (en) 2003-07-28 2021-09-28 Sonos, Inc. Adjusting volume levels
US11106425B2 (en) 2003-07-28 2021-08-31 Sonos, Inc. Synchronizing operations among a plurality of independently clocked digital data processing devices
US11106424B2 (en) 2003-07-28 2021-08-31 Sonos, Inc. Synchronizing operations among a plurality of independently clocked digital data processing devices
US11080001B2 (en) 2003-07-28 2021-08-03 Sonos, Inc. Concurrent transmission and playback of audio information
US10324684B2 (en) 2003-07-28 2019-06-18 Sonos, Inc. Playback device synchrony group states
US10970034B2 (en) 2003-07-28 2021-04-06 Sonos, Inc. Audio distributor selection
US11635935B2 (en) 2003-07-28 2023-04-25 Sonos, Inc. Adjusting volume levels
US10445054B2 (en) 2003-07-28 2019-10-15 Sonos, Inc. Method and apparatus for switching between a directly connected and a networked audio source
US11200025B2 (en) 2003-07-28 2021-12-14 Sonos, Inc. Playback device
US10031715B2 (en) 2003-07-28 2018-07-24 Sonos, Inc. Method and apparatus for dynamic master device switching in a synchrony group
US10949163B2 (en) 2003-07-28 2021-03-16 Sonos, Inc. Playback device
US10754612B2 (en) 2003-07-28 2020-08-25 Sonos, Inc. Playback device volume control
US10754613B2 (en) 2003-07-28 2020-08-25 Sonos, Inc. Audio master selection
US10120638B2 (en) 2003-07-28 2018-11-06 Sonos, Inc. Synchronizing operations among a plurality of independently clocked digital data processing devices
US10747496B2 (en) 2003-07-28 2020-08-18 Sonos, Inc. Playback device
US10133536B2 (en) 2003-07-28 2018-11-20 Sonos, Inc. Method and apparatus for adjusting volume in a synchrony group
US10140085B2 (en) 2003-07-28 2018-11-27 Sonos, Inc. Playback device operating states
US10146498B2 (en) 2003-07-28 2018-12-04 Sonos, Inc. Disengaging and engaging zone players
US10157034B2 (en) 2003-07-28 2018-12-18 Sonos, Inc. Clock rate adjustment in a multi-zone system
US10157035B2 (en) 2003-07-28 2018-12-18 Sonos, Inc. Switching between a directly connected and a networked audio source
US10157033B2 (en) 2003-07-28 2018-12-18 Sonos, Inc. Method and apparatus for switching between a directly connected and a networked audio source
US10175930B2 (en) 2003-07-28 2019-01-08 Sonos, Inc. Method and apparatus for playback by a synchrony group
US10175932B2 (en) 2003-07-28 2019-01-08 Sonos, Inc. Obtaining content from direct source and remote source
US10185540B2 (en) 2003-07-28 2019-01-22 Sonos, Inc. Playback device
US10185541B2 (en) 2003-07-28 2019-01-22 Sonos, Inc. Playback device
US10209953B2 (en) 2003-07-28 2019-02-19 Sonos, Inc. Playback device
US10216473B2 (en) 2003-07-28 2019-02-26 Sonos, Inc. Playback device synchrony group states
US10228902B2 (en) 2003-07-28 2019-03-12 Sonos, Inc. Playback device
US10613817B2 (en) 2003-07-28 2020-04-07 Sonos, Inc. Method and apparatus for displaying a list of tracks scheduled for playback by a synchrony group
US10282164B2 (en) 2003-07-28 2019-05-07 Sonos, Inc. Synchronizing operations among a plurality of independently clocked digital data processing devices
US10289380B2 (en) 2003-07-28 2019-05-14 Sonos, Inc. Playback device
US10296283B2 (en) 2003-07-28 2019-05-21 Sonos, Inc. Directing synchronous playback between zone players
US10303432B2 (en) 2003-07-28 2019-05-28 Sonos, Inc Playback device
US10545723B2 (en) 2003-07-28 2020-01-28 Sonos, Inc. Playback device
US10303431B2 (en) 2003-07-28 2019-05-28 Sonos, Inc. Synchronizing operations among a plurality of independently clocked digital data processing devices
US11907610B2 (en) 2004-04-01 2024-02-20 Sonos, Inc. Guess access to a media playback system
US10983750B2 (en) 2004-04-01 2021-04-20 Sonos, Inc. Guest access to a media playback system
US11467799B2 (en) 2004-04-01 2022-10-11 Sonos, Inc. Guest access to a media playback system
US9977561B2 (en) 2004-04-01 2018-05-22 Sonos, Inc. Systems, methods, apparatus, and articles of manufacture to provide guest access
US9960969B2 (en) 2004-06-05 2018-05-01 Sonos, Inc. Playback device connection
US10097423B2 (en) 2004-06-05 2018-10-09 Sonos, Inc. Establishing a secure wireless network with minimum human intervention
US9787550B2 (en) 2004-06-05 2017-10-10 Sonos, Inc. Establishing a secure wireless network with a minimum human intervention
US10439896B2 (en) 2004-06-05 2019-10-08 Sonos, Inc. Playback device connection
US11456928B2 (en) 2004-06-05 2022-09-27 Sonos, Inc. Playback device connection
US9866447B2 (en) 2004-06-05 2018-01-09 Sonos, Inc. Indicator on a network device
US11025509B2 (en) 2004-06-05 2021-06-01 Sonos, Inc. Playback device connection
US10541883B2 (en) 2004-06-05 2020-01-21 Sonos, Inc. Playback device connection
US11909588B2 (en) 2004-06-05 2024-02-20 Sonos, Inc. Wireless device connection
US10979310B2 (en) 2004-06-05 2021-04-13 Sonos, Inc. Playback device connection
US10965545B2 (en) 2004-06-05 2021-03-30 Sonos, Inc. Playback device connection
US11894975B2 (en) 2004-06-05 2024-02-06 Sonos, Inc. Playback device connection
US11540050B2 (en) 2006-09-12 2022-12-27 Sonos, Inc. Playback device pairing
US10555082B2 (en) 2006-09-12 2020-02-04 Sonos, Inc. Playback device pairing
US11385858B2 (en) 2006-09-12 2022-07-12 Sonos, Inc. Predefined multi-channel listening environment
US9766853B2 (en) 2006-09-12 2017-09-19 Sonos, Inc. Pair volume control
US9749760B2 (en) 2006-09-12 2017-08-29 Sonos, Inc. Updating zone configuration in a multi-zone media system
US10848885B2 (en) 2006-09-12 2020-11-24 Sonos, Inc. Zone scene management
US10897679B2 (en) 2006-09-12 2021-01-19 Sonos, Inc. Zone scene management
US11388532B2 (en) 2006-09-12 2022-07-12 Sonos, Inc. Zone scene activation
US10028056B2 (en) 2006-09-12 2018-07-17 Sonos, Inc. Multi-channel pairing in a media system
US9756424B2 (en) 2006-09-12 2017-09-05 Sonos, Inc. Multi-channel pairing in a media system
US10966025B2 (en) 2006-09-12 2021-03-30 Sonos, Inc. Playback device pairing
US10228898B2 (en) 2006-09-12 2019-03-12 Sonos, Inc. Identification of playback device and stereo pair names
US10448159B2 (en) 2006-09-12 2019-10-15 Sonos, Inc. Playback device pairing
US10136218B2 (en) 2006-09-12 2018-11-20 Sonos, Inc. Playback device pairing
US9928026B2 (en) 2006-09-12 2018-03-27 Sonos, Inc. Making and indicating a stereo pair
US10469966B2 (en) 2006-09-12 2019-11-05 Sonos, Inc. Zone scene management
US11082770B2 (en) 2006-09-12 2021-08-03 Sonos, Inc. Multi-channel pairing in a media system
US10306365B2 (en) 2006-09-12 2019-05-28 Sonos, Inc. Playback device pairing
US9860657B2 (en) 2006-09-12 2018-01-02 Sonos, Inc. Zone configurations maintained by playback device
US9813827B2 (en) 2006-09-12 2017-11-07 Sonos, Inc. Zone configuration based on playback selections
US9450821B2 (en) 2009-01-16 2016-09-20 Broadcom Corporation Method and system for combining and/or blending multiple content from different sources in a broadband gateway
US20110302442A1 (en) * 2010-06-04 2011-12-08 David Garrett Method and System for Combining and/or Blending Multiple Content From Different Sources in a Broadband Gateway
US8874748B2 (en) * 2010-06-04 2014-10-28 Broadcom Corporation Method and system for combining and/or blending multiple content from different sources in a broadband gateway
US11265652B2 (en) 2011-01-25 2022-03-01 Sonos, Inc. Playback device pairing
US11429343B2 (en) 2011-01-25 2022-08-30 Sonos, Inc. Stereo playback configuration and control
US11758327B2 (en) 2011-01-25 2023-09-12 Sonos, Inc. Playback device pairing
US10063202B2 (en) 2012-04-27 2018-08-28 Sonos, Inc. Intelligently modifying the gain parameter of a playback device
US9729115B2 (en) 2012-04-27 2017-08-08 Sonos, Inc. Intelligently increasing the sound level of player
US10720896B2 (en) 2012-04-27 2020-07-21 Sonos, Inc. Intelligently modifying the gain parameter of a playback device
US9374607B2 (en) 2012-06-26 2016-06-21 Sonos, Inc. Media playback system with guest access
US10306364B2 (en) 2012-09-28 2019-05-28 Sonos, Inc. Audio processing adjustments for playback devices based on determined characteristics of audio content
US11516611B2 (en) 2012-10-01 2022-11-29 Sonos, Inc. Providing a multi-channel and a multi-zone audio environment
US10721575B2 (en) 2012-10-01 2020-07-21 Sonos, Inc. Providing a multi-channel and a multi-zone audio environment
US9516440B2 (en) 2012-10-01 2016-12-06 Sonos Providing a multi-channel and a multi-zone audio environment
US10051398B2 (en) 2012-10-01 2018-08-14 Sonos, Inc. Providing playback timing in a multi-zone audio environment
US10805894B2 (en) * 2013-10-31 2020-10-13 At&T Intellectual Property I, L.P. Synchronizing media presentation at multiple devices
US20190297591A1 (en) * 2013-10-31 2019-09-26 At&T Intellectual Property I, L.P. Synchronizing media presentation at multiple devices
US9794707B2 (en) 2014-02-06 2017-10-17 Sonos, Inc. Audio output balancing
US9781513B2 (en) 2014-02-06 2017-10-03 Sonos, Inc. Audio output balancing
US9665341B2 (en) 2015-02-09 2017-05-30 Sonos, Inc. Synchronized audio mixing
US11531515B2 (en) 2015-02-09 2022-12-20 Sonos, Inc. Synchronized audio mixing
US10387110B2 (en) 2015-02-09 2019-08-20 SOHOS, Inc. Synchronized audio mixing
US9977649B2 (en) 2015-02-09 2018-05-22 Sonos, Inc. Synchronized audio mixing
US11403062B2 (en) 2015-06-11 2022-08-02 Sonos, Inc. Multiple groupings in a playback system
US12026431B2 (en) 2015-06-11 2024-07-02 Sonos, Inc. Multiple groupings in a playback system
US11995374B2 (en) 2016-01-05 2024-05-28 Sonos, Inc. Multiple-device setup
US11481182B2 (en) 2016-10-17 2022-10-25 Sonos, Inc. Room association based on name

Also Published As

Publication number Publication date
US7669113B1 (en) 2010-02-23

Similar Documents

Publication Publication Date Title
US8239748B1 (en) Media stream synchronization using device and host clocks
US6625743B1 (en) Method for synchronizing generation and consumption of isochronous data
US7395448B2 (en) Directly obtaining by application programs information usable in determining clock accuracy
CN107277594B (en) Method and device for synchronizing video and audio with bullet screen
CN109417500A (en) System and method for controlling isochronal data stream
TW364980B (en) Data decoding device
WO1999031577A3 (en) Automatic configuration generation
US9723180B2 (en) Device and method for correcting lip sync problems on display devices
WO2008086308B1 (en) Time synchronization of multiple time-based data streams with independent clocks
WO2006007322B1 (en) Providing synchronized information to multiple devices
CN104808984A (en) Display interface refresh method and device
JP2007080264A (en) System and method for tod clock steering
TW201205232A (en) Clock-synchronized method for universal serial bus (USB)
US6061802A (en) Software based clock synchronization
US20180329739A1 (en) Reducing commit wait in a distributed multiversion database by reading the clock earlier
KR100829643B1 (en) Event time-stamping
CN103747332A (en) Video smoothing method and device
WO2017019678A1 (en) Pps tagging of acoustic sample data
US20040187043A1 (en) Synchronization with hardware utilizing software clock slaving via a clock
KR100828216B1 (en) Universal adaptive synchronization scheme for distributed audio-video capture on heterogeneous computing platforms
CN110089120B (en) System and method for synchronized playback of media items on multiple remote devices
CN103838149A (en) Microcomputer
CN106533598B (en) Circuit and method for estimating occurrence time difference between events, and computer-readable storage medium
CN1829129B (en) Method and apparatus for eliminating transmission delay difference in multipath synchronous data transmission
US5581748A (en) Phase register for synchronization of multiple signal processors

Legal Events

Date Code Title Description
FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCF Information on status: patent grant

Free format text: PATENTED CASE

FPAY Fee payment

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 12