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 M_PI_M2 ( M_PI + M_PI )
|
||||||
|
|
||||||
|
#define MAX_BUFFERS 16
|
||||||
|
|
||||||
struct type {
|
struct type {
|
||||||
uint32_t prop_param;
|
uint32_t prop_param;
|
||||||
uint32_t io_prop_param;
|
uint32_t io_prop_param;
|
||||||
|
|
@ -105,7 +107,7 @@ struct data {
|
||||||
|
|
||||||
struct spa_param *params[2];
|
struct spa_param *params[2];
|
||||||
|
|
||||||
struct spa_buffer *buffers[32];
|
struct spa_buffer *buffers[MAX_BUFFERS];
|
||||||
uint32_t n_buffers;
|
uint32_t n_buffers;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -392,8 +394,8 @@ static int impl_port_enum_params(struct spa_node *node,
|
||||||
id, t->param_buffers.Buffers,
|
id, t->param_buffers.Buffers,
|
||||||
":", t->param_buffers.size, "i", d->stride * d->format.size.height,
|
":", t->param_buffers.size, "i", d->stride * d->format.size.height,
|
||||||
":", t->param_buffers.stride, "i", d->stride,
|
":", t->param_buffers.stride, "i", d->stride,
|
||||||
":", t->param_buffers.buffers, "iru", 32,
|
":", t->param_buffers.buffers, "iru", 2,
|
||||||
SPA_POD_PROP_MIN_MAX(2, 32),
|
SPA_POD_PROP_MIN_MAX(2, MAX_BUFFERS),
|
||||||
":", t->param_buffers.align, "i", 16);
|
":", t->param_buffers.align, "i", 16);
|
||||||
}
|
}
|
||||||
else if (id == t->param.idMeta) {
|
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)
|
if (d->io->status != SPA_STATUS_HAVE_BUFFER)
|
||||||
return SPA_STATUS_NEED_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;
|
return SPA_STATUS_NEED_BUFFER;
|
||||||
|
|
||||||
buf = d->buffers[d->io->buffer_id];
|
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);
|
props = pw_properties_new(PW_NODE_PROP_AUTOCONNECT, "1", NULL);
|
||||||
if (data->path)
|
if (data->path)
|
||||||
pw_properties_set(props, PW_NODE_PROP_TARGET_NODE, 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->node = pw_node_new(data->core, "SDL-sink", props, 0);
|
||||||
data->impl_node = impl_node;
|
data->impl_node = impl_node;
|
||||||
|
|
|
||||||
|
|
@ -33,6 +33,9 @@
|
||||||
|
|
||||||
#define M_PI_M2 ( M_PI + M_PI )
|
#define M_PI_M2 ( M_PI + M_PI )
|
||||||
|
|
||||||
|
#define MAX_BUFFERS 16
|
||||||
|
#define BUFFER_SAMPLES 48
|
||||||
|
|
||||||
struct type {
|
struct type {
|
||||||
uint32_t prop_volume;
|
uint32_t prop_volume;
|
||||||
uint32_t io_prop_volume;
|
uint32_t io_prop_volume;
|
||||||
|
|
@ -95,11 +98,9 @@ struct data {
|
||||||
|
|
||||||
struct spa_pod_double *ctrl_volume;
|
struct spa_pod_double *ctrl_volume;
|
||||||
|
|
||||||
uint8_t buffer[1024];
|
|
||||||
|
|
||||||
struct spa_audio_info_raw format;
|
struct spa_audio_info_raw format;
|
||||||
|
|
||||||
struct buffer buffers[32];
|
struct buffer buffers[MAX_BUFFERS];
|
||||||
int n_buffers;
|
int n_buffers;
|
||||||
struct spa_list empty;
|
struct spa_list empty;
|
||||||
|
|
||||||
|
|
@ -282,11 +283,11 @@ static int impl_port_enum_params(struct spa_node *node,
|
||||||
|
|
||||||
param = spa_pod_builder_object(builder,
|
param = spa_pod_builder_object(builder,
|
||||||
id, t->param_buffers.Buffers,
|
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),
|
SPA_POD_PROP_MIN_MAX(32, 4096),
|
||||||
":", t->param_buffers.stride, "i", 0,
|
":", t->param_buffers.stride, "i", 0,
|
||||||
":", t->param_buffers.buffers, "iru", 1,
|
":", 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);
|
":", t->param_buffers.align, "i", 16);
|
||||||
}
|
}
|
||||||
else if (id == t->param.idMeta) {
|
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));
|
printf("remote state: \"%s\"\n", pw_remote_state_as_string(state));
|
||||||
|
|
||||||
data->stream = pw_stream_new(remote, "video-play",
|
data->stream = pw_stream_new(remote,
|
||||||
pw_properties_new("pipewire.client.reuse", "1", NULL));
|
"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);
|
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",
|
printf("remote state: \"%s\"\n",
|
||||||
pw_remote_state_as_string(state));
|
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,
|
params[0] = spa_pod_builder_object(&b,
|
||||||
data->t->param.idEnumFormat, data->t->spa_format,
|
data->t->param.idEnumFormat, data->t->spa_format,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue