[pulseaudio-discuss] snd_pcm_avail no reliable
Raymond Yau
superquad.vortex2 at gmail.com
Tue Jun 16 16:39:02 PDT 2015
> > >> > >> >
> > >> > >> > below is what the terminate shows when running pcm_avail.c
> > >> > >> >
> > >> > >> > uid=0 gid=1007 at nutshell:/ # alsactl_test
> > >> > >> > min_period_size: 8 frames, dir: 0
> > >> > >> > Playback hwparams: FIFO size is 8
> > >> > >> > Hardware PCM card 0 'rsnd-dai.0-dirana3.0' device 0
subdevice 0
> > >> > >> > Its setup is:
> > >> > >> > stream : PLAYBACK
> > >> > >> > access : RW_INTERLEAVED
> > >> > >> > format : S16_LE
> > >> > >> > subformat : STD
> > >> > >> > channels : 2
> > >> > >> > rate : 48000
> > >> > >> > exact rate : 48000 (48000/1)
> > >> > >> > msbits : 16
> > >> > >> > buffer_size : 4096
> > >> > >> > period_size : 1024
> > >> > >> > period_time : 21333
> > >> > >> > tstamp_mode : NONE
> > >> > >> > period_step : 1
> > >> > >> > avail_min : 1024
> > >> > >> > period_event : 0
> > >> > >> > start_threshold : 1024
> > >> > >> > stop_threshold : 4096
> > >> > >> > silence_threshold: 0
> > >> > >> > silence_size : 0
> > >> > >> > boundary : 1073741824
> > >> > >> > appl_ptr : 0
> > >> > >> > hw_ptr : 0
> > >> > >> > Playing silence
> > >> > >> > Available: 0, loop iteration: 0
> > >> > >> > Available: 1024, loop iteration: 1469
> > >> > >> > Available: 2048, loop iteration: 5609
> > >> > >> > Available: 3072, loop iteration: 9667
> > >> > >> >
> > >> > >> > All I got is just the 4 lines.
> > >> > >>
> > >> > >> If your sound card only increment hw_ptr only at interrupt
occur, you
> > >> > >> need to increase default_rewind_safeguard from 256 bytes to your
> > >> > >> selected period size
> > >> > >
> > >> > >
> > >> > > No. PulseAudio, in timer-scheduling mode, does not use periods
at all. You need to change the driver so that it reports
SNDRV_PCM_INFO_BATCH, so that PulseAudio does not try to use this mode.
> > >> > >
> > >> > >
> > >> > >>
> > >> > >> This mean that your sound card won't work with timer
scheduling or
> > >> > >> dynamic latency, you can only archieve low latency by decrease
period size
> > >> > >> Why do pulseaudio enable timer scheduling when most sound card
use IRQ ?
> > >> > >
> > >> > >
> > >> > > Because most broken sound cards driver authors forget to report
SNDRV_PCM_INFO_BATCH?
> > >> >
> > >> > Why pulseaudio rely on the flag if your program can find out the
granulatity ?
> > >>
> > >> AFAIK, there isn't a way to figure out granularity. Having this
would be nice as we could be more intelligent about our tsched behaviour.
> > >
> > >
> > > There is not only no way to query granularity, in some cases it is
simply unknown. As for my approach (of measuring it directly), I currently
think (but do not insist) that it is not suitable for inclusion into
PulseAudio, because it is based on using a silent "test sound",
busy-looping and repeatedly querying the position until it plays out. This
would be unreliable if there is an unrelated CPU usage spike, and I think
that busy-looping in general is not welcome.
> >
> > https://bugs.freedesktop.org/show_bug.cgi?id=86262#c19
> >
> > Seem hwptr of snd-usb-audio are not that bad around 240 to 288 frames
(less than period size) but not as good as snd-hda-intel 32 frames or
oxygen 8 frames
> >
> > How accurate do pulseaudio need to use timer base scheduling ?
>
> Our current safety margin on rewinds is 256 bytes or higher. If you can
confirm the USB audio max update size as being in the few hundred frames
range, we might be able to quirk this for now (till we have a better
mechanism, as is being discussed on alsa-devel).
Do the result of those two usb audio devices mean that pcm_available.c need
to use period time instead of period size for those usb audio and firewire ?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20150617/1a13ba8f/attachment.html>
More information about the pulseaudio-discuss
mailing list