All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Mark Brown <broonie@kernel.org>
Cc: alsa-devel@alsa-project.org, Mark Brown <broonie@linaro.org>,
	Daniel Thompson <daniel.thompson@linaro.org>
Subject: Re: [PATCH] alsa-lib: Provide a CLOCK_MONOTONIC_RAW timestamp type
Date: Wed, 09 Jul 2014 15:38:51 +0200	[thread overview]
Message-ID: <s5h7g3modn8.wl%tiwai@suse.de> (raw)
In-Reply-To: <1404831152-8064-1-git-send-email-broonie@kernel.org>

At Tue,  8 Jul 2014 16:52:32 +0200,
Mark Brown wrote:
> 
> From: Mark Brown <broonie@linaro.org>
> 
> For applications which need to synchronise with external timebases such
> as broadcast TV applications the kernel monotonic time is not optimal as
> it includes adjustments from NTP and so may still include discontinuities
> due to that. A raw monotonic time which does not include any adjustments
> is available in the kernel from getrawmonotonic() so provide userspace with
> a new timestamp type SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW which provides
> timestamps based on this as an option.
> 
> Reported-by: Daniel Thompson <daniel.thompson@linaro.org>
> Signed-off-by: Mark Brown <broonie@linaro.org>

Currently, the timestamp mode is set implicitly in alsa-lib pcm_hw.c:
- When kernel PCM protocol version is high enough, alsa-lib hw prefers
  the monotonic always (if available), then set pcm->monotonic = 1.
- Application can ask whether the current timestamp is monotonic or
  not via snd_pcm_hw_params_is_monotonic().
So, only adding the flag above doesn't suffice.  If we need to add a
new mode, the API has to be extended as well.

But how?  The current API assumes that the monotonic mode was already
determined before hw_params.  We may add a set of new hw_params get
and set calls for tstamp mode while keeping the old API.  This would
be one option.  Another option would be to add a new PCM open flag
SND_PCM_TSTAMP_MONOTONIC_RAW, and snd_pcm_hw_params_is_monotonic_raw()
function.  The latter is easier (a simpler addition), while the former
is more extensible to newer formats in future.

Comments?

(I guess tinyalsa has a different story, but let's align genuine
 alsa-lib first.)


Takashi


> ---
>  include/sound/asound.h | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/include/sound/asound.h b/include/sound/asound.h
> index 1774a5c..9061cdd 100644
> --- a/include/sound/asound.h
> +++ b/include/sound/asound.h
> @@ -457,7 +457,8 @@ struct snd_xfern {
>  enum {
>  	SNDRV_PCM_TSTAMP_TYPE_GETTIMEOFDAY = 0,	/* gettimeofday equivalent */
>  	SNDRV_PCM_TSTAMP_TYPE_MONOTONIC,	/* posix_clock_monotonic equivalent */
> -	SNDRV_PCM_TSTAMP_TYPE_LAST = SNDRV_PCM_TSTAMP_TYPE_MONOTONIC,
> +	SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW,	/* monotonic_raw (no NTP) */
> +	SNDRV_PCM_TSTAMP_TYPE_LAST = SNDRV_PCM_TSTAMP_TYPE_MONOTONIC_RAW,
>  };
>  
>  /* channel positions */
> -- 
> 2.0.0
> 

  reply	other threads:[~2014-07-09 13:38 UTC|newest]

Thread overview: 7+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-07-08 14:52 [PATCH] alsa-lib: Provide a CLOCK_MONOTONIC_RAW timestamp type Mark Brown
2014-07-09 13:38 ` Takashi Iwai [this message]
2014-07-09 19:40   ` Clemens Ladisch
2014-07-10 10:22     ` Takashi Iwai
2014-07-10 15:10     ` Pierre-Louis Bossart
2014-07-10 15:33       ` Takashi Iwai
2014-07-10 15:38         ` Pierre-Louis Bossart

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=s5h7g3modn8.wl%tiwai@suse.de \
    --to=tiwai@suse.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=broonie@linaro.org \
    --cc=daniel.thompson@linaro.org \
    /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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.