On Wed, 04 May 2016 18:49:22 +0200, Mark Brown wrote:
On Mon, May 02, 2016 at 09:43:53AM +0200, Peter Rosin wrote:
The problem is in the drain/close part. If I leave out snd_pcm_drain I naturally lose the tail of the output, but if I have it I get what I guess is a repeat of the content in some circular buffer. I.e. the very last part of the played sound is played twice(ice).
If I instead write the generated samples to a file and play them with aplay, all is fine, so I appear to be misunderstanding the alsa api?
Anything obviously wrong in the above code?
Look at how aplay handles this... it's a natural consequence of the hardware being free running. You need to either make the teardown non-blocking or play some silence at the end.
Right, usually the transfer is aligned with the period size, and the application is supposed to fill the period size at least.
Takashi