At Wed, 13 May 2015 17:12:33 -0700, Yogesh Soni wrote:
Hi all,
I am trying to have dmix plugin work ( I succeeded) with the audio card that does not have hardware mmap support and uses pcm_indirect method to map software buffer for mmap feature.
Most of the plugins were working quite well with mmap/pcm_indirect combo. However, dmix plugin did not work (no sound). I debugged and realized that appl_ptr in pcm_direct.h(snd_pcm_indirect_playback_transfer()) was always 0 and hence nothing got copied to slave pcm buffer. I then discovered that dmix operates in freewheeling-mode..
I have made a small workaround patch (I believe it can be cleaned up) in case of free-wheeling mode, basically using sw_ready to hold bytes that need to be copied. I used rec->sw_ready because it looked safest to use for this purpose. As a result of this patch, normally period_size bytes are copied to pcm buffer every period and sound is playing smooth.
I am a noob in alsa and linux in general. So, I would like your opinion on the patch. I would much prefer if I could write a patch that is generic and clean enough, so that it could be used by others. patch is attached.
Thanks for reporting and the patch.
So, what actually prevents working with the current code in the free wheeling mode?
Takashi