spa: make an extra level for arrays

Make a level with type info for the array elements.
This commit is contained in:
Wim Taymans 2020-12-01 13:30:14 +01:00
parent 73e0bb255a
commit 1e9b152bb5
2 changed files with 13 additions and 3 deletions

View file

@ -67,6 +67,16 @@ static const struct spa_type_info spa_type_param[] = {
#include <spa/param/audio/type-info.h>
#include <spa/param/video/type-info.h>
static const struct spa_type_info spa_type_prop_channel_volume[] = {
{ SPA_PROP_START, SPA_TYPE_Float, SPA_TYPE_INFO_BASE "channelVolumes", NULL, },
{ 0, 0, NULL, NULL },
};
static const struct spa_type_info spa_type_prop_channel_map[] = {
{ SPA_PROP_START, SPA_TYPE_Id, SPA_TYPE_INFO_BASE "channelMap", spa_type_audio_channel, },
{ 0, 0, NULL, NULL },
};
static const struct spa_type_info spa_type_props[] = {
{ SPA_PROP_START, SPA_TYPE_Id, SPA_TYPE_INFO_PROPS_BASE, spa_type_param, },
{ SPA_PROP_unknown, SPA_TYPE_None, SPA_TYPE_INFO_PROPS_BASE "unknown", NULL },
@ -91,10 +101,10 @@ static const struct spa_type_info spa_type_props[] = {
{ SPA_PROP_patternType, SPA_TYPE_Id, SPA_TYPE_INFO_PROPS_BASE "patternType", NULL },
{ SPA_PROP_ditherType, SPA_TYPE_Id, SPA_TYPE_INFO_PROPS_BASE "ditherType", NULL },
{ SPA_PROP_truncate, SPA_TYPE_Bool, SPA_TYPE_INFO_PROPS_BASE "truncate", NULL },
{ SPA_PROP_channelVolumes, SPA_TYPE_Float, SPA_TYPE_INFO_PROPS_BASE "channelVolumes", NULL },
{ SPA_PROP_channelVolumes, SPA_TYPE_Array, SPA_TYPE_INFO_PROPS_BASE "channelVolumes", spa_type_prop_channel_volume },
{ SPA_PROP_volumeBase, SPA_TYPE_Float, SPA_TYPE_INFO_PROPS_BASE "volumeBase", NULL },
{ SPA_PROP_volumeStep, SPA_TYPE_Float, SPA_TYPE_INFO_PROPS_BASE "volumeStep", NULL },
{ SPA_PROP_channelMap, SPA_TYPE_Id, SPA_TYPE_INFO_PROPS_BASE "channelMap", spa_type_audio_channel },
{ SPA_PROP_channelMap, SPA_TYPE_Array, SPA_TYPE_INFO_PROPS_BASE "channelMap", spa_type_prop_channel_map },
{ SPA_PROP_brightness, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "brightness", NULL },
{ SPA_PROP_contrast, SPA_TYPE_Int, SPA_TYPE_INFO_PROPS_BASE "contrast", NULL },

View file

@ -1575,7 +1575,7 @@ static int json_to_pod(struct spa_pod_builder *b, uint32_t id,
spa_pod_builder_push_array(b, &f[0]);
spa_json_enter(iter, &it[0]);
while ((l = spa_json_next(&it[0], &v)) > 0)
json_to_pod(b, id, info, &it[0], v, l);
json_to_pod(b, id, info->values, &it[0], v, l);
spa_pod_builder_pop(b, &f[0]);
}
else if (spa_json_is_float(value, len)) {