- From: David Dorwin <ddorwin@google.com>
- Date: Mon, 29 Oct 2012 10:16:57 +0100
- To: Joe Steele <steele@adobe.com>
- Cc: "<public-html-media@w3.org>" <public-html-media@w3.org>, Aaron Colwell <acolwell@google.com>
- Message-ID: <CAHD2rsiE2jGkJ5OBAnXipumAQ7E=r2orPKhTyy+8X6Ci3dXCBw@mail.gmail.com>
My understanding from reading the bug is that you want to be able to call addKey() with a predetermined blob without needing to specify type or initData. This is possible and is essentially what is shown in Example 8.1 Regarding the example below, I don't think you would need the second session. You only ever need to specify type and initData if you want to use the initData in generating a license request. Note that http://dvcs.w3.org/hg/html-media/raw-file/tip/encrypted-media/encrypted-media.html#dom-closecurrently says the keys are cleared, so I don't think you would want to call close(). David On Tue, Oct 16, 2012 at 11:44 PM, Joe Steele <steele@adobe.com> wrote: > If no-one has any comments on this example code -- would the editors > please take an action to add this to the spec in the appropriate place? > > I think adding this as section 8.5 with a title of "Pre-loading keys > during page-load" would work well. > > Joe Steele > steele@adobe.com > > On Oct 15, 2012, at 11:54 AM, Joe Steele wrote: > > I had an request from two meetings ago to produce some example code for > pre-loading a MediaKeys instance independent of the HTMLMediaElements that > the MediaKeys object may later be attached to. > > Here is the example I propose: > -------- > <script> > > var cdm; > > // Preload some keys when page loads > function load() > { > // Create a MediaKeys instance for the desired CDM not associated with > an HTMLMediaElement > cdm = new MediaKeys("com.example.somesystem"); > if (!cdm) > throw "Could not create MediaKeys"; > > // Create a new key session using the MediaKeys instance > var keySession = cdm.createSession(NULL, NULL); > if (!keySession) > throw "Could not create MediaKeySession"; > keySession.onkeymessage="handleMessage(event)"; > > // Load an application defined key package into the key session > // The key package can be hard-coded into the page or loaded as a > resource > // Loading the key package may cause additional key messages to be sent > var Uint8Array keyToPreload; > keySession.addKey(keyToPreload); > keySession.close(); > } > > // Respond to key message > function handleMessage(event) > { > var keySession = event.target; > var message = event.message; > > var xmlhttp = new XMLHttpRequest(); > xmlhttp.open("POST", "http://.../getkey", false); > xmlhttp.send(message); > > var key = new Uint8Array(xmlhttp.response); > keySession.addKey(key); > } > > // Attach pre-initialized MediaKeys to an HTMLMediaElement > function setMediaKeys() > { > var video = event.target; > var initData = event.initData; > > if (!cdm) > throw "MediaKeys was not already created!"; > if (!video.keys) > video.keys = cdm; > > // Create a new key session using the mimeType and initData > var keySession = video.keys.createSession(mimeType, initData); > if (!keySession) > throw "Could not create MediaKeySession"; > keySession.onkeymessage="handleMessage(event)"; > } > > <body onload="load()"> > <video src="foo.dash" autoplay onneedkey="setMediaKeys(event)" > onkeymessage="handleMessage(event)"></video> > </body> > > </script> > -------- > > I believe this should all work within the confines of the current draft. I > am intentionally leaving how the preloaded key package is derived as an > exercise for the application developer, since there are many possible ways > to handle that. > > Joe Steele > steele@adobe.com > > >
Received on Monday, 29 October 2012 09:17:45 UTC