Skip to content
  • Alex Ashley's avatar
    protection: add GstProtectionMeta to support protected content · abdafb0d
    Alex Ashley authored and Tim-Philipp Müller's avatar Tim-Philipp Müller committed
    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
    abdafb0d