PipeWire
1.6.8
Toggle main menu visibility
Loading...
Searching...
No Matches
buffer.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_DEBUG_BUFFER_H
6
#define SPA_DEBUG_BUFFER_H
7
8
#include <
spa/debug/context.h
>
9
#include <
spa/debug/mem.h
>
10
#include <
spa/debug/types.h
>
11
#include <
spa/buffer/type-info.h
>
12
13
#ifdef __cplusplus
14
extern
"C"
{
15
#endif
16
20
25
26
#ifndef SPA_API_DEBUG_BUFFER
27
#ifdef SPA_API_IMPL
28
#define SPA_API_DEBUG_BUFFER SPA_API_IMPL
29
#else
30
#define SPA_API_DEBUG_BUFFER static inline
31
#endif
32
#endif
33
34
SPA_API_DEBUG_BUFFER
int
spa_debugc_buffer
(
struct
spa_debug_context
*ctx,
int
indent,
const
struct
spa_buffer
*buffer)
35
{
36
uint32_t i;
37
38
spa_debugc
(ctx,
"%*s"
"struct spa_buffer %p:"
, indent,
""
, buffer);
39
spa_debugc
(ctx,
"%*s"
" n_metas: %u (at %p)"
, indent,
""
, buffer->n_metas, buffer->metas);
40
for
(i = 0; i < buffer->n_metas; i++) {
41
struct
spa_meta
*m = &buffer->metas[i];
42
const
char
*type_name;
43
44
type_name =
spa_debug_type_find_name
(spa_type_meta_type, m->
type
);
45
spa_debugc
(ctx,
"%*s"
" meta %d: type %d (%s), data %p, size %d:"
, indent,
""
, i, m->
type
,
46
type_name, m->
data
, m->
size
);
47
48
switch
(m->
type
) {
49
case
SPA_META_Header
:
50
{
51
struct
spa_meta_header
*h = (
struct
spa_meta_header
*)m->
data
;
52
spa_debugc
(ctx,
"%*s"
" struct spa_meta_header:"
, indent,
""
);
53
spa_debugc
(ctx,
"%*s"
" flags: %08x"
, indent,
""
, h->flags);
54
spa_debugc
(ctx,
"%*s"
" offset: %u"
, indent,
""
, h->offset);
55
spa_debugc
(ctx,
"%*s"
" seq: %"
PRIu64, indent,
""
, h->seq);
56
spa_debugc
(ctx,
"%*s"
" pts: %"
PRIi64, indent,
""
, h->pts);
57
spa_debugc
(ctx,
"%*s"
" dts_offset: %"
PRIi64, indent,
""
, h->dts_offset);
58
break
;
59
}
60
case
SPA_META_VideoCrop
:
61
{
62
struct
spa_meta_region
*h = (
struct
spa_meta_region
*)m->
data
;
63
spa_debugc
(ctx,
"%*s"
" struct spa_meta_region:"
, indent,
""
);
64
spa_debugc
(ctx,
"%*s"
" x: %d"
, indent,
""
, h->region.position.x);
65
spa_debugc
(ctx,
"%*s"
" y: %d"
, indent,
""
, h->region.position.y);
66
spa_debugc
(ctx,
"%*s"
" width: %d"
, indent,
""
, h->region.size.width);
67
spa_debugc
(ctx,
"%*s"
" height: %d"
, indent,
""
, h->region.size.height);
68
break
;
69
}
70
case
SPA_META_VideoDamage
:
71
{
72
struct
spa_meta_region
*h;
73
spa_meta_for_each
(h, m) {
74
spa_debugc
(ctx,
"%*s"
" struct spa_meta_region:"
, indent,
""
);
75
spa_debugc
(ctx,
"%*s"
" x: %d"
, indent,
""
, h->
region
.
position
.
x
);
76
spa_debugc
(ctx,
"%*s"
" y: %d"
, indent,
""
, h->
region
.
position
.
y
);
77
spa_debugc
(ctx,
"%*s"
" width: %d"
, indent,
""
, h->
region
.
size
.
width
);
78
spa_debugc
(ctx,
"%*s"
" height: %d"
, indent,
""
, h->
region
.
size
.
height
);
79
}
80
break
;
81
}
82
case
SPA_META_Bitmap
:
83
break
;
84
case
SPA_META_Cursor
:
85
break
;
86
default
:
87
spa_debugc
(ctx,
"%*s"
" Unknown:"
, indent,
""
);
88
spa_debugc_mem
(ctx, 5, m->
data
, m->
size
);
89
}
90
}
91
spa_debugc
(ctx,
"%*s"
" n_datas: \t%u (at %p)"
, indent,
""
, buffer->n_datas, buffer->datas);
92
for
(i = 0; i < buffer->n_datas; i++) {
93
struct
spa_data
*d = &buffer->datas[i];
94
spa_debugc
(ctx,
"%*s"
" type: %d (%s)"
, indent,
""
, d->
type
,
95
spa_debug_type_find_name
(spa_type_data_type, d->
type
));
96
spa_debugc
(ctx,
"%*s"
" flags: %d"
, indent,
""
, d->
flags
);
97
spa_debugc
(ctx,
"%*s"
" data: %p"
, indent,
""
, d->
data
);
98
spa_debugc
(ctx,
"%*s"
" fd: %"
PRIi64, indent,
""
, d->
fd
);
99
spa_debugc
(ctx,
"%*s"
" offset: %d"
, indent,
""
, d->
mapoffset
);
100
spa_debugc
(ctx,
"%*s"
" maxsize: %u"
, indent,
""
, d->
maxsize
);
101
spa_debugc
(ctx,
"%*s"
" chunk: %p"
, indent,
""
, d->
chunk
);
102
spa_debugc
(ctx,
"%*s"
" offset: %d"
, indent,
""
, d->
chunk
->
offset
);
103
spa_debugc
(ctx,
"%*s"
" size: %u"
, indent,
""
, d->
chunk
->
size
);
104
spa_debugc
(ctx,
"%*s"
" stride: %d"
, indent,
""
, d->
chunk
->
stride
);
105
}
106
return
0;
107
}
108
109
SPA_API_DEBUG_BUFFER
int
spa_debug_buffer
(
int
indent,
const
struct
spa_buffer
*buffer)
110
{
111
return
spa_debugc_buffer
(NULL, indent, buffer);
112
}
115
116
117
#ifdef __cplusplus
118
}
/* extern "C" */
119
#endif
120
121
#endif
/* SPA_DEBUG_BUFFER_H */
type-info.h
spa/buffer/type-info.h
spa_meta_for_each
#define spa_meta_for_each(pos, meta)
iterate all the items in a metadata
Definition
meta.h:116
SPA_META_VideoDamage
@ 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
@ SPA_META_Bitmap
struct spa_meta_bitmap
Definition
meta.h:40
SPA_META_Cursor
@ SPA_META_Cursor
struct spa_meta_cursor
Definition
meta.h:41
SPA_META_VideoCrop
@ SPA_META_VideoCrop
struct spa_meta_region with cropping data
Definition
meta.h:38
SPA_META_Header
@ SPA_META_Header
struct spa_meta_header
Definition
meta.h:37
spa_debugc_mem
SPA_API_DEBUG_MEM int spa_debugc_mem(struct spa_debug_context *ctx, int indent, const void *data, size_t size)
Definition
mem.h:36
spa_debugc
#define spa_debugc(_c, _fmt,...)
Definition
context.h:50
spa_debugc_buffer
SPA_API_DEBUG_BUFFER int spa_debugc_buffer(struct spa_debug_context *ctx, int indent, const struct spa_buffer *buffer)
Definition
buffer.h:41
SPA_API_DEBUG_BUFFER
#define SPA_API_DEBUG_BUFFER
Definition
buffer.h:37
spa_debug_type_find_name
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_debug_buffer
SPA_API_DEBUG_BUFFER int spa_debug_buffer(int indent, const struct spa_buffer *buffer)
Definition
buffer.h:116
context.h
spa/debug/context.h
mem.h
spa/debug/mem.h
spa_buffer
A Buffer.
Definition
buffer.h:110
spa_chunk::stride
int32_t stride
stride of valid data
Definition
buffer.h:65
spa_chunk::size
uint32_t size
size of valid data.
Definition
buffer.h:63
spa_chunk::offset
uint32_t offset
offset of valid data.
Definition
buffer.h:60
spa_data
Data for a buffer this stays constant for a buffer.
Definition
buffer.h:78
spa_data::chunk
struct spa_chunk * chunk
valid chunk of memory
Definition
buffer.h:106
spa_data::fd
int64_t fd
optional fd for data
Definition
buffer.h:102
spa_data::mapoffset
uint32_t mapoffset
offset to map fd at, this is page aligned
Definition
buffer.h:103
spa_data::flags
uint32_t flags
data flags
Definition
buffer.h:101
spa_data::data
void * data
optional data pointer
Definition
buffer.h:105
spa_data::maxsize
uint32_t maxsize
max size of data
Definition
buffer.h:104
spa_data::type
uint32_t type
memory type, one of enum spa_data_type, when allocating memory, the type contains a bitmask of allowe...
Definition
buffer.h:79
spa_debug_context
Definition
context.h:46
spa_meta_header
Describes essential buffer header metadata such as flags and timestamps.
Definition
meta.h:85
spa_meta_region
metadata structure for Region or an array of these for RegionArray
Definition
meta.h:107
spa_meta_region::region
struct spa_region region
Definition
meta.h:108
spa_meta
A metadata element.
Definition
meta.h:66
spa_meta::size
uint32_t size
size of metadata
Definition
meta.h:68
spa_meta::type
uint32_t type
metadata type, one of enum spa_meta_type
Definition
meta.h:67
spa_meta::data
void * data
pointer to metadata
Definition
meta.h:69
spa_point::y
int32_t y
Definition
defs.h:125
spa_point::x
int32_t x
Definition
defs.h:124
spa_rectangle::width
uint32_t width
Definition
defs.h:117
spa_rectangle::height
uint32_t height
Definition
defs.h:118
spa_region::position
struct spa_point position
Definition
defs.h:131
spa_region::size
struct spa_rectangle size
Definition
defs.h:132
types.h
spa/debug/types.h
spa
debug
buffer.h
Generated by
1.18.0