From: "Alexander E. Patrakov" <patrakov@gmail.com>
To: Jaroslav Kysela <perex@perex.cz>, alsa-devel@alsa-project.org
Cc: tiwai@suse.de, clemens@ladisch.de,
David Henningsson <david.henningsson@canonical.com>
Subject: Re: [PATCH 0/9] Misc fixes related to rewinds
Date: Sun, 14 Sep 2014 01:31:11 +0600 [thread overview]
Message-ID: <54149B7F.6000002@gmail.com> (raw)
In-Reply-To: <54149789.2060102@perex.cz>
14.09.2014 01:14, Jaroslav Kysela wrote:
> Date 13.9.2014 20:30, Alexander E. Patrakov wrote:
>> The idea of the series is to fix the two issues that I found [1] for the
>
> I applied all your patches to alsa-lib's repo, but...
>
>> hw plugin. snd_pcm_rewindable() sometimes returned negative values that
>> are actually negative amounts of samples and not error codes. Also, it
>> bases its calculations on stale hardware position pointer, which is not
>> what PulseAudio wants (alternatively, we can document the need to call
>> snd_pcm_avail() before snd_pcm_rewindable(), but I don't like it).
>
> The hw sync is expensive and the application might do this sync multiple
> times when woken up. I think that it must be clear that:
>
> 1) only snd_pcm_avail(), snd_pcm_delay(), snd_pcm_avail_delay()
> does the real hw sync
> 2) snd_pcm_avail(), snd_pcm_delay(), snd_pcm_avail_delay(),
> snd_pcm_rewindable() and snd_pcm_forwardable() does
> hw sync (and change all plugins to respect this)
>
> I don't like the situation "be somewhere between because it's good for
> one purpose"...
I understand the concern. I have specifically not added the call to
hwsync directly to snd_pcm_rewindable implementation (although it would
have resulted in a smaller patch), because that would indeed cause
double-hwsync and the resulting inefficiency. I made sure that all
plugins either make the hwsync thing themselves or rely on the slave to
do that for them, but not both. If you find an error and/or spot a case
of a double-hwsync in a plugin chain, please complain.
One known case of double-hwsync is the following pattern: an application
calls snd_pcm_rewindable(), thinks about it, and then calls
snd_pcm_rewind(). Which, due to PATCH 2/9, calls the rewindable callback
again, resulting in the second hwsync. I don't know which way out is
best: either ignore, or revert the intention of PATCH 2/9, or revert the
whole PATCH 8/9 and replace it with a documentation change.
OTOH, I made a mistake of not adding David Henningsson to the CC list
during the initial submission. If PulseAudio would need to synchronize
hardware pointers even after conversion to snd_pcm_rewindable() for some
other reason, then the need for PATCH 8/9 is not that obvious, and maybe
it should be reverted and replaced with a documentation fix.
--
Alexander E. Patrakov
next prev parent reply other threads:[~2014-09-13 19:31 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-13 18:30 [PATCH 0/9] Misc fixes related to rewinds Alexander E. Patrakov
2014-09-13 18:30 ` [PATCH 1/9] dmix: actually rewind when running or being drained Alexander E. Patrakov
2014-09-13 18:30 ` [PATCH 2/9] pcm: express the rewind size limitation logic better Alexander E. Patrakov
2014-09-13 18:30 ` [PATCH 3/9] pcm: handle negative values from snd_pcm_mmap_hw_avail Alexander E. Patrakov
2014-09-13 18:30 ` [PATCH 4/9] pcm, rate: use the snd_pcm_mmap_hw_avail function Alexander E. Patrakov
2014-09-13 18:30 ` [PATCH 5/9] pcm, null: use the snd_pcm_mmap_avail function Alexander E. Patrakov
2014-09-13 18:30 ` [PATCH 6/9] rate: handle negative values from snd_pcm_mmap_playback_hw_avail Alexander E. Patrakov
2014-09-15 8:49 ` Takashi Iwai
2014-09-15 10:03 ` Alexander E. Patrakov
2014-09-15 10:14 ` Takashi Iwai
2014-09-16 15:52 ` Alexander E. Patrakov
2014-09-16 17:26 ` Jaroslav Kysela
2014-09-16 19:18 ` Takashi Iwai
2014-09-13 18:30 ` [PATCH 7/9] dsnoop: rewindable and forwardable logic was swapped Alexander E. Patrakov
2014-09-13 18:30 ` [PATCH 8/9] pcm: rewindable, forwardable: don't return stale data Alexander E. Patrakov
2014-09-14 2:57 ` Raymond Yau
2014-09-13 18:30 ` [PATCH 9/9] pcm, file: don't recurse in the rewindable and forwardable callbacks Alexander E. Patrakov
2014-09-13 19:14 ` [PATCH 0/9] Misc fixes related to rewinds Jaroslav Kysela
2014-09-13 19:31 ` Alexander E. Patrakov [this message]
2014-09-13 19:50 ` Alexander E. Patrakov
2014-09-14 16:34 ` Jaroslav Kysela
2014-09-14 8:53 ` Raymond Yau
2014-09-14 10:11 ` Alexander E. Patrakov
2014-09-14 11:09 ` Alexander E. Patrakov
2014-09-14 11:19 ` Alexander E. Patrakov
2014-09-15 8:55 ` Takashi Iwai
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=54149B7F.6000002@gmail.com \
--to=patrakov@gmail.com \
--cc=alsa-devel@alsa-project.org \
--cc=clemens@ladisch.de \
--cc=david.henningsson@canonical.com \
--cc=perex@perex.cz \
--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.