[pulseaudio-discuss] snd_pcm_avail no reliable

Raymond Yau superquad.vortex2 at gmail.com
Mon Jun 8 20:38:35 PDT 2015


>
>    I found some audio noise problem when I trying to set the sink latency
to a lower value.
>
>    here is the alsa dump:
>
>     D/NMAudio ( 1959): Its setup is:
>     D/NMAudio ( 1959):   stream       : PLAYBACK
>     D/NMAudio ( 1959):   access       : MMAP_INTERLEAVED
>     D/NMAudio ( 1959):   format       : S16_LE
>     D/NMAudio ( 1959):   subformat    : STD
>     D/NMAudio ( 1959):   channels     : 2
>     D/NMAudio ( 1959):   rate         : 22050
>     D/NMAudio ( 1959):   exact rate   : 22050 (22050/1)
>     D/NMAudio ( 1959):   msbits       : 16
>     D/NMAudio ( 1959):   buffer_size  : 8192
>     D/NMAudio ( 1959):   period_size  : 2048
>     D/NMAudio ( 1959):   period_time  : 92879
>     D/NMAudio ( 1959):   tstamp_mode  : ENABLE
>     D/NMAudio ( 1959):   period_step  : 1
>     D/NMAudio ( 1959):   avail_min    : 7751
>     D/NMAudio ( 1959):   period_event : 0
>     D/NMAudio ( 1959):   start_threshold  : -1
>     D/NMAudio ( 1959):   stop_threshold   : 1073741824
>     D/NMAudio ( 1959):   silence_threshold: 0
>     D/NMAudio ( 1959):   s
>
>    here is the log when problem happened:

https://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/tree/include/linux/dmaengine.h

* @DMA_RESIDUE_GRANULARITY_SEGMENT: Residue is updated after each
successfully
*  completed segment of the transfer (For cyclic transfers this is after
each
*  period). This is typically implemented by having the hardware generate an
*  interrupt after each transferred segment and then the drivers updates the
*  outstanding residue by the size of the segment. Another possibility is if
*  the hardware supports scatter-gather and the segment descriptor has a
field
*  which gets set after the segment has been completed. The driver then
counts
*  the number of segments without the flag set to compute the residue.
* @DMA_RESIDUE_GRANULARITY_BURST: Residue is updated after each transferred
*  burst. This is typically only supported if the hardware has a progress
*  register of some sort (E.g. a register with the current read/write
address
*  or a register with the amount of bursts/beats/bytes that have been
*  transferred or still need to be transferred).
*/

How accurate can you sound card hw_ptr increase ?  period size or DMA
brust size ?

http://mailman.alsa-project.org/pipermail/alsa-devel/2014-September/081501.html

you can try Alexander's pcm_avail.c
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/pulseaudio-discuss/attachments/20150609/ff54179c/attachment-0001.html>


More information about the pulseaudio-discuss mailing list