Error Handling

The streaming player middleware (the multimedia controller) must be made aware, when a stream cannot be played because of lack of rights. In a regular file DRM standard scenario, this task is relatively easy, as the CAF agent checks whether corresponding rights exist, during instantiation of ContentAccess::CData.

The key stream cannot be decoded in the following scenarios:
  • Pay-per-view: The user may have bought rights to view a particular programme, but not the rights for the programme that follows it on the same channel. Thus, even if the user had rights when the key stream decoder was instantiated, this may no longer be the case in 1-2 hours, and the same key stream cannot be decoded anymore.

  • Subscription expiry: The user may have subscribed to the channel, but while viewing the stream, the subscription expires. Again, the same key stream cannot be decoded anymore.

Limitations

CAF cannot determine whether a stream can be decoded during instantiation of the key stream decoder. It only identifies whether a specific stream is supported and if so, associates it with an appropriate key stream decoder for decryption of stream data.

Key stream decoder cannot determine whether it can decrypt short-term keys, till it receives key messages. If decrypted information does not reach (or, if for ISMACryp, it cannot be decrypted), the multimedia controller polls to verify whether a decoder can decrypt the packets. CKeyStreamDecoder::GetAttribute() method with the TAttribute parameter ECanPlay is used for verification.

Note: This method allows the controller to query the key stream decoder whether it has failed to decrypt short-term keys, even if the decryption process fails and the multimedia controller does not have any plaintext data.

If the decoder cannot decrypt the key packets, it must drop them and must not push the information to the multimedia controller.

Related concepts
Using Streaming CAF