Dash-Industry-Forum / IOPv5

IOP v5 editing for tracking issues
1 stars 1 forks source link

ContentProtection signaling optimization #17

Closed haudiobe closed 2 years ago

haudiobe commented 3 years ago

The 5th edition of DASH has done some optimization for Content Protection signaling in order to reduce the size of the MPD. Alex Giladi did propose this. It would be good to add this feature as well.

ZmGorynych commented 3 years ago

We can add something on the lines of the following to sec 7.3:

In many cases identical or near-identical ContentProtection elements are repeated across multiple AdaptationSet and even multiple Period elements, leading to significantly larger MPDs mainly due to the fact that sync:pssh elements are relatively large and need to be repeated for every AdaptationSet.

This can be avoided using ContentProtection referencing as defined in sec 5.8.4.1.3 of ISO/IEC 23009-1. In this case, instead of a set of full AdaptationSet-level ContentProtection elements with cenc:pssh elements, only one such ContentProtection element will appear at an MPD or Period level. This ContentProtection element will also have a unique ContentProtection@refId attribute. The AdaptationSet-level ContentProtection elements then contain no child elements and have ContentProtection@ref attribute set to the value of the full ContentProtection element it references. Note that the AdaptationSet-level ContentProtection elements can have different values of @default_KID attribute, so the above signaling can be used in case of multi-key encryption.

haudiobe commented 3 years ago

There should be Content Authoring requirements and also very clear instructions for the client implementation.

nicoweilelemental commented 3 years ago

From a CPIX standpoint, we need to add a ContentProtectionData@ManifestLevel attribute (possible values: mpd / period / adaptationSet) so that the packager can understand where to place the element. We also need new ContentProtectionData@refID and ContentProtectionData@ref attributes.

We need to specify that a ContentProtectionData element shall not have a ManifestLevel attribute value of 'adaptationSet' and a non null refID attribute. Such a ContentProtectionData element also shall not include one or more child elements of a ContentProtection element in the XML fragment..

ZmGorynych commented 3 years ago

Do you really need CPIX support for that? You can continue working as is (i.e., create AdaptationSet-level ContentProtection elements), and collapse everything to the MPD-level or Period-level version as post-processing.

nicoweilelemental commented 3 years ago

That is certainly possible, although it's generating more processing load on the packager than just leveraging a ready-to-go signaling coming from the key server. We can defer the CPIX update until we receive demand for it.

lpiron commented 2 years ago

Text has been added under section 7.3.