5#ifndef SPA_DEBUG_BUFFER_H
6#define SPA_DEBUG_BUFFER_H
15#include <spa/param/video/type-info.h>
30#ifndef SPA_API_DEBUG_BUFFER
32 #define SPA_API_DEBUG_BUFFER SPA_API_IMPL
34 #define SPA_API_DEBUG_BUFFER static inline
42 spa_debugc(ctx,
"%*s" "struct spa_buffer %p:", indent,
"", buffer);
43 spa_debugc(ctx,
"%*s" " n_metas: %u (at %p)", indent,
"", buffer->n_metas, buffer->metas);
44 for (i = 0; i < buffer->n_metas; i++) {
46 const char *type_name;
49 spa_debugc(ctx,
"%*s" " meta %d: type %d (%s), data %p, size %d:", indent,
"", i, m->
type,
56 if (m->
size <
sizeof(*h))
59 spa_debugc(ctx,
"%*s" " struct spa_meta_header:", indent,
"");
60 spa_debugc(ctx,
"%*s" " flags: %08x", indent,
"", h->flags);
61 spa_debugc(ctx,
"%*s" " offset: %u", indent,
"", h->offset);
62 spa_debugc(ctx,
"%*s" " seq: %" PRIu64, indent,
"", h->seq);
63 spa_debugc(ctx,
"%*s" " pts: %" PRIi64, indent,
"", h->pts);
64 spa_debugc(ctx,
"%*s" " dts_offset: %" PRIi64, indent,
"", h->dts_offset);
70 if (m->
size <
sizeof(*h))
73 spa_debugc(ctx,
"%*s" " struct spa_meta_region:", indent,
"");
74 spa_debugc(ctx,
"%*s" " x: %d", indent,
"", h->region.position.x);
75 spa_debugc(ctx,
"%*s" " y: %d", indent,
"", h->region.position.y);
76 spa_debugc(ctx,
"%*s" " width: %d", indent,
"", h->region.size.width);
77 spa_debugc(ctx,
"%*s" " height: %d", indent,
"", h->region.size.height);
84 spa_debugc(ctx,
"%*s" " struct spa_meta_region:", indent,
"");
95 if (m->
size <
sizeof(*h))
98 spa_debugc(ctx,
"%*s" " struct spa_meta_bitmap:", indent,
"");
99 spa_debugc(ctx,
"%*s" " format: %" PRIu32
" (%s)", indent,
"",
102 spa_debugc(ctx,
"%*s" " width: %" PRIu32, indent,
"", h->size.width);
103 spa_debugc(ctx,
"%*s" " height: %" PRIu32, indent,
"", h->size.height);
104 spa_debugc(ctx,
"%*s" " stride: %" PRId32, indent,
"", h->stride);
105 spa_debugc(ctx,
"%*s" " offset: %" PRIu32, indent,
"", h->offset);
111 if (m->
size <
sizeof(*h))
114 spa_debugc(ctx,
"%*s" " struct spa_meta_cursor:", indent,
"");
115 spa_debugc(ctx,
"%*s" " id: %" PRIu32, indent,
"", h->id);
116 spa_debugc(ctx,
"%*s" " flags: %08" PRIx32, indent,
"", h->flags);
117 spa_debugc(ctx,
"%*s" " position:", indent,
"");
118 spa_debugc(ctx,
"%*s" " x: %" PRId32, indent,
"", h->position.x);
119 spa_debugc(ctx,
"%*s" " y: %" PRId32, indent,
"", h->position.y);
120 spa_debugc(ctx,
"%*s" " hotspot:", indent,
"");
121 spa_debugc(ctx,
"%*s" " x: %" PRId32, indent,
"", h->hotspot.x);
122 spa_debugc(ctx,
"%*s" " y: %" PRId32, indent,
"", h->hotspot.y);
123 spa_debugc(ctx,
"%*s" " bitmap_offset: %" PRIu32, indent,
"", h->bitmap_offset);
129 if (m->
size <
sizeof(*h))
132 spa_debugc(ctx,
"%*s" " struct spa_meta_control:", indent,
"");
133 spa_debugc(ctx,
"%*s" " sequence:", indent,
"");
140 if (m->
size <
sizeof(*h))
143 spa_debugc(ctx,
"%*s" " struct spa_meta_busy:", indent,
"");
144 spa_debugc(ctx,
"%*s" " flags: %08" PRIx32, indent,
"", h->flags);
151 if (m->
size <
sizeof(*h))
154 spa_debugc(ctx,
"%*s" " struct spa_meta_videotransform:", indent,
"");
155 spa_debugc(ctx,
"%*s" " transform: %" PRIu32
" (%s)", indent,
"",
162 if (m->
size <
sizeof(*h))
165 spa_debugc(ctx,
"%*s" " struct spa_meta_sync_timeline:", indent,
"");
166 spa_debugc(ctx,
"%*s" " flags: %08" PRIx32, indent,
"", h->flags);
167 spa_debugc(ctx,
"%*s" " acquire_point: %" PRIu64, indent,
"", h->acquire_point);
168 spa_debugc(ctx,
"%*s" " release_point: %" PRIu64, indent,
"", h->release_point);
172 spa_debugc(ctx,
"%*s" " Unknown:", indent,
"");
176 spa_debugc(ctx,
"%*s" " n_datas: %u (at %p)", indent,
"", buffer->n_datas, buffer->datas);
177 for (i = 0; i < buffer->n_datas; i++) {
178 struct spa_data *d = &buffer->datas[i];
183 spa_debugc(ctx,
"%*s" " fd: %" PRIi64, indent,
"", d->
fd);
#define SPA_ATOMIC_LOAD(s)
Atomically loads the value of the given variable and then returns the value.
Definition atomic.h:124
static const struct spa_type_info spa_type_meta_videotransform_type[]
Definition type-info.h:79
static const struct spa_type_info spa_type_data_type[]
Definition type-info.h:43
#define spa_meta_for_each(pos, meta)
iterate all the items in a metadata
Definition meta.h:116
static const struct spa_type_info spa_type_meta_type[]
Definition type-info.h:91
@ 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_API_DEBUG_MEM int spa_debugc_mem(struct spa_debug_context *ctx, int indent, const void *data, size_t size)
Definition mem.h:37
#define spa_debugc(_c, _fmt,...)
Definition context.h:50
SPA_API_DEBUG_BUFFER int spa_debugc_buffer(struct spa_debug_context *ctx, int indent, const struct spa_buffer *buffer)
Definition buffer.h:45
#define SPA_API_DEBUG_BUFFER
Definition buffer.h:41
SPA_API_DEBUG_POD int spa_debugc_pod(struct spa_debug_context *ctx, int indent, const struct spa_type_info *info, const struct spa_pod *pod)
Definition pod.h:232
SPA_API_DEBUG_TYPES const char * spa_debug_type_find_name(const struct spa_type_info *info, uint32_t type)
Definition types.h:61
SPA_API_DEBUG_BUFFER int spa_debug_buffer(int indent, const struct spa_buffer *buffer)
Definition buffer.h:201
static const struct spa_type_info spa_type_video_format[]
Definition raw-types.h:40
A Buffer.
Definition buffer.h:112
int32_t stride
stride of valid data
Definition buffer.h:65
uint32_t size
size of valid data.
Definition buffer.h:63
uint32_t offset
offset of valid data.
Definition buffer.h:60
Data for a buffer this stays constant for a buffer.
Definition buffer.h:80
struct spa_chunk * chunk
valid chunk of memory
Definition buffer.h:108
int64_t fd
optional fd for data
Definition buffer.h:104
uint32_t mapoffset
offset to map fd at, this is page aligned
Definition buffer.h:105
uint32_t flags
data flags
Definition buffer.h:103
void * data
optional data pointer
Definition buffer.h:107
uint32_t maxsize
max size of data
Definition buffer.h:106
uint32_t type
memory type, one of enum spa_data_type, when allocating memory, the type contains a bitmask of allowe...
Definition buffer.h:81
int32_t y
Definition defs.h:126
int32_t x
Definition defs.h:125
uint32_t width
Definition defs.h:118
uint32_t height
Definition defs.h:119
struct spa_point position
Definition defs.h:132
struct spa_rectangle size
Definition defs.h:133