[alsa-devel] period_time in slave definition

Pavel Hofman pavel.hofman at ivitera.com
Tue Mar 1 10:07:44 CET 2011


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.


More information about the Alsa-devel mailing list