PipeWire 1.7.0
Loading...
Searching...
No Matches
filter-graph.h
Go to the documentation of this file.
1/* Simple Plugin API */
2/* SPDX-FileCopyrightText: Copyright © 2024 Wim Taymans */
3/* SPDX-License-Identifier: MIT */
4
5#ifndef SPA_FILTER_GRAPH_H
6#define SPA_FILTER_GRAPH_H
7
8#include <sys/types.h>
9
10#include <spa/utils/defs.h>
11#include <spa/utils/hook.h>
12#include <spa/pod/builder.h>
13
14#ifdef __cplusplus
15extern "C" {
16#endif
17
18#ifndef SPA_API_FILTER_GRAPH
19 #ifdef SPA_API_IMPL
20 #define SPA_API_FILTER_GRAPH SPA_API_IMPL
21 #else
22 #define SPA_API_FILTER_GRAPH static inline
23 #endif
24#endif
25
34
38#define SPA_TYPE_INTERFACE_FilterGraph SPA_TYPE_INFO_INTERFACE_BASE "FilterGraph"
39
40#define SPA_VERSION_FILTER_GRAPH 0
41struct spa_filter_graph { struct spa_interface iface; };
42
44 uint32_t n_inputs;
45 uint32_t n_outputs;
47#define SPA_FILTER_GRAPH_CHANGE_MASK_FLAGS (1u<<0)
48#define SPA_FILTER_GRAPH_CHANGE_MASK_PROPS (1u<<1)
49 uint64_t change_mask;
51 uint64_t flags;
52 struct spa_dict *props;
53};
56#define SPA_VERSION_FILTER_GRAPH_EVENTS 0
57 uint32_t version;
58
59 void (*info) (void *object, const struct spa_filter_graph_info *info);
61 void (*apply_props) (void *object, enum spa_direction direction, const struct spa_pod *props);
63 void (*props_changed) (void *object, enum spa_direction direction);
64};
65
67#define SPA_VERSION_FILTER_GRAPH_METHODS 0
68 uint32_t version;
70 int (*add_listener) (void *object,
71 struct spa_hook *listener,
72 const struct spa_filter_graph_events *events,
73 void *data);
74
75 int (*enum_prop_info) (void *object, uint32_t idx, struct spa_pod_builder *b,
76 struct spa_pod **param);
77 int (*get_props) (void *object, struct spa_pod_builder *b, struct spa_pod **props);
78 int (*set_props) (void *object, enum spa_direction direction, const struct spa_pod *props);
79
80 int (*set_io) (void *object, const char *type, void *data, size_t size);
82 int (*activate) (void *object, const struct spa_dict *props);
83 int (*deactivate) (void *object);
84
85 int (*reset) (void *object);
86
87 int (*process) (void *object, const void *in[], void *out[], uint32_t n_samples);
88};
89
91 struct spa_hook *listener,
92 const struct spa_filter_graph_events *events, void *data)
94 return spa_api_method_r(int, -ENOTSUP,
95 spa_filter_graph, &object->iface, add_listener, 0, listener,
96 events, data);
97}
100 uint32_t idx, struct spa_pod_builder *b, struct spa_pod **param)
101{
102 return spa_api_method_r(int, -ENOTSUP,
103 spa_filter_graph, &object->iface, enum_prop_info, 0, idx, b, param);
104}
106 struct spa_pod_builder *b, struct spa_pod **props)
107{
108 return spa_api_method_r(int, -ENOTSUP,
109 spa_filter_graph, &object->iface, get_props, 0, b, props);
110}
111
113 enum spa_direction direction, const struct spa_pod *props)
114{
115 return spa_api_method_r(int, -ENOTSUP,
116 spa_filter_graph, &object->iface, set_props, 0, direction, props);
117}
120 const char *type, void *data, size_t size)
121{
122 return spa_api_method_r(int, -ENOTSUP,
123 spa_filter_graph, &object->iface, set_io, 0, type, data, size);
124}
126SPA_API_FILTER_GRAPH int spa_filter_graph_activate(struct spa_filter_graph *object, const struct spa_dict *props)
127{
128 return spa_api_method_r(int, -ENOTSUP,
129 spa_filter_graph, &object->iface, activate, 0, props);
130}
133 return spa_api_method_r(int, -ENOTSUP,
134 spa_filter_graph, &object->iface, deactivate, 0);
135}
136
138{
139 return spa_api_method_r(int, -ENOTSUP,
140 spa_filter_graph, &object->iface, reset, 0);
141}
142
144 const void *in[], void *out[], uint32_t n_samples)
145{
146 return spa_api_method_r(int, -ENOTSUP,
147 spa_filter_graph, &object->iface, process, 0, in, out, n_samples);
148}
149
150/**
151 * \}
152 */
153
154#ifdef __cplusplus
155} /* extern "C" */
156#endif
157
158#endif /* SPA_FILTER_GRAPH_H */
159
spa/pod/builder.h
spa/utils/defs.h
#define SPA_API_FILTER_GRAPH
Definition filter-graph.h:29
SPA_API_FILTER_GRAPH int spa_filter_graph_set_io(struct spa_filter_graph *object, const char *type, void *data, size_t size)
Definition filter-graph.h:132
SPA_API_FILTER_GRAPH int spa_filter_graph_process(struct spa_filter_graph *object, const void *in[], void *out[], uint32_t n_samples)
Definition filter-graph.h:156
SPA_API_FILTER_GRAPH int spa_filter_graph_enum_prop_info(struct spa_filter_graph *object, uint32_t idx, struct spa_pod_builder *b, struct spa_pod **param)
Definition filter-graph.h:112
SPA_API_FILTER_GRAPH int spa_filter_graph_reset(struct spa_filter_graph *object)
Definition filter-graph.h:150
SPA_API_FILTER_GRAPH int spa_filter_graph_set_props(struct spa_filter_graph *object, enum spa_direction direction, const struct spa_pod *props)
Definition filter-graph.h:125
SPA_API_FILTER_GRAPH int spa_filter_graph_deactivate(struct spa_filter_graph *object)
Definition filter-graph.h:144
SPA_API_FILTER_GRAPH int spa_filter_graph_activate(struct spa_filter_graph *object, const struct spa_dict *props)
Definition filter-graph.h:139
SPA_API_FILTER_GRAPH int spa_filter_graph_get_props(struct spa_filter_graph *object, struct spa_pod_builder *b, struct spa_pod **props)
Definition filter-graph.h:118
SPA_API_FILTER_GRAPH int spa_filter_graph_add_listener(struct spa_filter_graph *object, struct spa_hook *listener, const struct spa_filter_graph_events *events, void *data)
Definition filter-graph.h:103
#define spa_api_method_r(rtype, def, type, o, method, version,...)
Definition hook.h:291
spa_direction
Definition defs.h:107
spa/utils/hook.h
Definition dict.h:51
Definition filter-graph.h:66
uint32_t version
Definition filter-graph.h:69
void(* apply_props)(void *object, enum spa_direction direction, const struct spa_pod *props)
Definition filter-graph.h:73
Definition filter-graph.h:52
uint64_t change_mask
Definition filter-graph.h:60
uint32_t n_outputs
Definition filter-graph.h:54
uint64_t flags
Definition filter-graph.h:62
uint32_t n_inputs
Definition filter-graph.h:53
Definition filter-graph.h:78
int(* process)(void *object, const void *in[], void *out[], uint32_t n_samples)
Definition filter-graph.h:100
uint32_t version
Definition filter-graph.h:81
int(* activate)(void *object, const struct spa_dict *props)
Definition filter-graph.h:95
int(* set_props)(void *object, enum spa_direction direction, const struct spa_pod *props)
Definition filter-graph.h:91
int(* reset)(void *object)
Definition filter-graph.h:98
int(* enum_prop_info)(void *object, uint32_t idx, struct spa_pod_builder *b, struct spa_pod **param)
Definition filter-graph.h:88
int(* deactivate)(void *object)
Definition filter-graph.h:96
int(* set_io)(void *object, const char *type, void *data, size_t size)
Definition filter-graph.h:93
int(* get_props)(void *object, struct spa_pod_builder *b, struct spa_pod **props)
Definition filter-graph.h:90
int(* add_listener)(void *object, struct spa_hook *listener, const struct spa_filter_graph_events *events, void *data)
Definition filter-graph.h:83
Definition filter-graph.h:50
struct spa_interface iface
Definition filter-graph.h:50
A hook, contains the structure with functions and the data passed to the functions.
Definition hook.h:427
Definition hook.h:148
Definition builder.h:63
Definition pod.h:57