<html>
<head>
<base href="https://bugs.freedesktop.org/" />
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW - severe underruns with usb audio, works with pa 3.0 - buffer setup seems wrong"
href="https://bugs.freedesktop.org/show_bug.cgi?id=86262#c8">Comment # 8</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW - severe underruns with usb audio, works with pa 3.0 - buffer setup seems wrong"
href="https://bugs.freedesktop.org/show_bug.cgi?id=86262">bug 86262</a>
from <span class="vcard"><a class="email" href="mailto:superquad.vortex2@gmail.com" title="Raymond <superquad.vortex2@gmail.com>"> <span class="fn">Raymond</span></a>
</span></b>
<pre><a href="http://git.alsa-project.org/?p=alsa-lib.git;a=commitdiff;h=b0b7d0280f977dee1bbff0a1b4cd0c50068d2371;hp=1cf37d72c4e77fac55f2b1792bdcf12744a5a51a">http://git.alsa-project.org/?p=alsa-lib.git;a=commitdiff;h=b0b7d0280f977dee1bbff0a1b4cd0c50068d2371;hp=1cf37d72c4e77fac55f2b1792bdcf12744a5a51a</a>
@ -5577,6 +5577,12 @@ int snd_pcm_sw_params_set_avail_min(snd_pcm_t *pcm,
snd_pcm_sw_params_t *params,
#endif
{
assert(pcm && params);
+ /* Fix avail_min if it's below period size. The period_size
+ * defines the minimal wake-up timing accuracy, so it doesn't
+ * make sense to set below that.
+ */
+ if (val < pcm->period_size)
+ val = pcm->period_size;
params->avail_min = val;
return 0;
}
seem any value below period size is changed to period size,
the hw_ptr of most drivers change by a period when interrupt occur, not all
driver can report dma_brust size granularity like snd-hda-intel controller ,
when data in FIFO below FIFO threshold and trigger DMA transfer , the hw_ptr
position is accurate up to DMA brust size which is less than period size
(pulseaudio use 4 fragments and 25 ms fragment time ) but dma brust size is
about 32 frames</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the QA Contact for the bug.</li>
<li>You are the assignee for the bug.</li>
</ul>
</body>
</html>