All of lore.kernel.org
 help / color / mirror / Atom feed
From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
To: Takashi Iwai <tiwai@suse.de>
Cc: Nick Stoughton <nstoughton@aether.com>,
	alsa-devel@alsa-project.org, Tim Cussins <timcussins@eml.cc>
Subject: Re: [PATCH RFC 5/9] ALSA: core: selection of	audio_tstamp type and accuracy reports
Date: Wed, 10 Dec 2014 15:48:06 -0600	[thread overview]
Message-ID: <5488BF96.708@linux.intel.com> (raw)
In-Reply-To: <s5hppbr6ze7.wl-tiwai@suse.de>


>
> A few more items that came to my mind later:
>
> - It'd be better to align both input and output; namely, the input
>    struct and output struct must be compatible.
>    Currently, report_delay flag is overwritten in return.  This bit
>    should be kept upon read back.
>
>    This essentially unifies snd_pcm_audio_tstamp_config and
>    snd_pcm_audio_tstamp_report.  We don't have to pass two structs to
>    callbacks.

ok. this is what I had before and I thought it'd be cleaner to clearly 
make the distinction between config and report. no issue changing this.

> - Or, we may avoid packing/unpacking by defining the struct like:
>
>       unsigned char type;
>       unsigned char flags;
>       unsigned char accuracy_mantessa;
>       unsigned char accuracy_exponent;
>
>    where flags field contains the bit flags for report_delay and
>    accuracy_report.
>
>    That said, I'm worrying a bit about the complexity of the new
>    callback function.

I would prefer a single structure if we want to add something later.

> - The biggest concern I have now is whether it's really feasible to
>    change the semantics of snd_pcm_status ioctl, i.e. from the
>    read-only to the write-read.  I guess this would work as the padding
>    field is very likely zero even in the very old alsa-lib version.

The change doesn't affect anyone really, all my defaults are zero.

> - Another concern is the compatibility with the current wallclock
>    implementation.  Judging from your patch, the audio_tstamp won't be
>    obtained from get_time_info callback in the default tstamp mode,
>    right?  This may result in a regression, as currently the driver
>    always gives the h/w audio_tstamp when the driver supports the
>    wallclock.

Is this that big of a deal? To the best of my knowledge this wallclk 
thing was implemented for HDaudio only when we were prototyping the new 
hardware, and I don't think we ended-up contributing the corresponding 
patches for PulseAudio. We've since realized that the wallclock can't be 
available in all cases and that we need this selection capability in a 
variety of cases.

Also even if we kept the .wall_clock callback, the wallclock handling 
could be relative (start at zero) or absolute. I implemented a reset to 
zero on stream startup, since the counter is not maintained when the 
hardware is idle, but there are implementations where the wallclock is 
really absolute and not reset (see below).

> - Last but not least: we're receiving multiple enhancement requests
>    regarding tstamp at the very same time.  This patchset conflicts
>    with Tim and Nick's start_at extention.
>
>    I believe this can be resolved later, but let's discuss the ground
>    line at first: the requirement and influence on both changes.

I am aware of this and it's why I posted my patches earlier than planned 
to avoid merging different concepts later, it's probably best to have 
compatibility from day1.

My proposal was to have a start_at functionality based on the timestamp 
definitions I suggested and keep audio and system timestamps separate 
rather than add mixed typestamps such as 
SND_PCM_TSTAMP_TYPE_AUDIO_WALLCLOCK. the code could be something like:

start_at(typestamp type, timestamp subtype, timespec value ) {

	if (type == SYSTEM) {
		_start_using_hrtimers(subtype, value) // would be CLOCK_REALTIME, 
MONOTONIC, maybe RAW
	} else if (type == AUDIO) {
		if (subtype == ABSOLUTE_WALLCLOCK) // not reset on audio subsystem startup
			_start_using_hardware(value)
		else
			// not sure what to do with regular counters, probably bail.
			error;
	}

That way you can set what sort of system timestamp and what sort of 
audio timestamp you want reported by snd_pcm_status, and you can 
independently select the start timestamp of your choice.

  reply	other threads:[~2014-12-10 21:48 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2014-12-08 22:23 [PATCH RFC 0/9] audio timestamping evolutions Pierre-Louis Bossart
2014-12-08 22:23 ` [PATCH RFC 1/9] ALSA: core: don't override timestamp unconditionally Pierre-Louis Bossart
2014-12-08 22:23 ` [PATCH RFC 2/9] ALSA: core: allow for trigger_tstamp snapshot in .trigger Pierre-Louis Bossart
2014-12-10 16:31   ` Takashi Iwai
2014-12-10 17:22     ` Pierre-Louis Bossart
2014-12-10 17:35       ` Takashi Iwai
2014-12-10 18:43         ` Pierre-Louis Bossart
2014-12-10 19:20           ` Takashi Iwai
2014-12-08 22:23 ` [PATCH RFC 3/9] ALSA: hda: read trigger_timestamp immediately after starting DMA Pierre-Louis Bossart
2014-12-08 22:23 ` [PATCH RFC 4/9] ALSA: usb: update trigger timestamp on first non-zero URB submitted Pierre-Louis Bossart
2014-12-08 22:23 ` [PATCH RFC 5/9] ALSA: core: selection of audio_tstamp type and accuracy reports Pierre-Louis Bossart
2014-12-10 16:35   ` Takashi Iwai
2014-12-10 17:27     ` Pierre-Louis Bossart
2014-12-10 17:39       ` Takashi Iwai
2014-12-10 20:08         ` Takashi Iwai
2014-12-10 21:48           ` Pierre-Louis Bossart [this message]
2014-12-10 22:27             ` Takashi Iwai
2014-12-10 23:04               ` Pierre-Louis Bossart
2014-12-11  5:54                 ` Takashi Iwai
2014-12-12  2:36                   ` Pierre-Louis Bossart
2014-12-12  8:37                     ` Takashi Iwai
2014-12-12 15:20                       ` Pierre-Louis Bossart
2014-12-14 15:03                         ` Takashi Iwai
2014-12-16 14:01               ` Tim Cussins
2014-12-08 22:23 ` [PATCH RFC 6/9] ALSA: core: pass audio tstamp config from userspace Pierre-Louis Bossart
2014-12-10 17:28   ` Takashi Iwai
2014-12-10 17:35     ` Pierre-Louis Bossart
2014-12-10 17:40       ` Takashi Iwai
2014-12-08 22:23 ` [PATCH RFC 7/9] ALSA: core: pass audio tstamp config from userspace in compat mode Pierre-Louis Bossart
2014-12-08 22:23 ` [PATCH RFC 8/9] ALSA: core: replace .wall_clock by .get_time_info Pierre-Louis Bossart
2014-12-08 22:23 ` [PATCH RFC 9/9] ALSA: hda: replace .wallclock " Pierre-Louis Bossart
2014-12-10  4:40 ` [PATCH RFC 0/9] audio timestamping evolutions Raymond Yau
2014-12-10 14:55   ` Pierre-Louis Bossart
2014-12-12  4:55     ` Raymond Yau
2014-12-12 15:28       ` Pierre-Louis Bossart
2014-12-14  3:34         ` Raymond Yau

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=5488BF96.708@linux.intel.com \
    --to=pierre-louis.bossart@linux.intel.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=nstoughton@aether.com \
    --cc=timcussins@eml.cc \
    --cc=tiwai@suse.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 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.