--- a/encrypted-media/encrypted-media.html Mon Jan 14 16:48:15 2013 -0800
+++ b/encrypted-media/encrypted-media.html Mon Jan 14 16:55:53 2013 -0800
@@ -20,7 +20,7 @@
<div class="head">
<p><a href="http://www.w3.org/"><img src="http://www.w3.org/Icons/w3c_home" alt="W3C" width="72" height="48"></a></p>
<h1>Encrypted Media Extensions</h1>
- <h2>W3C Editor's Draft 12 January 2013</h2>
+ <h2>W3C Editor's Draft 14 January 2013</h2>
<h2><font color="red">Work in progress. For the latest stable revision, see <a href="http://dvcs.w3.org/hg/html-media/raw-file/eme-v0.1b/encrypted-media/encrypted-media.html">v0.1b</a>.</font></h2>
<dl>
<dt>Latest published version:</dt>
@@ -214,17 +214,17 @@
<p><a href="#key-system">Key Systems</a> usually require a block of initialization data containing information about the stream to be decrypted before they can construct a key request message.
This block could be as simple as a key or content ID to send to a server or as complex as an opaque Key System-specific collection of data.
- This initialization information may be obtained in some application-specific way or may be stored with the <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a>.
+ This initialization information may be obtained in some application-specific way or may be stored with the <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a>.
Container formats may provide for storage of such information, possibly for multiple <a href="#key-system">Key Systems</a> in a single media file.
</p>
- <p>Initialization data found in the <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a> is provided to the application in the <code><a href="#dom-initdata">initData</a></code> attribute of the <code><a href="#dom-needkey">needkey</a></code> event.
+ <p>Initialization data found in the <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a> is provided to the application in the <code><a href="#dom-initdata">initData</a></code> attribute of the <code><a href="#dom-needkey">needkey</a></code> event.
This data has a container-specific format and is assumed to contain one or more generic or Key System-specific sets of initialization information.
</p>
<h2 id="extensions">2. Media Element Extensions</h2>
- <p>We extend <dfn id="media-element" title="media element"><a href="http://dev.w3.org/html5/spec/video.html#media-element">media element</a></dfn> to allow decryption key acquisition to be handled in JavaScript.</p>
+ <p>We extend <dfn id="media-element" title="media element"><a href="http://www.w3.org/TR/html5/video.html#media-element">media element</a></dfn> to allow decryption key acquisition to be handled in JavaScript.</p>
<p class="non-normative">Note: For some <a href="#cdm">CDMs</a>, "key" and "key request" correspond to "license" and "license request", respectively.</p>
<pre class="idl">
@@ -233,7 +233,7 @@
readonly attribute <a href="#dom-mediakeys">MediaKeys</a> <a href="#dom-keys">keys</a>;
void <a href="#dom-setmediakeys">setMediaKeys</a>(<a href="#dom-mediakeys">MediaKeys</a> mediaKeys);
- attribute <a href="http://dev.w3.org/html5/spec/webappapis.html#eventhandler">EventHandler</a> <a href="#dom-onneedkey">onneedkey</a>;
+ attribute <a href="http://www.w3.org/TR/html5/webappapis.html#eventhandler">EventHandler</a> <a href="#dom-onneedkey">onneedkey</a>;
};
[<a href="#dom-media-keys-constructor">Constructor</a> (DOMString <a href="#key-system">keySystem</a>)]
@@ -262,13 +262,13 @@
attribute DOMString <a href="#dom-sourcekeysystem">keySystem</a>;
};</pre>
- <p>The <dfn id="dom-keys"><code>keys</code></dfn> attribute is the <code><a href="#dom-mediakeys">MediaKeys</a></code> being used when decrypting encrypted <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a> for this <a href="#media-element">media element</a>.</p>
+ <p>The <dfn id="dom-keys"><code>keys</code></dfn> attribute is the <code><a href="#dom-mediakeys">MediaKeys</a></code> being used when decrypting encrypted <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a> for this <a href="#media-element">media element</a>.</p>
<p>The <dfn id="dom-setmediakeys"><code>setMediaKeys</code></dfn> method provides the <code><a href="#dom-mediakeys">MediaKeys</a></code> to use. When calling this method, the media element must run the following steps:</p>
<ol>
<li>
<p>If loading has not started, throw an <code><a href="http://dvcs.w3.org/hg/domcore/raw-file/tip/Overview.html#dom-domexception-invalid_state_err">INVALID_STATE_ERR</a></code>.</p>
- <p class="non-normative">In general, applications should wait for an event named <code><a href="#dom-needkey">needkey</a></code> or <code><a href="http://dev.w3.org/html5/spec/video.html#event-media-loadstart">loadstart</a></code> (per the <a href="http://dev.w3.org/html5/spec/video.html#concept-media-load-resource">resource fetch algorithm</a>) before calling this method.</p>
+ <p class="non-normative">In general, applications should wait for an event named <code><a href="#dom-needkey">needkey</a></code> or <code><a href="http://www.w3.org/TR/html5/video.html#event-media-loadstart">loadstart</a></code> (per the <a href="http://www.w3.org/TR/html5/video.html#concept-media-load-resource">resource fetch algorithm</a>) before calling this method.</p>
</li>
<li>Set the <code><a href="#dom-keys">keys</a></code> attribute of the media element to <var>mediaKeys</var>.</li>
</ol>
@@ -297,7 +297,7 @@
</li></ul>
</li>
<li><p>Set the new object's <code><a href="#dom-error">error</a></code> attribute to the error object created in the previous step.</p></li>
- <li><p><a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keyerror">keyerror</a></code> at the new object.</p></li>
+ <li><p><a href="http://www.w3.org/TR/html5/webappapis.html#queue-a-task">queue a task</a> to <a href="http://www.w3.org/TR/html5/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keyerror">keyerror</a></code> at the new object.</p></li>
<li><p>Abort these steps.</p></li>
</ol></dd>
</dl>
@@ -348,7 +348,7 @@
<ol>
<li>
<p>Let <var title="true">key request</var> be a key request generated by the <a href="#cdm">CDM</a> using <var title="true">initData</var>, if provided.</p>
- <p>Note: <var title="true">cdm</var> must not use any data, including <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a>, not provided via <var title="true">initData</var>.</p>
+ <p>Note: <var title="true">cdm</var> must not use any data, including <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a>, not provided via <var title="true">initData</var>.</p>
<p class="non-normative"><var title="true">type</var> may be used to determine how to interpret <var title="true">initData</var>.</p>
</li>
<li><p>If <var title="true">initData</var> is not null and contains a default URL for <var title="true">keySystem</var>, let <var title="true">defaultURL</var> be that URL.</p></li>
@@ -364,13 +364,13 @@
</li></ul>
</li>
<li><p>Set the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object's <code><a href="#dom-error">error</a></code> attribute to the error object created in the previous step.</p></li>
- <li><p><a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keyerror">keyerror</a></code> at the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object.</p></li>
+ <li><p><a href="http://www.w3.org/TR/html5/webappapis.html#queue-a-task">queue a task</a> to <a href="http://www.w3.org/TR/html5/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keyerror">keyerror</a></code> at the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object.</p></li>
<li><p>Abort the task.</p></li>
</ol></dd>
</dl>
</li>
<li>
-<p><a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keymessage">keymessage</a></code> at the new object</p>
+<p><a href="http://www.w3.org/TR/html5/webappapis.html#queue-a-task">queue a task</a> to <a href="http://www.w3.org/TR/html5/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keymessage">keymessage</a></code> at the new object</p>
<p>The event is of type <code><a href="#dom-mediakeymessageevent">MediaKeyMessageEvent</a></code> and has:</p>
<ul style="list-style-type:none"><li>
<code><a href="#dom-message">message</a></code> = <var title="true">key request</var><br>
@@ -468,18 +468,18 @@
<li><p>If another message needs to be sent to the server, let <var title="true">next message</var> be that message.</p></li>
</ol>
</li>
- <li>If <var title="true">did store key</var> is true and the <a href="#media-element">media element</a> is <a href="#waiting-for-a-key">waiting for a key</a>, <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to attempt to resume playback.
+ <li>If <var title="true">did store key</var> is true and the <a href="#media-element">media element</a> is <a href="#waiting-for-a-key">waiting for a key</a>, <a href="http://www.w3.org/TR/html5/webappapis.html#queue-a-task">queue a task</a> to attempt to resume playback.
<p class="non-normative">In other words, resume playback if the necessary key is provided.</p>
</li>
<li>
-<p>If <var title="true">next message</var> is not null, <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keymessage">keymessage</a></code> at the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object.</p>
+<p>If <var title="true">next message</var> is not null, <a href="http://www.w3.org/TR/html5/webappapis.html#queue-a-task">queue a task</a> to <a href="http://www.w3.org/TR/html5/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keymessage">keymessage</a></code> at the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object.</p>
<p>The event is of type <code><a href="#dom-mediakeymessageevent">MediaKeyMessageEvent</a></code> and has:</p>
<ul style="list-style-type:none"><li>
<code><a href="#dom-message">message</a></code> = <var title="true">next message</var><br>
<code><a href="#dom-destinationurl">destinationURL</a></code> = null
</li></ul>
</li>
- <li><p>If <var title="true">did store key</var> is true, <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keyadded">keyadded</a></code> at the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object.</p></li>
+ <li><p>If <var title="true">did store key</var> is true, <a href="http://www.w3.org/TR/html5/webappapis.html#queue-a-task">queue a task</a> to <a href="http://www.w3.org/TR/html5/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keyadded">keyadded</a></code> at the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object.</p></li>
<li>
<p>If any of the preceding steps in the task failed</p>
<ol>
@@ -491,7 +491,7 @@
</li></ul>
</li>
<li><p>Set the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object's <code><a href="#dom-error">error</a></code> attribute to the error object created in the previous step.</p></li>
- <li><p><a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keyerror">keyerror</a></code> at the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object.</p></li>
+ <li><p><a href="http://www.w3.org/TR/html5/webappapis.html#queue-a-task">queue a task</a> to <a href="http://www.w3.org/TR/html5/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-keyerror">keyerror</a></code> at the <code><a href="#dom-mediakeysession">MediaKeySession</a></code> object.</p></li>
<li><p>Abort the task.</p></li>
</ol>
</li>
@@ -512,15 +512,15 @@
<li>Clear any internal state associated with the session, including all keys and licenses.</li>
</ol>
- <p>The <dfn id="dom-sourcekeysystem"><code>keySystem</code></dfn> attribute of <code><a href="#dom-htmlsourceelement">HTMLSourceElement</a></code> specifies the <a href="#key-system">Key System</a> to be used with the <code><a href="http://dev.w3.org/html5/spec/video.html#media-resource">media resource</a></code>.
- The <a href="http://dev.w3.org/html5/spec/video.html#concept-media-load-algorithm">resource selection algorithm</a> is modified to check the <code><a href="#dom-sourcekeysystem">keySystem</a></code> attribute after the existing <em>step 5</em> of the <em>Otherwise</em> branch of <em>step 6</em>:
+ <p>The <dfn id="dom-sourcekeysystem"><code>keySystem</code></dfn> attribute of <code><a href="#dom-htmlsourceelement">HTMLSourceElement</a></code> specifies the <a href="#key-system">Key System</a> to be used with the <code><a href="http://www.w3.org/TR/html5/video.html#media-resource">media resource</a></code>.
+ The <a href="http://www.w3.org/TR/html5/video.html#concept-media-load-algorithm">resource selection algorithm</a> is modified to check the <code><a href="#dom-sourcekeysystem">keySystem</a></code> attribute after the existing <em>step 5</em> of the <em>Otherwise</em> branch of <em>step 6</em>:
</p>
<ol start="6">
- <li><p>⌛ If <var title="">candidate</var> has a <code><a href="#dom-sourcekeysystem">keySystem</a></code> attribute whose value represents a <a href="#key-system">Key System</a> that the user agent knows it cannot use with <code><a href="http://dev.w3.org/html5/spec/video.html#attr-source-type">type</a></code>, then end the <a href="http://dev.w3.org/html5/spec/webappapis.html#synchronous-section">synchronous section</a>, and jump down to the <i title="">failed</i> step below.</p></li>
+ <li><p>⌛ If <var title="">candidate</var> has a <code><a href="#dom-sourcekeysystem">keySystem</a></code> attribute whose value represents a <a href="#key-system">Key System</a> that the user agent knows it cannot use with <code><a href="http://www.w3.org/TR/html5/video.html#attr-source-type">type</a></code>, then end the <a href="http://www.w3.org/TR/html5/webappapis.html#synchronous-section">synchronous section</a>, and jump down to the <i title="">failed</i> step below.</p></li>
</ol>
<h3 id="error-codes">2.1. Error Codes</h3>
- <p><code><a href="http://dev.w3.org/html5/spec/video.html#mediaerror">MediaError</a></code> is extended, and a new error type is added.</p>
+ <p><code><a href="http://www.w3.org/TR/html5/video.html#mediaerror">MediaError</a></code> is extended, and a new error type is added.</p>
<pre class="idl">
partial interface <dfn id="dom-mediaerror">MediaError</dfn> {
const unsigned short <a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a> = 5;
@@ -560,7 +560,7 @@
<ol>
<li>No key was provided and no <code><a href="#dom-needkey">needkey</a></code> handler was provided</li>
<li>The provided key could not be successfully applied</li>
- <li>The user agent does not support decryption of this <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a>
+ <li>The user agent does not support decryption of this <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a>
</li>
</ol>
</dd>
@@ -647,7 +647,7 @@
<p>The <dfn id="dom-message"><code>message</code></dfn> attribute contains a message from the CDM. Messages are Key System-specific. <span class="non-normative">In most cases, it should be sent to a key server.</span></p>
<p>The <dfn id="dom-destinationurl"><code>destinationURL</code></dfn> is the URL to send the <code><a href="#dom-message">message</a></code> to.
An application <em>may</em> override this.
- <span class="non-normative">In some cases, it may have been provided by the <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a>.</span>
+ <span class="non-normative">In some cases, it may have been provided by the <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a>.</span>
It may be null.
</p>
@@ -708,10 +708,10 @@
<td><code><a href="#dom-mediakeyneededevent">MediaKeyNeededEvent</a></code></td>
<td>
The user agent needs a key or license to begin or continue playback.
- <br><span class="non-normative"><br>It may have encountered <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a> that may/does require decryption to load or play OR need a new key/license to continue playback.</span>
+ <br><span class="non-normative"><br>It may have encountered <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a> that may/does require decryption to load or play OR need a new key/license to continue playback.</span>
</td>
<td>
-<code title="dom-media-readyState"><a href="http://dev.w3.org/html5/spec/video.html#dom-media-readystate">readyState</a></code> is equal to <code title="dom-media-HAVE_METADATA"><a href="http://dev.w3.org/html5/spec/video.html#dom-media-have_metadata">HAVE_METADATA</a></code> or greater.
+<code title="dom-media-readyState"><a href="http://www.w3.org/TR/html5/video.html#dom-media-readystate">readyState</a></code> is equal to <code title="dom-media-HAVE_METADATA"><a href="http://www.w3.org/TR/html5/video.html#dom-media-have_metadata">HAVE_METADATA</a></code> or greater.
<span class="non-normative">It is possible that the element is playing or has played.</span>
</td>
</tr>
@@ -741,7 +741,7 @@
<h2 id="algorithms">5. Algorithms</h2>
<h3 id="algorithms-enrypted-block">5.1. Encrypted Block Encountered</h3>
- <p>The following steps are run when the <a href="#media-element">media element</a> encounters a block <span class="non-normative">(i.e. frame)</span> of encrypted <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a> during the <a href="http://dev.w3.org/html5/spec/video.html#concept-media-load-resource">resource fetch algorithm</a>:</p>
+ <p>The following steps are run when the <a href="#media-element">media element</a> encounters a block <span class="non-normative">(i.e. frame)</span> of encrypted <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a> during the <a href="http://www.w3.org/TR/html5/video.html#concept-media-load-resource">resource fetch algorithm</a>:</p>
<ol>
<li><p>Let <var title="">cdm</var> be null.</p></li>
@@ -787,7 +787,7 @@
<dd>Let <var title="">block key</var> be the single cached key.</dd>
<dt>If <var title="true">cdm</var> has more than one key cached <span class="non-normative">(all would have IDs)</span>
</dt>
- <dd>Abort media element's <a href="http://dev.w3.org/html5/spec/video.html#concept-media-load-resource">resource fetch algorithm</a> and run the steps to report a <code><a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a></code> error.</dd>
+ <dd>Abort media element's <a href="http://www.w3.org/TR/html5/video.html#concept-media-load-resource">resource fetch algorithm</a> and run the steps to report a <code><a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a></code> error.</dd>
<dt>Otherwise</dt>
<dd>Jump to the <i>Key Presence</i> step below.</dd>
</dl>
@@ -803,7 +803,7 @@
<dd>Use <var title="true">cdm</var> to Decrypt the block using <var title="">block key</var> by following the steps for the first matching condition from the following list:
<dl class="switch">
<dt>If decryption fails</dt>
- <dd>Abort media element's <a href="http://dev.w3.org/html5/spec/video.html#concept-media-load-resource">resource fetch algorithm</a> and run the steps to report a <code><a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a></code> error.</dd>
+ <dd>Abort media element's <a href="http://www.w3.org/TR/html5/video.html#concept-media-load-resource">resource fetch algorithm</a> and run the steps to report a <code><a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a></code> error.</dd>
<dt>Otherwise</dt>
<dd>Continue.</dd>
</dl>
@@ -812,23 +812,23 @@
<dt>If there is an event handler for <code><a href="#dom-needkey">needkey</a></code>
</dt>
<dd>
- <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-needkey">needkey</a></code> at the <a href="#media-element">media element</a>.
+ <a href="http://www.w3.org/TR/html5/webappapis.html#queue-a-task">queue a task</a> to <a href="http://www.w3.org/TR/html5/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-needkey">needkey</a></code> at the <a href="#media-element">media element</a>.
<p>The event is of type <code><a href="#dom-mediakeyneededevent">MediaKeyNeededEvent</a></code> and has:</p>
<ul style="list-style-type:none"><li>
<code><a href="#dom-initdata">initData</a></code> = <var title="">block initData</var>
</li></ul>
- <p class="non-normative">The <a href="#media-element">media element</a> is said to be <code><a href="http://dev.w3.org/html5/spec/video.html#potentially-playing">potentially playing</a></code>
+ <p class="non-normative">The <a href="#media-element">media element</a> is said to be <code><a href="http://www.w3.org/TR/html5/video.html#potentially-playing">potentially playing</a></code>
unless playback stops because the stream cannot be decrypted, in which case the <a href="#media-element">media element</a> is said to be <a href="#waiting-for-a-key">waiting for a key</a>.
</p>
</dd>
<dt>Otherwise</dt>
- <dd>Abort media element's <a href="http://dev.w3.org/html5/spec/video.html#concept-media-load-resource">resource fetch algorithm</a> and run the steps to report a <code><a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a></code> error.</dd>
+ <dd>Abort media element's <a href="http://www.w3.org/TR/html5/video.html#concept-media-load-resource">resource fetch algorithm</a> and run the steps to report a <code><a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a></code> error.</dd>
</dl>
</li>
</ol>
<div class="non-normative">
- <p>For frame-based encryption, this may be implemented as follows when the media element attempts to decode a frame as part of the <a href="http://dev.w3.org/html5/spec/video.html#concept-media-load-resource">resource fetch algorithm</a>:</p>
+ <p>For frame-based encryption, this may be implemented as follows when the media element attempts to decode a frame as part of the <a href="http://www.w3.org/TR/html5/video.html#concept-media-load-resource">resource fetch algorithm</a>:</p>
<ol>
<li><p>Let <var title="">encrypted</var> be false.</p></li>
<li>
@@ -845,17 +845,17 @@
</ol>
</div>
- <p>The following paragraph is added to <a href="http://dev.w3.org/html5/spec/video.html#playing-the-media-resource">Playing the media resource</a>.</p>
+ <p>The following paragraph is added to <a href="http://www.w3.org/TR/html5/video.html#playing-the-media-resource">Playing the media resource</a>.</p>
<ul style="list-style-type:none">
<li>A <a href="#media-element">media element</a> is said to be <dfn id="waiting-for-a-key">waiting for a key</dfn> when
- it would be <code><a href="http://dev.w3.org/html5/spec/video.html#potentially-playing">potentially playing</a></code> but
- the user agent has reached a point in the <code><a href="http://dev.w3.org/html5/spec/video.html#media-resource">media resource</a></code> that must be decrypted for the resource to continue and the <a href="#cdm">CDM</a> does not have the necessary key.
+ it would be <code><a href="http://www.w3.org/TR/html5/video.html#potentially-playing">potentially playing</a></code> but
+ the user agent has reached a point in the <code><a href="http://www.w3.org/TR/html5/video.html#media-resource">media resource</a></code> that must be decrypted for the resource to continue and the <a href="#cdm">CDM</a> does not have the necessary key.
</li>
<li class="non-normative">The media element leaves this state when seeking but could re-enter it if the same conditions exist.</li>
</ul>
<h3 id="algorithms-encrypted-stream">5.2. Potentially Encrypted Stream Encountered</h3>
- <p>The following steps are run when the <a href="#media-element">media element</a> encounters a source that may contain encrypted blocks or streams during the <a href="http://dev.w3.org/html5/spec/video.html#concept-media-load-resource">resource fetch algorithm</a>:</p>
+ <p>The following steps are run when the <a href="#media-element">media element</a> encounters a source that may contain encrypted blocks or streams during the <a href="http://www.w3.org/TR/html5/video.html#concept-media-load-resource">resource fetch algorithm</a>:</p>
<ol>
<li><p>Let <var title="">cdm</var> be null.</p></li>
@@ -905,24 +905,24 @@
</ol>
</li>
<li>
-<p><i>Need Key</i>: <a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">queue a task</a> to <a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-needkey">needkey</a></code> at the <a href="#media-element">media element</a>.</p>
+<p><i>Need Key</i>: <a href="http://www.w3.org/TR/html5/webappapis.html#queue-a-task">queue a task</a> to <a href="http://www.w3.org/TR/html5/webappapis.html#fire-a-simple-event">fire a simple event</a> named <code><a href="#dom-needkey">needkey</a></code> at the <a href="#media-element">media element</a>.</p>
<p>The event is of type <code><a href="#dom-mediakeyneededevent">MediaKeyNeededEvent</a></code> and has:</p>
<ul style="list-style-type:none"><li>
<code><a href="#dom-initdata">initData</a></code> = <var title="">initData</var>
</li></ul>
<p class="non-normative">Firing this event allows the application to begin acquiring the key process before it is needed.</p>
- <p class="non-normative">Note that <code title="dom-media-readyState"><a href="http://dev.w3.org/html5/spec/video.html#dom-media-readystate">readyState</a></code> is <em>not</em> changed and no algorithms are aborted. This event is merely informative.</p>
+ <p class="non-normative">Note that <code title="dom-media-readyState"><a href="http://www.w3.org/TR/html5/video.html#dom-media-readystate">readyState</a></code> is <em>not</em> changed and no algorithms are aborted. This event is merely informative.</p>
</li>
- <li><p><i>Continue Normal Flow</i>: Continue with the existing media element's <a href="http://dev.w3.org/html5/spec/video.html#concept-media-load-resource">resource fetch algorithm</a>.</p></li>
+ <li><p><i>Continue Normal Flow</i>: Continue with the existing media element's <a href="http://www.w3.org/TR/html5/video.html#concept-media-load-resource">resource fetch algorithm</a>.</p></li>
</ol>
<h3 id="algorithms-load">5.3. Addition to Media Element Load Algorithm</h3>
- <p>The following step is added to the existing <a href="http://dev.w3.org/html5/spec/video.html#media-element-load-algorithm">media element load algorithm</a>:</p>
+ <p>The following step is added to the existing <a href="http://www.w3.org/TR/html5/video.html#media-element-load-algorithm">media element load algorithm</a>:</p>
<ul>
<li>
<p>Clear the <codref>keys</codref> attribute for this <a href="#media-element">media element</a>.</p>
- <p class="non-normative">This also means the <codref>keys</codref> attribute will be cleared when the <code><a href="http://dev.w3.org/html5/spec/video.html#attr-media-src">src</a></code> attribute is set or changed per <a href="http://dev.w3.org/html5/spec/video.html#location-of-the-media-resource">Location of the media resource</a></p>
+ <p class="non-normative">This also means the <codref>keys</codref> attribute will be cleared when the <code><a href="http://www.w3.org/TR/html5/video.html#attr-media-src">src</a></code> attribute is set or changed per <a href="http://www.w3.org/TR/html5/video.html#location-of-the-media-resource">Location of the media resource</a></p>
</li>
</ul>
@@ -953,7 +953,7 @@
<p>The <code><a href="#dom-mediakeymessageevent">MediaKeyMessageEvent</a></code> generated by <code><a href="#dom-createsession">createSession()</a></code> has:</p>
<ul style="list-style-type:none"><li>
<code><a href="#dom-message">message</a></code> = a container-specific value extracted from the <var title="true">initData</var> parameter of <code><a href="#dom-createsession">createSession()</a></code>. null if <var title="true">initData</var> was null or a value could not be extracted.<br>
- <code><a href="#dom-destinationurl">destinationURL</a></code> = value of the default URL if present in the <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a> and null otherwise.
+ <code><a href="#dom-destinationurl">destinationURL</a></code> = value of the default URL if present in the <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a> and null otherwise.
</li></ul>
<p>The <var title="true">key</var> parameter of <code><a href="#dom-update">update()</a></code> should be a JSON Web Key (JWK) representation of the symmetric key to be used for decryption, as defined in the <a href="http://tools.ietf.org/html/draft-jones-jose-json-private-and-symmetric-key">IETF Internet-draft JSON Private and Symmetric Key specification</a>. The JSON string is encoded into the Uint8Array parameter using <a href="http://www.w3.org/TR/html5/infrastructure.html#ascii-compatible-character-encoding">ASCII-compatible character encoding</a>.</p>
@@ -1074,7 +1074,7 @@
</div>
<h3 class="exampleheader">8.2. Source Known but Key Not Known at Page Load</h3>
- <p class="exampledescription">In this case, the <a href="#initialization-data">Initialization Data</a> is contained in the <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a>.
+ <p class="exampledescription">In this case, the <a href="#initialization-data">Initialization Data</a> is contained in the <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a>.
If this was not the case, <code>handleKeyNeeded()</code> could obtain and provide it instead of getting it from the event.</p>
<p class="exampledescription">If any asynchronous operation is required to get the key in <code>handleKeyNeeded()</code>, it could be called a second time if the stream is detected as potentially encrypted before an encrypted block/frame is encountered. In this case, applications may want to handle subsequent calls specially to avoid redundant license requests. This is not shown in the examples below.</p>
@@ -1304,11 +1304,11 @@
<p class="faqanswer">Yes.</p>
<h4 class="faqquestion">Can I encrypt captions / <track> elements?</h4>
- <p class="faqanswer">No, this proposal only supports decrypting audio and video that are part of the <a href="http://dev.w3.org/html5/spec/video.html#media-data">media data</a>.</p>
+ <p class="faqanswer">No, this proposal only supports decrypting audio and video that are part of the <a href="http://www.w3.org/TR/html5/video.html#media-data">media data</a>.</p>
<h4 id="sourceelement" class="faqquestion">Can I let the user agent select the appropriate CDM using <code><source></code> elements?</h4>
<p class="faqanswer">Yes, using the <code><a href="#dom-sourcekeysystem">keySystem</a></code> attribute of the <code><a href="#dom-htmlsourceelement">HTMLSourceElement</a></code>.
- When used with <code><a href="http://dev.w3.org/html5/spec/video.html#attr-source-type">type</a></code> attribute, this will select the first <code><source></code> element (container, codec, and <a href="#key-system">Key System</a>) that the user agent might support.
+ When used with <code><a href="http://www.w3.org/TR/html5/video.html#attr-source-type">type</a></code> attribute, this will select the first <code><source></code> element (container, codec, and <a href="#key-system">Key System</a>) that the user agent might support.
</p>
<h4 id="faq-heartbeat" class="faqquestion">Is a heartbeat supported?</h4>
@@ -1395,7 +1395,7 @@
<p class="faqanswer">Without a new error code (<code><a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a></code>), it is not possible for user agents to clearly indicate to an application that playback failed because the content was encrypted and user agents will likely need to fire a <code>MEDIA_ERR_DECODE</code> or <code>MEDIA_ERR_SRC_NOT_SUPPORTED</code>, which would be confusing.</p>
<h4 class="faqquestion">Will adding a new error code to <code><a href="#dom-mediaerror">MediaError</a></code> break existing applications?</h4>
- <p class="faqanswer">Applications that are not aware of the new error code (<code><a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a></code>) may not correctly handle it, but they should still be able to detect that an error has occurred because a) an error event is fired and b) <var title="">media</var> . <code title="dom-media-error"><code><a href="http://dev.w3.org/html5/spec/video.html#mediaerror">error</a></code></code> is not null.</p>
+ <p class="faqanswer">Applications that are not aware of the new error code (<code><a href="#dom-media_err_encrypted">MEDIA_ERR_ENCRYPTED</a></code>) may not correctly handle it, but they should still be able to detect that an error has occurred because a) an error event is fired and b) <var title="">media</var> . <code title="dom-media-error"><code><a href="http://www.w3.org/TR/html5/video.html#mediaerror">error</a></code></code> is not null.</p>
<h4 class="faqquestion">What happens if a response to the <code><a href="#dom-needkey">needkey</a></code> event from a <a href="#algorithms-encrypted-stream">encountering a potentially encrypted stream</a> is not received before <a href="#algorithms-enrypted-block">encountering an encrypted block</a>?</h4>
<p class="faqanswer">The <a href="#algorithms-enrypted-block">Encrypted Block Encountered algorithm</a> will proceed as normal.