From fefd4622a328f3ba5ac0c091e83d8fc6814edbda Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= Date: Wed, 1 Jul 2015 10:45:01 +0200 Subject: [PATCH] adapter: Also copy POOL metas and make sure to copy over metas when creating subbuffers POOL meta just means that this specific instance of the meta is related to a pool, a copy should be made when reasonable and the flag should just not be set in the copy. --- libs/gst/base/gstadapter.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/libs/gst/base/gstadapter.c b/libs/gst/base/gstadapter.c index 9a181fa4b7..e06bc41d9c 100644 --- a/libs/gst/base/gstadapter.c +++ b/libs/gst/base/gstadapter.c @@ -795,7 +795,8 @@ gst_adapter_get_buffer_fast (GstAdapter * adapter, gsize nbytes) GST_LOG_OBJECT (adapter, "appending %" G_GSIZE_FORMAT " bytes" " via region copy", size); if (buffer) - gst_buffer_copy_into (buffer, cur, GST_BUFFER_COPY_MEMORY, skip, size); + gst_buffer_copy_into (buffer, cur, + GST_BUFFER_COPY_MEMORY | GST_BUFFER_COPY_META, skip, size); else buffer = gst_buffer_copy_region (cur, GST_BUFFER_COPY_ALL, skip, size); skip = 0; @@ -864,11 +865,7 @@ foreach_metadata (GstBuffer * inbuf, GstMeta ** meta, gpointer user_data) const GstMetaInfo *info = (*meta)->info; gboolean do_copy = FALSE; - if (GST_META_FLAG_IS_SET (*meta, GST_META_FLAG_POOLED)) { - /* never call the transform_meta with pool private metadata */ - GST_DEBUG ("not copying pooled metadata %s", g_type_name (info->api)); - do_copy = FALSE; - } else if (gst_meta_api_type_has_tag (info->api, _gst_meta_tag_memory)) { + if (gst_meta_api_type_has_tag (info->api, _gst_meta_tag_memory)) { /* never call the transform_meta with memory specific metadata */ GST_DEBUG ("not copying memory specific metadata %s", g_type_name (info->api));