Jaroslav Kysela napsal(a):
On Mon, 28 Feb 2011, Pavel Hofman wrote:
Hi,
According to http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html , my .asoundrc contains:
pcm.test { type plug slave { pcm "hw:0" format "unchanged" channels "unchanged" rate "unchanged" period_size 1024 buffer_size 4096 } }
While pcm, format, channels, and rate are accepted, the period and buffer fields are refused:
ALSA lib pcm.c:6811:(snd_pcm_slave_conf) Unknown field period_time
It's correct, pcm:plug does not support buffer modifiers. Look to "Automatic conversion plugin".
I checked the source code and the keywords seem to be ok
pcm.c: static const char *const names[SND_PCM_HW_PARAM_LAST_INTERVAL + 1] = { [SND_PCM_HW_PARAM_FORMAT] = "format", [SND_PCM_HW_PARAM_CHANNELS] = "channels", [SND_PCM_HW_PARAM_RATE] = "rate", [SND_PCM_HW_PARAM_PERIOD_TIME] = "period_time", [SND_PCM_HW_PARAM_PERIOD_SIZE] = "period_size", [SND_PCM_HW_PARAM_BUFFER_TIME] = "buffer_time", [SND_PCM_HW_PARAM_BUFFER_SIZE] = "buffer_size", [SND_PCM_HW_PARAM_PERIODS] = "periods" };
It's just a table to translate all possibilites between index and name. The plug plugins allow only this:
err = snd_pcm_slave_conf(root, slave, &sconf, 3, SND_PCM_HW_PARAM_FORMAT, SCONF_UNCHANGED, &sformat, SND_PCM_HW_PARAM_CHANNELS, SCONF_UNCHANGED, &schannels, SND_PCM_HW_PARAM_RATE, SCONF_UNCHANGED, &srate); Jaroslav
Well, still I do not understand why we are talking about the plug plugin, when I am trying to redefine the slave via pcm_slave. The documentation at http://www.alsa-project.org/alsa-doc/alsa-lib/pcm_plugins.html says the pcm_slave can define period_time and buffer_time, while a slightly modified example from the wiki page fails:
pcm_slave.slave_rate44100Hz { pcm "hw:0,0" rate 44100 ---> period_time 1024 }
pcm.rate44100Hz { type plug slave slave_rate44100Hz }
How does the slave definition relate to the plug plugin? Sorry for these basics but I am really trying to understand that, so far no success.
Thanks a lot.
Pavel.