PipeWire 1.5.84
Loading...
Searching...
No Matches
peer-utils.h
Go to the documentation of this file.
1/* Simple Plugin API */
2/* SPDX-FileCopyrightText: Copyright © 2023 Wim Taymans */
3/* SPDX-License-Identifier: MIT */
4
5#ifndef SPA_PARAM_PEER_PARAM_UTILS_H
6#define SPA_PARAM_PEER_PARAM_UTILS_H
7
8#include <float.h>
9
10#include <spa/utils/dict.h>
11#include <spa/pod/builder.h>
12#include <spa/pod/iter.h>
13#include <spa/pod/parser.h>
14#include <spa/pod/compare.h>
15#include <spa/param/peer.h>
16
17#ifdef __cplusplus
18extern "C" {
19#endif
20
25
26#ifndef SPA_API_PEER_PARAM_UTILS
27 #ifdef SPA_API_IMPL
28 #define SPA_API_PEER_PARAM_UTILS SPA_API_IMPL
29 #else
30 #define SPA_API_PEER_PARAM_UTILS static inline
31 #endif
32#endif
33
35spa_peer_param_parse(const struct spa_pod *param, struct spa_peer_param_info *info,
36 size_t size, void **state)
38 int res;
39 const struct spa_pod_object *obj = (const struct spa_pod_object*)param;
40 const struct spa_pod_prop *first, *start, *cur;
41
43 SPA_TYPE_OBJECT_PeerParam, NULL)) < 0)
44 return res;
45
46 first = spa_pod_prop_first(&obj->body);
47 start = *state ? spa_pod_prop_next((struct spa_pod_prop*)*state) : first;
48
49 res = 0;
50 for (cur = start; spa_pod_prop_is_inside(&obj->body, obj->pod.size, cur);
51 cur = spa_pod_prop_next(cur)) {
52 info->peer_id = cur->key;
53 info->param = &cur->value;
54 *state = (void*)cur;
55 return 1;
56 }
57 return 0;
58}
59
60
62spa_peer_param_build_start(struct spa_pod_builder *builder, struct spa_pod_frame *f, uint32_t id)
63{
65}
66
68spa_peer_param_build_add_param(struct spa_pod_builder *builder, uint32_t peer_id,
69 const struct spa_pod *param)
70{
71 spa_pod_builder_prop(builder, peer_id, 0);
72 if (param)
73 spa_pod_builder_primitive(builder, param);
74 else
76}
77
80{
81 return (struct spa_pod*)spa_pod_builder_pop(builder, f);
82}
83
84
86 */
87
88#ifdef __cplusplus
89} /* extern "C" */
90#endif
91
92#endif /* SPA_PARAM_PEER_PARAM_UTILS_H */
spa/pod/builder.h
spa/pod/compare.h
uint32_t int int res
Definition core.h:433
SPA_API_PEER_PARAM_UTILS void spa_peer_param_build_start(struct spa_pod_builder *builder, struct spa_pod_frame *f, uint32_t id)
Definition peer-utils.h:69
SPA_API_PEER_PARAM_UTILS int spa_peer_param_parse(const struct spa_pod *param, struct spa_peer_param_info *info, size_t size, void **state)
Definition peer-utils.h:42
SPA_API_PEER_PARAM_UTILS void spa_peer_param_build_add_param(struct spa_pod_builder *builder, uint32_t peer_id, const struct spa_pod *param)
Definition peer-utils.h:75
#define SPA_API_PEER_PARAM_UTILS
Definition peer-utils.h:37
SPA_API_PEER_PARAM_UTILS struct spa_pod * spa_peer_param_build_end(struct spa_pod_builder *builder, struct spa_pod_frame *f)
Definition peer-utils.h:86
SPA_API_POD_BUILDER void * spa_pod_builder_pop(struct spa_pod_builder *builder, struct spa_pod_frame *frame)
Definition builder.h:213
SPA_API_POD_ITER struct spa_pod_prop * spa_pod_prop_first(const struct spa_pod_object_body *body)
Definition iter.h:51
SPA_API_POD_BUILDER int spa_pod_builder_none(struct spa_pod_builder *builder)
Definition builder.h:262
SPA_API_POD_ITER bool spa_pod_prop_is_inside(const struct spa_pod_object_body *body, uint32_t size, const struct spa_pod_prop *iter)
Definition iter.h:56
SPA_API_POD_BUILDER int spa_pod_builder_push_object(struct spa_pod_builder *builder, struct spa_pod_frame *frame, uint32_t type, uint32_t id)
Definition builder.h:475
SPA_API_POD_ITER struct spa_pod_prop * spa_pod_prop_next(const struct spa_pod_prop *iter)
Definition iter.h:65
SPA_API_POD_BUILDER int spa_pod_builder_primitive(struct spa_pod_builder *builder, const struct spa_pod *p)
Definition builder.h:250
#define spa_pod_parse_object(pod, type, id,...)
Definition parser.h:935
SPA_API_POD_BUILDER int spa_pod_builder_prop(struct spa_pod_builder *builder, uint32_t key, uint32_t flags)
Definition builder.h:490
@ SPA_TYPE_OBJECT_PeerParam
Definition type.h:98
spa/pod/iter.h
spa/pod/parser.h
spa/param/peer.h
Definition peer.h:30
Definition builder.h:63
Definition body.h:38
Definition pod.h:202
struct spa_pod pod
Definition pod.h:203
struct spa_pod_object_body body
Definition pod.h:204
Definition pod.h:227
uint32_t key
key of property, list of valid keys depends on the object type
Definition pod.h:228
struct spa_pod value
Definition pod.h:249
Definition pod.h:57
uint32_t size
Definition pod.h:58
spa/utils/dict.h