Go to the documentation of this file.
23 #ifndef SPA_BUFFER_ALLOC_H
24 #define SPA_BUFFER_ALLOC_H
39 #define SPA_BUFFER_ALLOC_FLAG_INLINE_META (1<<0)
40 #define SPA_BUFFER_ALLOC_FLAG_INLINE_CHUNK (1<<1)
41 #define SPA_BUFFER_ALLOC_FLAG_INLINE_DATA (1<<2)
42 #define SPA_BUFFER_ALLOC_FLAG_INLINE_ALL 0b111
43 #define SPA_BUFFER_ALLOC_FLAG_NO_DATA (1<<3)
80 uint32_t n_metas,
struct spa_meta metas[],
81 uint32_t n_datas,
struct spa_data datas[],
82 uint32_t data_aligns[])
146 for (i = 0, size = 0; i < n_metas; i++)
163 for (i = 0,
size = 0; i < n_datas; i++) {
201 void *skel_mem,
void *data_mem)
206 void **dp, *skel, *
data;
222 for (i = 0; i < info->
n_metas; i++) {
244 for (i = 0; i < info->
n_datas; i++) {
279 uint32_t n_buffers,
struct spa_buffer *buffers[],
280 void *skel_mem,
void *data_mem)
283 for (i = 0; i < n_buffers; i++) {
316 uint32_t data_aligns[])
#define SPA_MAX(a, b)
Definition: defs.h:134
struct impl * impl
Definition: module-protocol-simple.c:107
int int const char * pw_properties_get(const struct pw_properties *properties, const char *key)
Get a property.
Definition: properties.c:487
uint32_t maxsize
max size of data
Definition: buffer/buffer.h:87
Definition: module-filter-chain.c:183
#define SPA_BUFFER_ALLOC_FLAG_INLINE_CHUNK
add chunk data in the skeleton
Definition: alloc.h:40
unsigned int active
Definition: access-flatpak.c:79
int sm_access_flatpak_start(struct sm_media_session *session)
Definition: access-flatpak.c:198
int spa_buffer_alloc_fill_info(struct spa_buffer_alloc_info *info, uint32_t n_metas, struct spa_meta metas[], uint32_t n_datas, struct spa_data datas[], uint32_t data_aligns[])
Fill buffer allocation information.
Definition: alloc.h:79
uint32_t n_datas
number of data members
Definition: buffer/buffer.h:95
#define PW_LOG_TOPIC_INIT(var)
Definition: src/pipewire/log.h:136
user data to add to an object
Definition: filter.c:75
uint8_t data[MAX_BUFFER]
Definition: module-profiler.c:90
bool spa_streq(const char *s1, const char *s2)
Definition: string.h:50
#define SPA_BUFFER_ALLOC_FLAG_INLINE_ALL
Definition: alloc.h:42
struct spa_data * datas
Definition: alloc.h:49
#define spa_list_for_each(pos, head, member)
Definition: list.h:111
size_t meta_size
size of the meta if not inlined
Definition: alloc.h:52
size_t chunk_size
size of the chunk if not inlined
Definition: alloc.h:53
uint32_t n_metas
Definition: alloc.h:46
#define SPA_ROUND_UP_N(num, align)
Definition: defs.h:230
#define PW_PERM_R
object can be seen and events can be received
Definition: permission.h:47
unsigned int is_portal
Definition: access-portal.c:112
struct spa_hook listener
Definition: access-flatpak.c:65
size_t data_size
size of the data if not inlined
Definition: alloc.h:54
uint32_t id
Definition: access-flatpak.c:73
#define SPA_PTROFF(ptr_, offset_, type_)
Return the address (buffer + offset) as pointer of type.
Definition: defs.h:164
Definition: permission.h:64
uint32_t id
Definition: module-echo-cancel.c:143
struct spa_audio_info_raw info
Definition: module-echo-cancel.c:149
#define NAME
Definition: access-flatpak.c:57
#define SPA_BUFFER_ALLOC_FLAG_NO_DATA
don't set data pointers
Definition: alloc.h:43
struct spa_list client_list
Definition: access-flatpak.c:67
uint32_t * data_aligns
Definition: alloc.h:50
#define spa_list_consume(pos, head, member)
Definition: list.h:96
struct spa_hook listener
Definition: access-flatpak.c:78
struct sm_client * obj
Definition: access-flatpak.c:71
struct spa_meta * metas
array of metadata
Definition: buffer/buffer.h:96
#define SESSION_KEY
Definition: access-portal.c:80
PW_LOG_TOPIC_STATIC(mod_topic, "ms.mod." NAME)
void spa_list_remove(struct spa_list *elem)
Definition: list.h:69
uint32_t flags
Definition: alloc.h:44
#define PW_TYPE_INTERFACE_Node
Definition: src/pipewire/node.h:50
#define SPA_BUFFER_ALLOC_FLAG_INLINE_META
add metadata data in the skeleton
Definition: alloc.h:39
uint32_t n_metas
number of metadata
Definition: buffer/buffer.h:94
A Buffer.
Definition: buffer/buffer.h:93
#define PW_PERM_ALL
Definition: permission.h:61
uint32_t permissions
bitmask of above permissions
Definition: permission.h:66
The client information.
Definition: client.h:55
struct spa_buffer ** spa_buffer_alloc_array(uint32_t n_buffers, uint32_t flags, uint32_t n_metas, struct spa_meta metas[], uint32_t n_datas, struct spa_data datas[], uint32_t data_aligns[])
Allocate an array of buffers.
Definition: alloc.h:313
struct spa_dict * props
extra properties
Definition: client.h:60
#define SPA_FLAG_IS_SET(field, flag)
Definition: defs.h:73
#define NAME
Definition: access-portal.c:79
void spa_list_init(struct spa_list *list)
Definition: list.h:44
size_t mem_size
size of the total memory if not inlined
Definition: alloc.h:55
media_role
Definition: access-portal.c:85
struct spa_chunk * chunk
valid chunk of memory
Definition: buffer/buffer.h:89
Definition: utils/dict.h:48
const char * spa_dict_lookup(const struct spa_dict *dict, const char *key)
Definition: utils/dict.h:99
#define PW_KEY_MEDIA_CATEGORY
Media Category: Playback, Capture, Duplex, Monitor, Manager.
Definition: src/pipewire/keys.h:279
#define PW_PERMISSION_INIT(id, p)
Definition: permission.h:69
#define SPA_BUFFER_ALLOC_FLAG_INLINE_DATA
add buffer data to the skeleton
Definition: alloc.h:41
@ MEDIA_ROLE_CAMERA
Definition: access-portal.c:88
struct spa_buffer * spa_buffer_alloc_layout(struct spa_buffer_alloc_info *info, void *skel_mem, void *data_mem)
Fill skeleton and data according to the allocation info.
Definition: alloc.h:200
#define pw_log_debug(...)
Definition: src/pipewire/log.h:155
Definition: module-protocol-native.c:107
uint32_t max_align
max of all alignments
Definition: alloc.h:45
struct sm_media_session * session
Definition: access-flatpak.c:64
char * app_id
Definition: access-portal.c:113
#define PW_ID_ANY
Definition: core.h:69
DBusConnection * bus
Definition: module-portal.c:92
uint32_t size
size of valid data.
Definition: buffer/buffer.h:61
#define spa_dbus_connection_get(c)
Definition: dbus.h:112
int spa_buffer_alloc_layout_array(struct spa_buffer_alloc_info *info, uint32_t n_buffers, struct spa_buffer *buffers[], void *skel_mem, void *data_mem)
Layout an array of buffers.
Definition: alloc.h:278
#define PW_TYPE_INTERFACE_Client
Definition: client.h:46
#define PW_PERM_X
methods can be called on the object.
Definition: permission.h:49
#define pw_log_warn(...)
Definition: src/pipewire/log.h:153
PW_LOG_TOPIC_STATIC(mod_topic, "ms.mod." NAME)
struct spa_data * datas
array of data members
Definition: buffer/buffer.h:97
unsigned int portal_managed
Definition: access-portal.c:110
Data for a buffer this stays constant for a buffer.
Definition: buffer/buffer.h:70
#define PW_KEY_ACCESS
how the client access is controlled
Definition: src/pipewire/keys.h:48
void spa_hook_remove(struct spa_hook *hook)
Remove a hook.
Definition: hook.h:354
#define SPA_PTR_ALIGN(p, align, type)
Definition: defs.h:234
#define pw_log_info(...)
Definition: src/pipewire/log.h:154
@ MEDIA_ROLE_INVALID
Definition: access-portal.c:86
size_t skel_size
size of the struct spa_buffer and inlined meta/chunk/data
Definition: alloc.h:51
void * data
optional data pointer
Definition: buffer/buffer.h:88
Chunk of memory, can change for each buffer.
Definition: buffer/buffer.h:57
#define pw_client_update_permissions(c,...)
Definition: client.h:176
information about the buffer layout
Definition: alloc.h:38
int sm_access_portal_start(struct sm_media_session *session)
Definition: access-portal.c:649
enum media_role allowed_media_roles
Definition: access-portal.c:115
struct spa_list link
link in impl client_list
Definition: module-protocol-simple.c:106
uint32_t n_datas
Definition: alloc.h:47
struct spa_meta * metas
Definition: alloc.h:48
enum media_role media_roles
Definition: access-portal.c:114
unsigned int setup_complete
Definition: access-portal.c:111
Definition: properties.h:49
@ MEDIA_ROLE_NONE
Definition: access-portal.c:87
#define PW_KEY_CLIENT_ACCESS
how the client wants to be access controlled
Definition: src/pipewire/keys.h:49
#define pw_log_error(...)
Definition: src/pipewire/log.h:152
#define MEDIA_ROLE_ALL
Definition: access-portal.c:90
#define spa_list_append(list, item)
Definition: list.h:81
#define SESSION_KEY
Definition: access-flatpak.c:58