diff options
author | Philippe Normand <philn@igalia.com> | 2015-05-19 18:58:11 +0200 |
---|---|---|
committer | Tim-Philipp Müller <tim@centricular.com> | 2015-07-11 00:19:20 +0100 |
commit | ee407305588e4a18cffbd8fd60bffc9b3f03fab4 (patch) | |
tree | 23555d3a76ecf7ace67b2d513a6c2da9720c32ec /gst | |
parent | 6d78d32d51970003d7bc54fd16cb37922501df91 (diff) |
protection: implement meta transform function
Copy the GstMeta contents over to the new buffer.
https://bugzilla.gnome.org/show_bug.cgi?id=749590
Diffstat (limited to 'gst')
-rw-r--r-- | gst/gstprotection.c | 25 |
1 files 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); } |