<p></p>
<p>><br>
> Since the dca ALSA plugin is based on extplug, it has a slave and therefore<br>
> a card. Thus, PulseAudio thinks that it looks like hardware and attempts<br>
> rewinds, which this plugin cannot handle correctly, because ALSA never<br>
> notifies extplug plugins about rewinds.<br>
><br>
> The same mishandling of rewinds applies to some other plugins.<br>
><br>
> Work around this ALSA bug by switching to IRQ-based scheduling on strange<br>
> plugin types.<br></p>
<p>Do you mean pulseaudio won't perform any rewind when switching to interrupt driven mode ?</p>
<p>What algorithm do pulseaudio use when use interrupt driven  scheduling since pulseaudio allow user to specify number of periods ?</p>
<p><a href="http://0pointer.de/blog/projects/pulse-glitch-free.html">http://0pointer.de/blog/projects/pulse-glitch-free.html</a></p>
<p>e.g. 4 periods per buffer</p>
<p>1) write data to sound card whenever there is an empty period<br>
2) write data to sound card when half of buffer is empty<br>
3) write data to sound card when there is only one period left</p>
<p>> +    if (type == SND_PCM_TYPE_MULTI) return true;     /* EMU10K1, Audigy2, others */</p>
<p>Seem emu10k1 and audigy2 are not a good example since snd_pcm_start fail with EBADFD when using multi plugin (multi channel) with start threshold set to boundary</p>
<p>alsa-sink.c: Starting playback.<br>
I: (alsa-lib)pcm_hw.c: SNDRV_PCM_IOCTL_START failed (-77)</p>
<p><a href="https://bugzilla.redhat.com/show_bug.cgi?id=608936#c19">https://bugzilla.redhat.com/show_bug.cgi?id=608936#c19</a></p>