[alsa-devel] period_time in slave definition

Jaroslav Kysela perex at perex.cz
Tue Mar 1 10:22:45 CET 2011


On Tue, 1 Mar 2011, Pavel Hofman wrote:

> 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.

The above description is an universal description for all slaves. 
Unfortunately, not all plugins accept the whole range of parameters.
You have to look to the snd_pcm_slave_conf() caller which parameters are 
accepted.

The description should be better.

 					Jaroslav

-----
Jaroslav Kysela <perex at perex.cz>
Linux Kernel Sound Maintainer
ALSA Project, Red Hat, Inc.



More information about the Alsa-devel mailing list