US20230283830A1 - Synchronization with synthesized audio clock - Google Patents

Synchronization with synthesized audio clock Download PDF

Info

Publication number
US20230283830A1
US20230283830A1 US18/120,180 US202318120180A US2023283830A1 US 20230283830 A1 US20230283830 A1 US 20230283830A1 US 202318120180 A US202318120180 A US 202318120180A US 2023283830 A1 US2023283830 A1 US 2023283830A1
Authority
US
United States
Prior art keywords
clock
audio
time
playback
virtual clock
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.)
Abandoned
Application number
US18/120,180
Inventor
Paul Fleischer
Brian Thoft Moth Moller
Bjorn Reese
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.)
Dynastrom ApS
Original Assignee
Dynastrom ApS
Roku 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 Dynastrom ApS, Roku Inc filed Critical Dynastrom ApS
Priority to US18/120,180 priority Critical patent/US20230283830A1/en
Publication of US20230283830A1 publication Critical patent/US20230283830A1/en
Priority to US18/415,349 priority patent/US20240155176A1/en
Assigned to ROKU, INC. reassignment ROKU, INC. SHARE SALE AND PURCHASE AGREEMENT Assignors: DYNASTROM APS
Assigned to DYNASTROM APS reassignment DYNASTROM APS ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: FLEISCHER, Paul, MOLLER, BRIAN THOFT MOTH, REESE, BJORN
Assigned to CITIBANK, N.A. reassignment CITIBANK, N.A. SECURITY INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ROKU, INC.
Abandoned legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4305Synchronising client clock from received content stream, e.g. locking decoder clock with encoder clock, extraction of the PCR packets
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03LAUTOMATIC CONTROL, STARTING, SYNCHRONISATION OR STABILISATION OF GENERATORS OF ELECTRONIC OSCILLATIONS OR PULSES
    • H03L7/00Automatic control of frequency or phase; Synchronisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/4302Content synchronisation processes, e.g. decoder synchronisation
    • H04N21/4307Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen
    • H04N21/43076Synchronising the rendering of multiple content streams or additional data on devices, e.g. synchronisation of audio on a mobile phone with the video output on the TV screen of the same content streams on multiple devices, e.g. when family members are watching the same movie on different devices
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/436Interfacing a local distribution network, e.g. communicating with another STB or one or more peripheral devices inside the home
    • H04N21/4363Adapting the video stream to a specific local network, e.g. a Bluetooth® network
    • H04N21/43637Adapting the video stream to a specific local network, e.g. a Bluetooth® network involving a wireless protocol, e.g. Bluetooth, RF or wireless LAN [IEEE 802.11]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N5/00Details of television systems
    • H04N5/04Synchronising

