protection: add GstProtectionMeta to support protected content
authorAlex Ashley <bugzilla@ashley-family.net>
Wed, 15 Apr 2015 14:33:31 +0000 (15:33 +0100)
committerTim-Philipp Müller <tim@centricular.com>
Sat, 18 Apr 2015 11:24:06 +0000 (12:24 +0100)
commitabdafb0d641448e4693bd98740f7c26f1860fa15
treeac60eb385318d870769e1eac34666e7c80a068b0
parent0f36b16a29d86a0050b8978781339616233b1db5
protection: add GstProtectionMeta to support protected content

In order to support some types of protected streams (such as those
protected using DASH Common Encryption) some per-buffer information
needs to be passed between elements.

This commit adds a GstMeta type called GstProtectionMeta that allows
protection specific information to be added to a GstBuffer. An example
of its usage is qtdemux providing information to each output sample
that enables a downstream element to decrypt it.

This commit adds a utility function to select a supported protection
system from the installed Decryption elements found in the registry.
The gst_protection_select_system function that takes an array of
identifiers and searches the registry for a element of klass Decryptor that
supports one or more of the supplied identifiers. If multiple elements
are found, the one with the highest rank is selected.

This commit adds a unit test for the gst_protection_select_system
function that adds a fake Decryptor element to the registry and then
checks that it can correctly be selected by the utility function.

This commit adds a unit test for GstProtectionMeta that creates
GstProtectionMeta and adds & removes it from a buffer and performs some
simple reference count checks.

API: gst_buffer_add_protection_meta()
API: gst_buffer_get_protection_meta()
API: gst_protection_select_system()
API: gst_protection_meta_api_get_type()
API: gst_protection_meta_get_info()

https://bugzilla.gnome.org/show_bug.cgi?id=705991
docs/gst/gstreamer-docs.sgml
docs/gst/gstreamer-sections.txt
gst/Makefile.am
gst/gst_private.h
gst/gstinfo.c
gst/gstprotection.c [new file with mode: 0644]
gst/gstprotection.h [new file with mode: 0644]
tests/check/Makefile.am
tests/check/gst/.gitignore
tests/check/gst/gstprotection.c [new file with mode: 0644]
win32/common/libgstreamer.def