[alsa-devel] Alsa-lib Dmix issue
Anoop Rajan
anoopmannil at gmail.com
Wed Jan 25 20:04:41 CET 2017
Hello All,
I am trying to play a song using dmix plugin using AlsaLib(1.0.29) , My
kernel (Linux 3.8)hangs at poll() on snd timer interface.When I debugged
further, I understood that poll hangs because of DMA interrupt
(snd_pcm_period_elapsed)not been received.
Asound. conf as
pcm.softvol {
type softvol
slave {
pcm "hw:0,0"
}
control {
name "Master"
card 0
}
}
pcm.volmix {
type dmix
ipc_key 1024
ipc_key_add_uid yes
ipc_perm 0660
slave {
pcm "hw:0,0"
rate 44100
}
}
used aplay -D 'plug:volmix' 123.wav. Where as the normal playback aplay
123.wav plays the song as expected.
Comparing the two cases, I observed that Dmix is not incrementing the
control.appl_ptr(always zero) in SNDRV_PCM_IOCTL_SYNC_PTR ioctl , but the
later one(with out dmix) increments this and kernel is notified with the
data written with the value in application pointer. Trying to understand
further, though I am not an expert here, snd_pcm_dmix_sync_area is invoked,
the data is written to destination , dmix->slave_appl_ptr is incremented,
but some how the link to
dmix->spcm->private_data->sync_ptr->c.control.appl_ptr
is not incremented with the written frames.
As I understand, SNDRV_PCM_IOCTL_SYNC_PTR should notify kernel with the
application pointer else kernel cant understand how much is written when we
do data mmap. I am trying to understand why it is not incremented, but
strongly believe that it cannot be a bug in alsa-lib Dmix, but I am lacking
some thing, but wondering what I am missing here.My kernel access type is
MMAP_INTERLEAVED.
Exactly same issue mentioned on RaspberryPi below but no solution provided
https://www.raspberrypi.org/forums/viewtopic.php?t=64936&p=481557.
<https://www.raspberrypi.org/forums/viewtopic.php?t=64936&p=481557>
<https://www.raspberrypi.org/forums/viewtopic.php?t=64936&p=481557>
Please help me to understand more here, any pointers is appreciated.
Regards,
Anoop
More information about the Alsa-devel
mailing list