[Bug 705991] Adding support for DASH common encryption to qtdemux and dashdemux

GStreamer (bugzilla.gnome.org) bugzilla at gnome.org
Tue Jan 14 03:33:06 PST 2014


https://bugzilla.gnome.org/show_bug.cgi?id=705991
  GStreamer | gst-plugins-good | git

--- Comment #38 from Sebastian Dröge (slomo) <slomo at coaxion.net> 2014-01-14 11:33:03 UTC ---
(In reply to comment #37)
> We've been having a think about the different solutions suggested above for how
> to support ISOBMFF streams that can be decrypted using any one of a number of
> protection systems (i.e., the case where the stream contains multiple pssh
> boxes), and would like to suggest an alternative solution:
> 
> In essence, the alternative is that qtdemux includes in its src pad caps the
> protection system IDs from all pssh boxes contained in the input stream, and
> leaves the task of choosing which of these systems to use to a downstream cenc
> element.
> 
> There would be some flexibility around how this downstream cenc
> selection/decryption is implemented; for example:
> (i) The downstream element responsible for choosing which system to use could
> be an "autocencdecrypt" element, which will scan the registry and internally
> instantiate a suitable concrete decrypter element based upon the IDs in the
> caps, in the same way that autovideosink instantiates a suitable video sink
> based on its input caps. In this approach, the cenc decrypters for different
> protection systems would also be separate elements.

That sounds acceptable IMHO. I personally still prefer the
"protection-system-id-34e5db32-8625-47cd-ba06-68fca0655a72=TRUE"-approach but
this seems ok too. This element should be inside GStreamer though and not
provided externally. Externally only the specific decrypter elements would be
provided.

> (ii) The downstream element responsible for choosing which system to use could
> also itself perform decryption for all supported protection systems by making
> calls to the appropriate DRM system libraries. In this approach, there would be
> only a single cenc element that handles both selection and decryption (for all
> supported protection systems).

Note that this would break negotiation. It would claim to support all
protection systems, would be autoplugged because of that and then explode later
if it does not support this specific system. Such an element will break
addition of new cenc elements via plugins and should not be done that way IMHO.
Also it has no advantage IMHO and just makes everything more complicated :)

> As to how qtdemux would include the IDs of multiple protection systems in its
> src caps, I'd suggest that all the IDs are joined together into a single
> delimiter-separated string field.

Why not just use a GstValueArray of strings?

-- 
Configure bugmail: https://bugzilla.gnome.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list