[EME] specification question: key and media element asssociation usage confusion

During yesterday conference call, we mentioned about association between keys and media element
I have questions: what is an association, what is a strong association, how to use association , who will use it?
Hope expert can help clarify them for me, thanks a lot!

What is an association?
Media element and all keys used to decrypted the media content.
Right?
Mapping relationship is:  1 initData to 1 session id to multiple keys(simultaneously, not key rotation) .
Right?

What is a strong association?
Method to generate keys are inside media element.
Key sessions generated are part of media element.
Right?


Who will use it?
The UA will use it to manage the keys for media element
Right?

CDM will use it to find specific key for a encrypted block.
Right?

How to use the association?
I guess the association is used for CDM to find keys to decrypt the encrypted media content for a media element.
>From 1.3.3, it is said user agent/CDM manage the lifetime of session id, and CDM may retain session id for some time,
So from here and David yesterday mentioned, we know session id is only available during key exchange (needKey->new MediaKeys->createSession->key request->addKey()->heartbeat), during decryption, the  session id cannot be used for association key and encrypted media. While initData contain key id information identify a particular key which can be used to find a key in a local table.




1

2a

2b

How Key session generate?

A method of media element (generateKeyRequest)

Constructor of MediaKeySesson

createSession method of MediaKeys (attribute of media element)

How to associate key session with media element?

MediaKeySession is a attribute of media element, strong association

Using addKeySession method of media element to add key session to media element

CreateSession will make MediaKeySession associated with MediaKeys of media element automatically

How CDM identify the Association between media and key?

By addKey (KeySystem, key, initData, sessionId) when a new media content block is encountered, the table in CDM will be added a row for key id and key, CDM know the key is used for current media block decryption.



So, I guess in CDM, in a lifetime of media playback, there will be a table for" key id<>key" mappings, if a media element has several sessions(video/audio tracks), and they will be decrypted by CDM simultaneously, the CDM will determine the key id through initData, and by looking up the table using the key id to find the key . After the page is closed, or media content change, the key id<>key relative to previous media content or stream will be cleaned.
Am I right on this?



Yang
Huawei

Received on Thursday, 12 July 2012 06:39:04 UTC