2012-8-19 下午7:17 於 "Tanu Kaskinen" tanuk@iki.fi 寫道:
Hi,
While reviewing a rewind related patch, I noticed that I don't understand the rewinding code thoroughly, even though I have studied it a few times in the past. I decided that I should write a wiki page for the code so that working with it would be easier in the future for me and everybody else.
So, here's the result:
http://www.freedesktop.org/wiki/Software/PulseAudio/Documentation/Developer/...
While doing that, I found quite a few bugs, which are noted on that page. I don't plan fixing them any time soon (help with that would be very welcome), so I will just file bugs about the issues so that they are not forgotten.
it seem that the alsa sink is more complicated than your figure.
Refer to figure 14 HD Audio DMA and buffering , section 4.6 Energy Efficient HA audio mechanism
most sound cards have fixed size FIFO buffer instead of dynamic FIFO and minimum transfer size(brust) similar to hda controller which snd_pcm_rewind cannot rewind any audio data in those first in first out buffer.
http://cgit.freedesktop.org/pulseaudio/pulseaudio/commit/src/modules/alsa?id...
1) do the server really need to rewind when there is only one pulse client ?
2) does pulseaudio add this rewind safeguard delay to the latency ?