개발, 웹, 블로그/GStreamer 상식
Gstreamer VideoMeta, Meta debugging 로그
삼성동고양이
2024. 1. 18. 11:12
반응형
Buffer의 VideoMetadata 출력 방법
static void print_video_meta_data_all(GstBuffer *buf) {
GstVideoMeta *meta = gst_buffer_get_video_meta(buf);
if (meta) {
g_print("Video Meta:\n");
g_print(" format: %s\n", gst_video_format_to_string(meta->format));
g_print(" width: %d\n", meta->width);
g_print(" height: %d\n", meta->height);
g_print(" flags: %d\n", meta->flags);
g_print(" n_planes: %d\n", meta->n_planes);
for (guint i = 0; i < meta->n_planes; i++) {
g_print(" stride[%d]: %d\n", i, meta->stride[i]);
g_print(" offset[%d]: %d\n", i, meta->offset[i]);
}
g_print(" map: %p\n", meta->map);
g_print(" unmap: %p\n", meta->unmap);
}
}
Buffer의 Metadata Count 출력 및 Metadata의 Type 출력 방법
static void print_all_meta_info(GstBuffer *buf){
GstVideoMeta *meta = gst_buffer_get_video_meta(buf);
if (meta)
{
gst_print("Video Meta Count : %d\n", meta->n_planes);
}
GstMeta *m;
gpointer state = NULL;
guint meta_count = 0;
while ((m = gst_buffer_iterate_meta(buf, &state))) {
g_print("Metadata API type: %s\n", g_type_name(m->info->api));
meta_count++;
}
g_print("Meta count: %d\n", meta_count);
}
Buffer의 모든 Metadata 중에 LOCK 상태인 Metadata 찾는 방법
static void find_lock_meta(GstBuffer *buffer) {
GstMeta *meta;
gpointer state = NULL;
while ((meta = gst_buffer_iterate_meta(buffer, &state))) {
if (GST_META_FLAG_IS_SET(meta, GST_META_FLAG_LOCKED)) {
g_print("Found locked meta: %s\n", g_type_name(meta->info->api));
}
}
}
반응형