Definitions

  • the present invention relates to the field of synchronized playback of audio or video between devices in a peer-to-peer computer network system, e.g. in a wi-fi network.
  • the devices can participate in coordinated sessions, where the participating devices can play synchronously.
  • the participating devices can be located within or across several rooms.
  • the participating devices In order to play synchronously, the participating devices need to agree on the playback time and pace.
  • One of the key parameters of providing precise audio playback synchronization is the ability to share the same time between multiple devices in a network.
  • the invention provides a method for synchronizing playback of audio and/or video from a source in computer network of a plurality of separate devices in a computer network session, see appended claim 1 .
  • This invention describes a virtual clock, which allows time synchronization between audio/video devices in a peer-to-peer network audio playback system without requiring the primary system clocks being synchronized, while also avoiding long-term dependency on accuracy of such clocks.
  • multiple devices can play the same audio or video experience in a synchronized manner across a computer network, without requiring specialized hardware or system clock adjustments.
  • the invention provides a protocol for controlling a plurality of separate devices in a computer network.
  • the invention provides a computer executable program code, or a programmable- or fixed hardware, and/or combination hereof, arranged to perform the method according to the first aspect, or causes a device with a processor to function according to the protocol of the second aspect.
  • the computer executable program code may be stored on a data carrier.
  • the program code may be implemented to function on any type of processor platform.
  • the invention provides a device that operates according to the method or protocol of the first or second aspect.
  • the device may be an audio device, such as a stand alone active loudspeaker.
  • the device may also be any other type of device with audio and/or video capabilities, e.g. a TV set.
  • the invention provides a system of a plurality of devices according to the fourth aspect, e.g. mixed types of devices arranged to take part in a computer network session, e.g. a wi-fi network session, of synchronized playback of audio and/or video content.
  • a computer network session e.g. a wi-fi network session
  • the invention provides an electronic chip programmed to allow a device to operate according to protocol according to the third aspect, if provided with access to the electronic chip, e.g. if the device has the chip installed therein.
  • FIG. 1 illustrates one embodiment of a virtual clock ( 10 ) based on an Audio CODEC ( 12 ), with the possibility of fine tuning,
  • FIG. 2 shows discrete updates of the virtual clock in terms of measurement points ( 30 ), and how time is extrapolated between them ( 32 ),
  • FIG. 3 illustrates steps of a virtual clock synchronization scheme embodiment
  • FIG. 4 shows different extrapolations ( 33 and 34 ) within a single discrete update of the virtual clock ( 30 ).
  • FIG. 1 illustrates an audio pipeline, where an audio source ( 22 ) delivers its audio data to the audio driver ( 16 ) with an intermediate sample rate converter ( 18 ).
  • the Audio CODEC ( 12 ) is driven by a clock system ( 14 ), and produces an audio signal (digital or analog) which is passed on to downstream elements ( 20 ), such as a loudspeaker or an amplifier.
  • the virtual clock ( 10 ) can be driven by the clock system ( 14 ) or the audio driver ( 16 ), depending on the hardware and operating system configuration.
  • the helper clock ( 24 ) may be needed, if the clock system ( 14 ) does not provide a tick counter.
  • the Sample rate converter ( 18 ) is used to adjust the playback rate, in case the clock system ( 14 ) frequency cannot be fine-tuned.
  • the virtual clock can be implemented in at least the two preferred ways: One utilizing direct access to the tick counter of clock system of the audio codec, and one making periodic measurements and extrapolating between these measurements.
  • tick counter For systems that allow access to the tick counter of the clock system ( 14 ), which drives the audio codec ( 12 ), the tick counter will be used as the primary timing information. Reading the value of the virtual clock will therefore return the tick counter value. However, in order to deal with overflows of the tick counter, a value internal to the virtual clock is added, as will be described shortly.
  • the virtual clock is controlled by either a) keeping track of the pace at which samples are consumed by the audio driver ( 16 ), or, b) interrupts at regular intervals generated by the clock system ( 14 ).
  • FIG. 2 shows discrete updates of the virtual clock in terms of measurement points serving as intermediary baseline times ( 30 ), and how time is extrapolated between them ( 32 ). In general, this yields regular baseline times ( 30 ). The rate of these are either equal to the number of write interactions with the audio driver, or with the rate of interrupts generated by the clock system ( 14 ). In order to allow the virtual clock to have a resolution higher than this rate, a monotonic helper clock ( 24 ) is used to extrapolate time ( 32 ) between the baseline times ( 30 ) that these updates constitute. An example of such a monotonic clock is the monotonic system clock. In such synthesized audio clock systems, the two clocks can have different quality characteristics.
  • the audio driver ( 16 ) typically has a high accuracy (low deviation from the real playback time), but is slow to obtain due to blocking on I/O or multi-threading primitives.
  • the helper clock ( 24 ) is typically instantaneous to obtain, but may have a lower accuracy.
  • the accuracy of the virtual clock ( 10 ) depends mainly on the rate at which the audio driver ( 16 ) updates the baseline time.
  • the accuracy of the helper clock ( 24 ) extrapolation depends partly on the tick frequency of the helper clock ( 24 ) compared to the tick frequency of the audio driver ( 16 ), and partly on asynchronous sample rate conversion which alters the tick frequency of the audio driver ( 16 ).
  • the helper clock ( 24 ) extrapolation is calculated as the time passed between the most recent update of the baseline time, and the time at which the virtual clock ( 10 ) is read.
  • the audio driver ( 16 ) and the helper clock ( 24 ) may be driven by different hardware clock oscillators so they may tick at different clock frequencies, and this must be compensated for by multiplying the extrapolation with a scalar such that the extrapolation is done using the audio driver ( 16 ) clock ticks.
  • the scalar is calculated by dividing the audio driver ( 16 ) clock frequency by the helper clock ( 25 ) frequency. This scalar is normally calculated on-the-fly so it can account for other factors that influence the clock frequencies such as temperature or ageing.
  • the easiest way to estimate the scalar is to use two consecutive measurements and divide the difference in the audio driver ( 16 ) clock by the difference in the helper clock ( 24 ). In practice, such an estimate will be prone to measurement jitter, which can be smoothed over by collecting statistics, such as using a running average of scalar estimates collected over several time intervals.
  • the baseline time of the virtual clock may be calculated by counting the number of samples output by the audio CODEC ( 12 ).
  • this method can create synchronization jitter. Modifying the playback rate means that the audio CODEC ( 12 ) will output fewer or more samples than the number of input samples passed from the audio source ( 22 ).
  • their virtual clocks may run at different speeds even though they consume the same number of input samples. So, even if the devices are perfectly synchronized, their virtual clock can mislead them into making unnecessary synchronization adjustments.
  • the baseline time of the virtual clock is calculated by counting how many input samples from the audio source ( 22 ) has been consumed. This must be done indirectly by counting the number of samples output by the audio CODEC ( 12 ), and then adjust this number by the playback rate to reproduce the number of input samples consumed.
  • the virtual clock must keep track of the playback rates of each sample currently being processed by the audio CODEC ( 12 ). In practice, the playback rate is not modified per sample, so the virtual clock can instead keep track of the playback rates of sequences of samples. This makes the virtual clock invulnerable to the problem of unnecessary synchronization adjustments of the virtual clock that simply counts output samples.
  • the asynchronous sample rate conversion is another source of error on the helper clock ( 24 ) extrapolation. This can be compensated for by adjusting the extrapolation by the playback rate.
  • the extrapolation must use different playback rates for different time intervals.
  • FIG. 4 illustrates, as an example, if the baseline time ( 30 ) is updated at time t 1 with the playback rate S a , and another playback rate S b is applied from time t 2 until the next update of the baseline time at time t 3 , then the extrapolation must use playback rate S a in the time interval from t 1 to t 2 ( 33 ) and playback rate S b in the time interval t 2 to t 3 ( 34 ).
  • the virtual clock In order to allow the virtual clock to be used to synchronize playback within the audio network, it should preferably be monotonic.
  • the absolute value of the virtual clock is a sum of the tick counter and an offset internal to the virtual clock.
  • the tick counter of the underlying clock shows non-monotonic behavior
  • the virtual clock compensates for this by increasing its internal offset. If no tick counter is provided, the virtual clock's internal offset is increased on each timer update, be it driven by an interrupt or an audio driver interaction. If the extrapolation between two updates results in non-monotonic behavior, the virtual clock compensates by temporarily increasing the internal offset, and adjusting the frequency used for extrapolations until next update. This ensures monotonicity of the virtual clock, regardless of the physical clock or audio driver behavior.
  • Using the virtual clock to synchronize events requires the virtual clock to be running at all times. However, being dependent on the audio codec's clocking, audio needs to pass through the audio pipeline in order for the virtual clock to be running. This can be achieved by playing zeros: There is no audio, but the entire audio pipeline is kept running, and timing is maintained.
  • Synchronizing across networked devices requires a common reference of the timing information, which means a common time origin, also known as an epoch, and a common time step.
  • a global clock may serve as the reference time, e.g. a global clock may be the wall time, also known as the system time, which has an epoch at midnight on Jan. 1, 1970.
  • the disadvantages of using the system time is that it may not provide the necessary timing accuracy for synchronized audio playback, and the system time may be modified by other services such as the Network Time Protocol making time difference calculations unreliable.
  • Another example is of a global clock is the IEEE 802.11 Time Synchronization Function, which has a higher accuracy, but is only available to devices on the same Access Point.
  • the audio clock may be used as the reference time. Audio clocks do not normally have a pre-determined epoch, so this has to be agreed by participating devices. This can be done by choosing a global clock to establish the epoch, or to let the participating devices negotiate an arbitrary epoch.
  • a segmented time is used as the reference time.
  • Segmented time has a sequence of time intervals, where each time interval has its own local epoch and a monotonic segment number to differentiate two distinct time intervals from each other. Segmented time is monotonic because time points in different time intervals are comparable due to the segment number. While segmented time is comparable, time differences can only be calculated if both time points are within the same time interval.
  • An example of a segmented time is to use a 2-tuple with a segment number and the audio presentation time.
  • the audio presentation time uses the start of the audio playback, such as the beginning of a music track, as the epoch. This is a natural choice as networked audio synchronization is about aligning the audio presentation time on different network devices.
  • the segment number is preferably updated whenever an abrupt change in the audio presentation time happens. This can happen when playing the next music track in a playlist, or when seeking within a music track.
  • Another example of a segmented time is to use a 3-tuple with a segment number, the audio presentation time, and an idle time.
  • the idle time is useful for situations where the audio system has to insert audio samples that are not present in the audio source, such as inserting samples with value zero to play silence when an audio playback is paused.
  • FIG. 3 shows an example of steps of a synchronization scheme embodiment, where a virtual clock is generated in response to the incoming audio stream, and wherein the virtual clock is used to synchronize playback of audio and/or video, and/or an other event.
  • the invention provides a method for providing a synchronization in a computer network for synchronized playback of audio an/or video by a plurality of separate devices.
  • Each separate device generates a virtual clock in response to a timing of the audio codec of a received audio stream.
  • segmented time is used as reference time.
  • Either the virtual clock is generated directly in response to the tick counter of the audio codec, or by a periodic measurement of the timing of the audio codec extrapolated by a monotonic clock.
  • a sample rate converter may be used to slightly adjust the frequency of the virtual clock.

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Synchronisation In Digital Transmission Systems (AREA)

