props: use macro for property alternatives

This commit is contained in:
Wim Taymans 2018-02-20 09:32:40 +01:00
parent f039238288
commit 0e5a1b6327
15 changed files with 123 additions and 107 deletions

View file

@ -595,6 +595,10 @@ static inline void *spa_pod_builder_add(struct spa_pod_builder *builder, const c
#define SPA_POD_PROP(key,spec,type,value,...) \
":", key, spec, value, ##__VA_ARGS__
#define SPA_POD_PROP_MIN_MAX(min,max) 2,(min),(max)
#define SPA_POD_PROP_STEP(min,max,step) 3,(min),(max),(step)
#define SPA_POD_PROP_ENUM(n_vals,...) (n_vals),__VA_ARGS__
#define spa_pod_builder_object(b,id,type,...) \
spa_pod_builder_add(b, SPA_POD_OBJECT(id,type,##__VA_ARGS__), NULL)

View file

@ -106,7 +106,7 @@ static int impl_node_enum_params(struct spa_node *node,
":", t->param.propId, "I", t->prop_min_latency,
":", t->param.propName, "s", "The minimum latency",
":", t->param.propType, "ir", p->min_latency,
2, 1, INT32_MAX);
SPA_POD_PROP_MIN_MAX(1, INT32_MAX));
break;
case 4:
param = spa_pod_builder_object(&b,
@ -114,7 +114,7 @@ static int impl_node_enum_params(struct spa_node *node,
":", t->param.propId, "I", t->prop_max_latency,
":", t->param.propName, "s", "The maximum latency",
":", t->param.propType, "ir", p->max_latency,
2, 1, INT32_MAX);
SPA_POD_PROP_MIN_MAX(1, INT32_MAX));
break;
default:
return 0;
@ -350,12 +350,13 @@ impl_node_port_enum_params(struct spa_node *node,
param = spa_pod_builder_object(&b,
id, t->param_buffers.Buffers,
":", t->param_buffers.size, "iru", this->props.max_latency * this->frame_size,
2, this->props.min_latency * this->frame_size,
INT32_MAX,
":", t->param_buffers.size, "iru", this->props.max_latency *
this->frame_size,
SPA_POD_PROP_MIN_MAX(this->props.min_latency * this->frame_size,
INT32_MAX),
":", t->param_buffers.stride, "i", 0,
":", t->param_buffers.buffers, "ir", 1,
2, 1, MAX_BUFFERS,
SPA_POD_PROP_MIN_MAX(1, MAX_BUFFERS),
":", t->param_buffers.align, "i", 16);
}
else if (id == t->param.idMeta) {

View file

@ -106,7 +106,7 @@ static int impl_node_enum_params(struct spa_node *node,
":", t->param.propId, "I", t->prop_min_latency,
":", t->param.propName, "s", "The minimum latency",
":", t->param.propType, "ir", p->min_latency,
2, 1, INT32_MAX);
SPA_POD_PROP_MIN_MAX(1, INT32_MAX));
break;
default:
return 0;
@ -369,7 +369,7 @@ impl_node_port_enum_params(struct spa_node *node,
":", t->param_buffers.size, "i", this->props.min_latency * this->frame_size,
":", t->param_buffers.stride, "i", 0,
":", t->param_buffers.buffers, "ir", 2,
2, 1, 32,
SPA_POD_PROP_MIN_MAX(1, MAX_BUFFERS),
":", t->param_buffers.align, "i", 16);
}
else if (id == t->param.idMeta) {

View file

@ -384,12 +384,12 @@ static int port_enum_formats(struct spa_node *node,
"I", t->media_type.audio,
"I", t->media_subtype.raw,
":", t->format_audio.format, "Ieu", t->audio_format.S16,
2, t->audio_format.S16,
t->audio_format.F32,
SPA_POD_PROP_ENUM(2, t->audio_format.S16,
t->audio_format.F32),
":", t->format_audio.rate, "iru", 44100,
2, 1, INT32_MAX,
SPA_POD_PROP_MIN_MAX(1, INT32_MAX),
":", t->format_audio.channels, "iru", 2,
2, 1, INT32_MAX);
SPA_POD_PROP_MIN_MAX(1, INT32_MAX));
}
break;
default:
@ -486,11 +486,10 @@ impl_node_port_enum_params(struct spa_node *node,
param = spa_pod_builder_object(&b,
id, t->param_buffers.Buffers,
":", t->param_buffers.size, "iru", 1024 * this->bpf,
2, 16 * this->bpf,
INT32_MAX / this->bpf,
SPA_POD_PROP_MIN_MAX(16 * this->bpf, INT32_MAX / this->bpf),
":", t->param_buffers.stride, "i", 0,
":", t->param_buffers.buffers, "iru", 1,
2, 1, MAX_BUFFERS,
SPA_POD_PROP_MIN_MAX(1, MAX_BUFFERS),
":", t->param_buffers.align, "i", 16);
}
else if (id == t->param.idMeta) {
@ -513,7 +512,7 @@ impl_node_port_enum_params(struct spa_node *node,
case 0:
param = spa_pod_builder_object(&b,
id, t->param_io.Buffers,
":", t->param_io.id, "I", t->io.Buffers,
":", t->param_io.id, "I", t->io.Buffers,
":", t->param_io.size, "i", sizeof(struct spa_io_buffers));
break;
default:
@ -525,7 +524,7 @@ impl_node_port_enum_params(struct spa_node *node,
case 0:
param = spa_pod_builder_object(&b,
id, t->param_io.Control,
":", t->param_io.id, "I", t->io.ControlRange,
":", t->param_io.id, "I", t->io.ControlRange,
":", t->param_io.size, "i", sizeof(struct spa_io_control_range));
break;
default:
@ -542,17 +541,18 @@ impl_node_port_enum_params(struct spa_node *node,
case 0:
param = spa_pod_builder_object(&b,
id, t->param_io.Prop,
":", t->param_io.id, "I", t->io_prop_volume,
":", t->param_io.size, "i", sizeof(struct spa_pod_double),
":", t->param.propId, "I", t->prop_volume,
":", t->param.propType, "dru", p->volume, 2, 0.0, 10.0);
":", t->param_io.id, "I", t->io_prop_volume,
":", t->param_io.size, "i", sizeof(struct spa_pod_double),
":", t->param.propId, "I", t->prop_volume,
":", t->param.propType, "dru", p->volume,
SPA_POD_PROP_MIN_MAX(0.0, 10.0));
break;
case 1:
param = spa_pod_builder_object(&b,
id, t->param_io.Prop,
":", t->param_io.id, "I", t->io_prop_mute,
":", t->param_io.size, "i", sizeof(struct spa_pod_bool),
":", t->param.propId, "I", t->prop_mute,
":", t->param_io.id, "I", t->io_prop_mute,
":", t->param_io.size, "i", sizeof(struct spa_pod_bool),
":", t->param.propId, "I", t->prop_mute,
":", t->param.propType, "b", p->mute);
break;
default:

View file

@ -243,7 +243,7 @@ static int impl_node_enum_params(struct spa_node *node,
":", t->param.propId, "I", t->prop_freq,
":", t->param.propName, "s", "Select the frequency",
":", t->param.propType, "dr", p->freq,
2, 0.0, 50000000.0);
SPA_POD_PROP_MIN_MAX(0.0, 50000000.0));
break;
case 3:
param = spa_pod_builder_object(&b,
@ -251,7 +251,7 @@ static int impl_node_enum_params(struct spa_node *node,
":", t->param.propId, "I", t->prop_volume,
":", t->param.propName, "s", "Select the volume",
":", t->param.propType, "dr", p->volume,
2, 0.0, 10.0);
SPA_POD_PROP_MIN_MAX(0.0, 10.0));
break;
default:
return 0;
@ -583,14 +583,14 @@ port_enum_formats(struct impl *this,
"I", t->media_type.audio,
"I", t->media_subtype.raw,
":", t->format_audio.format, "Ieu", t->audio_format.S16,
4, t->audio_format.S16,
t->audio_format.S32,
t->audio_format.F32,
t->audio_format.F64,
SPA_POD_PROP_ENUM(4, t->audio_format.S16,
t->audio_format.S32,
t->audio_format.F32,
t->audio_format.F64),
":", t->format_audio.rate, "iru", 44100,
2, 1, INT32_MAX,
SPA_POD_PROP_MIN_MAX(1, INT32_MAX),
":", t->format_audio.channels, "iru", 2,
2, 1, INT32_MAX);
SPA_POD_PROP_MIN_MAX(1, INT32_MAX));
break;
default:
return 0;
@ -683,11 +683,10 @@ impl_node_port_enum_params(struct spa_node *node,
param = spa_pod_builder_object(&b,
id, t->param_buffers.Buffers,
":", t->param_buffers.size, "iru", 1024 * this->bpf,
2, 16 * this->bpf,
INT32_MAX / this->bpf,
SPA_POD_PROP_MIN_MAX(16 * this->bpf, INT32_MAX / this->bpf),
":", t->param_buffers.stride, "i", 0,
":", t->param_buffers.buffers, "iru", 1,
2, 1, 32,
SPA_POD_PROP_MIN_MAX(1, MAX_BUFFERS),
":", t->param_buffers.align, "i", 16);
}
else if (id == t->param.idMeta) {
@ -710,7 +709,7 @@ impl_node_port_enum_params(struct spa_node *node,
case 0:
param = spa_pod_builder_object(&b,
id, t->param_io.Buffers,
":", t->param_io.id, "I", t->io.Buffers,
":", t->param_io.id, "I", t->io.Buffers,
":", t->param_io.size, "i", sizeof(struct spa_io_buffers));
break;
default:
@ -722,7 +721,7 @@ impl_node_port_enum_params(struct spa_node *node,
case 0:
param = spa_pod_builder_object(&b,
id, t->param_io.Control,
":", t->param_io.id, "I", t->io.ControlRange,
":", t->param_io.id, "I", t->io.ControlRange,
":", t->param_io.size, "i", sizeof(struct spa_io_control_range));
break;
default:
@ -736,29 +735,31 @@ impl_node_port_enum_params(struct spa_node *node,
case 0:
param = spa_pod_builder_object(&b,
id, t->param_io.Prop,
":", t->param_io.id, "I", t->io_prop_wave,
":", t->param_io.size, "i", sizeof(struct spa_pod_id),
":", t->param.propId, "I", t->prop_wave,
":", t->param.propType, "i", p->wave,
":", t->param_io.id, "I", t->io_prop_wave,
":", t->param_io.size, "i", sizeof(struct spa_pod_id),
":", t->param.propId, "I", t->prop_wave,
":", t->param.propType, "i", p->wave,
":", t->param.propLabels, "[-i",
"i", WAVE_SINE, "s", "Sine wave",
"i", WAVE_SINE, "s", "Sine wave",
"i", WAVE_SQUARE, "s", "Square wave", "]");
break;
case 1:
param = spa_pod_builder_object(&b,
id, t->param_io.Prop,
":", t->param_io.id, "I", t->io_prop_freq,
":", t->param_io.size, "i", sizeof(struct spa_pod_double),
":", t->param.propId, "I", t->prop_freq,
":", t->param.propType, "dr", p->freq, 2, 0.0, 50000000.0);
":", t->param_io.id, "I", t->io_prop_freq,
":", t->param_io.size, "i", sizeof(struct spa_pod_double),
":", t->param.propId, "I", t->prop_freq,
":", t->param.propType, "dr", p->freq,
SPA_POD_PROP_MIN_MAX(0.0, 50000000.0));
break;
case 2:
param = spa_pod_builder_object(&b,
id, t->param_io.Prop,
":", t->param_io.id, "I", t->io_prop_volume,
":", t->param_io.size, "i", sizeof(struct spa_pod_double),
":", t->param.propId, "I", t->prop_volume,
":", t->param.propType, "dr", p->volume, 2, 0.0, 10.0);
":", t->param_io.id, "I", t->io_prop_volume,
":", t->param_io.size, "i", sizeof(struct spa_pod_double),
":", t->param.propId, "I", t->prop_volume,
":", t->param.propType, "dr", p->volume,
SPA_POD_PROP_MIN_MAX(0.0, 10.0));
break;
default:
return 0;

View file

@ -233,7 +233,7 @@ static int impl_node_enum_params(struct spa_node *node,
":", t->param.propId, "I", t->prop_min_latency,
":", t->param.propName, "s", "The minimum latency",
":", t->param.propType, "ir", p->min_latency,
2, 1, INT32_MAX);
SPA_POD_PROP_MIN_MAX(1, INT32_MAX));
break;
case 1:
param = spa_pod_builder_object(&b,
@ -241,7 +241,7 @@ static int impl_node_enum_params(struct spa_node *node,
":", t->param.propId, "I", t->prop_max_latency,
":", t->param.propName, "s", "The maximum latency",
":", t->param.propType, "ir", p->max_latency,
2, 1, INT32_MAX);
SPA_POD_PROP_MIN_MAX(1, INT32_MAX));
break;
default:
return 0;
@ -1042,12 +1042,13 @@ impl_node_port_enum_params(struct spa_node *node,
param = spa_pod_builder_object(&b,
id, t->param_buffers.Buffers,
":", t->param_buffers.size, "iru", this->props.min_latency * this->frame_size,
2, this->props.min_latency * this->frame_size,
INT32_MAX,
":", t->param_buffers.size, "iru", this->props.min_latency *
this->frame_size,
SPA_POD_PROP_MIN_MAX(this->props.min_latency * this->frame_size,
INT32_MAX),
":", t->param_buffers.stride, "i", 0,
":", t->param_buffers.buffers, "ir", 2,
2, 2, MAX_BUFFERS,
SPA_POD_PROP_MIN_MAX(2, MAX_BUFFERS),
":", t->param_buffers.align, "i", 16);
}
else if (id == t->param.idMeta) {

View file

@ -249,21 +249,21 @@ static int impl_node_enum_params(struct spa_node *node,
case 0:
param = spa_pod_builder_object(&b,
id, t->param.PropInfo,
":", t->param.propId, "I", t->prop_device,
":", t->param.propId, "I", t->prop_device,
":", t->param.propName, "s", "The V4L2 device",
":", t->param.propType, "S", p->device, sizeof(p->device));
break;
case 1:
param = spa_pod_builder_object(&b,
id, t->param.PropInfo,
":", t->param.propId, "I", t->prop_device_name,
":", t->param.propId, "I", t->prop_device_name,
":", t->param.propName, "s", "The V4L2 device name",
":", t->param.propType, "S-r", p->device_name, sizeof(p->device_name));
break;
case 2:
param = spa_pod_builder_object(&b,
id, t->param.PropInfo,
":", t->param.propId, "I", t->prop_device_fd,
":", t->param.propId, "I", t->prop_device_fd,
":", t->param.propName, "s", "The V4L2 fd",
":", t->param.propType, "i-r", p->device_fd);
break;
@ -546,7 +546,7 @@ static int impl_node_port_enum_params(struct spa_node *node,
":", t->param_buffers.size, "i", port->fmt.fmt.pix.sizeimage,
":", t->param_buffers.stride, "i", port->fmt.fmt.pix.bytesperline,
":", t->param_buffers.buffers, "iru", MAX_BUFFERS,
2, 2, MAX_BUFFERS,
SPA_POD_PROP_MIN_MAX(2, MAX_BUFFERS),
":", t->param_buffers.align, "i", 16);
}
else if (id == t->param.idMeta) {

View file

@ -509,14 +509,14 @@ static int port_enum_formats(struct spa_node *node,
"I", t->media_type.video,
"I", t->media_subtype.raw,
":", t->format_video.format, "Ieu", t->video_format.RGB,
2, t->video_format.RGB,
t->video_format.UYVY,
SPA_POD_PROP_ENUM(2, t->video_format.RGB,
t->video_format.UYVY),
":", t->format_video.size, "Rru", &SPA_RECTANGLE(320, 240),
2, &SPA_RECTANGLE(1, 1),
&SPA_RECTANGLE(INT32_MAX, INT32_MAX),
SPA_POD_PROP_MIN_MAX(&SPA_RECTANGLE(1, 1),
&SPA_RECTANGLE(INT32_MAX, INT32_MAX)),
":", t->format_video.framerate, "Fru", &SPA_FRACTION(25,1),
2, &SPA_FRACTION(0, 1),
&SPA_FRACTION(INT32_MAX, 1));
SPA_POD_PROP_MIN_MAX(&SPA_FRACTION(0, 1),
&SPA_FRACTION(INT32_MAX, 1)));
break;
default:
return 0;
@ -610,7 +610,7 @@ impl_node_port_enum_params(struct spa_node *node,
":", t->param_buffers.size, "i", this->stride * raw_info->size.height,
":", t->param_buffers.stride, "i", this->stride,
":", t->param_buffers.buffers, "ir", 2,
2, 1, 32,
SPA_POD_PROP_MIN_MAX(1, MAX_BUFFERS),
":", t->param_buffers.align, "i", 16);
}
else if (id == t->param.idMeta) {

View file

@ -186,7 +186,8 @@ static int impl_node_enum_params(struct spa_node *node,
id, t->param.PropInfo,
":", t->param.propId, "I", t->prop_volume,
":", t->param.propName, "s", "The volume",
":", t->param.propType, "dr", p->volume, 2, 0.0, 10.0);
":", t->param.propType, "dr", p->volume,
SPA_POD_PROP_MIN_MAX(0.0, 10.0));
break;
case 1:
param = spa_pod_builder_object(&b,
@ -375,10 +376,12 @@ static int port_enum_formats(struct spa_node *node,
"I", t->media_type.audio,
"I", t->media_subtype.raw,
":", t->format_audio.format, "Ieu", t->audio_format.S16,
2, t->audio_format.S16,
t->audio_format.S32,
":", t->format_audio.rate, "iru", 44100, 2, 1, INT32_MAX,
":", t->format_audio.channels,"iru", 2, 2, 1, INT32_MAX);
SPA_POD_PROP_ENUM(2, t->audio_format.S16,
t->audio_format.S32),
":", t->format_audio.rate, "iru", 44100,
SPA_POD_PROP_MIN_MAX(1, INT32_MAX),
":", t->format_audio.channels,"iru", 2,
SPA_POD_PROP_MIN_MAX(1, INT32_MAX));
break;
default:
return 0;
@ -476,11 +479,10 @@ impl_node_port_enum_params(struct spa_node *node,
param = spa_pod_builder_object(&b,
id, t->param_buffers.Buffers,
":", t->param_buffers.size, "iru", 1024 * this->bpf,
2, 16 * this->bpf,
INT32_MAX / this->bpf,
SPA_POD_PROP_MIN_MAX(16 * this->bpf, INT32_MAX / this->bpf),
":", t->param_buffers.stride, "i", 0,
":", t->param_buffers.buffers, "iru", 2,
2, 1, MAX_BUFFERS,
SPA_POD_PROP_MIN_MAX(1, MAX_BUFFERS),
":", t->param_buffers.align, "i", 16);
}
else if (id == t->param.idMeta) {