PipeWire 1.4.1
All Data Structures Files Functions Variables Typedefs Enumerations Enumerator Macros Modules Pages
meta.h
Go to the documentation of this file.
1/* Simple Plugin API */
2/* SPDX-FileCopyrightText: Copyright © 2018 Wim Taymans */
3/* SPDX-License-Identifier: MIT */
4
5#ifndef SPA_META_H
6#define SPA_META_H
7
8#ifdef __cplusplus
9extern "C" {
10#endif
11
12#include <spa/utils/defs.h>
13#include <spa/pod/pod.h>
14
15#ifndef SPA_API_META
16 #ifdef SPA_API_IMPL
17 #define SPA_API_META SPA_API_IMPL
18 #else
19 #define SPA_API_META static inline
20 #endif
21#endif
22
28enum spa_meta_type {
51struct spa_meta {
52 uint32_t type;
53 uint32_t size;
54 void *data;
55};
56
57SPA_API_META void *spa_meta_first(const struct spa_meta *m) {
58 return m->data;
61SPA_API_META void *spa_meta_end(const struct spa_meta *m) {
62 return SPA_PTROFF(m->data,m->size,void);
63}
64#define spa_meta_check(p,m) (SPA_PTROFF(p,sizeof(*(p)),void) <= spa_meta_end(m))
65
70struct spa_meta_header {
71#define SPA_META_HEADER_FLAG_DISCONT (1 << 0)
72#define SPA_META_HEADER_FLAG_CORRUPTED (1 << 1)
73#define SPA_META_HEADER_FLAG_MARKER (1 << 2)
74#define SPA_META_HEADER_FLAG_HEADER (1 << 3)
75#define SPA_META_HEADER_FLAG_GAP (1 << 4)
76#define SPA_META_HEADER_FLAG_DELTA_UNIT (1 << 5)
77 uint32_t flags;
78 uint32_t offset;
79 int64_t pts;
80 int64_t dts_offset;
81 uint64_t seq;
83};
84
86struct spa_meta_region {
88};
91 return m->region.size.width != 0 && m->region.size.height != 0;
95#define spa_meta_for_each(pos,meta) \
96 for ((pos) = (__typeof(pos))spa_meta_first(meta); \
97 spa_meta_check(pos, meta); \
98 (pos)++)
107struct spa_meta_bitmap {
108 uint32_t format;
111 struct spa_rectangle size;
112 int32_t stride;
113 uint32_t offset;
117};
118
120 return m->format != 0;
122
128struct spa_meta_cursor {
129 uint32_t id;
131 uint32_t flags;
133 struct spa_point hotspot;
135 uint32_t bitmap_offset;
139};
140
142 return m->id != 0;
143}
149
151struct spa_meta_busy {
152 uint32_t flags;
153 uint32_t count;
168
171 uint32_t transform;
174
187 uint32_t flags;
188 uint32_t padding;
189 uint64_t acquire_point;
191 uint64_t release_point;
193};
194
199#ifdef __cplusplus
200} /* extern "C" */
201#endif
203#endif /* SPA_META_H */
spa/utils/defs.h
SPA_API_META void * spa_meta_first(const struct spa_meta *m)
Definition meta.h:64
SPA_API_META bool spa_meta_bitmap_is_valid(const struct spa_meta_bitmap *m)
Definition meta.h:132
spa_meta_videotransform_value
Definition meta.h:169
SPA_API_META void * spa_meta_end(const struct spa_meta *m)
Definition meta.h:68
spa_meta_type
Definition meta.h:35
SPA_API_META bool spa_meta_region_is_valid(const struct spa_meta_region *m)
Definition meta.h:103
SPA_API_META bool spa_meta_cursor_is_valid(const struct spa_meta_cursor *m)
Definition meta.h:154
@ SPA_META_TRANSFORMATION_Flipped270
flip then rotate around 270 degree counter-clockwise
Definition meta.h:179
@ SPA_META_TRANSFORMATION_Flipped
180 degree flipped around the vertical axis.
Definition meta.h:174
@ SPA_META_TRANSFORMATION_270
270 degree counter-clockwise
Definition meta.h:173
@ SPA_META_TRANSFORMATION_Flipped180
flip then rotate around 180 degree counter-clockwise
Definition meta.h:178
@ SPA_META_TRANSFORMATION_Flipped90
flip then rotate around 90 degree counter-clockwise
Definition meta.h:177
@ SPA_META_TRANSFORMATION_None
no transform
Definition meta.h:170
@ SPA_META_TRANSFORMATION_90
90 degree counter-clockwise
Definition meta.h:171
@ SPA_META_TRANSFORMATION_180
180 degree counter-clockwise
Definition meta.h:172
@ SPA_META_VideoDamage
array of struct spa_meta_region with damage, where an invalid entry or end-of-array marks the end.
Definition meta.h:39
@ SPA_META_Bitmap
struct spa_meta_bitmap
Definition meta.h:40
@ SPA_META_VideoTransform
struct spa_meta_transform
Definition meta.h:45
@ SPA_META_Cursor
struct spa_meta_cursor
Definition meta.h:41
@ SPA_META_Busy
don't write to buffer when count > 0
Definition meta.h:44
@ SPA_META_VideoCrop
struct spa_meta_region with cropping data
Definition meta.h:38
@ SPA_META_SyncTimeline
struct spa_meta_sync_timeline
Definition meta.h:46
@ SPA_META_Header
struct spa_meta_header
Definition meta.h:37
@ SPA_META_Control
metadata contains a spa_meta_control associated with the data
Definition meta.h:42
@ SPA_META_Invalid
Definition meta.h:36
@ _SPA_META_LAST
not part of ABI/API
Definition meta.h:48
#define SPA_PTROFF(ptr_, offset_, type_)
Return the address (buffer + offset) as pointer of type.
Definition defs.h:222
#define SPA_API_META
Definition meta.h:26
spa/pod/pod.h
Bitmap information.
Definition meta.h:120
struct spa_rectangle size
width and height of bitmap
Definition meta.h:124
uint32_t format
bitmap video format, one of enum spa_video_format.
Definition meta.h:121
uint32_t offset
offset of bitmap data in this structure.
Definition meta.h:126
int32_t stride
stride of bitmap data
Definition meta.h:125
a busy counter for the buffer
Definition meta.h:164
uint32_t count
number of users busy with the buffer
Definition meta.h:166
uint32_t flags
Definition meta.h:165
a timed set of events associated with the buffer
Definition meta.h:159
struct spa_pod_sequence sequence
Definition meta.h:160
Cursor information.
Definition meta.h:141
uint32_t flags
extra flags
Definition meta.h:144
struct spa_point hotspot
offsets for hotspot in bitmap, this field has no meaning when there is no valid bitmap (see below)
Definition meta.h:146
uint32_t id
cursor id.
Definition meta.h:142
struct spa_point position
position on screen
Definition meta.h:145
uint32_t bitmap_offset
offset of bitmap meta in this structure.
Definition meta.h:148
Describes essential buffer header metadata such as flags and timestamps.
Definition meta.h:77
uint32_t offset
offset in current cycle
Definition meta.h:91
uint32_t flags
flags
Definition meta.h:90
uint64_t seq
sequence number, increments with a media specific frequency
Definition meta.h:94
int64_t pts
presentation timestamp in nanoseconds
Definition meta.h:92
int64_t dts_offset
decoding timestamp as a difference with pts
Definition meta.h:93
metadata structure for Region or an array of these for RegionArray
Definition meta.h:99
struct spa_region region
Definition meta.h:100
A timeline point for explicit sync.
Definition meta.h:199
uint32_t padding
Definition meta.h:201
uint64_t acquire_point
the timeline acquire point, this is when the data can be accessed.
Definition meta.h:202
uint64_t release_point
the timeline release point, this timeline point should be signaled when the data is no longer accesse...
Definition meta.h:204
uint32_t flags
Definition meta.h:200
a transformation of the buffer
Definition meta.h:183
uint32_t transform
orientation transformation that was applied to the buffer, one of enum spa_meta_videotransform_value
Definition meta.h:184
A metadata element.
Definition meta.h:58
uint32_t size
size of metadata
Definition meta.h:60
uint32_t type
metadata type, one of enum spa_meta_type
Definition meta.h:59
void * data
pointer to metadata
Definition meta.h:61
a sequence of timed controls
Definition pod.h:248
Definition defs.h:123
Definition defs.h:116
uint32_t width
Definition defs.h:117
uint32_t height
Definition defs.h:118
Definition defs.h:130
struct spa_rectangle size
Definition defs.h:132