From: Takashi Iwai <tiwai@suse.de>
To: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
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 21:08:48 +0100 [thread overview]
Message-ID: <s5hppbr6ze7.wl-tiwai@suse.de> (raw)
In-Reply-To: <s5hegs7mmki.wl-tiwai@suse.de>
At Wed, 10 Dec 2014 18:39:09 +0100,
Takashi Iwai wrote:
>
> At Wed, 10 Dec 2014 11:27:26 -0600,
> Pierre-Louis Bossart wrote:
> >
> > On 12/10/14, 10:35 AM, Takashi Iwai wrote:
> > > Just a minor issue before going to detailed review:
> > >
> > > At Mon, 8 Dec 2014 16:23:42 -0600,
> > > Pierre-Louis Bossart wrote:
> > >>
> > >> +/* user space provides config to kernel */
> > >> +struct snd_pcm_audio_tstamp_config {
> > >> + __u32 type_requested:4;
> > >> + __u32 report_delay:1; /* add total delay to A/D or D/A */
> > >> +};
> > > ....
> > >> +/* kernel provides report to user-space */
> > >> +struct snd_pcm_audio_tstamp_report {
> > >> + /* actual type if hardware could not support requested timestamp */
> > >> + __u32 actual_type:4;
> > >> +
> > >> + /* accuracy represented in mantissa/exponent form */
> > >> + __u32 accuracy_report:1; /* 0 if accuracy unknown, 1 if rest of structure is valid */
> > >> + __u32 accuracy_m:7; /* 0..127, ~3 significant digit for mantissa */
> > >> + __u32 accuracy_e:4; /* base10 exponent, 0 for ns, 3 for us, 6 for ms, 9 for s */
> > >> +};
> > >
> > > Please avoid the bit fields in these, since these values will be a
> > > part of ABI. There is absolutely no compatibility when you're using
> > > bitfields. Use the explicit bit operations.
> >
> > Those definitions are not used as part of the kernel/user interaction, I
> > did use pack/unpack operations as requested in previous reviews. see
> > snd_pcm_unpack_tstamp_config and snd_pcm_pack_audio_tstamp_report.
> > A similar pack/unpack operation is provided in the alsa-lib patches
> > The data is exchanged using the reclaimed 32-bit word only.
> >
> > Would that work?
>
> Ah OK, then it's fine. Then could you add more comments mentioning
> that the structs are internal only and converted by the dedicated
> functions for kernel ABI?
>
> Also, use simple u32 instead of __u32. Then it's clearer that it's an
> internal usage.
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.
- 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.
- 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.
- 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.
- 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.
thanks,
Takashi
next prev parent reply other threads:[~2014-12-10 20:08 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 [this message]
2014-12-10 21:48 ` Pierre-Louis Bossart
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=s5hppbr6ze7.wl-tiwai@suse.de \
--to=tiwai@suse.de \
--cc=alsa-devel@alsa-project.org \
--cc=nstoughton@aether.com \
--cc=pierre-louis.bossart@linux.intel.com \
--cc=timcussins@eml.cc \
/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.