[pulseaudio-discuss] snd_pcm_avail no reliable

Raymond Yau superquad.vortex2 at gmail.com
Tue Jun 9 08:45:39 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.
> >>
> >
> > But in this case, alecandra `s program already indicate hw_ptr only
> > increment by period size which is not suitable to enable timer base
> > scheduling
>
> There are two cases: the first is that pointer updates happen at
> period size, which should imply the BATCH flag, and we just disable
> timer-based scheduling.

Is this asoc sound card ?

https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/commit/sound/soc/soc-generic-dmaengine-pcm.c?id=acde50a7bf1fd6ae0baa4402f0a02c4b1bd4c990
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20150609/8d823db2/attachment-0001.html>


More information about the pulseaudio-discuss mailing list