PipeWire 0.3.35
meta.h
Go to the documentation of this file.
1/* Simple Plugin API
2 *
3 * Copyright © 2018 Wim Taymans
4 *
5 * Permission is hereby granted, free of charge, to any person obtaining a
6 * copy of this software and associated documentation files (the "Software"),
7 * to deal in the Software without restriction, including without limitation
8 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9 * and/or sell copies of the Software, and to permit persons to whom the
10 * Software is furnished to do so, subject to the following conditions:
11 *
12 * The above copyright notice and this permission notice (including the next
13 * paragraph) shall be included in all copies or substantial portions of the
14 * Software.
15 *
16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22 * DEALINGS IN THE SOFTWARE.
23 */
24
25#ifndef SPA_META_H
26#define SPA_META_H
27
28#ifdef __cplusplus
29extern "C" {
30#endif
31
32#include <spa/utils/defs.h>
33#include <spa/pod/pod.h>
34
52};
53
61struct spa_meta {
62 uint32_t type;
63 uint32_t size;
64 void *data;
65};
66
67#define spa_meta_first(m) ((m)->data)
68#define spa_meta_end(m) SPA_PTROFF((m)->data,(m)->size,void)
69#define spa_meta_check(p,m) (SPA_PTROFF(p,sizeof(*p),void) <= spa_meta_end(m))
70
76#define SPA_META_HEADER_FLAG_DISCONT (1 << 0)
77#define SPA_META_HEADER_FLAG_CORRUPTED (1 << 1)
78#define SPA_META_HEADER_FLAG_MARKER (1 << 2)
79#define SPA_META_HEADER_FLAG_HEADER (1 << 3)
80#define SPA_META_HEADER_FLAG_GAP (1 << 4)
81#define SPA_META_HEADER_FLAG_DELTA_UNIT (1 << 5)
82 uint32_t flags;
83 uint32_t offset;
84 int64_t pts;
85 int64_t dts_offset;
86 uint64_t seq;
88};
89
93};
94
95#define spa_meta_region_is_valid(m) ((m)->region.size.width != 0 && (m)->region.size.height != 0)
96
98#define spa_meta_for_each(pos,meta) \
99 for (pos = (__typeof(pos))spa_meta_first(meta); \
100 spa_meta_check(pos, meta); \
101 (pos)++)
102
103#define spa_meta_bitmap_is_valid(m) ((m)->format != 0)
104
113 uint32_t format;
117 int32_t stride;
118 uint32_t offset;
122};
123
124#define spa_meta_cursor_is_valid(m) ((m)->id != 0)
125
132 uint32_t id;
134 uint32_t flags;
138 uint32_t bitmap_offset;
142};
143
147};
148
151 uint32_t flags;
152 uint32_t count;
153};
154
159#ifdef __cplusplus
160} /* extern "C" */
161#endif
162
163#endif /* SPA_META_H */
spa_meta_type
Definition: meta.h:40
@ SPA_META_VideoDamage
array of struct spa_meta_region with damage
Definition: meta.h:44
@ SPA_META_Bitmap
struct spa_meta_bitmap
Definition: meta.h:45
@ SPA_META_Cursor
struct spa_meta_cursor
Definition: meta.h:46
@ SPA_META_Busy
don't write to buffer when count > 0
Definition: meta.h:49
@ SPA_META_VideoCrop
struct spa_meta_region with cropping data
Definition: meta.h:43
@ SPA_META_Header
struct spa_meta_header
Definition: meta.h:42
@ SPA_META_Control
metadata contains a spa_meta_control associated with the data
Definition: meta.h:47
@ SPA_META_Invalid
Definition: meta.h:41
@ _SPA_META_LAST
not part of ABI/API
Definition: meta.h:51
Bitmap information.
Definition: meta.h:112
struct spa_rectangle size
width and height of bitmap
Definition: meta.h:116
uint32_t format
bitmap video format, one of enum spa_video_format.
Definition: meta.h:113
uint32_t offset
offset of bitmap data in this structure.
Definition: meta.h:118
int32_t stride
stride of bitmap data
Definition: meta.h:117
a busy counter for the buffer
Definition: meta.h:150
uint32_t count
number of users busy with the buffer
Definition: meta.h:152
uint32_t flags
Definition: meta.h:151
a timed set of events associated with the buffer
Definition: meta.h:145
struct spa_pod_sequence sequence
Definition: meta.h:146
Cursor information.
Definition: meta.h:131
uint32_t flags
extra flags
Definition: meta.h:134
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:136
uint32_t id
cursor id.
Definition: meta.h:132
struct spa_point position
position on screen
Definition: meta.h:135
uint32_t bitmap_offset
offset of bitmap meta in this structure.
Definition: meta.h:138
Describes essential buffer header metadata such as flags and timestamps.
Definition: meta.h:75
uint32_t offset
offset in current cycle
Definition: meta.h:83
uint32_t flags
flags
Definition: meta.h:82
uint64_t seq
sequence number, increments with a media specific frequency
Definition: meta.h:86
int64_t pts
presentation timestamp
Definition: meta.h:84
int64_t dts_offset
decoding timestamp as a difference with pts
Definition: meta.h:85
metadata structure for Region or an array of these for RegionArray
Definition: meta.h:91
struct spa_region region
Definition: meta.h:92
A metadata element.
Definition: meta.h:61
uint32_t size
size of metadata
Definition: meta.h:63
uint32_t type
metadata type, one of enum spa_meta_type
Definition: meta.h:62
void * data
pointer to metadata
Definition: meta.h:64
a sequence of timed controls
Definition: pod/pod.h:233
Definition: defs.h:92
Definition: defs.h:86
Definition: defs.h:98