PipeWire  1.0.7
meta.h
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
9 extern "C" {
10 #endif
11 
12 #include <spa/utils/defs.h>
13 #include <spa/pod/pod.h>
14 
20 enum spa_meta_type {
33 };
34 
42 struct spa_meta {
43  uint32_t type;
44  uint32_t size;
45  void *data;
46 };
47 
48 static inline void *spa_meta_first(const struct spa_meta *m) {
49  return m->data;
50 }
51 #define spa_meta_first spa_meta_first
52 static inline void *spa_meta_end(const struct spa_meta *m) {
53  return SPA_PTROFF(m->data,m->size,void);
54 }
55 #define spa_meta_end spa_meta_end
56 #define spa_meta_check(p,m) (SPA_PTROFF(p,sizeof(*(p)),void) <= spa_meta_end(m))
57 
62 struct spa_meta_header {
63 #define SPA_META_HEADER_FLAG_DISCONT (1 << 0)
64 #define SPA_META_HEADER_FLAG_CORRUPTED (1 << 1)
65 #define SPA_META_HEADER_FLAG_MARKER (1 << 2)
66 #define SPA_META_HEADER_FLAG_HEADER (1 << 3)
67 #define SPA_META_HEADER_FLAG_GAP (1 << 4)
68 #define SPA_META_HEADER_FLAG_DELTA_UNIT (1 << 5)
69  uint32_t flags;
70  uint32_t offset;
71  int64_t pts;
72  int64_t dts_offset;
73  uint64_t seq;
75 };
76 
78 struct spa_meta_region {
79  struct spa_region region;
80 };
81 
82 static inline bool spa_meta_region_is_valid(const struct spa_meta_region *m) {
83  return m->region.size.width != 0 && m->region.size.height != 0;
84 }
85 #define spa_meta_region_is_valid spa_meta_region_is_valid
86 
88 #define spa_meta_for_each(pos,meta) \
89  for ((pos) = (__typeof(pos))spa_meta_first(meta); \
90  spa_meta_check(pos, meta); \
91  (pos)++)
92 
93 #define spa_meta_bitmap_is_valid(m) ((m)->format != 0)
94 
102 struct spa_meta_bitmap {
103  uint32_t format;
106  struct spa_rectangle size;
107  int32_t stride;
108  uint32_t offset;
112 };
114 #define spa_meta_cursor_is_valid(m) ((m)->id != 0)
115 
121 struct spa_meta_cursor {
122  uint32_t id;
124  uint32_t flags;
125  struct spa_point position;
126  struct spa_point hotspot;
128  uint32_t bitmap_offset;
132 };
136  struct spa_pod_sequence sequence;
137 };
138 
140 struct spa_meta_busy {
141  uint32_t flags;
142  uint32_t count;
143 };
144 
156 };
160  uint32_t transform;
162 };
163 
168 #ifdef __cplusplus
169 } /* extern "C" */
170 #endif
172 #endif /* SPA_META_H */
struct spa_meta_cursor
Definition: meta.h:31
spa_meta_videotransform_value
Definition: meta.h:156
Definition: defs.h:109
uint32_t flags
flags
Definition: meta.h:80
struct spa_region region
Definition: meta.h:90
#define spa_meta_first
Definition: meta.h:56
struct spa_meta_transform
Definition: meta.h:35
uint32_t height
Definition: defs.h:104
a transformation of the buffer
Definition: meta.h:170
struct spa_meta_header
Definition: meta.h:27
metadata contains a spa_meta_control associated with the data
Definition: meta.h:32
a busy counter for the buffer
Definition: meta.h:151
a timed set of events associated with the buffer
Definition: meta.h:146
Definition: defs.h:116
no transform
Definition: meta.h:157
Definition: defs.h:102
90 degree counter-clockwise
Definition: meta.h:158
metadata structure for Region or an array of these for RegionArray
Definition: meta.h:89
flip then rotate around 180 degree counter-clockwise
Definition: meta.h:165
array of struct spa_meta_region with damage, where an invalid entry or end-of-array marks the end...
Definition: meta.h:29
struct spa_meta_region with cropping data
Definition: meta.h:28
180 degree flipped around the vertical axis.
Definition: meta.h:161
flip then rotate around 90 degree counter-clockwise
Definition: meta.h:164
uint32_t offset
offset in current cycle
Definition: meta.h:81
#define spa_meta_end
Definition: meta.h:60
struct spa_rectangle size
Definition: defs.h:118
flip then rotate around 270 degree counter-clockwise
Definition: meta.h:166
uint32_t type
metadata type, one of enum spa_meta_type
Definition: meta.h:48
not part of ABI/API
Definition: meta.h:37
uint32_t width
Definition: defs.h:103
Describes essential buffer header metadata such as flags and timestamps.
Definition: meta.h:67
struct spa_meta_bitmap
Definition: meta.h:30
don't write to buffer when count > 0
Definition: meta.h:34
Cursor information.
Definition: meta.h:132
270 degree counter-clockwise
Definition: meta.h:160
#define SPA_PTROFF(ptr_, offset_, type_)
Return the address (buffer + offset) as pointer of type.
Definition: defs.h:208
spa_meta_type
Definition: meta.h:25
#define spa_meta_region_is_valid
Definition: meta.h:96
uint32_t size
size of metadata
Definition: meta.h:49
Definition: meta.h:26
void * data
pointer to metadata
Definition: meta.h:50
180 degree counter-clockwise
Definition: meta.h:159
A metadata element.
Definition: meta.h:47
Bitmap information.
Definition: meta.h:113
a sequence of timed controls
Definition: pod.h:252