CPIX Signaling Behaviour

Using explicitly specified signaling

The optional <ContentProtectionData>, <HLSSignalingData> <SmoothStreamingProtectionHeaderData> and <HDSSignalingData> subelements of the <DRMSystem> element can be used to explicitly specify the DRM signaling data to be included in playlists and manifests. The platform uses the provided information as is and does not check it for consistency or correctness. This provides a lot of flexibility, but does not allow for any errors.

For example, the information in the <HLSSignalingData> element for variant playlists must include the #EXT-X-KEY tag and must be in base64 encoded binary format. It may contain multiple lines, allowing for extra lines with proprietary tags and values.

fMP4 HLS with Widevine requires information in the HLS variant playlist:

#EXT-X-KEY:METHOD=SAMPLE-AES,KEYID=0x10000000100010001000100000000001,URI="data:text/plain;base64,AAAAPXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAB0aDXdpZGV2aW5lX3Rlc3QiDHRlc3QgY29udGVudA==",KEYFORMAT="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed",KEYFORMATVERSIONS="1"

For the HLS master playlist:

#EXT-X-SESSION-KEY:METHOD=SAMPLE-AES,URI="data:text/plain;base64,AAAAPXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAAB0aDXdpZGV2aW5lX3Rlc3QiDHRlc3QgY29udGVudA==",KEYFORMAT="urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed",KEYFORMATVERSIONS="1"

In CPIX, this must be stored as base64 encoded binary and signaled as:

1
2
3
4
5
6
7
8
 <!-- Widevine -->
<DRMSystem
  systemId="EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED"
  kid="10000000-1000-1000-1000-100000000001">
  <PSSH>AAAAUXBzc2gBAAAA7e+LqXnWSs6jyCfc1R0h7QAAAAEQAAAAEAAQABAAEAAAAAABAAAAHRoNd2lkZXZpbmVfdGVzdCIMdGVzdCBjb250ZW50</PSSH>
  <HLSSignalingData>I0VYVC1YLUtFWTpNRVRIT0Q9U0FNUExFLUFFUyxLRVlJRD0weDEwMDAwMDAwMTAwMDEwMDAxMDAwMTAwMDAwMDAwMDAxLFVSST0iZGF0YTp0ZXh0L3BsYWluO2Jhc2U2NCxBQUFBUFhCemMyZ0FBQUFBN2UrTHFYbldTczZqeUNmYzFSMGg3UUFBQUIwYURYZHBaR1YyYVc1bFgzUmxjM1FpREhSbGMzUWdZMjl1ZEdWdWRBPT0iLEtFWUZPUk1BVD0idXJuOnV1aWQ6ZWRlZjhiYTktNzlkNi00YWNlLWEzYzgtMjdkY2Q1MWQyMWVkIixLRVlGT1JNQVRWRVJTSU9OUz0iMSI=</HLSSignalingData>
  <HLSSignalingData playlist="master">I0VYVC1YLVNFU1NJT04tS0VZOk1FVEhPRD1TQU1QTEUtQUVTLFVSST0iZGF0YTp0ZXh0L3BsYWluO2Jhc2U2NCxBQUFBUFhCemMyZ0FBQUFBN2UrTHFYbldTczZqeUNmYzFSMGg3UUFBQUIwYURYZHBaR1YyYVc1bFgzUmxjM1FpREhSbGMzUWdZMjl1ZEdWdWRBPT0iLEtFWUZPUk1BVD0idXJuOnV1aWQ6ZWRlZjhiYTktNzlkNi00YWNlLWEzYzgtMjdkY2Q1MWQyMWVkIixLRVlGT1JNQVRWRVJTSU9OUz0iMSI=</HLSSignalingData>
</DRMSystem>

Note how, on line 7, the attribute playlist="master" indicates the signaling to be placed in the HLS master playlist.

Using implicitly generated signaling

As a USP-specific CPIX extension, it is possible to request generated signaling for a playout format by using an empty signaling element in the CPIX Document. This looks as follows:

1
2
3
4
5
6
7
8
9
 <!-- Widevine -->
<DRMSystem
  systemId="EDEF8BA9-79D6-4ACE-A3C8-27DCD51D21ED"
  kid="2FCD790B-C247-4686-9372-0A4F0E29AE0D">
  <PSSH>AAAAVXBzc2gAAAAA7e+LqXnWSs6jyCfc1R0h7QAAADUIARIQaeYvbCZ6XOK9BjAUFA34xhoGdnVhbHRvIhF1c3AtcGFkdG8xNmFiY2RlZioCSEQyAA==</PSSH>
  <ContentProtectionData />
  <HLSSignalingData />
  <HLSSignalingData playlist="master" />
</DRMSystem>

In the above example there is a Widevine <DRMSystem> for which neither the DASH (<ContentProtectionData>) or HLS signaling (<HLSSignalingData>) are known. By adding said elements but leaving them empty, USP is instructed to generate the signaling. The empty elements are emphasized by lines 6, 7, and 8.

Do note that, except for Marlin, a <PSSH> element with PSSH data is required for all DRM systems for which signaling can be generated, because the PSSH data provides information that is necessary to generate the signaling for the DRM systems.

To decide whether or not it will generate signaling for a given combination of playout format and DRM system, Unified Origin uses the following logic:

  • Signaling is not added to the manifest, if the element is not present in the CPIX document.
  • Signaling is copied as-is, if the element is present and contains signaling information.
  • Signaling is generated, if the element is present and empty.

The below table provides an overview of the DRM systems that Unified Origin can currently generate signaling for based on CPIX, as well as for which DRM systems it will add the provided 'PSSH' to the DASH 'init' segment:

Playout DRM Signaling (client manifest) PSSH (added to 'init' segment)
_ _ Copied Generated Copied
MPD Adobe Access

ClearKey

Irdeto CENC

Latens

Marlin N/A

PlayReady

Verimatrix/ViewRight

ViaccessOrca

Widevine

Custom N/A
HLS PlayReady N/A

Widevine N/A

FairPlay N/A N/A

Custom N/A N/A
ISS PlayReady N/A

Custom N/A N/A
HDS Adobe Access N/A

Custom N/A N/A