From 88484399c5d06ad27353cba706bf3cafef67729c Mon Sep 17 00:00:00 2001 From: Mathieu Duponchelle Date: Thu, 4 Jun 2015 17:59:17 +0200 Subject: [PATCH] audioconvert: copy metadata that only has the "audio" tag. https://bugzilla.gnome.org/show_bug.cgi?id=750406 --- gst/audioconvert/gstaudioconvert.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/gst/audioconvert/gstaudioconvert.c b/gst/audioconvert/gstaudioconvert.c index 09a6860446..21fae6e9f3 100644 --- a/gst/audioconvert/gstaudioconvert.c +++ b/gst/audioconvert/gstaudioconvert.c @@ -86,6 +86,8 @@ static gboolean gst_audio_convert_set_caps (GstBaseTransform * base, GstCaps * incaps, GstCaps * outcaps); static GstFlowReturn gst_audio_convert_transform (GstBaseTransform * base, GstBuffer * inbuf, GstBuffer * outbuf); +static gboolean gst_audio_convert_transform_meta (GstBaseTransform * trans, + GstBuffer * outbuf, GstMeta * meta, GstBuffer * inbuf); static void gst_audio_convert_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec); static void gst_audio_convert_get_property (GObject * object, guint prop_id, @@ -216,6 +218,8 @@ gst_audio_convert_class_init (GstAudioConvertClass * klass) GST_DEBUG_FUNCPTR (gst_audio_convert_set_caps); basetransform_class->transform = GST_DEBUG_FUNCPTR (gst_audio_convert_transform); + basetransform_class->transform_meta = + GST_DEBUG_FUNCPTR (gst_audio_convert_transform_meta); basetransform_class->passthrough_on_same_caps = TRUE; } @@ -863,6 +867,23 @@ convert_error: } } +static gboolean +gst_audio_convert_transform_meta (GstBaseTransform * trans, GstBuffer * outbuf, + GstMeta * meta, GstBuffer * inbuf) +{ + const GstMetaInfo *info = meta->info; + const gchar *const *tags; + + tags = gst_meta_api_type_get_tags (info->api); + + if (tags && g_strv_length ((gchar **) tags) == 1 + && gst_meta_api_type_has_tag (info->api, + g_quark_from_string (GST_META_TAG_AUDIO_STR))) + return TRUE; + + return FALSE; +} + static void gst_audio_convert_set_property (GObject * object, guint prop_id, const GValue * value, GParamSpec * pspec)