[alsa-devel] What to do when a device clears the buffer in the start trigger?

Takashi Iwai tiwai at suse.de
Tue Aug 6 12:57:21 CEST 2019


On Wed, 31 Jul 2019 19:48:13 +0200,
Paul Pawlowski wrote:
> 
> Hello,
> I have a device which clears the DMA buffer when I command it to start the
> playback. How can this be workarounded?

So it clears the DMA buffer at start, then you need to put the data on
the DMA buffer again on the running stream?  What a weird chip.

> I found the SNDRV_PCM_INFO_DOUBLE flag, but it doesn't seem that it changes
> alsa/alsa-lib behaviour. I wasn't able to find any drivers which shared
> this quirk.
> I'd like to avoid double buffering if possible, as once the stream is
> actually started it's not required.

The PCM_INFO_DOUBLE flag has no effect for anything like that.  It's
merely a information bit exposed to the user-space as a hint.

In such a case, you need to implement some ugly workaround in the
driver side.  Since the double-buffer is needed only at start, you can
save the whole content (up to appl_ptr) and write back after starting
the stream.


Takashi


More information about the Alsa-devel mailing list