- From: Ian Hickson via cvs-syncmail <cvsmail@w3.org>
- Date: Thu, 30 Jun 2011 23:52:54 +0000
- To: public-html-commits@w3.org
Update of /sources/public/html5/spec
In directory hutz:/tmp/cvs-serv14734
Modified Files:
Overview.html
Log Message:
Revamp how audioTracks and videoTracks work on HTMLMediaElement and MediaStream. (whatwg r6275)
Index: Overview.html
===================================================================
RCS file: /sources/public/html5/spec/Overview.html,v
retrieving revision 1.5022
retrieving revision 1.5023
diff -u -d -r1.5022 -r1.5023
--- Overview.html 24 Jun 2011 00:32:45 -0000 1.5022
+++ Overview.html 30 Jun 2011 23:52:50 -0000 1.5023
@@ -318,7 +318,7 @@
<h1>HTML5</h1>
<h2 class="no-num no-toc" id="a-vocabulary-and-associated-apis-for-html-and-xhtml">A vocabulary and associated APIs for HTML and XHTML</h2>
- <h2 class="no-num no-toc" id="editor-s-draft-24-june-2011">Editor's Draft 24 June 2011</h2>
+ <h2 class="no-num no-toc" id="editor-s-draft-30-june-2011">Editor's Draft 30 June 2011</h2>
<dl><dt>Latest Published Version:</dt>
<dd><a href="http://www.w3.org/TR/html5/">http://www.w3.org/TR/html5/</a></dd>
<dt>Latest Editor's Draft:</dt>
@@ -464,7 +464,7 @@
Group</a> is the W3C working group responsible for this
specification's progress along the W3C Recommendation
track.
- This specification is the 24 June 2011 Editor's Draft.
+ This specification is the 30 June 2011 Editor's Draft.
</p><!-- UNDER NO CIRCUMSTANCES IS THE PRECEDING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><p>Work on this specification is also done at the <a href="http://www.whatwg.org/">WHATWG</a>. The W3C HTML working group
actively pursues convergence with the WHATWG, as required by the <a href="http://www.w3.org/2007/03/HTML-WG-charter">W3C HTML working
group charter</a>.</p><!-- UNDER NO CIRCUMSTANCES IS THE FOLLOWING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><p>This document was produced by a group operating under the <a href="http://www.w3.org/Consortium/Patent-Policy-20040205/">5
@@ -767,7 +767,7 @@
<li><a href="#seeking"><span class="secno">4.8.10.9 </span>Seeking</a></li>
<li><a href="#media-resources-with-multiple-media-tracks"><span class="secno">4.8.10.10 </span>Media resources with multiple media tracks</a>
<ol>
- <li><a href="#tracklist-objects"><span class="secno">4.8.10.10.1 </span><code>TrackList</code> objects</a></li>
+ <li><a href="#audiotracklist-and-videotracklist-objects"><span class="secno">4.8.10.10.1 </span><code>AudioTrackList</code> and <code>VideoTrackList</code> objects</a></li>
<li><a href="#selecting-specific-audio-and-video-tracks-declaratively"><span class="secno">4.8.10.10.2 </span>Selecting specific audio and video tracks declaratively</a></ol></li>
<li><a href="#synchronising-multiple-media-elements"><span class="secno">4.8.10.11 </span>Synchronising multiple media elements</a>
<ol>
@@ -2941,9 +2941,9 @@
specification. <a href="#refsWEBIDL">[WEBIDL]</a></p>
<p>The terms <dfn id="supported-property-indices">supported property indices</dfn>, <dfn id="supported-property-names">supported
- property names</dfn>, and <dfn id="dfn-read-only-array" title="dfn-read-only-array">read
- only</dfn> (when applied to arrays) are used as defined in the
- WebIDL specification.</p>
+ property names</dfn>, <dfn id="determine-the-value-of-an-indexed-property">determine the value of an indexed
+ property</dfn>, <dfn id="array-host-objects">array host objects</dfn>, and <dfn id="dfn-read-only-array" title="dfn-read-only-array">read only</dfn> (when applied to
+ arrays) are used as defined in the WebIDL specification.</p>
<p id="float-nan">Except where otherwise specified, if an IDL
attribute that is a floating point number type (<code title="">double</code>) is assigned an Infinity or Not-a-Number
@@ -22294,9 +22294,9 @@
attribute boolean <a href="#dom-media-defaultmuted" title="dom-media-defaultMuted">defaultMuted</a>;
// tracks
- readonly attribute <a href="#multipletracklist">MultipleTrackList</a> <a href="#dom-media-audiotracks" title="dom-media-audioTracks">audioTracks</a>;
- readonly attribute <a href="#exclusivetracklist">ExclusiveTrackList</a> <a href="#dom-media-videotracks" title="dom-media-videoTracks">videoTracks</a>;
- readonly attribute <a href="#texttrack">TextTrack</a>[] <a href="#dom-media-texttracks" title="dom-media-textTracks">textTracks</a>;
+ readonly attribute <a href="#audiotracklist">AudioTrackList</a> <a href="#dom-media-audiotracks" title="dom-media-audioTracks">audioTracks</a>;
+ readonly attribute <a href="#videotracklist">VideoTrackList</a> <a href="#dom-media-videotracks" title="dom-media-videoTracks">videoTracks</a>;
+ readonly attribute <a href="#texttracklist">TextTrackList</a> <a href="#dom-media-texttracks" title="dom-media-textTracks">textTracks</a>;
<a href="#mutabletexttrack">MutableTextTrack</a> <a href="#dom-media-addtexttrack" title="dom-media-addTextTrack">addTextTrack</a>(in DOMString kind, in optional DOMString label, in optional DOMString language);
};</pre><p>The <dfn id="media-element-attributes">media element attributes</dfn>, <code title="attr-media-src"><a href="#attr-media-src">src</a></code>, <code title="attr-media-crossorigin"><a href="#attr-media-crossorigin">crossorigin</a></code>, <code title="attr-media-preload"><a href="#attr-media-preload">preload</a></code>, <code title="attr-media-autoplay"><a href="#attr-media-autoplay">autoplay</a></code>,
<code title="attr-media-mediagroup"><a href="#attr-media-mediagroup">mediagroup</a></code>,
@@ -24642,7 +24642,7 @@
<dd>
- <p>Returns a <code><a href="#multipletracklist">MultipleTrackList</a></code> object representing
+ <p>Returns an <code><a href="#audiotracklist">AudioTrackList</a></code> object representing
the audio tracks available in the <a href="#media-resource">media resource</a>.</p>
</dd>
@@ -24651,7 +24651,7 @@
<dd>
- <p>Returns an <code><a href="#exclusivetracklist">ExclusiveTrackList</a></code> object representing
+ <p>Returns an <code><a href="#videotracklist">VideoTrackList</a></code> object representing
the video tracks available in the <a href="#media-resource">media resource</a>.</p>
</dd>
@@ -24660,23 +24660,24 @@
<p>The <dfn id="dom-media-audiotracks" title="dom-media-audioTracks"><code>audioTracks</code></dfn>
attribute of a <a href="#media-element">media element</a> must return a
- <a href="#live">live</a> <code><a href="#multipletracklist">MultipleTrackList</a></code> object representing
+ <a href="#live">live</a> <code><a href="#audiotracklist">AudioTrackList</a></code> object representing
the audio tracks available in the <a href="#media-element">media element</a>'s
<a href="#media-resource">media resource</a>. The same object must be returned each
time.</p>
<p>The <dfn id="dom-media-videotracks" title="dom-media-videoTracks"><code>videoTracks</code></dfn>
attribute of a <a href="#media-element">media element</a> must return a
- <a href="#live">live</a> <code><a href="#exclusivetracklist">ExclusiveTrackList</a></code> object
+ <a href="#live">live</a> <code><a href="#videotracklist">VideoTrackList</a></code> object
representing the video tracks available in the <a href="#media-element">media
element</a>'s <a href="#media-resource">media resource</a>. The same object must
be returned each time.</p>
- <p class="note">There are only ever two <code><a href="#tracklist">TrackList</a></code>
- objects (one <code><a href="#multipletracklist">MultipleTrackList</a></code> object and one
- <code><a href="#exclusivetracklist">ExclusiveTrackList</a></code> object) per <a href="#media-element">media
+ <p class="note">There are only ever one <code><a href="#audiotracklist">AudioTrackList</a></code>
+ object and one <code><a href="#videotracklist">VideoTrackList</a></code> object per <a href="#media-element">media
element</a>, even if another <a href="#media-resource">media resource</a> is
- loaded into the element: the objects are reused.</p>
+ loaded into the element: the objects are reused. (The
+ <code><a href="#audiotrack">AudioTrack</a></code> and <code><a href="#videotrack">VideoTrack</a></code> objects are
+ not, though.)</p>
</div><div class="example">
@@ -24699,9 +24700,9 @@
container.appendChild(video);
video.onloadedmetadata = function (event) {
for (var i = 0; i < video.videoTracks.length; i += 1) {
- if (video.videoTracks.getKind(i) == 'sign') {
+ if (video.videoTracks[i].kind == 'sign') {
var sign = document.createElement('video');
- sign.src = url + '#track=' + video.videoTracks.getID(i);
+ sign.src = url + '#track=' + video.videoTracks[i].id;
sign.autoplay = true;
sign.controller = controller;
container.appendChild(sign);
@@ -24712,30 +24713,39 @@
}
</script></pre>
- </div><h6 id="tracklist-objects"><span class="secno">4.8.10.10.1 </span><code><a href="#tracklist">TrackList</a></code> objects</h6><p>The <code><a href="#multipletracklist">MultipleTrackList</a></code> and
- <code><a href="#exclusivetracklist">ExclusiveTrackList</a></code> interfaces, used by the attributes
- defined in the previous section, are substantially similar. Their
- common features are defined in the <code><a href="#tracklist">TrackList</a></code> interface,
- from which they both inherit.</p><pre class="idl">interface <dfn id="tracklist">TrackList</dfn> {
- readonly attribute unsigned long <a href="#dom-tracklist-length" title="dom-TrackList-length">length</a>;
- DOMString <a href="#dom-tracklist-getid" title="dom-TrackList-getID">getID</a>(in unsigned long index);
- DOMString <a href="#dom-tracklist-getkind" title="dom-TrackList-getKind">getKind</a>(in unsigned long index);
- DOMString <a href="#dom-tracklist-getlabel" title="dom-TrackList-getLabel">getLabel</a>(in unsigned long index);
- DOMString <a href="#dom-tracklist-getlanguage" title="dom-TrackList-getLanguage">getLanguage</a>(in unsigned long index);
-
+ </div><h6 id="audiotracklist-and-videotracklist-objects"><span class="secno">4.8.10.10.1 </span><code><a href="#audiotracklist">AudioTrackList</a></code> and <code><a href="#videotracklist">VideoTrackList</a></code> objects</h6><p>The <code><a href="#audiotracklist">AudioTrackList</a></code> and <code><a href="#videotracklist">VideoTrackList</a></code>
+ interfaces are used by attributes defined in the previous
+ section.<pre class="idl">interface <dfn id="audiotracklist">AudioTrackList</dfn> {
+ readonly attribute unsigned long <a href="#dom-audiotracklist-length" title="dom-AudioTrackList-length">length</a>;
+ getter <a href="#audiotrack">AudioTrack</a> (in unsigned long index);
+ <a href="#audiotrack">AudioTrack</a>? <a href="#dom-audiotracklist-gettrackbyid" title="dom-AudioTrackList-getTrackById">getTrackById</a>(in DOMString id);
attribute <a href="#function">Function</a>? <a href="#handler-tracklist-onchange" title="handler-TrackList-onchange">onchange</a>;
};
-interface <dfn id="multipletracklist">MultipleTrackList</dfn> : <a href="#tracklist">TrackList</a> {
- boolean <a href="#dom-tracklist-isenabled" title="dom-TrackList-isEnabled">isEnabled</a>(in unsigned long index);
- void <a href="#dom-tracklist-enable" title="dom-TrackList-enable">enable</a>(in unsigned long index);
- void <a href="#dom-tracklist-disable" title="dom-TrackList-disable">disable</a>(in unsigned long index);
+interface <dfn id="audiotrack">AudioTrack</dfn> {
+ readonly attribute DOMString <a href="#dom-audiotrack-id" title="dom-AudioTrack-id">id</a>;
+ readonly attribute DOMString <a href="#dom-audiotrack-kind" title="dom-AudioTrack-kind">kind</a>;
+ readonly attribute DOMString <a href="#dom-audiotrack-label" title="dom-AudioTrack-label">label</a>;
+ readonly attribute DOMString <a href="#dom-audiotrack-language" title="dom-AudioTrack-language">language</a>;
+ attribute boolean <a href="#dom-audiotrack-enabled" title="dom-AudioTrack-enabled">enabled</a>;
};
-interface <dfn id="exclusivetracklist">ExclusiveTrackList</dfn> : <a href="#tracklist">TrackList</a> {
- readonly attribute long <a href="#dom-tracklist-selectedindex" title="dom-TrackList-selectedIndex">selectedIndex</a>;
- void <a href="#dom-tracklist-select" title="dom-TrackList-select">select</a>(in unsigned long index);
-};</pre><dl class="domintro"><dt><var title="">tracks</var> . <code title="dom-TrackList-length"><a href="#dom-tracklist-length">length</a></code></dt>
+interface <dfn id="videotracklist">VideoTrackList</dfn> {
+ readonly attribute unsigned long <a href="#dom-videotracklist-length" title="dom-VideoTrackList-length">length</a>;
+ getter <a href="#videotrack">VideoTrack</a> (in unsigned long index);
+ <a href="#videotrack">VideoTrack</a>? <a href="#dom-videotracklist-gettrackbyid" title="dom-VideoTrackList-getTrackById">getTrackById</a>(in DOMString id);
+ readonly attribute long <a href="#dom-videotracklist-selectedindex" title="dom-VideoTrackList-selectedIndex">selectedIndex</a>;
+ attribute <a href="#function">Function</a>? <a href="#handler-tracklist-onchange" title="handler-TrackList-onchange">onchange</a>;
+};
+
+interface <dfn id="videotrack">VideoTrack</dfn> {
+ readonly attribute DOMString <a href="#dom-videotrack-id" title="dom-VideoTrack-id">id</a>;
+ readonly attribute DOMString <a href="#dom-videotrack-kind" title="dom-VideoTrack-kind">kind</a>;
+ readonly attribute DOMString <a href="#dom-videotrack-label" title="dom-VideoTrack-label">label</a>;
+ readonly attribute DOMString <a href="#dom-videotrack-language" title="dom-VideoTrack-language">language</a>;
+ attribute boolean <a href="#dom-videotrack-selected" title="dom-VideoTrack-selected">selected</a>;
+};</pre><dl class="domintro"><dt><var title="">media</var> . <code title="dom-media-audioTracks"><a href="#dom-media-audiotracks">audioTracks</a></code> . <code title="dom-AudioTrackList-length"><a href="#dom-audiotracklist-length">length</a></code></dt>
+ <dt><var title="">media</var> . <code title="dom-media-videoTracks"><a href="#dom-media-videotracks">videoTracks</a></code> . <code title="dom-VideoTrackList-length"><a href="#dom-videotracklist-length">length</a></code></dt>
<dd>
@@ -24743,65 +24753,74 @@
</dd>
- <dt><var title="">id</var> = <var title="">tracks</var> . <code title="dom-TrackList-getID"><a href="#dom-tracklist-getid">getID</a></code>( <var title="">index</var> )</dt>
+ <dt><var title="">audioTrack</var> = <var title="">media</var> . <code title="dom-media-audioTracks"><a href="#dom-media-audiotracks">audioTracks</a></code>[<var title="">index</var>]</dt>
+ <dt><var title="">videoTrack</var> = <var title="">media</var> . <code title="dom-media-videoTracks"><a href="#dom-media-videotracks">videoTracks</a></code>[<var title="">index</var>]</dt>
<dd>
- <p>Returns the ID of the given track. This is the ID that can be
- used with a fragment identifier if the format supports the
- <cite>Media Fragments URI</cite> syntax. <a href="#hrefMEDIAFRAG">[MEDIAFRAG]</a></p>
+ <p>Returns the specified <code><a href="#audiotrack">AudioTrack</a></code> or <code><a href="#videotrack">VideoTrack</a></code> object.</p>
</dd>
- <dt><var title="">kind</var> = <var title="">tracks</var> . <code title="dom-TrackList-getKind"><a href="#dom-tracklist-getkind">getKind</a></code>( <var title="">index</var> )</dt>
+ <dt><var title="">audioTrack</var> = <var title="">media</var> . <code title="dom-media-audioTracks"><a href="#dom-media-audiotracks">audioTracks</a></code> . <code title="dom-AudioTrackList-getTrackById"><a href="#dom-audiotracklist-gettrackbyid">getTrackById</a></code>( <var title="">id</var> )</dt>
+ <dt><var title="">videoTrack</var> = <var title="">media</var> . <code title="dom-media-videoTracks"><a href="#dom-media-videotracks">videoTracks</a></code> . <code title="dom-VideoTrackList-getTrackById"><a href="#dom-videotracklist-gettrackbyid">getTrackById</a></code>( <var title="">id</var> )</dt>
<dd>
- <p>Returns the category the given track falls into. The <a href="#dom-TrackList-getKind-categories">possible track categories</a> are given below.</p>
+ <p>Returns the <code><a href="#audiotrack">AudioTrack</a></code> or <code><a href="#videotrack">VideoTrack</a></code> object with the given identifier, or null if no track has that identifier.</p>
</dd>
- <dt><var title="">label</var> = <var title="">tracks</var> . <code title="dom-TrackList-getLabel"><a href="#dom-tracklist-getlabel">getLabel</a></code>( <var title="">index</var> )</dt>
+ <dt><var title="">audioTrack</var> . <code title="dom-AudioTrack-id"><a href="#dom-audiotrack-id">id</a></code></dt>
+ <dt><var title="">videoTrack</var> . <code title="dom-VideoTrack-id"><a href="#dom-videotrack-id">id</a></code></dt>
<dd>
- <p>Returns the label of the given track, if known, or the empty string otherwise.</p>
+ <p>Returns the ID of the given track. This is the ID that can be
+ used with a fragment identifier if the format supports the
+ <cite>Media Fragments URI</cite> syntax, and that can be used with
+ the <code title="">getTrackById()</code> method. <a href="#hrefMEDIAFRAG">[MEDIAFRAG]</a></p>
</dd>
- <dt><var title="">language</var> = <var title="">tracks</var> . <code title="dom-TrackList-getLanguage"><a href="#dom-tracklist-getlanguage">getLanguage</a></code>( <var title="">index</var> )</dt>
+ <dt><var title="">audioTrack</var> . <code title="dom-AudioTrack-kind"><a href="#dom-audiotrack-kind">kind</a></code></dt>
+ <dt><var title="">videoTrack</var> . <code title="dom-VideoTrack-kind"><a href="#dom-videotrack-kind">kind</a></code></dt>
<dd>
- <p>Returns the language of the given track, if known, or the empty string otherwise.</p>
+ <p>Returns the category the given track falls into. The <a href="#dom-TrackList-getKind-categories">possible track categories</a> are given below.</p>
</dd>
- <dt><var title="">enabled</var> = <var title="">audioTracks</var> . <code title="dom-TrackList-isEnabled"><a href="#dom-tracklist-isenabled">isEnabled</a></code>( <var title="">index</var> )</dt>
+ <dt><var title="">audioTrack</var> . <code title="dom-AudioTrack-label"><a href="#dom-audiotrack-label">label</a></code></dt>
+ <dt><var title="">videoTrack</var> . <code title="dom-VideoTrack-label"><a href="#dom-videotrack-label">label</a></code></dt>
<dd>
- <p>Returns true if the given track is active, and false otherwise.</p>
+ <p>Returns the label of the given track, if known, or the empty string otherwise.</p>
</dd>
- <dt><var title="">audioTracks</var> . <code title="dom-TrackList-enable"><a href="#dom-tracklist-enable">enable</a></code>( <var title="">index</var> )</dt>
+ <dt><var title="">audioTrack</var> . <code title="dom-AudioTrack-language"><a href="#dom-audiotrack-language">language</a></code></dt>
+ <dt><var title="">videoTrack</var> . <code title="dom-VideoTrack-language"><a href="#dom-videotrack-language">language</a></code></dt>
<dd>
- <p>Enables the given track.</p>
+ <p>Returns the language of the given track, if known, or the empty string otherwise.</p>
</dd>
- <dt><var title="">audioTracks</var> . <code title="dom-TrackList-disable"><a href="#dom-tracklist-disable">disable</a></code>( <var title="">index</var> )</dt>
+ <dt><var title="">audioTrack</var> . <code title="dom-AudioTrack-enabled"><a href="#dom-audiotrack-enabled">enabled</a></code> [ = <var title="">value</var> ]</dt>
<dd>
- <p>Disables the given track.</p>
+ <p>Returns true if the given track is active, and false otherwise.</p>
+
+ <p>Can be set, to change whether the track is enabled or not. If multiple audio tracks are enabled simultaneously, they are mixed.</p>
</dd>
- <dt><var title="">videoTracks</var> . <code title="dom-TrackList-selectedIndex"><a href="#dom-tracklist-selectedindex">selectedIndex</a></code></dt>
+ <dt><var title="">media</var> . <code title="dom-media-videoTracks"><a href="#dom-media-videotracks">videoTracks</a></code> . <code title="dom-VideoTrackList-selectedIndex"><a href="#dom-videotracklist-selectedindex">selectedIndex</a></code></dt>
<dd>
@@ -24809,42 +24828,106 @@
</dd>
- <dt><var title="">videoTracks</var> . <code title="dom-TrackList-select"><a href="#dom-tracklist-select">select</a></code>( <var title="">index</var> )</dt>
+ <dt><var title="">videoTrack</var> . <code title="dom-VideoTrack-selected"><a href="#dom-videotrack-selected">selected</a></code> [ = <var title="">value</var> ]</dt>
<dd>
- <p>Selects the given track.</p>
+ <p>Returns true if the given track is active, and false otherwise.</p>
+
+ <p>Can be set, to change whether the track is selected or not. Either zero or one video track is selected; selecting a new track while a previous one is selected will unselect the previous one.</p>
</dd>
</dl><div class="impl">
- <p>The <dfn id="dom-tracklist-length" title="dom-TrackList-length"><code>length</code></dfn>
- attribute must return the number of tracks represented by the
- <code><a href="#tracklist">TrackList</a></code> object at the time of getting.</p>
+ <p>An <code><a href="#audiotracklist">AudioTrackList</a></code> object represents a dynamic list
+ of zero or more audio tracks, of which zero or more can be enabled
+ at a time. Each audio track is represented by an
+ <code><a href="#audiotrack">AudioTrack</a></code> object.</p>
- <p>Tracks in a <code><a href="#tracklist">TrackList</a></code> object must be consistently
- ordered. If the <a href="#media-resource">media resource</a> is in a format that
- defines an order, then that order must be used; otherwise, the order
- must be the relative order in which the tracks are declared in the
- <a href="#media-resource">media resource</a>. Each track in a <code><a href="#tracklist">TrackList</a></code>
- thus has an index; the first has the index 0, and each subsequent
- track is numbered one higher than the previous one.</p>
+ <p>A <code><a href="#videotracklist">VideoTrackList</a></code> object represents a dynamic list of
+ zero or more video tracks, of which zero or one can be selected at a
+ time. Each video track is represented by a <code><a href="#videotrack">VideoTrack</a></code>
+ object.</p>
- <p>The <dfn id="dom-tracklist-getid" title="dom-TrackList-getID"><code>getID(<var title="">index</var>)</code></dfn> method must return the identifier
- of the track with index <var title="">index</var>, if there is one.
- If there is no such track, then the method must instead throw an
- <code><a href="#index_size_err">INDEX_SIZE_ERR</a></code> exception. If the <a href="#media-resource">media
- resource</a> is in a format that supports the <cite>Media
- Fragments URI</cite> fragment identifier syntax, the returned
- identifier must be the same identifier that would enable the track
- if used as the name of a track in the track dimension of such a
+ <p>Tracks in <code><a href="#audiotracklist">AudioTrackList</a></code> and
+ <code><a href="#videotracklist">VideoTrackList</a></code> objects must be consistently ordered. If
+ the <a href="#media-resource">media resource</a> is in a format that defines an
+ order, then that order must be used; otherwise, the order must be
+ the relative order in which the tracks are declared in the
+ <a href="#media-resource">media resource</a>. The order used is called the <i>natural
+ order</i> of the list.</p>
+
+ <p class="note">Each track in a <code>TrackList</code> thus has an
+ index; the first has the index 0, and each subsequent track is
+ numbered one higher than the previous one. If a <a href="#media-resource">media
+ resource</a> dynamically adds or removes audio or video tracks,
+ then the indices of the tracks will change dynamically. If the
+ <a href="#media-resource">media resource</a> changes entirely, then all the previous
+ tracks will be removed and replaced with new tracks.</p>
+
+ <p>The <dfn id="dom-audiotracklist-length" title="dom-AudioTrackList-length"><code>AudioTrackList.length</code></dfn>
+ and <dfn id="dom-videotracklist-length" title="dom-VideoTrackList-length"><code>VideoTrackList.length</code></dfn>
+ attributes must return the number of tracks represented by their
+ objects at the time of getting.</p>
+
+ <p>The <a href="#supported-property-indices">supported property indices</a> of
+ <code><a href="#audiotracklist">AudioTrackList</a></code> and <code><a href="#videotracklist">VideoTrackList</a></code> objects
+ at any instant are the numbers from zero to the number of tracks
+ represented by the respective object minus one, if any tracks are
+ represented. If a <code><a href="#audiotracklist">AudioTrackList</a></code> or
+ <code><a href="#videotracklist">VideoTrackList</a></code> object represents no tracks, it has no
+ <a href="#supported-property-indices">supported property indices</a>.</p>
+
+ <p>To <a href="#determine-the-value-of-an-indexed-property">determine the value of an indexed property</a> for a
+ given index <var title="">index</var> in an
+ <code><a href="#audiotracklist">AudioTrackList</a></code> or <code><a href="#videotracklist">VideoTrackList</a></code> object
+ <var title="">list</var>, the user agent must return the
+ <code><a href="#audiotrack">AudioTrack</a></code> or <code><a href="#videotrack">VideoTrack</a></code> object that
+ represents the <var title="">index</var>th track in <var title="">list</var>.</p>
+
+ <p>The <dfn id="dom-audiotracklist-gettrackbyid" title="dom-AudioTrackList-getTrackById"><code>AudioTrackList.getTrackById(<var title="">id</var>)</code></dfn> and <dfn id="dom-videotracklist-gettrackbyid" title="dom-VideoTrackList-getTrackById"><code>VideoTrackList.getTrackById(<var title="">id</var>)</code></dfn> methods must return the first
+ <code><a href="#audiotrack">AudioTrack</a></code> or <code><a href="#videotrack">VideoTrack</a></code> object
+ (respectively) in the <code><a href="#audiotrack">AudioTrack</a></code> or
+ <code><a href="#videotrack">VideoTrack</a></code> object (respectively) whose identifier is
+ equal to the value of the <var title="">id</var> argument (in the
+ natural order of the list, as defined above). When no tracks match
+ the given argument, the methods must return null.</p>
+
+ <p>The <code><a href="#audiotrack">AudioTrack</a></code> and <code><a href="#videotrack">VideoTrack</a></code> objects
+ represent specific tracks of a <a href="#media-resource">media resource</a>. Each
+ track can have an identifier, category, label, and language. These
+ aspects of a track are permanent for the lifetime of the track; even
+ if a track is removed from a <a href="#media-resource">media resource</a>'s
+ <code><a href="#audiotracklist">AudioTrackList</a></code> or <code><a href="#videotracklist">VideoTrackList</a></code> objects,
+ those aspects do not change.</p>
+
+ <p>In addition, <code><a href="#audiotrack">AudioTrack</a></code> objects can each be enabled
+ or disabled; this is the audio track's <i>enabled state</i>. When an
+ <code><a href="#audiotrack">AudioTrack</a></code> is created, its <i>enabled state</i> must be
+ set to false (disabled). The <a href="#concept-media-load-resource" title="concept-media-load-resource">resource fetch algorithm</a>
+ can override this.</p>
+
+ <p>Similarly, a single <code><a href="#videotrack">VideoTrack</a></code> object per
+ <code><a href="#videotracklist">VideoTrackList</a></code> object can be selected, this is the
+ video track's <i>selection state</i>. When an
+ <code><a href="#videotrack">VideoTrack</a></code> is created, its <i>selection state</i> must
+ be set to false (not selected). The <a href="#concept-media-load-resource" title="concept-media-load-resource">resource fetch algorithm</a>
+ can override this.</p>
+
+ <p>The <dfn id="dom-audiotrack-id" title="dom-AudioTrack-id"><code>AudioTrack.id</code></dfn> and <dfn id="dom-videotrack-id" title="dom-VideoTrack-id"><code>VideTrack.id</code></dfn>
+ attributes must return the identifier of the track, if it has one,
+ or the empty string otherwise. If the <a href="#media-resource">media resource</a> is
+ in a format that supports the <cite>Media Fragments URI</cite>
+ fragment identifier syntax, the identifier returned for a particular
+ track must be the same identifier that would enable the track if
+ used as the name of a track in the track dimension of such a
fragment identifier. <a href="#refsMEDIAFRAG">[MEDIAFRAG]</a></p>
- <p>The <dfn id="dom-tracklist-getkind" title="dom-TrackList-getKind"><code>getKind(<var title="">index</var>)</code></dfn> method must return the category
- of the track with index <var title="">index</var>, if there is one.
- If there is no such track, then the method must instead throw an
- <code><a href="#index_size_err">INDEX_SIZE_ERR</a></code> exception.</p>
+ <p>The <dfn id="dom-audiotrack-kind" title="dom-AudioTrack-kind"><code>AudioTrack.kind</code></dfn> and
+ <dfn id="dom-videotrack-kind" title="dom-VideoTrack-kind"><code>VideoTrack.kind</code></dfn>
+ attributes must return the category of the track, if it has one, or
+ the empty string otherwise.</p>
<p>The category of a track is the string given in the first column
of the table below that is the most appropriate for the track based
@@ -24855,108 +24938,108 @@
what the category given in the cell in the first column of that row
applies to; a category is only appropriate for an audio track if it
applies to audio tracks, and a category is only appropriate for
- video tracks if it applies to video tracks.</p>
+ video tracks if it applies to video tracks. Categories must only be
+ returned for <code><a href="#audiotrack">AudioTrack</a></code> objects if they are appropriate
+ for audio, and must only be returned for <code><a href="#videotrack">VideoTrack</a></code>
+ objects if they are appropriate for video.</p>
- </div><table id="dom-TrackList-getKind-categories"><caption>Return values for <code title="dom-TrackList-getKind"><a href="#dom-tracklist-getkind">getKind()</a></code></caption>
+ </div><table id="dom-TrackList-getKind-categories"><caption>Return values for <code title="dom-AudioTrack-kind"><a href="#dom-audiotrack-kind">AudioTrack.kind()</a></code> and <code title="dom-VideoTrack-kind"><a href="#dom-videotrack-kind">VideoTrack.kind()</a></code></caption>
<thead><tr><th>Category
<th>Definition
<th>Applies to...</th>
<th>Examples
- <tbody><tr><td>"<dfn id="dom-tracklist-getkind-alternate" title="dom-TrackList-getKind-alternate"><code>alternative</code></dfn>"
+ <tbody><tr><td>"<dfn id="value-track-kind-alternate" title="value-track-kind-alternate"><code>alternative</code></dfn>"
<td>A possible alternative to the main track, e.g. a different take of a song (audio), or a different angle (video).
<td>Audio and video.
<td>Ogg: "audio/alterate" or "video/alternate".
- <tr><td>"<dfn id="dom-tracklist-getkind-description" title="dom-TrackList-getKind-description"><code>description</code></dfn>"
+ <tr><td>"<dfn id="value-track-kind-description" title="value-track-kind-description"><code>description</code></dfn>"
<td>An audio description of a video track.
<td>Audio only.
<td>Ogg: "audio/audiodesc".
- <tr><td>"<dfn id="dom-tracklist-getkind-main" title="dom-TrackList-getKind-main"><code>main</code></dfn>"
+ <tr><td>"<dfn id="value-track-kind-main" title="value-track-kind-main"><code>main</code></dfn>"
<td>The primary audio or video track.
<td>Audio and video.
<td>Ogg: "audio/main" or "video/main"; WebM: the "FlagDefault" element is set.
- <tr><td>"<dfn id="dom-tracklist-getkind-sign" title="dom-TrackList-getKind-sign"><code>sign</code></dfn>"
+ <tr><td>"<dfn id="value-track-kind-sign" title="value-track-kind-sign"><code>sign</code></dfn>"
<td>A sign-language interpretation of an audio track.
<td>Video only.
<td>Ogg: "video/sign".
- <tr><td>"<dfn id="dom-tracklist-getkind-translation" title="dom-TrackList-getKind-translation"><code>translation</code></dfn>"
+ <tr><td>"<dfn id="value-track-kind-translation" title="value-track-kind-translation"><code>translation</code></dfn>"
<td>A translated version of the main track.
<td>Audio only.
<td>Ogg: "audio/dub".
- <tr><td>"<dfn id="dom-tracklist-getkind-none" title="dom-TrackList-getKind-none"><code></code></dfn>" (empty string)
+ <tr><td>"<dfn id="value-track-kind-commentary" title="value-track-kind-commentary"><code>commentary</code></dfn>"
+ <td>Commentary on the primary audio or video track, e.g. a director's commentary.
+ <td>Audio and video.
+ <td>No known formats expose this category at this time.
+
+ <tr><td>"<dfn id="value-track-kind-none" title="value-track-kind-none"><code></code></dfn>" (empty string)
<td>No explicit kind, or the kind given by the track's metadata is not recognised by the user agent.
<td>Audio and video.
<td>Any other track type or track role.
</table><div class="impl">
- <p>The <dfn id="dom-tracklist-getlabel" title="dom-TrackList-getLabel"><code>getLabel(<var title="">index</var>)</code></dfn> method must return the label of
- the track with index <var title="">index</var>, if there is one and
- it has a label. If there is no such track, then the method must
- instead throw an <code><a href="#index_size_err">INDEX_SIZE_ERR</a></code> exception. If there is
- a track with index <var title="">index</var>, but it has no label,
- then the method must return the empty string.</p>
+ <p>The <dfn id="dom-audiotrack-label" title="dom-AudioTrack-label"><code>AudioTrack.label</code></dfn> and
+ <dfn id="dom-videotrack-label" title="dom-VideoTrack-label"><code>VideoTrack.label</code></dfn>
+ attributes must return the label of the track, if it has one, or the
+ empty string otherwise.</p>
- <p>The <dfn id="dom-tracklist-getlanguage" title="dom-TrackList-getLanguage"><code>getLanguage(<var title="">index</var>)</code></dfn> method must return the BCP 47
- language tag of the language of the track with index <var title="">index</var>, if there is one and it has a language. If
- there is no such track, then the method must instead throw an
- <code><a href="#index_size_err">INDEX_SIZE_ERR</a></code> exception. If there is a track with
- index <var title="">index</var>, but it has no language, or the user
+ <p>The <dfn id="dom-audiotrack-language" title="dom-AudioTrack-language"><code>AudioTrack.language</code></dfn>
+ and <dfn id="dom-videotrack-language" title="dom-VideoTrack-language"><code>VideoTrack.language</code></dfn>
+ attributes must return the BCP 47 language tag of the language of
+ the track, if it has one, or the empty string otherwise. If the user
agent is not able to express that language as a BCP 47 language tag
(for example because the language information in the <a href="#media-resource">media
resource</a>'s format is a free-form string without a defined
- interpretation), then the method must return the empty string.</p>
-
- <hr><p>A <code><a href="#multipletracklist">MultipleTrackList</a></code> object represents a track list
- where multiple tracks can be enabled simultaneously. Each track is
- either enabled or disabled.</p>
-
- <p>The <dfn id="dom-tracklist-isenabled" title="dom-TrackList-isEnabled"><code>isEnabled(<var title="">index</var>)</code></dfn> method must return true if there
- is a track with index <var title="">index</var>, and it is currently
- enabled, false if there is a track with index <var title="">index</var>, but it is currently disabled, and must throw
- an <code><a href="#index_size_err">INDEX_SIZE_ERR</a></code> exception if there is no track with
- index <var title="">index</var>.</p>
-
- <p>The <dfn id="dom-tracklist-enable" title="dom-TrackList-enable"><code>enable(<var title="">index</var>)</code></dfn> method must enable the track with
- index <var title="">index</var>, if there is one. If there is not,
- it must instead throw an <code><a href="#index_size_err">INDEX_SIZE_ERR</a></code> exception.</p>
-
- <p>The <dfn id="dom-tracklist-disable" title="dom-TrackList-disable"><code>disable(<var title="">index</var>)</code></dfn> method must disable the track with
- index <var title="">index</var>, if there is one. If there is not,
- it must instead throw an <code><a href="#index_size_err">INDEX_SIZE_ERR</a></code> exception.</p>
+ interpretation), then the method must return the empty string, as if
+ the track had no language.</p>
- <p>Whenever a track is enabled or disabled, the user agent must
- <a href="#queue-a-task">queue a task</a> to <a href="#fire-a-simple-event">fire a simple event</a> named
- <code title="event-media-change">change</code> at the
- <code><a href="#multipletracklist">MultipleTrackList</a></code> object.</p>
+ <p>The <dfn id="dom-audiotrack-enabled" title="dom-AudioTrack-enabled"><code>AudioTrack.enabled</code></dfn>
+ attribute, on getting, must return true if the track is currently
+ enabled, and false otherwise. On setting, it must enable the track
+ if the new value is true, and disable it otherwise. (If the track is
+ no longer in an <code><a href="#audiotracklist">AudioTrackList</a></code> object, then the track
+ being enabled or disabled has no effect beyond changing the value of
+ the attribute on the <code><a href="#audiotrack">AudioTrack</a></code> object.)</p>
- <hr><p>An <code><a href="#exclusivetracklist">ExclusiveTrackList</a></code> object represents a track list
- where exactly one track is selected at a time.</p>
+ <p>Whenever an audio track in an <code><a href="#audiotracklist">AudioTrackList</a></code> is
+ enabled or disabled, the user agent must <a href="#queue-a-task">queue a task</a>
+ to <a href="#fire-a-simple-event">fire a simple event</a> named <code title="event-media-change">change</code> at the
+ <code><a href="#audiotracklist">AudioTrackList</a></code> object.</p>
- <p>The <dfn id="dom-tracklist-selectedindex" title="dom-TrackList-selectedIndex"><code>selectedIndex</code></dfn>
- attribute must return the index of the currently selected track. If
- the <code><a href="#exclusivetracklist">ExclusiveTrackList</a></code> object does not represent any
- tracks, it must instead return −1.</p>
+ <p>The <dfn id="dom-videotracklist-selectedindex" title="dom-VideoTrackList-selectedIndex"><code>VideoTrackList.selectedIndex</code></dfn>
+ attribute must return the index of the currently selected track, if
+ any. If the <code><a href="#videotracklist">VideoTrackList</a></code> object does not currently
+ represent any tracks, or if none of the tracks are selected, it must
+ instead return −1.</p>
- <p>The <dfn id="dom-tracklist-select" title="dom-TrackList-select"><code>select(<var title="">index</var>)</code></dfn> must select the track with index
- <var title="">index</var>, if there is one, unselecting whichever
- track was previously selected. If there is no track with index <var title="">index</var>, it must instead throw an
- <code><a href="#index_size_err">INDEX_SIZE_ERR</a></code> exception.</p>
+ <p>The <dfn id="dom-videotrack-selected" title="dom-VideoTrack-selected"><code>VideoTrack.selected</code></dfn>
+ attribute, on getting, must return true if the track is currently
+ selected, and false otherwise. On setting, it must select the track
+ if the new value is true, and unselect it otherwise. If the track is
+ in a <code><a href="#videotracklist">VideoTrackList</a></code>, then all the other
+ <code><a href="#videotrack">VideoTrack</a></code> objects in that list must be unselected. (If
+ the track is no longer in a <code><a href="#videotracklist">VideoTrackList</a></code> object, then
+ the track being selected or unselected has no effect beyond changing
+ the value of the attribute on the <code><a href="#videotrack">VideoTrack</a></code>
+ object.)</p>
- <p>Whenever the selected track is changed, the user agent must
- <a href="#queue-a-task">queue a task</a> to <a href="#fire-a-simple-event">fire a simple event</a> named
- <code title="event-media-change">change</code> at the
- <code><a href="#multipletracklist">MultipleTrackList</a></code> object.</p>
+ <p>Whenever a track in a <code><a href="#videotracklist">VideoTrackList</a></code> that was
+ previously not selected is selected, the user agent must <a href="#queue-a-task">queue
+ a task</a> to <a href="#fire-a-simple-event">fire a simple event</a> named <code title="event-media-change">change</code> at the
+ <code><a href="#videotracklist">VideoTrackList</a></code> object.</p>
<hr><p>The following are the <a href="#event-handlers">event handlers</a> (and their
corresponding <a href="#event-handler-event-type" title="event handler event type">event handler
event types</a>) that must be supported, as IDL attributes, by
- all objects implementing the <code><a href="#tracklist">TrackList</a></code>
- interface:</p>
+ all objects implementing the <code><a href="#audiotracklist">AudioTrackList</a></code> and
+ <code><a href="#videotracklist">VideoTrackList</a></code> interfaces:</p>
<table><thead><tr><th><a href="#event-handlers" title="event handlers">Event handler</a> <th><a href="#event-handler-event-type">Event handler event type</a>
<tbody><tr><td><dfn id="handler-tracklist-onchange" title="handler-TrackList-onchange"><code>onchange</code></dfn> <td> <code title="event-change">change</code>
@@ -26342,7 +26425,7 @@
<p>The <dfn id="dom-media-texttracks" title="dom-media-textTracks"><code>textTracks</code></dfn>
attribute of <a href="#media-element" title="media element">media elements</a> must
- return an <span title="array host objects">array host object</span>
+ return an <a href="#array-host-objects" title="array host objects">array host object</a>
for objects of type <code><a href="#texttrack">TextTrack</a></code> that is <i>fixed
length</i> and <i>read only</i>. The same object must be returned
each time the attribute is accessed. <a href="#refsWEBIDL">[WEBIDL]</a></p>
@@ -26375,7 +26458,9 @@
attribute <a href="#function">Function</a>? <a href="#handler-texttrack-oncuechange" title="handler-TextTrack-oncuechange">oncuechange</a>;
};
-<a href="#texttrack">TextTrack</a> implements <a href="#eventtarget">EventTarget</a>;</pre><dl class="domintro"><dt><var title="">textTrack</var> . <code title="dom-TextTrack-kind"><a href="#dom-texttrack-kind">kind</a></code></dt>
+<a href="#texttrack">TextTrack</a> implements <a href="#eventtarget">EventTarget</a>;
+
+typedef <a href="#texttrack">TextTrack</a>[] <dfn id="texttracklist">TextTrackList</dfn>;</pre><dl class="domintro"><dt><var title="">textTrack</var> . <code title="dom-TextTrack-kind"><a href="#dom-texttrack-kind">kind</a></code></dt>
<dd>
<p>Returns the <a href="#text-track-kind">text track kind</a> string.</p>
</dd>
@@ -26735,15 +26820,15 @@
cue">cues</a> in the list represented by the
<code><a href="#texttrackcuelist">TextTrackCueList</a></code> object.</p>
- <p>The <span>supported property indicies</span> of a
+ <p>The <a href="#supported-property-indices">supported property indices</a> of a
<code><a href="#texttrackcuelist">TextTrackCueList</a></code> object at any instant are the numbers
from zero to the number of <a href="#text-track-cue" title="text track cue">cues</a>
in the list represented by the <code><a href="#texttrackcuelist">TextTrackCueList</a></code> object
minus one, if any. If there are no <a href="#text-track-cue" title="text track
- cue">cues</a> in the list, there are no <span>supported property
- indicies</span>.</p>
+ cue">cues</a> in the list, there are no <a href="#supported-property-indices">supported property
+ indices</a>.</p>
- <p>To <span>determine the value of an indexed property</span> for a
+ <p>To <a href="#determine-the-value-of-an-indexed-property">determine the value of an indexed property</a> for a
given index <var title="">index</var>, the user agent must return
the <var title="">index</var>th <a href="#text-track-cue">text track cue</a> in the
list represented by the <code><a href="#texttrackcuelist">TextTrackCueList</a></code> object.</p>
Received on Thursday, 30 June 2011 23:52:58 UTC