]> git.alsa-project.org Git - alsa-utils.git/commit
topology: pre-processor: Move the call to expand variables
authorRanjani Sridharan <ranjani.sridharan@linux.intel.com>
Sat, 11 Dec 2021 18:45:43 +0000 (10:45 -0800)
committerJaroslav Kysela <perex@perex.cz>
Sun, 19 Dec 2021 19:32:38 +0000 (20:32 +0100)
commit90f59671784a7e47b40485095cd66892d4840ed7
tree6b41e771048ed344b02b07f7a6959a6628f81bc2
parent8e71fba810b87c48600191f4e2e13d0e351f73bc
topology: pre-processor: Move the call to expand variables

Remove the call to snd_config_expand_custom() to expand the top-level
input config. And replace it with calls to snd_config_evaluate_string()
for each non-compound config while processing individual objects. This
will allow retreving variable definitions from object attribute values
and global definitions.

Add a new field "current_obj_cfg" to hold the current object config
being pre-processed.

This will facilitate adding simple math expressions for computing
attribute values for objects based on other attributes. For ex: we can
set the expression for buffer size as follows:

buffer_size "$[($in_channels * 48) * 4]"

The buffer_size attribute value will be computed with the attribute
value "in_channels" based on the expression above. So if $in_channels =
2, buffer_size will be evaluated to 384.

Additionally this change also permits computing attribute values based
on previously computed values. For example:

buffer_size "$[($in_channels * 48) * 4]"
dma_buffer_size "$[$buffer_size * 2]"

dma_buffer_size will be computed as 768. Note that the order of
definitions for buffer_size and dma_buffer_size matters because the
evaluation for dma_buffer_size depends on the evaluation of buffer_size.
In order to conform to this, the tplg_object_copy_and_add_param() is
modified to add attribute configs from class config to an object using
snd_config_before() instead of snd_config_add().

With this change, we no longer need to set the auto_attr_updater for
buffer type widget objects. So remove it.

Signed-off-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com>
Signed-off-by: Jaroslav Kysela <perex@perex.cz>
alsaucm/go.sh
aplay/aplay.c
topology/pre-process-dapm.c
topology/pre-process-object.c
topology/pre-processor.c
topology/pre-processor.h
topology/topology.h