From ee407305588e4a18cffbd8fd60bffc9b3f03fab4 Mon Sep 17 00:00:00 2001 From: Philippe Normand Date: Tue, 19 May 2015 18:58:11 +0200 Subject: protection: implement meta transform function Copy the GstMeta contents over to the new buffer. https://bugzilla.gnome.org/show_bug.cgi?id=749590 --- gst/gstprotection.c | 25 +++++++++++++++++++++++-- 1 file changed, 23 insertions(+), 2 deletions(-) diff --git a/gst/gstprotection.c b/gst/gstprotection.c index c5223eeaa..87122c935 100644 --- a/gst/gstprotection.c +++ b/gst/gstprotection.c @@ -84,6 +84,28 @@ gst_protection_meta_free (GstMeta * meta, GstBuffer * buffer) gst_structure_free (protection_meta->info); } +static gboolean +gst_protection_meta_transform (GstBuffer * transbuf, GstMeta * meta, + GstBuffer * buffer, GQuark type, gpointer data) +{ + GstProtectionMeta *protection_meta = (GstProtectionMeta *) meta; + + if (GST_META_TRANSFORM_IS_COPY (type)) { + GstMetaTransformCopy *copy = data; + if (!copy->region) { + /* only copy if the complete data is copied as well */ + gst_buffer_add_protection_meta (transbuf, + gst_structure_copy (protection_meta->info)); + } else { + return FALSE; + } + } else { + /* transform type not supported */ + return FALSE; + } + return TRUE; +} + const GstMetaInfo * gst_protection_meta_get_info (void) { @@ -93,8 +115,7 @@ gst_protection_meta_get_info (void) const GstMetaInfo *meta = gst_meta_register (GST_PROTECTION_META_API_TYPE, "GstProtectionMeta", sizeof (GstProtectionMeta), gst_protection_meta_init, - gst_protection_meta_free, - (GstMetaTransformFunction) NULL); + gst_protection_meta_free, gst_protection_meta_transform); g_once_init_leave (&protection_meta_info, meta); } -- cgit v1.2.3