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) {

View file

@ -314,12 +314,12 @@ static int port_enum_formats(struct spa_node *node,
spa_pod_builder_pop(builder);
spa_pod_builder_add(builder,
":", d->type.format_video.size, "Rru", &SPA_RECTANGLE(WIDTH, HEIGHT),
2, &SPA_RECTANGLE(1,1),
&SPA_RECTANGLE(info.max_texture_width,
info.max_texture_height),
SPA_POD_PROP_MIN_MAX(&SPA_RECTANGLE(1,1),
&SPA_RECTANGLE(info.max_texture_width,
info.max_texture_height)),
":", d->type.format_video.framerate, "Fru", &SPA_FRACTION(25,1),
2, &SPA_FRACTION(0,1),
&SPA_FRACTION(30,1),
SPA_POD_PROP_MIN_MAX(&SPA_FRACTION(0,1),
&SPA_FRACTION(30,1)),
NULL);
*result = spa_pod_builder_pop(builder);
@ -393,7 +393,7 @@ static int impl_port_enum_params(struct spa_node *node,
":", t->param_buffers.size, "i", d->stride * d->format.size.height,
":", t->param_buffers.stride, "i", d->stride,
":", t->param_buffers.buffers, "iru", 32,
2, 2, 32,
SPA_POD_PROP_MIN_MAX(2, 32),
":", t->param_buffers.align, "i", 16);
}
else if (id == t->param.idMeta) {
@ -415,7 +415,8 @@ static int impl_port_enum_params(struct spa_node *node,
":", t->param_io.id, "I", d->type.io_prop_param,
":", t->param_io.size, "i", sizeof(struct spa_pod_double),
":", t->param.propId, "I", d->type.prop_param,
":", t->param.propType, "dru", p->param, 2, 0.0, 10.0);
":", t->param.propType, "dru", p->param,
SPA_POD_PROP_MIN_MAX(0.0, 10.0));
break;
default:
return 0;

View file

@ -204,8 +204,10 @@ static int port_enum_formats(struct spa_node *node,
"I", d->type.media_type.audio,
"I", d->type.media_subtype.raw,
":", d->type.format_audio.format, "I", d->type.audio_format.S16,
":", d->type.format_audio.channels, "iru", 2, 2, 1, INT32_MAX,
":", d->type.format_audio.rate, "iru", 44100, 2, 1, INT32_MAX);
":", d->type.format_audio.channels, "iru", 2,
SPA_POD_PROP_MIN_MAX(1, INT32_MAX),
":", d->type.format_audio.rate, "iru", 44100,
SPA_POD_PROP_MIN_MAX(1, INT32_MAX));
(*index)++;
@ -279,10 +281,10 @@ static int impl_port_enum_params(struct spa_node *node,
param = spa_pod_builder_object(builder,
id, t->param_buffers.Buffers,
":", t->param_buffers.size, "iru", 256,
2, 32, 4096,
SPA_POD_PROP_MIN_MAX(32, 4096),
":", t->param_buffers.stride, "i", 0,
":", t->param_buffers.buffers, "iru", 1,
2, 1, 32,
SPA_POD_PROP_MIN_MAX(1, 32),
":", t->param_buffers.align, "i", 16);
}
else if (id == t->param.idMeta) {
@ -319,7 +321,8 @@ static int impl_port_enum_params(struct spa_node *node,
":", t->param_io.id, "I", d->type.io_prop_volume,
":", t->param_io.size, "i", sizeof(struct spa_pod_double),
":", t->param.propId, "I", d->type.prop_volume,
":", t->param.propType, "dru", p->volume, 2, 0.0, 10.0);
":", t->param.propType, "dru", p->volume,
SPA_POD_PROP_MIN_MAX(0.0, 10.0));
break;
default:
return 0;

View file

