mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-10-29 05:40:27 -04:00
props: use macro for property alternatives
This commit is contained in:
parent
f039238288
commit
0e5a1b6327
15 changed files with 123 additions and 107 deletions
|
|
@ -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)
|
||||
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue