mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2025-11-06 13:30:01 -05:00
Make AllocParams into POD objects
Make allocparams into pod objects. This makes it easy to serialize, copy, create and intersect them. Add convenience macros for properties Add helper function to collect object properties.
This commit is contained in:
parent
b1f7df52e3
commit
8a6ce3b179
34 changed files with 948 additions and 1054 deletions
|
|
@ -109,11 +109,8 @@ core_marshal_sync (void *object,
|
|||
|
||||
core_update_map (proxy->context);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
SPA_POD_TYPE_INT, seq,
|
||||
-SPA_POD_TYPE_STRUCT, &f,
|
||||
0);
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_INT, seq);
|
||||
|
||||
pinos_connection_end_write (connection, proxy->id, 1, b.b.offset);
|
||||
}
|
||||
|
|
@ -129,11 +126,8 @@ core_marshal_get_registry (void *object,
|
|||
|
||||
core_update_map (proxy->context);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
SPA_POD_TYPE_INT, new_id,
|
||||
-SPA_POD_TYPE_STRUCT, &f,
|
||||
0);
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_INT, new_id);
|
||||
|
||||
pinos_connection_end_write (connection, proxy->id, 2, b.b.offset);
|
||||
}
|
||||
|
|
@ -529,7 +523,7 @@ client_node_marshal_port_update (void *object,
|
|||
|
||||
for (i = 0; i < info->n_params; i++) {
|
||||
SpaAllocParam *p = info->params[i];
|
||||
spa_pod_builder_add (&b.b, SPA_POD_TYPE_BYTES, p, p->size, 0);
|
||||
spa_pod_builder_add (&b.b, SPA_POD_TYPE_POD, p, 0);
|
||||
}
|
||||
n_items = info->extra ? info->extra->n_items : 0;
|
||||
spa_pod_builder_add (&b.b, SPA_POD_TYPE_INT, n_items, 0);
|
||||
|
|
@ -556,11 +550,8 @@ client_node_marshal_state_change (void *object,
|
|||
|
||||
core_update_map (proxy->context);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
SPA_POD_TYPE_INT, state,
|
||||
-SPA_POD_TYPE_STRUCT, &f,
|
||||
0);
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_INT, state);
|
||||
|
||||
pinos_connection_end_write (connection, proxy->id, 2, b.b.offset);
|
||||
}
|
||||
|
|
@ -576,11 +567,8 @@ client_node_marshal_event (void *object,
|
|||
|
||||
core_update_map (proxy->context);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
SPA_POD_TYPE_POD, event,
|
||||
-SPA_POD_TYPE_STRUCT, &f,
|
||||
0);
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_POD, event);
|
||||
|
||||
pinos_connection_end_write (connection, proxy->id, 3, b.b.offset);
|
||||
}
|
||||
|
|
@ -595,10 +583,7 @@ client_node_marshal_destroy (void *object)
|
|||
|
||||
core_update_map (proxy->context);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
-SPA_POD_TYPE_STRUCT, &f,
|
||||
0);
|
||||
spa_pod_builder_struct (&b.b, &f, 0);
|
||||
|
||||
pinos_connection_end_write (connection, proxy->id, 4, b.b.offset);
|
||||
}
|
||||
|
|
@ -1020,11 +1005,9 @@ registry_marshal_bind (void *object,
|
|||
|
||||
core_update_map (proxy->context);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_INT, id,
|
||||
SPA_POD_TYPE_INT, new_id,
|
||||
-SPA_POD_TYPE_STRUCT, &f, 0);
|
||||
SPA_POD_TYPE_INT, new_id);
|
||||
|
||||
pinos_connection_end_write (connection, proxy->id, 0, b.b.offset);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -101,7 +101,7 @@ pinos_serialize_port_info_get_size (const SpaPortInfo *info)
|
|||
len = sizeof (SpaPortInfo);
|
||||
len += info->n_params * sizeof (SpaAllocParam *);
|
||||
for (i = 0; i < info->n_params; i++)
|
||||
len += info->params[i]->size;
|
||||
len += SPA_POD_SIZE (info->params[i]);
|
||||
|
||||
return len;
|
||||
}
|
||||
|
|
@ -130,7 +130,7 @@ pinos_serialize_port_info_serialize (void *p, const SpaPortInfo *info)
|
|||
p = SPA_MEMBER (ap, sizeof (SpaAllocParam*) * info->n_params, void);
|
||||
|
||||
for (i = 0; i < info->n_params; i++) {
|
||||
len = info->params[i]->size;
|
||||
len = SPA_POD_SIZE (info->params[i]);
|
||||
memcpy (p, info->params[i], len);
|
||||
ap[i] = SPA_INT_TO_PTR (SPA_PTRDIFF (p, pi));
|
||||
p = SPA_MEMBER (p, len, void);
|
||||
|
|
|
|||
|
|
@ -25,7 +25,7 @@ extern "C" {
|
|||
#endif
|
||||
|
||||
#include <spa/defs.h>
|
||||
#include <spa/pod.h>
|
||||
#include <spa/pod-utils.h>
|
||||
|
||||
const char * pinos_split_walk (const char *str,
|
||||
const char *delimiter,
|
||||
|
|
|
|||
|
|
@ -97,6 +97,24 @@ release_buffer (GstBufferPool * pool, GstBuffer *buffer)
|
|||
GST_OBJECT_UNLOCK (pool);
|
||||
}
|
||||
|
||||
#define PROP(f,key,type,...) \
|
||||
SPA_POD_PROP (f,key,SPA_POD_PROP_FLAG_READWRITE,type,1,__VA_ARGS__)
|
||||
#define PROP_R(f,key,type,...) \
|
||||
SPA_POD_PROP (f,key,SPA_POD_PROP_FLAG_READABLE,type,1,__VA_ARGS__)
|
||||
#define PROP_MM(f,key,type,...) \
|
||||
SPA_POD_PROP (f,key,SPA_POD_PROP_FLAG_READWRITE | \
|
||||
SPA_POD_PROP_RANGE_MIN_MAX,type,3,__VA_ARGS__)
|
||||
#define PROP_U_MM(f,key,type,...) \
|
||||
SPA_POD_PROP (f,key,SPA_POD_PROP_FLAG_READWRITE | \
|
||||
SPA_POD_PROP_FLAG_UNSET | \
|
||||
SPA_POD_PROP_RANGE_MIN_MAX,type,3,__VA_ARGS__)
|
||||
#define PROP_EN(f,key,type,n,...) \
|
||||
SPA_POD_PROP (f,key,SPA_POD_PROP_FLAG_READWRITE | \
|
||||
SPA_POD_PROP_RANGE_ENUM,type,n,__VA_ARGS__)
|
||||
#define PROP_U_EN(f,key,type,n,...) \
|
||||
SPA_POD_PROP (f,key,SPA_POD_PROP_FLAG_READWRITE | \
|
||||
SPA_POD_PROP_FLAG_UNSET | \
|
||||
SPA_POD_PROP_RANGE_ENUM,type,n,__VA_ARGS__)
|
||||
static gboolean
|
||||
do_start (GstBufferPool * pool)
|
||||
{
|
||||
|
|
@ -107,33 +125,33 @@ do_start (GstBufferPool * pool)
|
|||
guint min_buffers;
|
||||
guint max_buffers;
|
||||
SpaAllocParam *port_params[3];
|
||||
SpaAllocParamBuffers param_buffers;
|
||||
SpaAllocParamMetaEnable param_meta_enable;
|
||||
SpaAllocParamMetaEnableRingbuffer param_meta_enable_rb;
|
||||
SpaPODBuilder b = { NULL };
|
||||
uint8_t buffer[1024];
|
||||
SpaPODFrame f[2];
|
||||
|
||||
config = gst_buffer_pool_get_config (pool);
|
||||
gst_buffer_pool_config_get_params (config, &caps, &size, &min_buffers, &max_buffers);
|
||||
|
||||
port_params[0] = ¶m_buffers.param;
|
||||
param_buffers.param.type = SPA_ALLOC_PARAM_TYPE_BUFFERS;
|
||||
param_buffers.param.size = sizeof (SpaAllocParamBuffers);
|
||||
param_buffers.minsize = size;
|
||||
param_buffers.stride = 0;
|
||||
param_buffers.min_buffers = min_buffers;
|
||||
param_buffers.max_buffers = max_buffers;
|
||||
param_buffers.align = 16;
|
||||
port_params[1] = ¶m_meta_enable.param;
|
||||
param_meta_enable.param.type = SPA_ALLOC_PARAM_TYPE_META_ENABLE;
|
||||
param_meta_enable.param.size = sizeof (SpaAllocParamMetaEnable);
|
||||
param_meta_enable.type = SPA_META_TYPE_HEADER;
|
||||
port_params[2] = ¶m_meta_enable_rb.param;
|
||||
param_meta_enable_rb.param.type = SPA_ALLOC_PARAM_TYPE_META_ENABLE;
|
||||
param_meta_enable_rb.param.size = sizeof (SpaAllocParamMetaEnableRingbuffer);
|
||||
param_meta_enable_rb.type = SPA_META_TYPE_RINGBUFFER;
|
||||
param_meta_enable_rb.minsize = size * SPA_MAX (4, SPA_MAX (min_buffers, max_buffers));
|
||||
param_meta_enable_rb.stride = 0;
|
||||
param_meta_enable_rb.blocks = 1;
|
||||
param_meta_enable_rb.align = 16;
|
||||
spa_pod_builder_init (&b, buffer, sizeof (buffer));
|
||||
spa_pod_builder_object (&b, &f[0], 0, SPA_ALLOC_PARAM_TYPE_BUFFERS,
|
||||
PROP (&f[1], SPA_ALLOC_PARAM_BUFFERS_SIZE, SPA_POD_TYPE_INT, size),
|
||||
PROP (&f[1], SPA_ALLOC_PARAM_BUFFERS_STRIDE, SPA_POD_TYPE_INT, 0),
|
||||
PROP_MM (&f[1], SPA_ALLOC_PARAM_BUFFERS_BUFFERS, SPA_POD_TYPE_INT, min_buffers, min_buffers, max_buffers),
|
||||
PROP (&f[1], SPA_ALLOC_PARAM_BUFFERS_ALIGN, SPA_POD_TYPE_INT, 16));
|
||||
port_params[0] = SPA_POD_BUILDER_DEREF (&b, f[0].ref, SpaAllocParam);
|
||||
|
||||
spa_pod_builder_object (&b, &f[0], 0, SPA_ALLOC_PARAM_TYPE_META_ENABLE,
|
||||
PROP (&f[1], SPA_ALLOC_PARAM_META_ENABLE_TYPE, SPA_POD_TYPE_INT, SPA_META_TYPE_HEADER));
|
||||
port_params[1] = SPA_POD_BUILDER_DEREF (&b, f[0].ref, SpaAllocParam);
|
||||
|
||||
spa_pod_builder_object (&b, &f[0], 0, SPA_ALLOC_PARAM_TYPE_META_ENABLE,
|
||||
PROP (&f[1], SPA_ALLOC_PARAM_META_ENABLE_TYPE, SPA_POD_TYPE_INT, SPA_META_TYPE_RINGBUFFER),
|
||||
PROP (&f[1], SPA_ALLOC_PARAM_META_ENABLE_RB_SIZE, SPA_POD_TYPE_INT,
|
||||
size * SPA_MAX (4, SPA_MAX (min_buffers, max_buffers))),
|
||||
PROP (&f[1], SPA_ALLOC_PARAM_META_ENABLE_RB_STRIDE, SPA_POD_TYPE_INT, 0),
|
||||
PROP (&f[1], SPA_ALLOC_PARAM_META_ENABLE_RB_BLOCKS, SPA_POD_TYPE_INT, 1),
|
||||
PROP (&f[1], SPA_ALLOC_PARAM_META_ENABLE_RB_ALIGN, SPA_POD_TYPE_INT, 16));
|
||||
port_params[2] = SPA_POD_BUILDER_DEREF (&b, f[0].ref, SpaAllocParam);
|
||||
|
||||
pinos_stream_finish_format (p->stream, SPA_RESULT_OK, port_params, 2);
|
||||
|
||||
|
|
|
|||
|
|
@ -765,6 +765,8 @@ connect_error:
|
|||
}
|
||||
}
|
||||
|
||||
#define PROP(f,key,type,...) \
|
||||
SPA_POD_PROP (f,key,SPA_POD_PROP_FLAG_READWRITE,type,1,__VA_ARGS__)
|
||||
static void
|
||||
on_format_changed (PinosListener *listener,
|
||||
PinosStream *stream,
|
||||
|
|
@ -781,12 +783,14 @@ on_format_changed (PinosListener *listener,
|
|||
|
||||
if (res) {
|
||||
SpaAllocParam *params[1];
|
||||
SpaAllocParamMetaEnable param_meta;
|
||||
SpaPODBuilder b = { NULL };
|
||||
uint8_t buffer[128];
|
||||
SpaPODFrame f[2];
|
||||
|
||||
params[0] = ¶m_meta.param;
|
||||
param_meta.param.type = SPA_ALLOC_PARAM_TYPE_META_ENABLE;
|
||||
param_meta.param.size = sizeof (param_meta);
|
||||
param_meta.type = SPA_META_TYPE_HEADER;
|
||||
spa_pod_builder_init (&b, buffer, sizeof (buffer));
|
||||
spa_pod_builder_object (&b, &f[0], 0, SPA_ALLOC_PARAM_TYPE_META_ENABLE,
|
||||
PROP (&f[1], SPA_ALLOC_PARAM_META_ENABLE_TYPE, SPA_POD_TYPE_INT, SPA_META_TYPE_HEADER));
|
||||
params[0] = SPA_POD_BUILDER_DEREF (&b, f[0].ref, SpaAllocParam);
|
||||
|
||||
GST_DEBUG_OBJECT (pinossrc, "doing finish format");
|
||||
pinos_stream_finish_format (pinossrc->stream, SPA_RESULT_OK, params, 1);
|
||||
|
|
|
|||
|
|
@ -34,6 +34,7 @@ typedef struct {
|
|||
PinosListener check_dispatch;
|
||||
} ModuleImpl;
|
||||
|
||||
#if 0
|
||||
static bool
|
||||
check_global_owner (PinosCore *core,
|
||||
PinosClient *client,
|
||||
|
|
@ -53,6 +54,7 @@ check_global_owner (PinosCore *core,
|
|||
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
static void
|
||||
do_check_send (PinosListener *listener,
|
||||
|
|
|
|||
|
|
@ -195,8 +195,8 @@ pinos_properties_from_variant (GVariant *variant)
|
|||
{
|
||||
PinosProperties *props;
|
||||
GVariantIter iter;
|
||||
GVariant *value;
|
||||
gchar *key;
|
||||
//GVariant *value;
|
||||
//gchar *key;
|
||||
|
||||
props = pinos_properties_new (NULL, NULL);
|
||||
|
||||
|
|
|
|||
|
|
@ -19,8 +19,9 @@
|
|||
|
||||
#include <string.h>
|
||||
|
||||
#include <spa/include/spa/video/format.h>
|
||||
#include <spa/lib/debug.h>
|
||||
#include <spa/include/spa/video/format.h>
|
||||
#include <spa/include/spa/pod-utils.h>
|
||||
|
||||
#include "pinos/client/pinos.h"
|
||||
#include "pinos/client/interfaces.h"
|
||||
|
|
@ -145,7 +146,7 @@ find_param (const SpaPortInfo *info, SpaAllocParamType type)
|
|||
uint32_t i;
|
||||
|
||||
for (i = 0; i < info->n_params; i++) {
|
||||
if (info->params[i]->type == type)
|
||||
if (spa_pod_is_object_type (&info->params[i]->pod, type))
|
||||
return info->params[i];
|
||||
}
|
||||
return NULL;
|
||||
|
|
@ -157,9 +158,15 @@ find_meta_enable (const SpaPortInfo *info, SpaMetaType type)
|
|||
uint32_t i;
|
||||
|
||||
for (i = 0; i < info->n_params; i++) {
|
||||
if (info->params[i]->type == SPA_ALLOC_PARAM_TYPE_META_ENABLE &&
|
||||
((SpaAllocParamMetaEnable*)info->params[i])->type == type) {
|
||||
return info->params[i];
|
||||
if (spa_pod_is_object_type (&info->params[i]->pod, SPA_ALLOC_PARAM_TYPE_META_ENABLE)) {
|
||||
uint32_t qtype;
|
||||
|
||||
if (spa_alloc_param_query (info->params[i],
|
||||
SPA_ALLOC_PARAM_META_ENABLE_TYPE, SPA_POD_TYPE_INT, &qtype, 0) != 1)
|
||||
continue;
|
||||
|
||||
if (qtype == type)
|
||||
return info->params[i];
|
||||
}
|
||||
}
|
||||
return NULL;
|
||||
|
|
@ -201,11 +208,16 @@ alloc_buffers (PinosLink *this,
|
|||
for (i = 0; i < n_params; i++) {
|
||||
SpaAllocParam *ap = params[i];
|
||||
|
||||
if (ap->type == SPA_ALLOC_PARAM_TYPE_META_ENABLE) {
|
||||
SpaAllocParamMetaEnable *pme = (SpaAllocParamMetaEnable *) ap;
|
||||
if (ap->pod.type == SPA_ALLOC_PARAM_TYPE_META_ENABLE) {
|
||||
uint32_t type;
|
||||
|
||||
metas[n_metas].type = pme->type;
|
||||
metas[n_metas].size = spa_meta_type_get_size (pme->type);
|
||||
if (spa_alloc_param_query (ap,
|
||||
SPA_ALLOC_PARAM_META_ENABLE_TYPE, SPA_POD_TYPE_INT, &type,
|
||||
0) != 1)
|
||||
continue;
|
||||
|
||||
metas[n_metas].type = type;
|
||||
metas[n_metas].size = spa_meta_type_get_size (type);
|
||||
meta_size += metas[n_metas].size;
|
||||
n_metas++;
|
||||
skel_size += sizeof (SpaMeta);
|
||||
|
|
@ -380,33 +392,60 @@ do_allocation (PinosLink *this, SpaNodeState in_state, SpaNodeState out_state)
|
|||
return SPA_RESULT_OK;
|
||||
|
||||
if (impl->buffers == NULL) {
|
||||
SpaAllocParamBuffers *in_alloc, *out_alloc;
|
||||
SpaAllocParamMetaEnableRingbuffer *in_me, *out_me;
|
||||
SpaAllocParam *in_alloc, *out_alloc;
|
||||
SpaAllocParam *in_me, *out_me;
|
||||
uint32_t max_buffers;
|
||||
size_t minsize, stride, blocks;
|
||||
size_t minsize = 1024, stride = 0;
|
||||
|
||||
in_me = find_meta_enable (iinfo, SPA_META_TYPE_RINGBUFFER);
|
||||
out_me = find_meta_enable (oinfo, SPA_META_TYPE_RINGBUFFER);
|
||||
if (in_me && out_me) {
|
||||
uint32_t ms1, ms2, s1, s2;
|
||||
max_buffers = 1;
|
||||
minsize = SPA_MAX (out_me->minsize, in_me->minsize);
|
||||
stride = SPA_MAX (out_me->stride, in_me->stride);
|
||||
blocks = SPA_MAX (1, SPA_MAX (out_me->blocks, in_me->blocks));
|
||||
|
||||
if (spa_alloc_param_query (in_me,
|
||||
SPA_ALLOC_PARAM_META_ENABLE_RB_SIZE, SPA_POD_TYPE_INT, &ms1,
|
||||
SPA_ALLOC_PARAM_META_ENABLE_RB_STRIDE, SPA_POD_TYPE_INT, &s1, 0) == 2 &&
|
||||
spa_alloc_param_query (in_me,
|
||||
SPA_ALLOC_PARAM_META_ENABLE_RB_SIZE, SPA_POD_TYPE_INT, &ms2,
|
||||
SPA_ALLOC_PARAM_META_ENABLE_RB_STRIDE, SPA_POD_TYPE_INT, &s2, 0) == 2) {
|
||||
minsize = SPA_MAX (ms1, ms2);
|
||||
stride = SPA_MAX (s1, s2);
|
||||
}
|
||||
} else {
|
||||
max_buffers = MAX_BUFFERS;
|
||||
minsize = stride = 0;
|
||||
blocks = 1;
|
||||
in_alloc = find_param (iinfo, SPA_ALLOC_PARAM_TYPE_BUFFERS);
|
||||
if (in_alloc) {
|
||||
max_buffers = in_alloc->max_buffers == 0 ? max_buffers : SPA_MIN (in_alloc->max_buffers, max_buffers);
|
||||
minsize = SPA_MAX (minsize, in_alloc->minsize);
|
||||
stride = SPA_MAX (stride, in_alloc->stride);
|
||||
uint32_t qmax_buffers = max_buffers,
|
||||
qminsize = minsize,
|
||||
qstride = stride;
|
||||
|
||||
spa_alloc_param_query (in_alloc,
|
||||
SPA_ALLOC_PARAM_BUFFERS_SIZE, SPA_POD_TYPE_INT, &qminsize,
|
||||
SPA_ALLOC_PARAM_BUFFERS_STRIDE, SPA_POD_TYPE_INT, &qstride,
|
||||
SPA_ALLOC_PARAM_BUFFERS_BUFFERS, SPA_POD_TYPE_INT, &qmax_buffers,
|
||||
0);
|
||||
|
||||
max_buffers = qmax_buffers == 0 ? max_buffers : SPA_MIN (qmax_buffers, max_buffers);
|
||||
minsize = SPA_MAX (minsize, qminsize);
|
||||
stride = SPA_MAX (stride, qstride);
|
||||
}
|
||||
out_alloc = find_param (oinfo, SPA_ALLOC_PARAM_TYPE_BUFFERS);
|
||||
if (out_alloc) {
|
||||
max_buffers = out_alloc->max_buffers == 0 ? max_buffers : SPA_MIN (out_alloc->max_buffers, max_buffers);
|
||||
minsize = SPA_MAX (minsize, out_alloc->minsize);
|
||||
stride = SPA_MAX (stride, out_alloc->stride);
|
||||
uint32_t qmax_buffers = max_buffers,
|
||||
qminsize = minsize,
|
||||
qstride = stride;
|
||||
|
||||
spa_alloc_param_query (out_alloc,
|
||||
SPA_ALLOC_PARAM_BUFFERS_SIZE, SPA_POD_TYPE_INT, &qminsize,
|
||||
SPA_ALLOC_PARAM_BUFFERS_STRIDE, SPA_POD_TYPE_INT, &qstride,
|
||||
SPA_ALLOC_PARAM_BUFFERS_BUFFERS, SPA_POD_TYPE_INT, &qmax_buffers,
|
||||
0);
|
||||
|
||||
max_buffers = qmax_buffers == 0 ? max_buffers : SPA_MIN (qmax_buffers, max_buffers);
|
||||
minsize = SPA_MAX (minsize, qminsize);
|
||||
stride = SPA_MAX (stride, qstride);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -115,10 +115,8 @@ core_marshal_done (void *object,
|
|||
|
||||
core_update_map (resource->client);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
SPA_POD_TYPE_INT, seq,
|
||||
-SPA_POD_TYPE_STRUCT, &f, 0);
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_INT, seq);
|
||||
|
||||
pinos_connection_end_write (connection, resource->id, 1, b.b.offset);
|
||||
}
|
||||
|
|
@ -142,12 +140,10 @@ core_marshal_error (void *object,
|
|||
vsnprintf (buffer, sizeof (buffer), error, ap);
|
||||
va_end (ap);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_INT, id,
|
||||
SPA_POD_TYPE_INT, res,
|
||||
SPA_POD_TYPE_STRING, buffer,
|
||||
-SPA_POD_TYPE_STRUCT, &f, 0);
|
||||
SPA_POD_TYPE_STRING, buffer);
|
||||
|
||||
pinos_connection_end_write (connection, resource->id, 2, b.b.offset);
|
||||
}
|
||||
|
|
@ -163,10 +159,8 @@ core_marshal_remove_id (void *object,
|
|||
|
||||
core_update_map (resource->client);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
SPA_POD_TYPE_INT, id,
|
||||
-SPA_POD_TYPE_STRUCT, &f, 0);
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_INT, id);
|
||||
|
||||
pinos_connection_end_write (connection, resource->id, 3, b.b.offset);
|
||||
}
|
||||
|
|
@ -377,11 +371,9 @@ registry_marshal_global (void *object,
|
|||
|
||||
core_update_map (resource->client);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_INT, id,
|
||||
SPA_POD_TYPE_STRING, type,
|
||||
-SPA_POD_TYPE_STRUCT, &f, 0);
|
||||
SPA_POD_TYPE_STRING, type);
|
||||
|
||||
pinos_connection_end_write (connection, resource->id, 0, b.b.offset);
|
||||
}
|
||||
|
|
@ -397,10 +389,8 @@ registry_marshal_global_remove (void *object,
|
|||
|
||||
core_update_map (resource->client);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
SPA_POD_TYPE_INT, id,
|
||||
-SPA_POD_TYPE_STRUCT, &f, 0);
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_INT, id);
|
||||
|
||||
pinos_connection_end_write (connection, resource->id, 1, b.b.offset);
|
||||
}
|
||||
|
|
@ -549,10 +539,8 @@ client_node_marshal_done (void *object,
|
|||
|
||||
core_update_map (resource->client);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
SPA_POD_TYPE_INT, pinos_connection_add_fd (connection, datafd),
|
||||
-SPA_POD_TYPE_STRUCT, &f, 0);
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_INT, pinos_connection_add_fd (connection, datafd));
|
||||
|
||||
pinos_connection_end_write (connection, resource->id, 0, b.b.offset);
|
||||
}
|
||||
|
|
@ -568,10 +556,8 @@ client_node_marshal_event (void *object,
|
|||
|
||||
core_update_map (resource->client);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
SPA_POD_TYPE_POD, event,
|
||||
-SPA_POD_TYPE_STRUCT, &f, 0);
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_POD, event);
|
||||
|
||||
pinos_connection_end_write (connection, resource->id, 1, b.b.offset);
|
||||
}
|
||||
|
|
@ -589,12 +575,10 @@ client_node_marshal_add_port (void *object,
|
|||
|
||||
core_update_map (resource->client);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_INT, seq,
|
||||
SPA_POD_TYPE_INT, direction,
|
||||
SPA_POD_TYPE_INT, port_id,
|
||||
-SPA_POD_TYPE_STRUCT, &f, 0);
|
||||
SPA_POD_TYPE_INT, port_id);
|
||||
|
||||
pinos_connection_end_write (connection, resource->id, 2, b.b.offset);
|
||||
}
|
||||
|
|
@ -612,12 +596,10 @@ client_node_marshal_remove_port (void *object,
|
|||
|
||||
core_update_map (resource->client);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_INT, seq,
|
||||
SPA_POD_TYPE_INT, direction,
|
||||
SPA_POD_TYPE_INT, port_id,
|
||||
-SPA_POD_TYPE_STRUCT, &f, 0);
|
||||
SPA_POD_TYPE_INT, port_id);
|
||||
|
||||
pinos_connection_end_write (connection, resource->id, 3, b.b.offset);
|
||||
}
|
||||
|
|
@ -665,12 +647,10 @@ client_node_marshal_set_property (void *object,
|
|||
|
||||
core_update_map (resource->client);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_INT, seq,
|
||||
SPA_POD_TYPE_INT, id,
|
||||
SPA_POD_TYPE_BYTES, value, size,
|
||||
-SPA_POD_TYPE_STRUCT, &f, 0);
|
||||
SPA_POD_TYPE_BYTES, value, size);
|
||||
|
||||
pinos_connection_end_write (connection, resource->id, 5, b.b.offset);
|
||||
}
|
||||
|
|
@ -693,8 +673,7 @@ client_node_marshal_add_mem (void *object,
|
|||
|
||||
core_update_map (resource->client);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_INT, direction,
|
||||
SPA_POD_TYPE_INT, port_id,
|
||||
SPA_POD_TYPE_INT, mem_id,
|
||||
|
|
@ -702,8 +681,7 @@ client_node_marshal_add_mem (void *object,
|
|||
SPA_POD_TYPE_INT, pinos_connection_add_fd (connection, memfd),
|
||||
SPA_POD_TYPE_INT, flags,
|
||||
SPA_POD_TYPE_INT, offset,
|
||||
SPA_POD_TYPE_INT, size,
|
||||
-SPA_POD_TYPE_STRUCT, &f, 0);
|
||||
SPA_POD_TYPE_INT, size);
|
||||
|
||||
pinos_connection_end_write (connection, resource->id, 6, b.b.offset);
|
||||
}
|
||||
|
|
@ -775,11 +753,9 @@ client_node_marshal_node_command (void *object,
|
|||
|
||||
core_update_map (resource->client);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_INT, seq,
|
||||
SPA_POD_TYPE_POD, command,
|
||||
-SPA_POD_TYPE_STRUCT, &f, 0);
|
||||
SPA_POD_TYPE_POD, command);
|
||||
|
||||
pinos_connection_end_write (connection, resource->id, 8, b.b.offset);
|
||||
}
|
||||
|
|
@ -796,11 +772,9 @@ client_node_marshal_port_command (void *object,
|
|||
|
||||
core_update_map (resource->client);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_INT, port_id,
|
||||
SPA_POD_TYPE_POD, command,
|
||||
-SPA_POD_TYPE_STRUCT, &f, 0);
|
||||
SPA_POD_TYPE_POD, command);
|
||||
|
||||
pinos_connection_end_write (connection, resource->id, 9, b.b.offset);
|
||||
}
|
||||
|
|
@ -818,12 +792,10 @@ client_node_marshal_transport (void *object,
|
|||
|
||||
core_update_map (resource->client);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_INT, pinos_connection_add_fd (connection, memfd),
|
||||
SPA_POD_TYPE_INT, offset,
|
||||
SPA_POD_TYPE_INT, size,
|
||||
-SPA_POD_TYPE_STRUCT, &f, 0);
|
||||
SPA_POD_TYPE_INT, size);
|
||||
|
||||
pinos_connection_end_write (connection, resource->id, 10, b.b.offset);
|
||||
}
|
||||
|
|
@ -861,7 +833,7 @@ client_node_demarshal_port_update (void *object,
|
|||
{
|
||||
PinosResource *resource = object;
|
||||
SpaPODIter it;
|
||||
uint32_t i, t, direction, port_id, change_mask, n_possible_formats, sz;
|
||||
uint32_t i, t, direction, port_id, change_mask, n_possible_formats;
|
||||
const SpaProps *props = NULL;
|
||||
const SpaFormat **possible_formats = NULL, *format = NULL;
|
||||
SpaPortInfo info, *infop = NULL;
|
||||
|
|
@ -905,7 +877,7 @@ client_node_demarshal_port_update (void *object,
|
|||
|
||||
info.params = alloca (info.n_params * sizeof (SpaAllocParam *));
|
||||
for (i = 0; i < info.n_params; i++)
|
||||
if (!spa_pod_iter_get (&it, SPA_POD_TYPE_BYTES, &info.params[i], &sz, 0))
|
||||
if (!spa_pod_iter_get (&it, SPA_POD_TYPE_OBJECT, &info.params[i], 0))
|
||||
return false;
|
||||
|
||||
if (!spa_pod_iter_get (&it, SPA_POD_TYPE_INT, &dict.n_items, 0))
|
||||
|
|
@ -994,15 +966,13 @@ link_marshal_info (void *object,
|
|||
|
||||
core_update_map (resource->client);
|
||||
|
||||
spa_pod_builder_add (&b.b,
|
||||
SPA_POD_TYPE_STRUCT, &f,
|
||||
spa_pod_builder_struct (&b.b, &f,
|
||||
SPA_POD_TYPE_INT, info->id,
|
||||
SPA_POD_TYPE_LONG, info->change_mask,
|
||||
SPA_POD_TYPE_INT, info->output_node_id,
|
||||
SPA_POD_TYPE_INT, info->output_port_id,
|
||||
SPA_POD_TYPE_INT, info->input_node_id,
|
||||
SPA_POD_TYPE_INT, info->input_port_id,
|
||||
-SPA_POD_TYPE_STRUCT, &f, 0);
|
||||
SPA_POD_TYPE_INT, info->input_port_id);
|
||||
|
||||
pinos_connection_end_write (connection, resource->id, 0, b.b.offset);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue