From: "Alexander E. Patrakov" <patrakov@gmail.com>
To: Raymond Yau <superquad.vortex2@gmail.com>
Cc: ALSA Development Mailing List <alsa-devel@alsa-project.org>,
Lars-Peter Clausen <lars@metafoo.de>,
Takashi Iwai <tiwai@suse.de>,
Clemens Ladisch <clemens@ladisch.de>,
Takashi Sakamoto <o-takashi@sakamocchi.jp>,
David Henningsson <david.henningsson@canonical.com>
Subject: Re: Master Plan on rewinding
Date: Tue, 23 Sep 2014 16:22:54 +0600 [thread overview]
Message-ID: <542149FE.1060500@gmail.com> (raw)
In-Reply-To: <CAN8ccib09wKC-GxASX4Kkh0070e7tRy5KuQER+NqS4R0wWo4XQ@mail.gmail.com>
23.09.2014 14:29, Raymond Yau wrote:
>
> >>>
> >>>
> >>> Does this mean the those sound card can report
> >>> DMA_RESIDUE_GRANULARITY_BURST and driver use readl in pcm pointer
> >>> callback ?
> >>>
> >>> A few PCI sound cards use SG buffer including hda
> >>>
> >>> It seem that pulseaudio expect the driver support
> >>> DMA_RESIDUE_GRANULARITY_BURST for rewind/ timer scheduling
> >>
> >>
> >> Yes. This is why we set the BATCH flag if the granularity is not
> >> DMA_RESIDUE_GRANULARITY_BURST so for example pulse audio can disable
> >> timer scheduling.
> >
>
> The resolution of pulseaudio volume is higher than the number of steps
> of the hardware volume control, this mean any volume change by user
> force pulseaudio to rewind because of the change in software volume
>
> As user won't expect the volume change is delayed by one second
Absolutely correct, and a similar thing was already discussed. The
interesting part of the discussion starts here:
http://lists.freedesktop.org/archives/pulseaudio-discuss/2014-April/020462.html
Please disregard my "factor of 1000" statement - it is no longer true.
> Those drivers should not use 2 periods as graunulaity is one period
> which is 170ms ~1 second if you are running video conference (e.g.
> Google hangout) when video is 15~30 frames per second
>
> The safeguard can only be decreased by reduce the period size
Also correct for the BATCH cards. However, please note that for the
BATCH cards PulseAudio looks at the default-fragment-size-msec setting
from daemon.conf by default.
> Is it feasible for pulseaudio to use more periods with suitable period
> size/time for the requested latency when there is one and only one
> client when the sound card cannot provide precise DMA position instead
> of maximum period size/time ?
Probably not, because the rewinds are exposed in the public PulseAudio
APIs (in particular, via the last two parameters of pa_stream_write()).
So it definitely should not use the maximum period time, but should also
not derive one from the client-requested latency. A hard-coded default
or a default from the config (i.e. the current situation) is therefore
as good as one can get on BATCH cards regarding the period size.
>
> >
> > For the record, disabling timer-based scheduling is IMHO a matter of
> further discussion. As long as there is enough safeguard, I think that
> timer-based scheduling can still be used, and is useful. A living proof
> is the whole story with the snd-usb-audio driver where (justified)
> addition of the BATCH flag was perceived as a performance regression and
> not as a fix to some real and obvious problem.
>
> The point is some drivers use .periods_min = 1
>
> Pulseaudio select minimum number of period
It does not do that on BATCH cards. Or if it does, it is a bug.
As for the rest of your arguments, you are just stating obvious and
correct things, so I see no point in quoting them.
Indeed, most of the work on PulseAudio side would mean choosing the
correct period size, number of periods, wakeup threshold and rewind
granularity for each possible situation. I should just do it when the
needed API appears on the ALSA side :)
--
Alexander E. Patrakov
next prev parent reply other threads:[~2014-09-23 10:21 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-07 15:16 Master Plan on rewinding Alexander E. Patrakov
2014-09-07 18:38 ` Tanu Kaskinen
2014-09-07 19:05 ` Alexander E. Patrakov
2014-09-07 20:51 ` Clemens Ladisch
2014-09-08 3:06 ` Raymond Yau
2014-09-08 7:31 ` Alexander E. Patrakov
2014-09-09 8:43 ` Clemens Ladisch
2014-09-09 8:55 ` Alexander E. Patrakov
2014-09-09 9:08 ` David Henningsson
2014-09-09 9:31 ` Alexander E. Patrakov
2014-09-21 2:02 ` Raymond Yau
2014-09-22 13:20 ` Lars-Peter Clausen
2014-09-22 13:36 ` Alexander E. Patrakov
2014-09-22 13:44 ` Lars-Peter Clausen
2014-09-23 8:29 ` Raymond Yau
2014-09-23 10:22 ` Alexander E. Patrakov [this message]
2014-09-09 13:45 ` Clemens Ladisch
2014-09-09 15:55 ` Alexander E. Patrakov
2014-09-09 16:09 ` Takashi Iwai
2014-09-07 23:12 ` David Henningsson
2014-09-09 19:56 ` Pierre-Louis Bossart
2014-09-10 5:38 ` Alexander E. Patrakov
2014-09-08 7:34 ` Lars-Peter Clausen
2014-09-08 7:59 ` David Henningsson
2014-09-08 8:46 ` Alexander E. Patrakov
2014-09-08 9:26 ` David Henningsson
2014-09-08 10:21 ` Alexander E. Patrakov
2014-09-09 8:43 ` Clemens Ladisch
2014-09-11 3:49 ` Raymond Yau
2014-09-11 4:19 ` A. C. Censi
2014-09-13 9:15 ` Raymond Yau
2014-09-11 5:28 ` Alexander E. Patrakov
2014-09-11 6:21 ` Raymond Yau
2014-09-13 8:57 ` Raymond Yau
2014-09-13 10:43 ` Alexander E. Patrakov
2014-09-13 11:33 ` Raymond Yau
2014-09-13 11:36 ` Alexander E. Patrakov
2014-09-13 18:35 ` Alexander E. Patrakov
2014-09-14 11:37 ` Raymond Yau
2014-09-14 12:07 ` Alexander E. Patrakov
2014-09-15 2:43 ` Raymond Yau
2014-09-15 9:19 ` Takashi Iwai
2014-09-15 9:58 ` Alexander E. Patrakov
2014-09-15 10:08 ` Takashi Iwai
2014-09-15 17:01 ` Pierre-Louis Bossart
2014-09-15 17:14 ` Alexander E. Patrakov
2014-09-15 18:08 ` Takashi Iwai
2014-09-18 1:15 ` Raymond Yau
2014-09-21 9:22 ` Alexander E. Patrakov
2014-09-21 9:53 ` Clemens Ladisch
2014-09-21 10:56 ` Alexander E. Patrakov
2014-09-22 3:27 ` 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=542149FE.1060500@gmail.com \
--to=patrakov@gmail.com \
--cc=alsa-devel@alsa-project.org \
--cc=clemens@ladisch.de \
--cc=david.henningsson@canonical.com \
--cc=lars@metafoo.de \
--cc=o-takashi@sakamocchi.jp \
--cc=superquad.vortex2@gmail.com \
--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.