- From: Ian Hickson via cvs-syncmail <cvsmail@w3.org>
- Date: Fri, 14 Nov 2008 02:55:45 +0000
- To: public-html-commits@w3.org
Update of /sources/public/html5/spec In directory hutz:/tmp/cvs-serv17237 Modified Files: Overview.html Log Message: Replace all the looping mechanisms with a single loop attribute. Allow the media URI to include a fragment identifier to seek to at the start. (whatwg r2401) Index: Overview.html =================================================================== RCS file: /sources/public/html5/spec/Overview.html,v retrieving revision 1.1572 retrieving revision 1.1573 diff -u -d -r1.1572 -r1.1573 --- Overview.html 13 Nov 2008 01:45:11 -0000 1.1572 +++ Overview.html 14 Nov 2008 02:55:42 -0000 1.1573 @@ -8,7 +8,7 @@ <p><a href=http://www.w3.org/><img alt=W3C height=48 src=http://www.w3.org/Icons/w3c_home width=72></a></p> <h1>HTML 5</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-date-zzz-9-june-2008><!-- "W3C Working Draft" --> Editor's Draft <!--ZZZ-->13 November 2008</h2> + <h2 class="no-num no-toc" id=editor-s-draft-date-zzz-9-june-2008><!-- "W3C Working Draft" --> Editor's Draft <!--ZZZ-->14 November 2008</h2> <dl><!-- ZZZ: update the month/day <dt>This Version:</dt> <dd><a href="http://www.w3.org/TR/2008/WD-html5-20080610/">http://www.w3.org/TR/2008/WD-html5-20080610/</a></dd> @@ -97,7 +97,7 @@ specification's progress along the W3C Recommendation track. <!--ZZZ:--> - This specification is the 13 November 2008 <!--ZZZ "Working Draft"-->Editor's Draft. + This specification is the 14 November 2008 <!--ZZZ "Working Draft"-->Editor's Draft. <!--:ZZZ--> </p><!-- UNDER NO CIRCUMSTANCES IS THE PRECEDING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- relationship to other work (required) --><p>This specification is also being produced by the <a href=http://www.whatwg.org/>WHATWG</a>. The two specifications are identical from the table of contents onwards.</p><!-- UNDER NO CIRCUMSTANCES IS THE FOLLOWING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- UNDER NO CIRCUMSTANCES IS THE PRECEDING PARAGRAPH TO BE REMOVED OR EDITED WITHOUT TALKING TO IAN FIRST --><!-- context and rationale (required) --><p>This specification is intended to replace (be a new version of) @@ -13355,11 +13355,7 @@ <dd><code title=attr-media-src><a href=#attr-media-src>src</a></code></dd> <dd><code title=attr-video-poster><a href=#attr-video-poster>poster</a></code></dd> <dd><code title=attr-media-autoplay><a href=#attr-media-autoplay>autoplay</a></code></dd> - <dd><code title=attr-media-start><a href=#attr-media-start>start</a></code></dd> - <dd><code title=attr-media-loopstart><a href=#attr-media-loopstart>loopstart</a></code></dd> - <dd><code title=attr-media-loopend><a href=#attr-media-loopend>loopend</a></code></dd> - <dd><code title=attr-media-end><a href=#attr-media-end>end</a></code></dd> - <dd><code title=attr-media-playcount><a href=#attr-media-playcount>playcount</a></code></dd> + <dd><code title=attr-media-loop><a href=#attr-media-loop>loop</a></code></dd> <dd><code title=attr-media-controls><a href=#attr-media-controls>controls</a></code></dd> <dd><code title=attr-dim-width><a href=#attr-dim-width>width</a></code></dd> <dd><code title=attr-dim-height><a href=#attr-dim-height>height</a></code></dd> @@ -13385,7 +13381,7 @@ alternative media streams and/or to embed accessibility aids (such as caption or subtitle tracks) into their media streams.<p>The <code><a href=#video>video</a></code> element is a <a href=#media-element>media element</a> whose <a href=#media-data>media data</a> is ostensibly video data, possibly - with associated audio data.<p>The <code title=attr-media-src><a href=#attr-media-src>src</a></code>, <code title=attr-media-autoplay><a href=#attr-media-autoplay>autoplay</a></code>, <code title=attr-media-start><a href=#attr-media-start>start</a></code>, <code title=attr-media-loopstart><a href=#attr-media-loopstart>loopstart</a></code>, <code title=attr-media-loopend><a href=#attr-media-loopend>loopend</a></code>, <code title=attr-media-end><a href=#attr-media-end>end</a></code>, <code title=attr-media-playcount><a href=#attr-media-playcount>playcount</a></code>, and <code title=attr-media-controls><a href=#attr-media-controls>controls</a></code> attributes are <a href=#media-element-attributes title="media element attributes">the attributes common to all media + with associated audio data.<p>The <code title=attr-media-src><a href=#attr-media-src>src</a></code>, <code title=attr-media-autoplay><a href=#attr-media-autoplay>autoplay</a></code>, <code title=attr-media-loop><a href=#attr-media-loop>loop</a></code>, and <code title=attr-media-controls><a href=#attr-media-controls>controls</a></code> attributes are <a href=#media-element-attributes title="media element attributes">the attributes common to all media elements</a>.<p>The <dfn id=attr-video-poster title=attr-video-poster><code>poster</code></dfn> attribute gives the address of an image file that the user agent can show while no video data is available. The attribute, if present, @@ -13542,11 +13538,7 @@ <dt>Element-specific attributes:</dt> <dd><code title=attr-media-src><a href=#attr-media-src>src</a></code></dd> <dd><code title=attr-media-autoplay><a href=#attr-media-autoplay>autoplay</a></code></dd> - <dd><code title=attr-media-start><a href=#attr-media-start>start</a></code></dd> - <dd><code title=attr-media-loopstart><a href=#attr-media-loopstart>loopstart</a></code></dd> - <dd><code title=attr-media-loopend><a href=#attr-media-loopend>loopend</a></code></dd> - <dd><code title=attr-media-end><a href=#attr-media-end>end</a></code></dd> - <dd><code title=attr-media-playcount><a href=#attr-media-playcount>playcount</a></code></dd> + <dd><code title=attr-media-loop><a href=#attr-media-loop>loop</a></code></dd> <dd><code title=attr-media-controls><a href=#attr-media-controls>controls</a></code></dd> <dt>DOM interface:</dt> <dd> @@ -13568,7 +13560,7 @@ or cognitive disabilities, authors are expected to provide alternative media streams and/or to embed accessibility aids (such as transcriptions) into their media streams.<p>The <code><a href=#audio>audio</a></code> element is a <a href=#media-element>media element</a> - whose <a href=#media-data>media data</a> is ostensibly audio data.<p>The <code title=attr-media-src><a href=#attr-media-src>src</a></code>, <code title=attr-media-autoplay><a href=#attr-media-autoplay>autoplay</a></code>, <code title=attr-media-start><a href=#attr-media-start>start</a></code>, <code title=attr-media-loopstart><a href=#attr-media-loopstart>loopstart</a></code>, <code title=attr-media-loopend><a href=#attr-media-loopend>loopend</a></code>, <code title=attr-media-end><a href=#attr-media-end>end</a></code>, <code title=attr-media-playcount><a href=#attr-media-playcount>playcount</a></code>, and <code title=attr-media-controls><a href=#attr-media-controls>controls</a></code> attributes are <a href=#media-element-attributes title="media element attributes">the attributes common to all media + whose <a href=#media-data>media data</a> is ostensibly audio data.<p>The <code title=attr-media-src><a href=#attr-media-src>src</a></code>, <code title=attr-media-autoplay><a href=#attr-media-autoplay>autoplay</a></code>, <code title=attr-media-loop><a href=#attr-media-loop>loop</a></code>, and <code title=attr-media-controls><a href=#attr-media-controls>controls</a></code> attributes are <a href=#media-element-attributes title="media element attributes">the attributes common to all media elements</a>.<p>When an <code><a href=#audio>audio</a></code> element is <a href=#potentially-playing>potentially playing</a>, it must have its audio data played synchronized with the <a href=#current-playback-position>current playback position</a>, at the specified <a href=#dom-media-volume title=dom-media-volume>volume</a> with the specified <a href=#dom-media-muted title=dom-media-muted>mute state</a>.<p>When an <code><a href=#audio>audio</a></code> element is not <a href=#potentially-playing>potentially @@ -13769,17 +13761,10 @@ readonly attribute <a href=#timeranges>TimeRanges</a> <a href=#dom-media-seekable title=dom-media-seekable>seekable</a>; readonly attribute boolean <a href=#dom-media-ended title=dom-media-ended>ended</a>; attribute boolean <a href=#dom-media-autoplay title=dom-media-autoplay>autoplay</a>; + attribute boolean <a href=#dom-media-loop title=dom-media-loop>loop</a>; void <a href=#dom-media-play title=dom-media-play>play</a>(); void <a href=#dom-media-pause title=dom-media-pause>pause</a>(); - // looping - attribute float <a href=#dom-media-start title=dom-media-start>start</a>; - attribute float <a href=#dom-media-end title=dom-media-end>end</a>; - attribute float <a href=#dom-media-loopstart title=dom-media-loopStart>loopStart</a>; - attribute float <a href=#dom-media-loopend title=dom-media-loopEnd>loopEnd</a>; - attribute unsigned long <a href=#dom-media-playcount title=dom-media-playCount>playCount</a>; - attribute unsigned long <a href=#dom-media-currentloop title=dom-media-currentLoop>currentLoop</a>; - // cue ranges void <a href=#dom-media-addcuerange title=dom-media-addCueRange>addCueRange</a>(in DOMString className, in DOMString id, in float start, in float end, in boolean pauseOnExit, in <a href=#cuerangecallback>CueRangeCallback</a> enterCallback, in <a href=#cuerangecallback>CueRangeCallback</a> exitCallback); void <a href=#dom-media-removecueranges title=dom-media-removeCueRanges>removeCueRanges</a>(in DOMString className); @@ -13791,7 +13776,7 @@ }; // <dfn class=XXX id=cuerangecallback>CueRangeCallback</dfn> waiting on WebIDL -</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-autoplay><a href=#attr-media-autoplay>autoplay</a></code>, <code title=attr-media-start><a href=#attr-media-start>start</a></code>, <code title=attr-media-loopstart><a href=#attr-media-loopstart>loopstart</a></code>, <code title=attr-media-loopend><a href=#attr-media-loopend>loopend</a></code>, <code title=attr-media-end><a href=#attr-media-end>end</a></code>, <code title=attr-media-playcount><a href=#attr-media-playcount>playcount</a></code>, and <code title=attr-media-controls><a href=#attr-media-controls>controls</a></code>, apply to all <a href=#media-element title="media element">media elements</a>. They are defined in +</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-autoplay><a href=#attr-media-autoplay>autoplay</a></code>, <code title=attr-media-loop><a href=#attr-media-loop>loop</a></code>, and <code title=attr-media-controls><a href=#attr-media-controls>controls</a></code>, apply to all <a href=#media-element title="media element">media elements</a>. They are defined in this section.</p><!-- XXXv3 features: * frame forward / backwards / step(n) while paused * hasAudio, hasVideo, hasCaptions, etc @@ -13819,7 +13804,6 @@ - onmetadatachanged (no context info) * external captions support (request from John Foliot) * video: applying CSS filters - * infinite looping * an event to notify people of when the video size changes (e.g. for chained Ogg streams of multiple independent videos) --><p><a href=#media-element title="media element">Media elements</a> are used to @@ -14055,9 +14039,6 @@ <li>The <a href=#current-playback-position>current playback position</a> must be set to 0.</li> - <li>The <code title=dom-media-currentLoop><a href=#dom-media-currentloop>currentLoop</a></code> DOM - attribute must be set to 0.</li> - <!--<li>The user agent must <span>fire a simple event</span> at the <span>media element</span> for each event name in <var title="">events</var>, in the same order that they were added to @@ -14272,8 +14253,8 @@ <p>The user agent must follow these substeps:</p> - <ol><li><p>The <a href=#current-playback-position>current playback position</a> must be set - to the <var><a href=#effective-start>effective start</a></var>.</li> + <ol><li><p>Set the <a href=#current-playback-position>current playback position</a> to the + <var><a href=#earliest-possible-position>earliest possible position</a></var>.</li> <li><p>The <code title=dom-media-readyState><a href=#dom-media-readystate>readyState</a></code> attribute must be set to <code title=dom-media-HAVE_METADATA><a href=#dom-media-have_metadata>HAVE_METADATA</a></code>.</li> @@ -14289,22 +14270,18 @@ a task</a> to <a href=#fire-a-simple-event>fire a simple event</a> called <code title=event-loadedmetadata><a href=#event-loadedmetadata>loadedmetadata</a></code> at the element.</li> - </ol></dd> - - <dt id=handling-first-frame-available>Once enough of the - <a href=#media-data>media data</a> has been fetched to enable the user agent - to display the frame at the <a href=#effective-start>effective start</a> of the - <a href=#media-resource>media resource</a></dt> - - <dd> + <li> - <p>The user agent must follow these substeps:</p> + <p>If either the <a href=#media-resource>media resource</a> or the address of + the <a href=#chosen-media-resource>chosen media resource</a> indicate a particular + start time, then <a href=#dom-media-seek title=dom-media-seek>seek</a> to + that time. Ignore any resulting exceptions (if the position is + out of range, it is effectively ignored).</p> - <ol><li><p>The <code title=dom-media-readyState><a href=#dom-media-readystate>readyState</a></code> - attribute must change to <code title=dom-media-HAVE_CURRENT_DATA><a href=#dom-media-have_current_data>HAVE_CURRENT_DATA</a></code>.</li> + <p class=example>For example, a fragment identifier could be + used to indicate a start position.</p> - <li><p id=fire-loadeddata>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> called <code title=event-loadeddata><a href=#event-loadeddata>loadeddata</a></code> at the element.</li> + </li> </ol></dd> @@ -14376,88 +14353,15 @@ resource after it has expired from its buffer. The <dfn id=earliest-possible-position><var>earliest possible position</var></dfn> is the earliest position in the stream that the user agent can ever obtain - again.<p>The <dfn id=attr-media-start title=attr-media-start><code>start</code></dfn> - content attribute gives the offset into the <a href=#media-resource>media - resource</a> at which playback is to begin. The default value is - the default start position of the <a href=#media-resource>media resource</a>, or 0 - if not enough <a href=#media-data>media data</a> has been obtained yet to - determine the default start position or if the resource doesn't - specify a default start position.<p>The <dfn id=effective-start><var>effective start</var></dfn> is the smaller of the - <code title=dom-media-start><a href=#dom-media-start>start</a></code> DOM attribute, the - <var><a href=#earliest-possible-position>earliest possible position</a></var>, and the end of the <a href=#media-resource>media - resource</a>.<p>The <dfn id=attr-media-loopstart title=attr-media-loopstart><code>loopstart</code></dfn> content - attribute gives the offset into the <a href=#media-resource>media resource</a> at - which playback is to begin when looping a clip. The default value of - the <code title=attr-media-loopStart><a href=#attr-media-loopstart>loopstart</a></code> content - attribute is the value of the <code title=dom-media-start><a href=#dom-media-start>start</a></code> DOM attribute.<p>The <dfn id=effective-loop-start><var>effective loop start</var></dfn> is the smaller of - the <code title=dom-media-loopStart><a href=#dom-media-loopstart>loopStart</a></code> DOM - attribute, the <var><a href=#earliest-possible-position>earliest possible position</a></var>, and the end of - the <a href=#media-resource>media resource</a>.<p>The <dfn id=attr-media-loopend title=attr-media-loopend><code>loopend</code></dfn> - content attribute gives an offset into the <a href=#media-resource>media - resource</a> at which playback is to jump back to the <code title=attr-media-loopstart><a href=#attr-media-loopstart>loopstart</a></code>, when looping the - clip. The default value of the <code title=attr-media-loopEnd><a href=#attr-media-loopend>loopend</a></code> content attribute is the - value of the <code title=dom-media-end><a href=#dom-media-end>end</a></code> DOM - attribute.<p>The <dfn id=effective-loop-end><var>effective loop end</var></dfn> is the greater of - the <code title=dom-media-start><a href=#dom-media-start>start</a></code>, <code title=dom-media-loopStart><a href=#dom-media-loopstart>loopStart</a></code>, and <code title=dom-media-loopEnd><a href=#dom-media-loopend>loopEnd</a></code> DOM attributes and the - <var><a href=#earliest-possible-position>earliest possible position</a></var>, except if that is greater - than the end of the <a href=#media-resource>media resource</a>, in which case - that's its value.<p>The <dfn id=attr-media-end title=attr-media-end><code>end</code></dfn> content - attribute gives an offset into the <a href=#media-resource>media resource</a> at - which playback is to end. The default value is infinity.<p>The <dfn id=effective-end><var>effective end</var></dfn> is the greater of the - <code title=dom-media-start><a href=#dom-media-start>start</a></code>, <code title=dom-media-loopStart><a href=#dom-media-loopstart>loopStart</a></code>, and <code title=dom-media-loopEnd><a href=#dom-media-loopend>end</a></code> DOM attributes and the - <var><a href=#earliest-possible-position>earliest possible position</a></var>, except if that is greater - than the end of the <a href=#media-resource>media resource</a>, in which case - that's its value.<p>The <code title=attr-media-start><a href=#attr-media-start>start</a></code>, <code title=attr-media-loopstart><a href=#attr-media-loopstart>loopstart</a></code>, <code title=attr-media-loopend><a href=#attr-media-loopend>loopend</a></code>, and <code title=attr-media-end><a href=#attr-media-end>end</a></code> attributes must, if specified, - contain <span title="value time offset">value time - offsets</span>. To get the time values they represent, user agents - must use the <a href=#rules-for-parsing-time-offsets>rules for parsing time offsets</a>.<p>The <dfn id=dom-media-start title=dom-media-start><code>start</code></dfn>, <dfn id=dom-media-loopstart title=dom-media-loopStart><code>loopStart</code></dfn>, <dfn id=dom-media-loopend title=dom-media-loopEnd><code>loopEnd</code></dfn>, and <dfn id=dom-media-end title=dom-media-end><code>end</code></dfn> DOM attributes must - <a href=#reflect>reflect</a> the <code title=attr-media-start><a href=#attr-media-start>start</a></code>, <code title=attr-media-loopstart><a href=#attr-media-loopstart>loopstart</a></code>, <code title=attr-media-loopend><a href=#attr-media-loopend>loopend</a></code>, and <code title=attr-media-end><a href=#attr-media-end>end</a></code> content attributes on the - <a href=#media-element>media element</a> respectively.<p>The <dfn id=attr-media-playcount title=attr-media-playcount><code>playcount</code></dfn> content - attribute gives the number of times to play the clip. The default - value is 1.<p>The <dfn id=dom-media-playcount title=dom-media-playCount><code>playCount</code></dfn> - DOM attribute must <a href=#reflect>reflect</a> the <code title=attr-media-playcount><a href=#attr-media-playcount>playcount</a></code> content attribute on - the <a href=#media-element>media element</a>. The value must be <a href=#limited-to-only-positive-non-zero-numbers>limited to - only positive non-zero numbers</a>.<p>The <dfn id=dom-media-currentloop title=dom-media-currentLoop><code>currentLoop</code></dfn> - attribute must initially have the value 0. It gives the index of the - current loop. It is changed during playback as described below.<p>When any of the <code title=dom-media-start><a href=#dom-media-start>start</a></code>, <code title=dom-media-loopStart><a href=#dom-media-loopstart>loopStart</a></code>, <code title=dom-media-loopEnd><a href=#dom-media-loopend>loopEnd</a></code>, <code title=dom-media-end><a href=#dom-media-end>end</a></code>, <code title=dom-media-playCount><a href=#dom-media-playcount>playCount</a></code>, and <code title=dom-media-currentLoop><a href=#dom-media-currentloop>currentLoop</a></code> DOM attributes - change value (either through content attribute mutations reflecting - into the DOM attribute, if applicable, or through direct mutations - of the DOM attribute), or if the <var><a href=#earliest-possible-position>earliest possible - position</a></var> changes, the user agent must apply the following - steps:<ol><li><p>If the <code title=dom-media-playCount><a href=#dom-media-playcount>playCount</a></code> - DOM attribute's value is less than or equal to the <code title=dom-media-currentLoop><a href=#dom-media-currentloop>currentLoop</a></code> DOM attribute's - value, then the <code title=dom-media-currentLoop><a href=#dom-media-currentloop>currentLoop</a></code> DOM attribute's - value must be set to <span><code title=dom-media-playCount><a href=#dom-media-playcount>playCount</a></code>-1</span> (which will - make the current loop the last loop).</li> - - <li><p>If the <a href=#media-element>media element</a>'s <code title=dom-media-readyState><a href=#dom-media-readystate>readyState</a></code> is in the <code title=dom-media-HAVE_NOTHING><a href=#dom-media-have_nothing>HAVE_NOTHING</a></code> state, then the - user agent must at this point abort these steps.</li> - <!-- because we don't have the duration yet, so many of the - following concepts are undefined --> - - <li><p>If the <code title=dom-media-currentLoop><a href=#dom-media-currentloop>currentLoop</a></code> is zero, and the - <a href=#current-playback-position>current playback position</a> is before the <var><a href=#effective-start>effective - start</a></var>, the user agent must <a href=#dom-media-seek title=dom-media-seek>seek</a> to the <var><a href=#effective-start>effective - start</a></var>.</li> - - <li><p>If the <code title=dom-media-currentLoop><a href=#dom-media-currentloop>currentLoop</a></code> is greater than - zero, and the <a href=#current-playback-position>current playback position</a> is before the - <var><a href=#effective-loop-start>effective loop start</a></var>, the user agent must <a href=#dom-media-seek title=dom-media-seek>seek</a> to the <var><a href=#effective-loop-start>effective loop - start</a></var>.</li> - - <li><p>If the <code title=dom-media-currentLoop><a href=#dom-media-currentloop>currentLoop</a></code> is less than - <span><code title=dom-media-playCount><a href=#dom-media-playcount>playCount</a></code>-1</span>, - and the <a href=#current-playback-position>current playback position</a> is after the - <var><a href=#effective-loop-end>effective loop end</a></var>, the user agent must <a href=#dom-media-seek title=dom-media-seek>seek</a> to the <var><a href=#effective-loop-start>effective loop - start</a></var>, and increase <code title=dom-media-currentLoop><a href=#dom-media-currentloop>currentLoop</a></code> by 1.</li> - - <li><p>If the <code title=dom-media-currentLoop><a href=#dom-media-currentloop>currentLoop</a></code> is equal to - <span><code title=dom-media-playCount><a href=#dom-media-playcount>playCount</a></code>-1</span>, - and the <a href=#current-playback-position>current playback position</a> is after the - <var><a href=#effective-end>effective end</a></var>, the user agent must <a href=#dom-media-seek title=dom-media-seek>seek</a> to the <var><a href=#effective-end>effective end</a></var> - and then the looping will end.</li> - - </ol><h5 id=the-ready-states><span class=secno>4.8.10.6 </span>The ready states</h5><p><a href=#media-element title="media element">Media elements</a> have a + again.<p>When the <var><a href=#earliest-possible-position>earliest possible position</a></var> changes, if the + the <a href=#current-playback-position>current playback position</a> is before the + <var><a href=#earliest-possible-position>earliest possible position</a></var>, the user agent must <a href=#dom-media-seek title=dom-media-seek>seek</a> to the <var><a href=#earliest-possible-position>earliest possible + position</a></var>.<p>The <dfn id=attr-media-loop title=attr-media-loop><code>loop</code></dfn> + attribute is a <a href=#boolean-attribute>boolean attribute</a> that, if specified, + indicates that the <a href=#media-element>media element</a> is to seek back to the + start of the <a href=#media-resource>media resource</a> upon reaching the end.<p>The <dfn id=dom-media-loop title=dom-media-loop><code>loop</code></dfn> DOM + attribute must <a href=#reflect>reflect</a> the content attribute of the + same name.<h5 id=the-ready-states><span class=secno>4.8.10.6 </span>The ready states</h5><p><a href=#media-element title="media element">Media elements</a> have a <i>ready state</i>, which describes to what degree they are ready to be rendered at the <a href=#current-playback-position>current playback position</a>. The possible values are as follows; the ready state of a media element @@ -14508,13 +14412,12 @@ <dd>Data for the immediate <a href=#current-playback-position>current playback position</a> is available, as well as enough data for the user agent to advance the <a href=#current-playback-position>current playback position</a> at least a little - without immediately reverting to the <code title=dom-media-HAVE_SOME_DATA><a href=#dom-media-have_some_data>HAVE_SOME_DATA</a></code> state, - and, in addition, the user agent estimates that data is being - fetched at a rate where the <a href=#current-playback-position>current playback position</a>, - if it were to advance at the rate given by the <code title=dom-media-defaultPlaybackRate><a href=#dom-media-defaultplaybackrate>defaultPlaybackRate</a></code> + without immediately reverting to the <code title=dom-media-HAVE_SOME_DATA><a href=#dom-media-have_some_data>HAVE_SOME_DATA</a></code> state, and, + in addition, the user agent estimates that data is being fetched at + a rate where the <a href=#current-playback-position>current playback position</a>, if it were + to advance at the rate given by the <code title=dom-media-defaultPlaybackRate><a href=#dom-media-defaultplaybackrate>defaultPlaybackRate</a></code> attribute, would not overtake the available data before playback - reaches the <a href=#effective-end>effective end</a> of the <a href=#media-resource>media - resource</a> on the last <a href=#dom-media-playcount title=dom-media-playCount>loop</a>.</dd> + reaches the end of the <a href=#media-resource>media resource</a>.</dd> </dl><p>When the ready state of a <a href=#media-element>media element</a> whose <code title=dom-media-networkState><a href=#dom-media-networkstate>networkState</a></code> is not <code title=dom-media-NETWORK_EMPTY><a href=#dom-media-network_empty>NETWORK_EMPTY</a></code> changes, the user agent must follow the steps given below:<dl class=switch><!-- going up to metadata --><dt>If the prevous ready state was <code title=dom-media-HAVE_NOTHING><a href=#dom-media-have_nothing>HAVE_NOTHING</a></code>, and the new @@ -14526,15 +14429,18 @@ </dd> - <!-- going up to current --> - <dt>If the prevous ready state was <code title=dom-media-HAVE_METADATA><a href=#dom-media-have_metadata>HAVE_METADATA</a></code>, and the new - ready state is <code title=dom-media-HAVE_CURRENT_DATA><a href=#dom-media-have_current_data>HAVE_CURRENT_DATA</a></code></dt> + <!-- going up to current for the first time --> + <dt id=handling-first-frame-available>If the prevous ready state + was <code title=dom-media-HAVE_METADATA><a href=#dom-media-have_metadata>HAVE_METADATA</a></code> or + <code title=dom-media-HAVE_SOME_DATA><a href=#dom-media-have_some_data>HAVE_SOME_DATA</a></code>, and + the new ready state is <code title=dom-media-HAVE_CURRENT_DATA><a href=#dom-media-have_current_data>HAVE_CURRENT_DATA</a></code></dt> <dd> - <p class=note>A <code title=event-loadeddata><a href=#event-loadeddata>loadeddata</a></code> - DOM event <a href=#fire-loadeddata>will be fired</a> as part of - the <code title=dom-event-load>load()</code> algorithm.</p> + <p id=fire-loadeddata>If this is the first time this occurs for + this <a href=#media-element>media element</a> since the <code title=dom-event-load>load()</code> algorithm was last invoked, + 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> called <code title=event-loadeddata><a href=#event-loadeddata>loadeddata</a></code> at the element.</p> </dd> @@ -14644,11 +14550,11 @@ the element has not <a href=#ended-playback>ended playback</a>, playback has not <a href=#stopped-due-to-errors>stopped due to errors</a>, and the element has not <a href=#paused-for-user-interaction>paused for user interaction</a>.<p>A <a href=#media-element>media element</a> is said to have <dfn id=ended-playback>ended - playback</dfn> when the element's <code title=dom-media-readyState><a href=#dom-media-readystate>readyState</a></code> attribute is <code title=dom-media-HAVE_METADATA><a href=#dom-media-have_metadata>HAD_METADATA</a></code> or greater, the - <a href=#current-playback-position>current playback position</a> is equal to the - <var><a href=#effective-end>effective end</a></var> of the <a href=#media-resource>media resource</a>, and the - <code title=dom-media-currentLoop><a href=#dom-media-currentloop>currentLoop</a></code> attribute is - equal to <span><code title=dom-media-playCount><a href=#dom-media-playcount>playCount</a></code>-1</span>.<p>The <dfn id=dom-media-ended title=dom-media-ended><code>ended</code></dfn> + playback</dfn> when the element's <code title=dom-media-readyState><a href=#dom-media-readystate>readyState</a></code> attribute is <code title=dom-media-HAVE_METADATA><a href=#dom-media-have_metadata>HAD_METADATA</a></code> or greater, and + the <a href=#current-playback-position>current playback position</a> is the end of the + <a href=#media-resource>media resource</a>, and the <a href=#media-element>media element</a> does + not have a <code title=attr-media-loop><a href=#attr-media-loop>loop</a></code> attribute + specified.<p>The <dfn id=dom-media-ended title=dom-media-ended><code>ended</code></dfn> attribute must return true if the <a href=#media-element>media element</a> has <a href=#ended-playback>ended playback</a>, and false otherwise.<p>A <a href=#media-element>media element</a> is said to have <dfn id=stopped-due-to-errors>stopped due to errors</dfn> when the element's <code title=dom-media-readyState><a href=#dom-media-readystate>readyState</a></code> attribute is <code title=dom-media-HAVE_METADATA><a href=#dom-media-have_metadata>HAVE_METADATA</a></code> or greater, and @@ -14677,17 +14583,14 @@ event</a> called <code title=event-timeupdate><a href=#event-timeupdate>timeupdate</a></code> at the element, and <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire a simple event</a> called <code title=event-waiting><a href=#event-waiting>waiting</a></code> at - the element.<p>When <code title=dom-media-currentLoop><a href=#dom-media-currentloop>currentLoop</a></code> is - less than <span><code title=dom-media-playCount><a href=#dom-media-playcount>playCount</a></code>-1</span> and the - <a href=#current-playback-position>current playback position</a> reaches the <var><a href=#effective-loop-end>effective - loop end</a></var>, then the user agent must increase <code title=dom-media-currentLoop><a href=#dom-media-currentloop>currentLoop</a></code> by 1 and <a href=#dom-media-seek title=dom-media-seek>seek</a> to the <var><a href=#effective-loop-start>effective loop - start</a></var>.<p>When <code title=dom-media-currentLoop><a href=#dom-media-currentloop>currentLoop</a></code> is - equal to the <span><code title=dom-media-playCount><a href=#dom-media-playcount>playCount</a></code>-1</span> and the - <a href=#current-playback-position>current playback position</a> reaches the <var><a href=#effective-end>effective - end</a></var>, then the user agent must follow these steps:<ol><li><p>The user agent must stop playback.</li> - - <li><p class=note>The <code title=dom-media-ended><a href=#dom-media-ended>ended</a></code> - attribute becomes true.</li> + the element.<p>When the <a href=#current-playback-position>current playback position</a> reaches the end + of the <a href=#media-resource>media resource</a>, then the user agent must follow + these steps:<ol><li><p>If the <a href=#media-element>media element</a> has a <code title=attr-media-loop><a href=#attr-media-loop>loop</a></code> attribute specified, then <a href=#dom-media-seek title=dom-media-seek>seek</a> to the <var><a href=#earliest-possible-position>earliest possible + position</a></var> of the <a href=#media-resource>media resource</a> and abort these + steps.</li> + + <li><p>Stop playback.<p class=note>The <code title=dom-media-ended><a href=#dom-media-ended>ended</a></code> attribute becomes + true.</li> <li><p>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> called <code title=event-timeupdate><a href=#event-timeupdate>timeupdate</a></code> at the element.</li> @@ -14733,11 +14636,13 @@ <li> <p>If the <a href=#ended-playback title="ended playback">playback has ended</a>, - then the user agent must set <code title=dom-media-currentLoop><a href=#dom-media-currentloop>currentLoop</a></code> to zero and <a href=#dom-media-seek title=dom-media-seek>seek</a> to the <var><a href=#effective-start>effective - start</a></var>.</p> + then the user agent must <a href=#dom-media-seek title=dom-media-seek>seek</a> + to the <var><a href=#earliest-possible-position>earliest possible position</a></var> of the <a href=#media-resource>media + resource</a>.</p> - <p class=note>If this involved a seek, the user agent <a href=#seekUpdate>will</a> <a href=#queue-a-task>queue a task</a> to - <a href=#fire-a-simple-event>fire a simple event</a> called <code title=event-timeupdate><a href=#event-timeupdate>timeupdate</a></code> at the <a href=#media-element>media + <p class=note>This <a href=#seekUpdate>will cause</a> the user + agent to <a href=#queue-a-task>queue a task</a> to <a href=#fire-a-simple-event>fire a simple + event</a> called <code title=event-timeupdate><a href=#event-timeupdate>timeupdate</a></code> at the <a href=#media-element>media element</a>.</p> </li> @@ -14899,20 +14804,13 @@ the seek was in response to a DOM method call or setting of a DOM attribute), and abort these steps.</li> - <li><p>If <code title=dom-media-currentLoop><a href=#dom-media-currentloop>currentLoop</a></code> is - 0, let <var title="">min</var> be the <var><a href=#effective-start>effective - start</a></var>. Otherwise, let it be the <var><a href=#effective-loop-start>effective loop - start</a></var>.</li> - - <li><p>If <code title=dom-media-currentLoop><a href=#dom-media-currentloop>currentLoop</a></code> is - equal to <span><code title=dom-media-playCount><a href=#dom-media-playcount>playCount</a></code>-1</span>, let <var title="">max</var> be the <var><a href=#effective-end>effective end</a></var>. Otherwise, let - it be the <var><a href=#effective-loop-end>effective loop end</a></var>.</li> - - <li><p>If the <var title="">new playback position</var> is more than - <var title="">max</var>, let it be <var title="">max</var>.</li> + <li><p>If the <var title="">new playback position</var> is later + than the end of the <a href=#media-resource>media resource</a>, then let it be the + end of the <a href=#media-resource>media resource</a> instead.</li> - <li><p>If the <var title="">new playback position</var> is less than - <var title="">min</var>, let it be <var title="">min</var>.</li> + <li><p>If the <var title="">new playback position</var> is less + than the <var><a href=#earliest-possible-position>earliest possible position</a></var>, let it be that + position instead.</li> <li><p>If the (possibly now changed) <var title="">new playback position</var> is not in one of the ranges given in the <code title=dom-media-seekable><a href=#dom-media-seekable>seekable</a></code> attribute, then the user @@ -14963,9 +14861,7 @@ attribute must return a static <a href=#normalized-timeranges-object>normalized <code>TimeRanges</code> object</a> that represents the ranges of the <a href=#media-resource>media resource</a>, if any, that the user agent is able - to seek to, at the time the attribute is evaluated, notwithstanding - the looping attributes (i.e. the <var><a href=#effective-start>effective start</a></var> and - <var><a href=#effective-end>effective end</a></var>, etc, don't affect the <code title=dom-media-seekable><a href=#dom-media-seekable>seekable</a></code> attribute).<p class=note>If the user agent can seek to anywhere in the + to seek to, at the time the attribute is evaluated.<p class=note>If the user agent can seek to anywhere in the <a href=#media-resource>media resource</a>, e.g. because it a simple movie file and the user agent and the server support HTTP Range requests, then the attribute would return an object with one range, whose start is the @@ -15165,7 +15061,7 @@ <tr><td><dfn id=event-ended title=event-ended><code>ended</code></dfn> <td><code>Event</code> <td>Playback has stopped because the end of the <a href=#media-resource>media resource</a> was reached. - <td><code title=dom-media-currentTime><a href=#dom-media-currenttime>currentTime</a></code> equals the <var><a href=#effective-end>effective end</a></var>; <code title=dom-media-ended><a href=#dom-media-ended>ended</a></code> is true. + <td><code title=dom-media-currentTime><a href=#dom-media-currenttime>currentTime</a></code> equals the end of the <a href=#media-resource>media resource</a>; <code title=dom-media-ended><a href=#dom-media-ended>ended</a></code> is true. <tbody><tr><td><dfn id=event-ratechange title=event-ratechange><code>ratechange</code></dfn> <td><code>Event</code>
Received on Friday, 14 November 2008 02:55:59 UTC