mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-07 13:30:09 -05:00
examples: improve examples
This commit is contained in:
parent
b9171b5e57
commit
d6f40cefa6
4 changed files with 33 additions and 13 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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) {
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue