examples: improve examples

This commit is contained in:
Wim Taymans 2018-07-12 10:02:42 +02:00
parent b9171b5e57
commit d6f40cefa6
4 changed files with 33 additions and 13 deletions

View file

@ -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;

View file

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

View file

@ -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);

View file

@ -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,