Abstract

The invention provides a method for providing a synchronization in a computer network for synchronized playback of audio an/or video by a plurality of separate devices. Each separate device generates a virtual clock in response to a timing of the audio codec of a received audio stream. Especially, segmented time is used as reference time. Either the virtual clock is generated directly in response to the tick counter of the audio codec, or by a periodic measurement of the timing of the audio codec extrapolated by a monotonic clock. A sample rate converter may be used to slightly adjust the frequency of the virtual clock.

Description

    RELATED APPLICATIONS
  • This application is a continuation of U.S. application Ser. No. 17/212,178, filed Mar. 25, 2021, which is a continuation of U.S. application Ser. No. 16/319,991, filed Jan. 23, 2019, now allowed, which claims priority to International Patent Application No. PCT/DK2016/050256, filed Jul. 25, 2016, now expired, the contents of which are all hereby incorporated by reference.
  • FIELD OF THE INVENTION
  • The present invention relates to the field of synchronized playback of audio or video between devices in a peer-to-peer computer network system, e.g. in a wi-fi network.
  • BACKGROUND OF THE INVENTION
  • In synchronized playback of audio or video between a plurality of devices in a peer-to-peer computer network system, the devices can participate in coordinated sessions, where the participating devices can play synchronously. The participating devices can be located within or across several rooms.
  • In order to play synchronously, the participating devices need to agree on the playback time and pace. One of the key parameters of providing precise audio playback synchronization is the ability to share the same time between multiple devices in a network.
  • Solutions exist that have various means to achieve synchronized audio playback. Some of these systems use the system clock, others provide a hardware solution requiring each of the nodes in the network to run with dedicated hardware. Even when working without adjusting the system clocks as provided by the operating system, these solutions often construct clocks that are derived from the system clock, adjusted with a frequency and offset component to match some remote system. However, such synchronization is in general not accurate.
  • SUMMARY OF THE INVENTION
  • Thus, according to the above description, it is an object of the present invention to provide an accurate way of providing synchronized playback of audio and/or video in a computer network of a plurality of devices.
  • In a first aspect, the invention provides a method for synchronizing playback of audio and/or video from a source in computer network of a plurality of separate devices in a computer network session, see appended claim 1.
  • This invention describes a virtual clock, which allows time synchronization between audio/video devices in a peer-to-peer network audio playback system without requiring the primary system clocks being synchronized, while also avoiding long-term dependency on accuracy of such clocks.
  • Besides easing the integration of audio synchronization systems, this allows for a more direct synchronization between the audio clocks, ultimately resulting in a better synchronization.
  • According to this invention, multiple devices can play the same audio or video experience in a synchronized manner across a computer network, without requiring specialized hardware or system clock adjustments.
  • By working closely with the clocking system that controls the audio playback, a more accurate synchronization can be made than when synchronizing system clocks and adjusting playback according to the system clocks.
  • In the dependent claims, a number of embodiments and/or preferred features will be defined.
  • In a second aspect, the invention provides a protocol for controlling a plurality of separate devices in a computer network.
  • In a third aspect, the invention provides a computer executable program code, or a programmable- or fixed hardware, and/or combination hereof, arranged to perform the method according to the first aspect, or causes a device with a processor to function according to the protocol of the second aspect. The computer executable program code may be stored on a data carrier. The program code may be implemented to function on any type of processor platform.
  • In a fourth aspect, the invention provides a device that operates according to the method or protocol of the first or second aspect. Especially, the device may be an audio device, such as a stand alone active loudspeaker. The device may also be any other type of device with audio and/or video capabilities, e.g. a TV set.
  • In a fifth aspect, the invention provides a system of a plurality of devices according to the fourth aspect, e.g. mixed types of devices arranged to take part in a computer network session, e.g. a wi-fi network session, of synchronized playback of audio and/or video content.
  • In a sixth aspect, the invention provides an electronic chip programmed to allow a device to operate according to protocol according to the third aspect, if provided with access to the electronic chip, e.g. if the device has the chip installed therein.
  • It is appreciated that the same advantages and embodiments described for the first aspect apply as well for the second, third, fourth, fifth, and sixth aspects. Further, it is appreciated that the described embodiments can be intermixed in any way between all the mentioned aspects.
  • BRIEF DESCRIPTION OF THE FIGURES
  • The invention will now be described in more detail with regard to the accompanying figures of which
  • FIG. 1 illustrates one embodiment of a virtual clock (10) based on an Audio CODEC (12), with the possibility of fine tuning,
  • FIG. 2 shows discrete updates of the virtual clock in terms of measurement points (30), and how time is extrapolated between them (32),
  • FIG. 3 illustrates steps of a virtual clock synchronization scheme embodiment, and
  • FIG. 4 shows different extrapolations (33 and 34) within a single discrete update of the virtual clock (30).
  • The figures illustrate specific ways of implementing the present invention and are not to be construed as being limiting to other possible embodiments falling within the scope of the attached claim set.
  • DETAILED DESCRIPTION OF THE INVENTION
  • FIG. 1 illustrates an audio pipeline, where an audio source (22) delivers its audio data to the audio driver (16) with an intermediate sample rate converter (18). The Audio CODEC (12) is driven by a clock system (14), and produces an audio signal (digital or analog) which is passed on to downstream elements (20), such as a loudspeaker or an amplifier.
  • The virtual clock (10) can be driven by the clock system (14) or the audio driver (16), depending on the hardware and operating system configuration. The helper clock (24) may be needed, if the clock system (14) does not provide a tick counter. The Sample rate converter (18) is used to adjust the playback rate, in case the clock system (14) frequency cannot be fine-tuned.
  • Defining a virtual clock (10), which is driven by the audio codec (12) of an audio device, allows reasoning about time in the domain of the audio device. By allowing the playback time to be read and adjusted with minimal involvement of other clocks or timing sources, the virtual clock maintains a close relationship with the audio codec timing of a single sample. This is preferred to allow high quality synchronization between multiple devices across a computer network.
  • In order to be independent of the audio driver architecture, the virtual clock can be implemented in at least the two preferred ways: One utilizing direct access to the tick counter of clock system of the audio codec, and one making periodic measurements and extrapolating between these measurements.
  • For systems that allow access to the tick counter of the clock system (14), which drives the audio codec (12), the tick counter will be used as the primary timing information. Reading the value of the virtual clock will therefore return the tick counter value. However, in order to deal with overflows of the tick counter, a value internal to the virtual clock is added, as will be described shortly.
  • In systems, where the tick counter of the clock system driving the audio codec cannot be accessed, the virtual clock is controlled by either a) keeping track of the pace at which samples are consumed by the audio driver (16), or, b) interrupts at regular intervals generated by the clock system (14).
  • FIG. 2 shows discrete updates of the virtual clock in terms of measurement points serving as intermediary baseline times (30), and how time is extrapolated between them (32). In general, this yields regular baseline times (30). The rate of these are either equal to the number of write interactions with the audio driver, or with the rate of interrupts generated by the clock system (14). In order to allow the virtual clock to have a resolution higher than this rate, a monotonic helper clock (24) is used to extrapolate time (32) between the baseline times (30) that these updates constitute. An example of such a monotonic clock is the monotonic system clock. In such synthesized audio clock systems, the two clocks can have different quality characteristics. The audio driver (16) typically has a high accuracy (low deviation from the real playback time), but is slow to obtain due to blocking on I/O or multi-threading primitives. The helper clock (24) is typically instantaneous to obtain, but may have a lower accuracy.
  • In the synthesized audio clock system, the accuracy of the virtual clock (10) depends mainly on the rate at which the audio driver (16) updates the baseline time. The accuracy of the helper clock (24) extrapolation depends partly on the tick frequency of the helper clock (24) compared to the tick frequency of the audio driver (16), and partly on asynchronous sample rate conversion which alters the tick frequency of the audio driver (16).
  • In order to ensure that the frequency of the virtual clock follows that of the audio codec, a frequency adjustment is made when interpolating as to match the audio codec's frequency, as measured between the baseline updates. The frequency of audio driver interaction or the frequency of the interrupt is kept high enough such that the period where extrapolations occurs is short. Each update (interrupt or driver interaction) will correct any drift introduced by the monotonic helper clock. This keeps the cumulative extrapolation error within bounds.
  • The helper clock (24) extrapolation is calculated as the time passed between the most recent update of the baseline time, and the time at which the virtual clock (10) is read. The audio driver (16) and the helper clock (24) may be driven by different hardware clock oscillators so they may tick at different clock frequencies, and this must be compensated for by multiplying the extrapolation with a scalar such that the extrapolation is done using the audio driver (16) clock ticks. The scalar is calculated by dividing the audio driver (16) clock frequency by the helper clock (25) frequency. This scalar is normally calculated on-the-fly so it can account for other factors that influence the clock frequencies such as temperature or ageing. The easiest way to estimate the scalar is to use two consecutive measurements and divide the difference in the audio driver (16) clock by the difference in the helper clock (24). In practice, such an estimate will be prone to measurement jitter, which can be smoothed over by collecting statistics, such as using a running average of scalar estimates collected over several time intervals.
  • In order to allow a virtual clock to be synchronized with one or more other virtual clocks on other devices in an audio network system, it must be possible to adjust the frequency of the virtual clock (and thus the audio codec's playback rate) ever so slightly, as large or abrupt adjustments are perceptible to the human ear. For systems that allow direct control with the clock system (14) of the audio codec (12), this adjustment can be made directly. For systems where this is not possible, a sample rate converter (18) may be used to slightly lengthen or shorten playback time of the audio.
  • The baseline time of the virtual clock may be calculated by counting the number of samples output by the audio CODEC (12). However, this method can create synchronization jitter. Modifying the playback rate means that the audio CODEC (12) will output fewer or more samples than the number of input samples passed from the audio source (22). As each device in an audio network system will apply its own sample rate conversion in order to synchronize its own audio playback to the audio playback of the other devices, their virtual clocks may run at different speeds even though they consume the same number of input samples. So, even if the devices are perfectly synchronized, their virtual clock can mislead them into making unnecessary synchronization adjustments.
  • Preferably, the baseline time of the virtual clock is calculated by counting how many input samples from the audio source (22) has been consumed. This must be done indirectly by counting the number of samples output by the audio CODEC (12), and then adjust this number by the playback rate to reproduce the number of input samples consumed. As the playback rate may be modified during playback, the virtual clock must keep track of the playback rates of each sample currently being processed by the audio CODEC (12). In practice, the playback rate is not modified per sample, so the virtual clock can instead keep track of the playback rates of sequences of samples. This makes the virtual clock invulnerable to the problem of unnecessary synchronization adjustments of the virtual clock that simply counts output samples.
  • In case the sample rate converter (18) is used to modify the playback time, the asynchronous sample rate conversion is another source of error on the helper clock (24) extrapolation. This can be compensated for by adjusting the extrapolation by the playback rate. In case the playback rate is modified multiple times between two updates of the baseline time, the extrapolation must use different playback rates for different time intervals.
  • FIG. 4 illustrates, as an example, if the baseline time (30) is updated at time t1 with the playback rate Sa, and another playback rate Sb is applied from time t2 until the next update of the baseline time at time t3, then the extrapolation must use playback rate Sa in the time interval from t1 to t2 (33) and playback rate Sb in the time interval t2 to t3 (34).
  • In order to allow the virtual clock to be used to synchronize playback within the audio network, it should preferably be monotonic. When a tick counter is provided by the clock system (14), the absolute value of the virtual clock is a sum of the tick counter and an offset internal to the virtual clock. When the tick counter of the underlying clock shows non-monotonic behavior, the virtual clock compensates for this by increasing its internal offset. If no tick counter is provided, the virtual clock's internal offset is increased on each timer update, be it driven by an interrupt or an audio driver interaction. If the extrapolation between two updates results in non-monotonic behavior, the virtual clock compensates by temporarily increasing the internal offset, and adjusting the frequency used for extrapolations until next update. This ensures monotonicity of the virtual clock, regardless of the physical clock or audio driver behavior.
  • Using the virtual clock to synchronize events requires the virtual clock to be running at all times. However, being dependent on the audio codec's clocking, audio needs to pass through the audio pipeline in order for the virtual clock to be running. This can be achieved by playing zeros: There is no audio, but the entire audio pipeline is kept running, and timing is maintained.
  • Synchronizing across networked devices requires a common reference of the timing information, which means a common time origin, also known as an epoch, and a common time step. A global clock may serve as the reference time, e.g. a global clock may be the wall time, also known as the system time, which has an epoch at midnight on Jan. 1, 1970. The disadvantages of using the system time is that it may not provide the necessary timing accuracy for synchronized audio playback, and the system time may be modified by other services such as the Network Time Protocol making time difference calculations unreliable. Another example is of a global clock is the IEEE 802.11 Time Synchronization Function, which has a higher accuracy, but is only available to devices on the same Access Point. Still further, the audio clock may be used as the reference time. Audio clocks do not normally have a pre-determined epoch, so this has to be agreed by participating devices. This can be done by choosing a global clock to establish the epoch, or to let the participating devices negotiate an arbitrary epoch.
  • In a preferred method, a segmented time is used as the reference time. Segmented time has a sequence of time intervals, where each time interval has its own local epoch and a monotonic segment number to differentiate two distinct time intervals from each other. Segmented time is monotonic because time points in different time intervals are comparable due to the segment number. While segmented time is comparable, time differences can only be calculated if both time points are within the same time interval. An example of a segmented time is to use a 2-tuple with a segment number and the audio presentation time. The audio presentation time uses the start of the audio playback, such as the beginning of a music track, as the epoch. This is a natural choice as networked audio synchronization is about aligning the audio presentation time on different network devices.
  • The segment number is preferably updated whenever an abrupt change in the audio presentation time happens. This can happen when playing the next music track in a playlist, or when seeking within a music track.
  • Another example of a segmented time is to use a 3-tuple with a segment number, the audio presentation time, and an idle time. The idle time is useful for situations where the audio system has to insert audio samples that are not present in the audio source, such as inserting samples with value zero to play silence when an audio playback is paused.
  • FIG. 3 shows an example of steps of a synchronization scheme embodiment, where a virtual clock is generated in response to the incoming audio stream, and wherein the virtual clock is used to synchronize playback of audio and/or video, and/or an other event.
  • To sum up: the invention provides a method for providing a synchronization in a computer network for synchronized playback of audio an/or video by a plurality of separate devices. Each separate device generates a virtual clock in response to a timing of the audio codec of a received audio stream. Especially, segmented time is used as reference time. Either the virtual clock is generated directly in response to the tick counter of the audio codec, or by a periodic measurement of the timing of the audio codec extrapolated by a monotonic clock. A sample rate converter may be used to slightly adjust the frequency of the virtual clock.
  • Although the present invention has been described in connection with the specified embodiments, it should not be construed as being in any way limited to the presented examples. The scope of the present invention is to be interpreted in the light of the accompanying claim set. In the context of the claims, the terms “including” or “includes” do not exclude other possible elements or steps. Also, the mentioning of references such as “a” or “an” etc. should not be construed as excluding a plurality. The use of reference signs in the claims with respect to elements indicated in the figures shall also not be construed as limiting the scope of the invention. Furthermore, individual features mentioned in different claims, may possibly be advantageously combined, and the mentioning of these features in different claims does not exclude that a combination of features is not possible and advantageous.

Claims (1)

1. A method performed by a device for synchronizing content playback from a source of a computer network to the device, comprising:
receiving streamed data from the source via the computer network,
generating a virtual clock in response to a clock system that controls the content playback, wherein the clock system is different from a monotonic system clock of the device;
obtaining a reference time based on a segmented time including a sequence of two or more time intervals, wherein each time interval of the two or more time intervals has its own local epoch and a monotonic segment number to differentiate two time intervals from each other; and
synchronizing the content playback of the streamed data based on the virtual clock and the reference time.
US18/120,180 2016-07-25 2023-03-10 Synchronization with synthesized audio clock Abandoned US20230283830A1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US18/120,180 US20230283830A1 (en) 2016-07-25 2023-03-10 Synchronization with synthesized audio clock
US18/415,349 US20240155176A1 (en) 2016-07-25 2024-01-17 Synchronization with synthesized audio clock

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
PCT/DK2016/050256 WO2018019342A1 (en) 2016-07-25 2016-07-25 Synchronization with synthesized audio clock
US201916319991A 2019-01-23 2019-01-23
US17/212,178 US11627365B2 (en) 2016-07-25 2021-03-25 Synchronization with synthesized audio clock
US18/120,180 US20230283830A1 (en) 2016-07-25 2023-03-10 Synchronization with synthesized audio clock

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US17/212,178 Continuation US11627365B2 (en) 2016-07-25 2021-03-25 Synchronization with synthesized audio clock

Related Child Applications (1)

Application Number Title Priority Date Filing Date
US18/415,349 Continuation US20240155176A1 (en) 2016-07-25 2024-01-17 Synchronization with synthesized audio clock

Publications (1)

Publication Number Publication Date
US20230283830A1 true US20230283830A1 (en) 2023-09-07

Family

ID=56737855

Family Applications (4)

Application Number Title Priority Date Filing Date
US16/319,991 Active 2036-08-10 US10979757B2 (en) 2016-07-25 2016-07-25 Synchronization with synthesized audio clock
US17/212,178 Active 2036-10-22 US11627365B2 (en) 2016-07-25 2021-03-25 Synchronization with synthesized audio clock
US18/120,180 Abandoned US20230283830A1 (en) 2016-07-25 2023-03-10 Synchronization with synthesized audio clock
US18/415,349 Pending US20240155176A1 (en) 2016-07-25 2024-01-17 Synchronization with synthesized audio clock

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US16/319,991 Active 2036-08-10 US10979757B2 (en) 2016-07-25 2016-07-25 Synchronization with synthesized audio clock
US17/212,178 Active 2036-10-22 US11627365B2 (en) 2016-07-25 2021-03-25 Synchronization with synthesized audio clock

Family Applications After (1)

Application Number Title Priority Date Filing Date
US18/415,349 Pending US20240155176A1 (en) 2016-07-25 2024-01-17 Synchronization with synthesized audio clock

Country Status (2)

Country Link
US (4) US10979757B2 (en)
WO (1) WO2018019342A1 (en)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10979757B2 (en) 2016-07-25 2021-04-13 Roku, Inc. Synchronization with synthesized audio clock
US11119531B2 (en) 2019-12-06 2021-09-14 Oracle International Corporation Parallel pseudo infinite monotonic timeline clock

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6598172B1 (en) * 1999-10-29 2003-07-22 Intel Corporation System and method for clock skew compensation between encoder and decoder clocks by calculating drift metric, and using it to modify time-stamps of data packets
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
US7266713B2 (en) * 2004-01-09 2007-09-04 Intel Corporation Apparatus and method for adaptation of time synchronization of a plurality of multimedia streams
TW200835303A (en) * 2006-09-07 2008-08-16 Avocent Huntsville Corp Point-to-multipoint high definition multimedia transmitter and receiver
US8719881B2 (en) * 2008-02-25 2014-05-06 Time Warner Cable Enterprises Llc Methods and apparatus for enabling synchronized content presentations using dynamically updated playlists
US8599310B2 (en) * 2010-12-14 2013-12-03 Ati Technologies Ulc Audio and video clock synchronization
GB201116521D0 (en) * 2011-09-23 2011-11-09 Imagination Tech Ltd Method and apparatus for time synchronisation in wireless networks
US9787523B2 (en) * 2012-07-05 2017-10-10 Eric Lazarus Managing data in a data queue including synchronization of media on multiple devices
WO2017058654A1 (en) * 2015-09-28 2017-04-06 Google Inc. Time-synchronized, multizone media streaming
EP3829182A1 (en) * 2016-03-06 2021-06-02 SSIMWAVE Inc. Method and system for automatic user quality-of-experience measurement of streaming video
US10979757B2 (en) 2016-07-25 2021-04-13 Roku, Inc. Synchronization with synthesized audio clock

Also Published As

Publication number Publication date
US20190238925A1 (en) 2019-08-01
US20210219010A1 (en) 2021-07-15
US20240155176A1 (en) 2024-05-09
US10979757B2 (en) 2021-04-13
WO2018019342A1 (en) 2018-02-01
US11627365B2 (en) 2023-04-11

Similar Documents

Publication Publication Date Title
US20230283830A1 (en) Synchronization with synthesized audio clock
US10679673B2 (en) Synchronization in audio playback network independent of system clock
US20240137202A1 (en) Method and apparatus for time synchronisation in wireless networks
US11272465B2 (en) Methods and apparatus for synchronization of media playback within a wireless network
US8694670B2 (en) Time synchronization of multiple time-based data streams with independent clocks
US7333519B2 (en) Method of manually fine tuning audio synchronization of a home network
US7209795B2 (en) Method of synchronizing the playback of a digital audio broadcast by inserting a control track pulse
WO2012077392A1 (en) Multi-screen display system
US10627782B2 (en) Global time server for high accuracy musical tempo and event synchronization
US11922976B2 (en) Audio time synchronization using prioritized schedule
Young et al. VOSync: An implementation of synchronization system for the virtual orchestra

Legal Events

Date Code Title Description
STPP Information on status: patent application and granting procedure in general

Free format text: NON FINAL ACTION MAILED

STPP Information on status: patent application and granting procedure in general

Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER

STPP Information on status: patent application and granting procedure in general

Free format text: FINAL REJECTION MAILED

AS Assignment

Owner name: ROKU, INC., CALIFORNIA

Free format text: SHARE SALE AND PURCHASE AGREEMENT;ASSIGNOR:DYNASTROM APS;REEL/FRAME:066723/0665

Effective date: 20170906

Owner name: DYNASTROM APS, DENMARK

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:FLEISCHER, PAUL;MOLLER, BRIAN THOFT MOTH;REESE, BJORN;SIGNING DATES FROM 20170630 TO 20170703;REEL/FRAME:066633/0642

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION

AS Assignment

Owner name: CITIBANK, N.A., TEXAS

Free format text: SECURITY INTEREST;ASSIGNOR:ROKU, INC.;REEL/FRAME:068982/0377

Effective date: 20240916