diff --git a/src/examples/export-sink.c b/src/examples/export-sink.c index db482df2f..dca809637 100644 --- a/src/examples/export-sink.c +++ b/src/examples/export-sink.c @@ -36,6 +36,8 @@ #define M_PI_M2 ( M_PI + M_PI ) +#define MAX_BUFFERS 16 + struct type { uint32_t prop_param; uint32_t io_prop_param; @@ -105,7 +107,7 @@ struct data { struct spa_param *params[2]; - struct spa_buffer *buffers[32]; + struct spa_buffer *buffers[MAX_BUFFERS]; uint32_t n_buffers; }; @@ -392,8 +394,8 @@ static int impl_port_enum_params(struct spa_node *node, id, t->param_buffers.Buffers, ":", t->param_buffers.size, "i", d->stride * d->format.size.height, ":", t->param_buffers.stride, "i", d->stride, - ":", t->param_buffers.buffers, "iru", 32, - SPA_POD_PROP_MIN_MAX(2, 32), + ":", t->param_buffers.buffers, "iru", 2, + SPA_POD_PROP_MIN_MAX(2, MAX_BUFFERS), ":", t->param_buffers.align, "i", 16); } else if (id == t->param.idMeta) { @@ -548,7 +550,7 @@ static int impl_node_process_input(struct spa_node *node) if (d->io->status != SPA_STATUS_HAVE_BUFFER) return SPA_STATUS_NEED_BUFFER; - if (d->io->buffer_id > d->n_buffers) + if (d->io->buffer_id >= d->n_buffers) return SPA_STATUS_NEED_BUFFER; buf = d->buffers[d->io->buffer_id]; @@ -584,6 +586,9 @@ static void make_node(struct data *data) props = pw_properties_new(PW_NODE_PROP_AUTOCONNECT, "1", NULL); if (data->path) pw_properties_set(props, PW_NODE_PROP_TARGET_NODE, data->path); + pw_properties_set(props, PW_NODE_PROP_MEDIA, "Video"); + pw_properties_set(props, PW_NODE_PROP_CATEGORY, "Capture"); + pw_properties_set(props, PW_NODE_PROP_ROLE, "Camera"); data->node = pw_node_new(data->core, "SDL-sink", props, 0); data->impl_node = impl_node; diff --git a/src/examples/export-source.c b/src/examples/export-source.c index 5dc20bb75..e6e3a8547 100644 --- a/src/examples/export-source.c +++ b/src/examples/export-source.c @@ -33,6 +33,9 @@ #define M_PI_M2 ( M_PI + M_PI ) +#define MAX_BUFFERS 16 +#define BUFFER_SAMPLES 48 + struct type { uint32_t prop_volume; uint32_t io_prop_volume; @@ -95,11 +98,9 @@ struct data { struct spa_pod_double *ctrl_volume; - uint8_t buffer[1024]; - struct spa_audio_info_raw format; - struct buffer buffers[32]; + struct buffer buffers[MAX_BUFFERS]; int n_buffers; struct spa_list empty; @@ -235,7 +236,7 @@ static int port_get_format(struct spa_node *node, d->t->param.idFormat, d->t->spa_format, "I", d->type.media_type.audio, "I", d->type.media_subtype.raw, - ":", d->type.format_audio.format, "I", d->format.format, + ":", d->type.format_audio.format, "I", d->format.format, ":", d->type.format_audio.channels, "i", d->format.channels, ":", d->type.format_audio.rate, "i", d->format.rate); @@ -282,11 +283,11 @@ 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, + ":", t->param_buffers.size, "iru", BUFFER_SAMPLES * sizeof(float), SPA_POD_PROP_MIN_MAX(32, 4096), ":", t->param_buffers.stride, "i", 0, ":", t->param_buffers.buffers, "iru", 1, - SPA_POD_PROP_MIN_MAX(1, 32), + SPA_POD_PROP_MIN_MAX(1, MAX_BUFFERS), ":", t->param_buffers.align, "i", 16); } else if (id == t->param.idMeta) { diff --git a/src/examples/video-play.c b/src/examples/video-play.c index 1327373b2..aef95caf4 100644 --- a/src/examples/video-play.c +++ b/src/examples/video-play.c @@ -306,8 +306,15 @@ static void on_state_changed(void *_data, enum pw_remote_state old, enum pw_remo printf("remote state: \"%s\"\n", pw_remote_state_as_string(state)); - data->stream = pw_stream_new(remote, "video-play", - pw_properties_new("pipewire.client.reuse", "1", NULL)); + data->stream = pw_stream_new(remote, + "video-play", + pw_properties_new( + "pipewire.client.reuse", "1", + PW_NODE_PROP_MEDIA, "Video", + PW_NODE_PROP_CATEGORY, "Capture", + PW_NODE_PROP_ROLE, "Camera", + NULL)); + SDL_GetRendererInfo(data->renderer, &info); diff --git a/src/examples/video-src.c b/src/examples/video-src.c index a4d199f25..6217d3d37 100644 --- a/src/examples/video-src.c +++ b/src/examples/video-src.c @@ -216,7 +216,14 @@ static void on_state_changed(void *_data, enum pw_remote_state old, enum pw_remo printf("remote state: \"%s\"\n", pw_remote_state_as_string(state)); - data->stream = pw_stream_new(remote, "video-src", NULL); + data->stream = pw_stream_new(remote, + "video-src", + pw_properties_new( + "media.class", "Video/Source", + PW_NODE_PROP_MEDIA, "Video", + PW_NODE_PROP_CATEGORY, "Source", + PW_NODE_PROP_ROLE, "Screen", + NULL)); params[0] = spa_pod_builder_object(&b, data->t->param.idEnumFormat, data->t->spa_format,