@ -272,12 +272,12 @@ static int port_enum_formats(struct spa_node *node,
spa_pod_builder_add(builder,
":", d->type.format_video.size, "Rru", &SPA_RECTANGLE(WIDTH, HEIGHT),
2, &SPA_RECTANGLE(1,1),
&SPA_RECTANGLE(info.max_texture_width,
info.max_texture_height),
SPA_POD_PROP_MIN_MAX(&SPA_RECTANGLE(1,1),
&SPA_RECTANGLE(info.max_texture_width,
info.max_texture_height)),
":", d->type.format_video.framerate, "Fru", &SPA_FRACTION(25,1),
2, &SPA_FRACTION(0,1),
&SPA_FRACTION(30,1),
SPA_POD_PROP_MIN_MAX(&SPA_FRACTION(0,1),
&SPA_FRACTION(30,1)),
NULL);
*result = spa_pod_builder_pop(builder);
@ -308,7 +308,7 @@ static int impl_port_enum_params(struct spa_node *node,
":", t->param_buffers.size, "i", d->stride * d->format.size.height,
":", t->param_buffers.stride, "i", d->stride,
":", t->param_buffers.buffers, "iru", 2,
2, 1, 32,
SPA_POD_PROP_MIN_MAX(1, 32),
":", t->param_buffers.align, "i", 16);
}
else if (id == t->param.idMeta) {

View file

@ -275,9 +275,9 @@ on_stream_format_changed(void *_data, struct spa_pod *format)
t->param.idBuffers, t->param_buffers.Buffers,
":", t->param_buffers.size, "i", data->stride * data->format.size.height,
":", t->param_buffers.stride, "i", data->stride,
":", t->param_buffers.buffers, "iru", 32,
2, 2, 32,
":", t->param_buffers.align, "i", 16);
":", t->param_buffers.buffers, "iru", 8,
SPA_POD_PROP_MIN_MAX(2, 32),
":", t->param_buffers.align, "i", 16);
params[1] = spa_pod_builder_object(&b,
t->param.idMeta, t->param_meta.Meta,
@ -346,12 +346,12 @@ static void on_state_changed(void *_data, enum pw_remote_state old, enum pw_remo
spa_pod_builder_pop(&b);
spa_pod_builder_add(&b,
":", data->type.format_video.size, "Rru", &SPA_RECTANGLE(WIDTH, HEIGHT),
2, &SPA_RECTANGLE(1,1),
&SPA_RECTANGLE(info.max_texture_width,
info.max_texture_height),
SPA_POD_PROP_MIN_MAX(&SPA_RECTANGLE(1,1),
&SPA_RECTANGLE(info.max_texture_width,
info.max_texture_height)),
":", data->type.format_video.framerate, "Fru", &SPA_FRACTION(25,1),
2, &SPA_RECTANGLE(0,1),
&SPA_RECTANGLE(30,1),
SPA_POD_PROP_MIN_MAX(&SPA_RECTANGLE(0,1),
&SPA_RECTANGLE(30,1)),
NULL);
params[0] = spa_pod_builder_pop(&b);

View file

@ -180,7 +180,7 @@ on_stream_format_changed(void *_data, struct spa_pod *format)
":", t->param_buffers.size, "i", data->stride * data->format.size.height,
":", t->param_buffers.stride, "i", data->stride,
":", t->param_buffers.buffers, "iru", 2,
2, 1, 32,
SPA_POD_PROP_MIN_MAX(1, 32),
":", t->param_buffers.align, "i", 16);
params[1] = spa_pod_builder_object(&b,
@ -225,8 +225,8 @@ static void on_state_changed(void *_data, enum pw_remote_state old, enum pw_remo
"I", data->type.media_subtype.raw,
":", data->type.format_video.format, "I", data->type.video_format.RGB,
":", data->type.format_video.size, "Rru", &SPA_RECTANGLE(320, 240),
2, &SPA_RECTANGLE(1, 1),
&SPA_RECTANGLE(4096, 4096),
SPA_POD_PROP_MIN_MAX(&SPA_RECTANGLE(1, 1),
&SPA_RECTANGLE(4096, 4096)),
":", data->type.format_video.framerate, "F", &SPA_FRACTION(25, 1));
pw_stream_add_listener(data->stream,

View file

@ -38,9 +38,11 @@
#include "pipewire/type.h"
#include "pipewire/private.h"
#define MAX_PORTS 256
#define NAME "dsp"
#define MAX_PORTS 256
#define MAX_BUFFERS 8
struct type {
struct spa_type_media_type media_type;
struct spa_type_media_subtype media_subtype;
@ -95,7 +97,7 @@ struct port {
struct spa_io_buffers *io;
struct buffer buffers[64];
struct buffer buffers[MAX_BUFFERS];
uint32_t n_buffers;
struct spa_list queue;
@ -463,7 +465,8 @@ static int port_enum_params(struct spa_node *node,
id, t->param_buffers.Buffers,
":", t->param_buffers.size, "i", n->buffer_size * sizeof(float),
":", t->param_buffers.stride, "i", 0,
":", t->param_buffers.buffers, "ir", 2, 2, 1, 2,
":", t->param_buffers.buffers, "ir", 2,
SPA_POD_PROP_MIN_MAX(1, MAX_BUFFERS),
":", t->param_buffers.align, "i", 16);
}
else