mirror of
https://gitlab.freedesktop.org/pipewire/pipewire.git
synced 2026-02-14 04:28:13 -05:00
spa: add context to debug functions
Add new spa_debugc_ funnctions that take a context. The user should also redefine the spa_debugc macro to handle the context. Use this to let some plugins log the pod and format to the log without using the global logger. Also use this to remove our custom pod logger function by reusing the spa one with a custom context.
This commit is contained in:
parent
f472fd736d
commit
3c67821c4a
14 changed files with 158 additions and 268 deletions
|
|
@ -43,51 +43,51 @@ extern "C" {
|
|||
#include <spa/debug/types.h>
|
||||
#include <spa/buffer/type-info.h>
|
||||
|
||||
static inline int spa_debug_buffer(int indent, const struct spa_buffer *buffer)
|
||||
static inline int spa_debugc_buffer(void *ctx, int indent, const struct spa_buffer *buffer)
|
||||
{
|
||||
uint32_t i;
|
||||
|
||||
spa_debug("%*s" "struct spa_buffer %p:", indent, "", buffer);
|
||||
spa_debug("%*s" " n_metas: %u (at %p)", indent, "", buffer->n_metas, buffer->metas);
|
||||
spa_debugc(ctx, "%*s" "struct spa_buffer %p:", indent, "", buffer);
|
||||
spa_debugc(ctx, "%*s" " n_metas: %u (at %p)", indent, "", buffer->n_metas, buffer->metas);
|
||||
for (i = 0; i < buffer->n_metas; i++) {
|
||||
struct spa_meta *m = &buffer->metas[i];
|
||||
const char *type_name;
|
||||
|
||||
type_name = spa_debug_type_find_name(spa_type_meta_type, m->type);
|
||||
spa_debug("%*s" " meta %d: type %d (%s), data %p, size %d:", indent, "", i, m->type,
|
||||
spa_debugc(ctx, "%*s" " meta %d: type %d (%s), data %p, size %d:", indent, "", i, m->type,
|
||||
type_name, m->data, m->size);
|
||||
|
||||
switch (m->type) {
|
||||
case SPA_META_Header:
|
||||
{
|
||||
struct spa_meta_header *h = (struct spa_meta_header*)m->data;
|
||||
spa_debug("%*s" " struct spa_meta_header:", indent, "");
|
||||
spa_debug("%*s" " flags: %08x", indent, "", h->flags);
|
||||
spa_debug("%*s" " offset: %u", indent, "", h->offset);
|
||||
spa_debug("%*s" " seq: %" PRIu64, indent, "", h->seq);
|
||||
spa_debug("%*s" " pts: %" PRIi64, indent, "", h->pts);
|
||||
spa_debug("%*s" " dts_offset: %" PRIi64, indent, "", h->dts_offset);
|
||||
spa_debugc(ctx, "%*s" " struct spa_meta_header:", indent, "");
|
||||
spa_debugc(ctx, "%*s" " flags: %08x", indent, "", h->flags);
|
||||
spa_debugc(ctx, "%*s" " offset: %u", indent, "", h->offset);
|
||||
spa_debugc(ctx, "%*s" " seq: %" PRIu64, indent, "", h->seq);
|
||||
spa_debugc(ctx, "%*s" " pts: %" PRIi64, indent, "", h->pts);
|
||||
spa_debugc(ctx, "%*s" " dts_offset: %" PRIi64, indent, "", h->dts_offset);
|
||||
break;
|
||||
}
|
||||
case SPA_META_VideoCrop:
|
||||
{
|
||||
struct spa_meta_region *h = (struct spa_meta_region*)m->data;
|
||||
spa_debug("%*s" " struct spa_meta_region:", indent, "");
|
||||
spa_debug("%*s" " x: %d", indent, "", h->region.position.x);
|
||||
spa_debug("%*s" " y: %d", indent, "", h->region.position.y);
|
||||
spa_debug("%*s" " width: %d", indent, "", h->region.size.width);
|
||||
spa_debug("%*s" " height: %d", indent, "", h->region.size.height);
|
||||
spa_debugc(ctx, "%*s" " struct spa_meta_region:", indent, "");
|
||||
spa_debugc(ctx, "%*s" " x: %d", indent, "", h->region.position.x);
|
||||
spa_debugc(ctx, "%*s" " y: %d", indent, "", h->region.position.y);
|
||||
spa_debugc(ctx, "%*s" " width: %d", indent, "", h->region.size.width);
|
||||
spa_debugc(ctx, "%*s" " height: %d", indent, "", h->region.size.height);
|
||||
break;
|
||||
}
|
||||
case SPA_META_VideoDamage:
|
||||
{
|
||||
struct spa_meta_region *h;
|
||||
spa_meta_for_each(h, m) {
|
||||
spa_debug("%*s" " struct spa_meta_region:", indent, "");
|
||||
spa_debug("%*s" " x: %d", indent, "", h->region.position.x);
|
||||
spa_debug("%*s" " y: %d", indent, "", h->region.position.y);
|
||||
spa_debug("%*s" " width: %d", indent, "", h->region.size.width);
|
||||
spa_debug("%*s" " height: %d", indent, "", h->region.size.height);
|
||||
spa_debugc(ctx, "%*s" " struct spa_meta_region:", indent, "");
|
||||
spa_debugc(ctx, "%*s" " x: %d", indent, "", h->region.position.x);
|
||||
spa_debugc(ctx, "%*s" " y: %d", indent, "", h->region.position.y);
|
||||
spa_debugc(ctx, "%*s" " width: %d", indent, "", h->region.size.width);
|
||||
spa_debugc(ctx, "%*s" " height: %d", indent, "", h->region.size.height);
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
|
@ -96,28 +96,32 @@ static inline int spa_debug_buffer(int indent, const struct spa_buffer *buffer)
|
|||
case SPA_META_Cursor:
|
||||
break;
|
||||
default:
|
||||
spa_debug("%*s" " Unknown:", indent, "");
|
||||
spa_debug_mem(5, m->data, m->size);
|
||||
spa_debugc(ctx, "%*s" " Unknown:", indent, "");
|
||||
spa_debugc_mem(ctx, 5, m->data, m->size);
|
||||
}
|
||||
}
|
||||
spa_debug("%*s" " n_datas: \t%u (at %p)", indent, "", buffer->n_datas, buffer->datas);
|
||||
spa_debugc(ctx, "%*s" " n_datas: \t%u (at %p)", indent, "", buffer->n_datas, buffer->datas);
|
||||
for (i = 0; i < buffer->n_datas; i++) {
|
||||
struct spa_data *d = &buffer->datas[i];
|
||||
spa_debug("%*s" " type: %d (%s)", indent, "", d->type,
|
||||
spa_debugc(ctx, "%*s" " type: %d (%s)", indent, "", d->type,
|
||||
spa_debug_type_find_name(spa_type_data_type, d->type));
|
||||
spa_debug("%*s" " flags: %d", indent, "", d->flags);
|
||||
spa_debug("%*s" " data: %p", indent, "", d->data);
|
||||
spa_debug("%*s" " fd: %" PRIi64, indent, "", d->fd);
|
||||
spa_debug("%*s" " offset: %d", indent, "", d->mapoffset);
|
||||
spa_debug("%*s" " maxsize: %u", indent, "", d->maxsize);
|
||||
spa_debug("%*s" " chunk: %p", indent, "", d->chunk);
|
||||
spa_debug("%*s" " offset: %d", indent, "", d->chunk->offset);
|
||||
spa_debug("%*s" " size: %u", indent, "", d->chunk->size);
|
||||
spa_debug("%*s" " stride: %d", indent, "", d->chunk->stride);
|
||||
spa_debugc(ctx, "%*s" " flags: %d", indent, "", d->flags);
|
||||
spa_debugc(ctx, "%*s" " data: %p", indent, "", d->data);
|
||||
spa_debugc(ctx, "%*s" " fd: %" PRIi64, indent, "", d->fd);
|
||||
spa_debugc(ctx, "%*s" " offset: %d", indent, "", d->mapoffset);
|
||||
spa_debugc(ctx, "%*s" " maxsize: %u", indent, "", d->maxsize);
|
||||
spa_debugc(ctx, "%*s" " chunk: %p", indent, "", d->chunk);
|
||||
spa_debugc(ctx, "%*s" " offset: %d", indent, "", d->chunk->offset);
|
||||
spa_debugc(ctx, "%*s" " size: %u", indent, "", d->chunk->size);
|
||||
spa_debugc(ctx, "%*s" " stride: %d", indent, "", d->chunk->stride);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static inline int spa_debug_buffer(int indent, const struct spa_buffer *buffer)
|
||||
{
|
||||
return spa_debugc_buffer(NULL, indent, buffer);
|
||||
}
|
||||
/**
|
||||
* \}
|
||||
*/
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue