public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Daniel Thompson <daniel.thompson@linaro.org>
To: Mark Brown <broonie@kernel.org>, Clemens Ladisch <clemens@ladisch.de>
Cc: Peter Zijlstra <peterz@infradead.org>,
	Thomas Gleixner <tglx@linutronix.de>,
	Stefan Richter <stefanr@s5r6.in-berlin.de>,
	linux-kernel@vger.kernel.org,
	linux1394-devel@lists.sourceforge.net,
	John Stultz <john.stultz@linaro.org>
Subject: Re: firewire: CLOCK_MONOTONIC_RAW exposure
Date: Thu, 17 Jul 2014 09:37:40 +0100	[thread overview]
Message-ID: <53C78B54.5070102@linaro.org> (raw)
In-Reply-To: <20140716150010.GA4951@sirena.org.uk>

On 16/07/14 16:00, Mark Brown wrote:
> On Wed, Jul 16, 2014 at 04:16:35PM +0200, Clemens Ladisch wrote:
>> Peter Zijlstra wrote:
>>> On Wed, Jul 16, 2014 at 01:34:21PM +0200, Clemens Ladisch wrote:
> 
>>>> The purpose is to get a stable clock, i.e., to avoid clock rate changes
>>>> caused by NTP corrections.
> 
>>> That's maybe half an answer; what do you need that for?
> 
>> According to the original report, "for applications which need to
>> synchronise with external timebases such as broadcast TV applications".
>> Such external clocks are not synchronous with any available clocksource,
>> so proper resampling requires that the (relative) rate of the two clocks
>> (sender and playback device) is measured accurately.
> 
>> (I don't have numbers for the errors caused by NTP adjustments.  Daniel?)
> 
> Right, the goal is to get a clock which is guaranteed to never have any
> adjustments that might cause discontinuities or rate changes applied to
> it.  My understanding is that the users are already doing their own rate
> matching and it's much more important to them to get a stable clock than
> it is to get a clock at a specific nominal rate, and given the set top
> box applications I expect they also need this from very soon after boot.

We are trying to match rates with a broadcast device that "shouts" the
current time many times per second (MPEG transport stream PCR packets).
These packets are timestamped on arrival with a local clock and the
resulting data is used to recover the broadcast clock. However due to
variable transmission delay of the packets we require very long
control loops to extract any useful information from this data (varies
between five minutes and half and hour).

An NTP rate correction can change the rate of CLOCK_MONOTONIC
sufficiently to confuse our clock recovery algorithms so we use
CLOCK_MONOTONIC_RAW as the master view of time.

Both audio and video must be presented synchronized to the recovered
broadcast clock which in practice this means comparing them to
CLOCK_MONOTONIC_RAW and doing some maths.

In is, of course, possible to convert ALSA's CLOCK_MONOTONIC
timestamps into CLOCK_MONOTONIC_RAW values so we can compare ALSA time
to the broadcast clock. In fact its not even that hard compared to the
other time conversions we have to do. Nevertheless it is a redundant
conversion and adds an extra dimension to a problem that only just fits
in most craniums ;-)


Daniel.


  reply	other threads:[~2014-07-17  8:38 UTC|newest]

Thread overview: 9+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-16  9:57 firewire: CLOCK_MONOTONIC_RAW exposure Thomas Gleixner
2014-07-16 11:34 ` Clemens Ladisch
2014-07-16 12:37   ` Peter Zijlstra
2014-07-16 14:16     ` Clemens Ladisch
2014-07-16 15:00       ` Mark Brown
2014-07-17  8:37         ` Daniel Thompson [this message]
2014-07-17 13:19           ` Thomas Gleixner
2014-07-17 16:14           ` John Stultz
2014-07-17 16:34             ` Daniel Thompson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=53C78B54.5070102@linaro.org \
    --to=daniel.thompson@linaro.org \
    --cc=broonie@kernel.org \
    --cc=clemens@ladisch.de \
    --cc=john.stultz@linaro.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux1394-devel@lists.sourceforge.net \
    --cc=peterz@infradead.org \
    --cc=stefanr@s5r6.in-berlin.de \
    --cc=tglx@linutronix.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox