<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
<html>
<head>
        <title> Proposed HTML Timed Media Elements </title> 

        <link href="./mediaelement.css" rel="stylesheet" type="text/css"> 

        <style type="text/css">
                h4 + .element { margin-top: -2.5em; padding-top: 2em; }
                h4 + p + .element { margin-top: -5em; padding-top: 4em; }
                .element { background: #EFE; color: #000; margin: 0 0 1em -1em; padding: 0 1em 0.25em 0.75em; border-left: solid #9F9 0.25em; -padding: 0; /* that last decl is for IE6. Try removing it, it's hilarious! */ }
                .proposal { border: blue solid; padding: 1em; }
                table.matrix, table.matrix td { border: none; text-align: right; }
                table.matrix { margin-left: 2em; }

                .history table { width: 100%; }
                .history, .history td, .history th { border: solid thin; font-size: x-small }
                td.hauthor, td.hdate { width: 10%; }
                td.hversion { width: 5%; text-align: center; }
                td.hchange { width: 100%; }
                
                .event-definition table { border: solid thin #000; width: 95%; }
                .event-definition tr:last-child td { border: none; }
                .event-definition th { text-align: left; font-weight: bold; border: none; border-right: 1px dashed #ccc; border-bottom: 1px dashed #ccc; white-space: nowrap; background-color: #F7F5D7; padding-left: 8px; padding-right: 8px; }
                .event-definition td { width: 100%; font-family: monospace; font-weight: normal; padding-left: 1em; background-color: transparent; padding-right: 1em; border: none; }

                /* needed to override wiki CSS */
                a, a:link { text-decoration: underline;}
                th { color: #000; }
        </style>

</head>

<body class="draft">

        <div class="head">
                <h1> HTML Timed Media Elements </h1> <h2 class="no-num no-toc" id="working"> Working Draft &mdash; 19 March 2007 </h2> 
                <p class="copyright">&copy; Copyright 2007 Apple Inc. All rights reserved.</p>

        </div>
        <h2 class="no-num no-toc" id="abstract"> Abstract </h2> 

        <p>This specification introduces features to HTML and the DOM for native support of timed media,
        including but not limited to video and audio. </p>
        
        <h2 class="no-num no-toc" id="status"> Status of this document </h2> 

        <p><strong>This is a work in progress!</strong> This document is changing frequently in response
        to comments and as a general part of its development process. Comments are very welcome.</p>
        
        <h2 class="no-num no-toc"id="contents"> Table of contents </h2>

        <!--begin-toc-->
        <ul class="toc">
                <li><a href="#introduction"><span class="secno">1.</span> Introduction</a> 
                        
                <li><a href="#elements"><span class=secno>2.</span> Elements</a>
                        <ul class=toc>

                                <li><a href="#the-video-element"><span class=secno>2.1.</span> 
                                The <code title=element-video>video </code>element</a>
                                <ul class=toc>
                                        <li><a href="#video-element-attributes"><span class=secno>2.1.1.</span> Element attributes</a>
                                        <li><a href="#video-dom-attributes"><span class=secno>2.1.2.</span>DOM attributes</a>
                                </ul>

                                <li><a href="#the-audio-element"><span class=secno>2.2.</span> 
                                The <code title=element-audio>audio</code> element</a>

                                <li><a href="#the-common-attributes"><span class=secno>2.3.</span>  
                                Attributes and methods common to <code title=element-video>video</code> and 
                                <code title=element-audio>audio</code> elements</a>

                                        <ul class=toc>
                                                <li><a href="#common-element-attributes"><span class=secno>2.3.1.</span> Element attributes</a>
                                                <li><a href="#common-dom-attributes"><span class=secno>2.3.2.</span> DOM attributes and methods</a>
                                                <ul class=toc>
                                                        <li><a href="#time-attributes"><span class=secno>2.3.2.1.</span> Time</a>
                                                        <li><a href="#playback-attributes"><span class=secno>2.3.2.2.</span> Playback</a>
                                                        <li><a href="#audio-attributes"><span class=secno>2.3.2.3.</span> Audio</a>
                                                        <li><a href="#looping-attributes"><span class=secno>2.3.2.4.</span> Looping</a>
                                                        <li><a href="#characteristics-attributes"><span class=secno>2.3.2.5.</span> Characteristics</a>
                                                        <li><a href="#state-attributes"><span class=secno>2.3.2.6.</span> State</a>
                                                        <li><a href="#time-triggers"><span class=secno>2.3.2.7.</span> Time triggers</a>
                                                </ul>
                                        </ul>
                        </ul>

                <li><a href="#events"><span class=secno>3.</span> Events</a>
                        <ul class=toc>
                                <li><a href="#load-events"><span class=secno>3.1.</span> 
                                Media loading events</a>

                                <li><a href="#playback-events"><span class=secno>3.1.</span> 
                                Media playback events</a>
                        </ul>

                <li><a href="#window-additions"><span class=secno>4.</span> WindowHTML Additions</a>

                <li class=no-num><a href="#references">References</a>
                
                <li class=no-num><a href="#acknowledgements">Acknowledgements</a>

        </ul>
        <!--end-toc-->

        <hr>
        <h2 id="introduction"><span class="secno">1.</span> Introduction</h2> 
        <p><em>This section is non-normative.</em></p>

        <p>While the World Wide Web has already been enriched by a variety of audio and video media,
        support for timed media in user agents is currently provided by a variety of implementations
        with their own peculiar sets of interfaces and behaviors. This proposal outlines a set of
        standard interfaces and behaviors for timed media that can be supported by a variety of
        implementations and applied to multiple audiovisual formats, with the goal of conferring upon
        these types of media the benefits of native support, such as styling for presentation, improved
        accessibility, and the opportunity to achieve greater uniformity of behavior.</p>

        <p>Certain intrinsic characteristics of timed media and of its presentation must influence the
        specifics of such a proposal:

        <ul>
                <li> A presentation of timed media may encompass one or more media substreams, e.g. video
                and audio, that are rendered in concert with each other over time.

                <li> Resources containing timed media may be very large in size, even indefinitely large,
                and loaded and presented incrementally over time.

                <li> A variety of protocols can be used to load timed media for presentation, and the rules
                for use of these protocols vary. Some are intelligent about the timing characteristics of
                media streams and others are not. Some are file-based protocols and others are not. Some
                permit random access in the byte domain or in the time domain and others provide sequential
                access only.

                <li> Various states of timed media elements are subject to change, e.g. they can be ready to
                play or not ready to play, they can be playing or not, they can be actively loading data or
                not.

                <li> The properties of timed media elements can change with the availability of additional
                data according to the media formats and protocols in use, e.g. their total duration, their
                natural width and height, and even the number and type of media substreams they encompass.
        </ul>

        <p>In sum timed media is inherently dynamic, not only in its presentation but also in its
        behavior. The current proposal is intended to provide standard mechanisms for controlling and
        responding to this dynamism, while deferring to the user agent the choice of degree of dynamism
        that's useful and supportable.</p>

        
        <h2 id="elements"><span class="secno">2.</span> New Elements</h2> 
        
        <h4 id=the-video-element><span class=secno>2.1.</span> The <dfn id=video title=element-video>
        <code>video</code></dfn> element</h4>

        <dl class=element>

                <dd><a href="http://www.whatwg.org/specs/web-apps/current-work/#strictly">Strictly inline-level</a> 
                <a href="http://www.whatwg.org/specs/web-apps/current-work/#embedded0">embedded content</a>. 

                <dt>Contexts in which this element may be used: 

                <dd>As the only <a href="http://www.whatwg.org/specs/web-apps/current-work/#embedded0">embedded content</a> 
                child of a <code><a href="http://www.whatwg.org/specs/web-apps/current-work/#figure0">figure</a></code> element. 

                <dd>Where <a href="http://www.whatwg.org/specs/web-apps/current-work/#strictly">
                strictly inline-level content</a> is allowed.

                <dt>Content model: 

                <dd>When used as the child of a 
                <code><a href="http://www.whatwg.org/specs/web-apps/current-work/#figure0">figure</a></code>
                element, or, when used as a 
                <em><code><a href="http://www.whatwg.org/specs/web-apps/current-work/#figure0">figure</a></code> fallback 
                <code><a href="#video">video</a></code></em>: zero or more 
                <a href="http://www.whatwg.org/specs/web-apps/current-work/#block-level1">block-level elements</a> 
                or a single
                <code><a href="#video">video</a></code> element, which is then considered to be a
                <em><code><a href="http://www.whatwg.org/specs/web-apps/current-work/#figure0">figure</a></code> fallback 
                <code><a href="#video">video</a></code></em>.

                <dd>Otherwise:
                <a href="http://www.whatwg.org/specs/web-apps/current-work/#inline-level1"> inline-level content</a>.

                <dt>Element-specific attributes: 
                        <dd><code title="attr-media-src"><a href="#attr-src">src</a></code> (required) 
                        <dd><code title="attr-media-type"><a href="#attr-type">type</a></code>
                        <dd><code title="attr-video-height"><a href="#attr-height">height</a></code> 
                        <dd><code title="attr-video-width"><a href="#attr-width">width</a></code> 
                        <dd><code title="attr-media-autoplay"><a href="#attr-autoplay">autoplay</a></code>
                        <dd><code title="attr-media-controller"><a href="#attr-controller">controller</a></code>
                        
                <dt>Predefined classes that apply to this element: 
                <dd>None. 

                <dt>
                        DOM interface: 
                <dd>
<pre class="idl">interface <dfn id=html-video-element>HTMLVideoElement : HTMLTimedMediaElement</dfn> {
           attribute long <a href="#dom-video-height" title="video-element-height">height</a>;
           attribute long <a href="#dom-video-width" title="video-element-width">width</a>;
};</pre> 

                <p class=note>An instance of <code><a
                href="#html-video-element">HTMLVideoElement</a></code> can be obtained using
                the <code title=dom-video-constructor><a href="#video-constructor">Video</a></code> constructor.</p>

        </dl>

        <p>A <code title=element-video><a href="#video">video</a></code> element represents a video or
        movie, with an alternate representation given by its contents.

        <h6 id="video-element-attributes"><span class=secno>2.1.1.</span> Video specific element attributes</h6>
        
                <p>The <dfn id=attr-height title=attr-video-height><code>height</code></dfn> and
                <dfn id=attr-width title=attr-video-width><code>width</code></dfn> attributes
                give the preferred rendered dimensions of the media file if it is to be
                shown in a visual medium. If only one is specified, the size the other 
                is scaled preserving the media resource's intrinsic aspect ratio. These attributes must be either 
                <a href="http://www.whatwg.org/specs/web-apps/current-work/#valid" title="valid non-negative integer">
                valid non-negative integers</a> or 
                <a href="http://www.whatwg.org/specs/web-apps/current-work/#valid3" title="valid non-negative percentage">
                valid non-negative percentages.</a></p>
                
                <p>See below for definitions of 
                        <code title="attr-media-src"><a href="#attr-src">src</a></code>,
                        <code title="attr-media-type"><a href="#attr-type">type</a></code>,
                        <code title="attr-media-autoplay"><a href="#attr-autoplay">autoplay</a></code>, and
                        <code title="attr-media-controller"><a href="#attr-controller">controller</a></code>
                </p>


        <h6 id="video-dom-attributes"><span class=secno>2.1.2.</span> Video specific DOM attributes</h6>
                <p>The DOM attributes <dfn id=dom-video-height title=video-element-height>
                <code>height</code></dfn> and <dfn id=dom-video-width
                title=video-element-width><code>width</code></dfn> must return the rendered
                height and width of the media resource, in CSS pixels, if the media resource is being
                rendered and is being rendered to a visual medium, or 0 otherwise. 
                <a href="#refsCSS21">[CSS21]</a></p>
        
<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->

        <h4 id=the-audio-element><span class=secno>2.2. </span>The <dfn id=audio title=element-audio>
        <code>audio</code></dfn> element</h4>

        <p><a href="http://www.whatwg.org/specs/web-apps/current-work/#strictly">Strictly 
        inline-level</a> <a href="http://www.whatwg.org/specs/web-apps/current-work/#embedded0">embedded content</a>. 

        <dl class=element>

                <dt>Contexts in which this element may be used: 

                <dd>As the only <a href="http://www.whatwg.org/specs/web-apps/current-work/#embedded0">embedded content</a> 
                child of a <code><a href="http://www.whatwg.org/specs/web-apps/current-work/#figure0">figure</a></code> element. 

                <dd>Where <a href="http://www.whatwg.org/specs/web-apps/current-work/#strictly">
                strictly inline-level content</a> is allowed.

                <dt>Content model: 

                <dd>When used as the child of a 
                <code><a href="http://www.whatwg.org/specs/web-apps/current-work/#figure0">figure</a></code>
                element, or, when used as a 
                <em><code><a href="http://www.whatwg.org/specs/web-apps/current-work/#figure0">figure</a></code> fallback 
                <code><a href="#audio">audio</a></code></em>: zero or more 
                <a href="http://www.whatwg.org/specs/web-apps/current-work/#block-level1">block-level elements</a> 
                or a single
                <code><a href="#audio">audio</a></code> element, which is then considered to be a
                <em><code><a href="http://www.whatwg.org/specs/web-apps/current-work/#figure0">figure</a></code> fallback 
                <code><a href="#audio">audio</a></code></em>.

                <dd>Otherwise:
                <a href="http://www.whatwg.org/specs/web-apps/current-work/#inline-level1"> inline-level content</a>.

                <dt>Element-specific attributes: 
                        <dd><code title="attr-media-src"><a href="#attr-src">src</a></code> (required) 
                        <dd><code title="attr-media-type"><a href="#attr-type">type</a></code>
                        <dd><code title="attr-media-autoplay"><a href="#attr-autoplay">autoplay</a></code>
                        <dd><code title="attr-media-controller"><a href="#attr-controller">controller</a></code>
                        
                <dt>Predefined classes that apply to this element: 
                <dd>None. 

                <dt>DOM interface: 
                <dd> No difference from <code><a href="#html-timed-media-element">HTMLTimedMediaElement</a></code>.

    <p class=note>An instance of <code><a
     href="#html-audio-element">HTMLAudioElement</a></code> can be obtained using
     the <code title=dom-audio-constructor><a href="#audio">Audio</a></code> constructor.</p>

        </dl>

        <p>Audio objects have no spatial representation. They are heard and not seen. Otherwise they have 
        the same API as video objects.</p>
        
        <p>The user agent must render only the audio media contained in the resource, regardless of
        whatever else it might contain. If the source is an MP3 file containing synchronized lyrics, for
        example, the user agent must render only the audio and not the text.</p>


        <p>See below for definitions of 
                <code title="attr-media-src"><a href="#attr-src">src</a></code>,
                <code title="attr-media-type"><a href="#attr-type">type</a></code>,
                <code title="attr-media-autoplay"><a href="#attr-autoplay">autoplay</a></code>, and
                <code title="attr-media-controller"><a href="#attr-controller">controller</a></code>
        </p>

        <p class="big-issue">Need some words about using only audio when media file has both audio and 
        video.</p>


<!-- ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -->

        <h3 id=the-common-attributes><span class=secno>2.3.</span> Attributes common to the
        <code title=element-video>video</code> and <code title=element-audio>audio</code> elements</h3>

        <h5 id=common-element-attributes><span class=secno>2.3.1.</span> 
        Element attributes common to <code title=element-video>video</code> and 
        <code title=element-audio>audio</code> elements.</h5>

        <p>The <dfn id="attr-src" title="attr-media-src"><code>src</code></dfn> attribute
        must contain the URI (or IRI) of the media resource.
        
        <p>When the src attribute is set and the specified resource has a supported type, the user agent
        must prepare to present it according to the appropriate transfer protocol. This may entail the
        initiation of network sessions, including but not limited to file transfers. If the presentation
        of timed media by the user agent has been disabled, if the resource has an unsupported type, or
        if the preparations for its presentation fail either because of a protocol failure or because
        the format of the media is unrecognized, the user agent must fire an error event on the element
        and display the element's fallback content, if available.</p>

        <p>The user agent may choose to proceed with the presentation of media that it can render
        only partially, for any of the following reasons:

        <ul>
                <li> A media type is not supported, i.e. the resource contains one or more renderable substreams
                of types not supported by the user agent.  Example: a 3GPP file with timed text on a device that
                does not have a text renderer.

                <li> A media format is not supported, i.e. a renderable substream of a type that's supported by
                the user agent contains media that can't be decoded. Example: a user agent that supports only
                H.264 at baseline profile encounters an MPEG-4 file with a video track with H.264 frames encoded
                in main profile.

                <li> Media can't be rendered under current constraints. Here there's no problem with media types
                or formats but the resource can't be rendered anyway, possibly temporarily. Example: a user
                agent that can decode only one H.264 video stream at a time is requested to decode multiple
                streams simultaneously.
        </ul>

        <p>From the user's perspective, these cases look very much the same because their only obvious
        symptom is that some or all of the media cannot be rendered. In this case, the user agent may emit
        a <code title=event-mediarendererror><a href="#eventdef-event-mediarendererror">mediarendererror</a></code>.

        <p>The <dfn id=attr-type title=attr-media-type><code>type</code></dfn>
        attribute, if present, gives the MIME type of the media resource specified 
        by <code title="attr-media-src"><a href="#attr-src">src</a></code>. This attribute is optional 
        but recommended as it allows the user agent to avoid loading  information for unsupported 
        content types. The value must be a valid MIME type <a href="#refsRFC2046">
        [RFC2046]</a>, optionally with parameters indicating the codec(s) required to render the content
        <a href="#refsRFC4281">[RFC4281]</a>. The <code title=attr-media-type>type</code> attribute 
        is purely advisory and is only intended for static fallback, it is only considered when deciding
        whether to initiate a load or not.</p>

        <p>The <code title=attr-media-type>type</code> attribute can thus be used by the page author 
        to select different content for different user agent configurations. For the following example:
<pre >
&lt;video src="big_264.mp4" type="video/mp4; codecs=mp4v.21.3"&gt;
    &lt;video src="medium.mp4" type="video/mp4; codecs=mp4v.20.9"&gt;
        &lt;img src="small.png" alt="alternate image for non-video browsers /&gt;
    &lt;/video&gt;
&lt;/video&gt;
</pre>

        <p>the user agent would choose the outmost &lt;video&gt; if it supports H.264 visual simple profile
        level 1, else the inner &lt;video&gt; if it suports MPEG-4 visual simple profile level 0, else the 
        &lt;img&gt; if it supports PNG, else the alternate text.

        <p>Because the supportability and desirability of media container formats and media encoding
        formats vary widely according to the needs and constraints of user agents, the process of static
        fallback for HTML timed media elements allows the user agent to examine multiple descriptive
        attributes that indicate the suitability of a given resource for loading and presentation.

        <ol>
                <li> Examine the <code title=attr-media-type><a href="#attr-type">type</a></code> attribute,
                if present. If not present proceed to step 2.
        
                If the <code title=attr-media-type><a href="#attr-type">type</a></code>, optionally including
                information about the codec(s) required to render it as described in RFC 4281, is not supported
                by the user agent, the element doesn't represent anything except what its contents
                represent and static fallback may ensue. <a href="#refsRFC4281">[RFC4281]</a>
        
                <li> Begin a load of the resource specified by the 
                <code title=attr-media-src><a href="#attr-src">src</a></code> attribute. Note that dynamic 
                fallback may ensue for a variety of reasons. See the discussion of 
                "<code title=event-mediarendererror><a href="#eventdef-event-mediarendererror">mediarendererror</a></code>"
                below.
        </ol>

        <p class="big-issue">Should there be other advisory markup attributes in order to describe
        content even more precisely, e.g. dataRate? Should CSS Media Queries be extended to support 
        bandwidth?

        <p>The <dfn id=attr-autoplay title=attr-media-autoplay><code>autoplay</code></dfn> attribute is a 
        <a href="http://www.whatwg.org/specs/web-apps/current-work/#boolean0">boolean attribute</a>.
        If the attribute is present, the user agent must begin playing the element as soon as it 
        estimates that playback will not be interrupted to rebuffer.</p>

        <p>The <dfn id=attr-controller title=attr-media-controller><code>controller</code></dfn> attribute is a 
        <a href="http://www.whatwg.org/specs/web-apps/current-work/#boolean0">boolean attribute</a>.
        If the attribute is present, the user agent must display a user interface which allows the user
        to control the media element. The <code title="attr-video-height"><a href="#attr-height">height</a></code> 
        attribute on the element does not include the size of the controller, it is the size of the 
        video element only. 
        <span class="big-issue">Should we specify the position of the controller?</span>
        <span class="big-issue">Should we specify <em>what</em> controls it should have?</span>
        </p>

        <p>The <code title=element-video><a href="#video">video</a></code>
        and <code title=element-audio><a href="#audio">audio</a></code>
        elements must implement the <code><a href="#html-timed-media-element">HTMLTimedMediaElement</a></code> interface:
        

<pre class="idl">interface <dfn id="html-timed-media-element">HTMLTimedMediaElement : HTMLElement</dfn> {
           attribute DOMString <a href="#dom-src" title="dom-media-src">src</a>;
           attribute DOMString <a href="#dom-type" title="dom-media-type">type</a>;

  // <a href="#time-attributes">Time</a>
           attribute float <a href="#starttime" title="dom-media-starttime">startTime</a>;
           attribute float <a href="#endtime" title="dom-media-endtime">endTime</a>;
           attribute float <a href="#currenttime" title="dom-media-currenttime">currentTime</a>;
  readonly attribute float <a href="#duration" title="dom-media-duration">duration</a>;
  readonly attribute float <a href="#availableduration" title="dom-media-availableduration">availableDuration</a>;

  // <a href="#playback-attributes">Playback</a>
           attribute float <a href="#currentrate" title="dom-media-currentrate">currentRate</a>;
           attribute float <a href="#playrate" title="dom-media-playrate">playRate</a>;
           attribute boolean <a href="#ispaused" title="dom-media-ispaused">isPaused</a>;

  void <a href="#play" title="dom-media-play">play</a>();
  void <a href="#pause" title="dom-media-pause">pause</a>();
  void <a href="#step" title="dom-media-step">step</a>(in long numberOfFrames);

  // <a href="#audio-attributes">Audio</a>
           attribute float <a href="#volume" title="dom-media-volume">volume</a>;
           attribute boolean <a href="#muted" title="dom-media-muted">muted</a>;
 
  // <a href="#looping-attributes">Looping</a>
           attribute long <a href="#loopcount" title="dom-media-loopcount">loopCount</a>;
           attribute long <a href="#currentloop" title="dom-media-currentloop">currentLoop</a>;
           attribute float <a href="#loopstarttime" title="dom-media-loopstarttime">loopStartTime</a>;
           attribute float <a href="#loopendtime" title="dom-media-loopendtime">loopEndTime</a>;

  // <a href="#characteristics-attributes">Characteristics</a>
           attribute boolean <a href="#hasaudio" title="dom-media-hasaudio">hasAudio</a>;
           attribute boolean <a href="#hasvisual" title="dom-media-hasvisual">hasVisual</a>;

  // <a href="#state-attributes">State</a>
  const unsigned short <a href="#uninitialized" title="dom-media-UNINITIALIZED">UNINITIALIZED</a> = 0;
  const unsigned short <a href="#error" title="dom-media-ERROR">ERROR</a> = 1;
  const unsigned short <a href="#understandable" title="dom-media-UNDERSTANDABLE">UNDERSTANDABLE</a> = 2;
  const unsigned short <a href="#presentable" title="dom-media-PRESENTABLE">PRESENTABLE</a> = 3;
  const unsigned short <a href="#playable" title="dom-media-PLAYABLE">PLAYABLE</a> = 4;
  const unsigned short <a href="#playthroughok" title="dom-media-PLAYTHROUGHOK">PLAYTHROUGHOK</a> = 5;
  const unsigned short <a href="#loaded" title="dom-media-LOADED">LOADED</a> = 6;

  readonly attribute long <a href="#mediastatus" title="dom-media-mediastatus">mediaStatus</a>;

  // <a href="#time-triggers">Timed triggers</a>
  void <a href="#settimetrigger" title="dom-media-settimetrigger">setTimeTrigger</a>(in float time, in TimeTriggerListener listener);
  void <a href="#removetimetrigger" title="dom-media-removetimetrigger">removeTimeTrigger</a>(in float time, in TimeTriggerListener listener);

};</pre> 

<pre class="idl">interface <dfn id="time-trigger-listener">TimeTriggerListener</dfn> {
  void <a href="#handletimetrigger" title="timetrigger-listener-handletimetrigger">handleTimeTrigger</a>(in float time);
};</pre> 


        <h5 id=common-dom-attributes><span class=secno>2.3.2.</span> 
        DOM attributes and methods common to <code title=element-video>video</code> and 
        <code title=element-audio>audio</code> elements.</h5>

        <p>The DOM attributes <dfn id=dom-src title=dom-media-src><code>src</code></dfn> 
        and <dfn id=dom-type title=dom-media-type><code>type</code></dfn> 
        each must reflect the respective content attributes of the same name.

        <p>When the <code title=dom-media-src><a href="#dom-src">src</a></code>
        attribute is set, the user agent must immediately begin to download the
        specified resource unless the user agent cannot support <code title=element-video>
        video</code>/<code title=element-audio>audio</code>, or its support for 
        <code title=element-video>video</code>/<code title=element-audio>audio</code> has
        been disabled. The <code title=dom-media-type>type</code>
        attribute is considered at this time, so it should be cleared or reset when the
        <code title=dom-media-src><a href="#dom-src">src</a></code> attribute it set to a media
        resource with a different type. Fallback content must be reconsidered if the
        user agent is unable to load and display the specified resource.
        
        
        <h6 id="time-attributes"><span class=secno>2.3.2.1.</span> Time Attributes</h6>

                <p>Media durations are not always finite. For example: the duration of a "live" RTP stream
                is <em>indefinite</em> as long as it lasts, i.e. such streams typically proceed indefinitely
                without signalling their duration until the server closes the session. </p>
                
                <p>A media resource which has a <em>finite</em> duration may not have a <em>known</em>
                duration, or may not have a precisely known duration, for some period of time even after
                playback can be initiated. For example: MPEG elementary streams, including audio elementary
                streams such as MP3 files, must be completely scanned in order to determine their precise
                duration. If a user agent reports an approximate duration, it must fire a 
                <code title=event-durationchange><a href="#durationchange">durationchange</a></code> event 
                when the estimate is refined or the precise duration becomes known.</p>

                <p>Time values are represented as floating point numbers, representing a length of time in
                seconds. A value of +infinity, ECMAScript <code>Number.POSITIVE_INFINITY</code>, signifies
                an "indefinite" time. A time value of "Not A Number", ECMAScript <code>Number.NaN</code>,
                signifies an unknown or unspecified time value. This approach has the advantage of encouraging 
                script writers to cope with these situations, as opposed to the approach of defining other
                attributes that need to be examined to determine the validity of the duration attribute but
                which are easily ignored.</p>

                <p class="big-issue">It would be helpful to have utility functions to convert from a formatted
                time string to a double and back. Where should these go?</p>
        
                <p>The DOM attribute <dfn id=availableduration title=dom-media-availableduration>
                <code>availableDuration</code></dfn> returns the duration of the portion of media which is 
                available for playing. The user agent must fire an
                <code title=event-availabledurationchange><a href="#availabledurationchange">availabledurationchange</a></code>
                when the portion of media available for playing changes.</p>

                <p>The DOM attribute <dfn id=duration title=dom-media-duration><code>duration</code></dfn> 
                returns the total duration of the complete media file. For some media formats, the value 
                returned may be an estimate. When an estimated duration is returned, the user agent will
                fire a <code title=event-durationchange><a href="#durationchange">durationchange</a></code>
                event when the estimate is refined or the precise duration becomes known.</p>

                <p>The DOM attribute <dfn id=starttime title=dom-media-starttime><code>startTime</code></dfn> 
                gets and sets the time at which a movie begins to play, and the time at which it stops
                when playing in reverse. The initial value is 0. The value must be in the range from 0
                to <code title=dom-media-endtime><a href="#endtime">endTime</a></code>. If the attribute is
                set to a value greater than <code title=dom-media-endtime><a href="#endtime">endTime</a></code>,
                it is clipped to <code title=dom-media-endtime><a href="#endtime">endTime</a></code>.
                <span class="big-issue">Or should it retain the previous value???</span>
                </p>

                <p>The DOM attribute <dfn id=endtime title=dom-media-endtime><code>endTime</code></dfn> 
                gets and sets the time at which a movie stops playing, and the time at which it begins when
                playing in reverse. This attribute is initially set to <code>Number.NaN</code> to signal
                that it has not been set. The value must be in the range from
                <code title=dom-media-starttime><a href="#starttime">startTime</a></code> to 
                <code title=dom-media-duration><a href="#duration">duration</a></code>. If the attribute
                is set to a value outside this range, it is clipped to the nearest legal value.
                <span class="big-issue">Or should it retain the previous value???</span>
                </p>

                <p>The DOM attribute <dfn id=currenttime title=dom-media-currentTime><code>currentTime</code></dfn>
                gets and sets the position of the play head in the media element's timeline.</p>
        
        <h6 id="playback-attributes"><span class=secno>2.3.2.2.</span> Playback Attributes</h6>
                <p>The DOM attribute <dfn id=currentrate title=dom-media-currentrate><code>currentRate</code></dfn> 
                is the rate at which a media element is currently playing.</p>
        
                <p>The DOM attribute <dfn id=playrate title=dom-media-playrate><code>playRate</code></dfn>
                is the rate that is implicitly set on a media element when its play() method is invoked.
                Some media formats do not allow the play rate to be changed, for example a live RTP stream.
                <span class="big-issue"> What should the UA do when someone tries to set the rate on a media
                format that doesn't allow it? Should we specify the behavior?</span> This value is
                initialized to the media resource's intrinsic value, eg. the <a href=
                "http://developer.apple.com/documentation/QuickTime/QTFF/QTFFChap2/chapter_3_section_2.html#//apple_ref/doc/uid/TP40000939-CH204-32947">
                <code>"preferred rate"</code></a> of a QuickTime movie, or 1 if there is no
                intrinsic value. Changing the <code title=dom-media-playrate>playRate</code> when an element
                is already playing shall <em>not</em> change the 
                <code title=dom-media-currentrate>currentRate</code>. The rate change does not take effect until
                the <code title=dom-media-play>play()</code> method is called again.</p>
        
                <p>The DOM attribute <dfn id=ispaused title=dom-media-ispaused><code>isPaused</code></dfn> 
                returns a value that specifies whether the element is in a paused state. An element that
                is not paused may have a rate of 0 if it is prerolling. <span class="big-issue">This
                should be clarified</span></p>
        
                <p>The <dfn id=play title=dom-media-play><code>play()
                </code></dfn> method begins playing the element at the <code title=dom-media-playrate>
                <a href="#playrate">playRate</a></code>. </p>
        
                <p>The <dfn id=pause title=dom-media-pause><code>pause()</code></dfn> method sets the 
                play rate to zero.</p>
        
                <p>The <dfn id=step title=dom-media-step><code>step(<var title="">numberOfFrames</var>)
                </code></dfn> method steps the specified number of frames. Negative values step backwards.</p>

        <h6 id="audio-attributes"><span class=secno>2.3.2.3.</span> Audio Attributes</h6>
                <p>The DOM attribute <dfn id=volume title=dom-media-volume><code>volume</code></dfn> 
                gets and sets the audio volume of the movie. Legal values are between '0' and '100',
                values outside of this range are clipped.</p>
        
                <p>The DOM attribute <dfn id=muted title=dom-media-muted><code>muted</code></dfn> 
                gets and sets a value that indicates whether the audio is turned on or off.</p>

        <h6 id="looping-attributes"><span class=secno>2.3.2.4.</span> Looping Attributes</h6>

                <p>The DOM attribute <dfn id=loopcount title=dom-media-loopcount><code>loopCount</code></dfn> 
                gets and sets the number of loop itterations that will be played before the media stops.</p>

                <p>The DOM attribute <dfn id=currentloop title=dom-media-currentloop><code>currentLoop</code></dfn> 
                returns the index of the current itteration of the playback of the media. For example, on the 
                first play through the value will be 0, the second time through it will be 1, etc. Playback
                stops when <code title=dom-media-currentloop><a href="#currentloop">currentloop</a></code>
                equals <code title=dom-media-loopcount><a href="#loopcount">loopCount</a></code>.</p>

                <p>The DOM attribute <dfn id=loopstarttime title=dom-media-loopstarttime><code>loopStartTime</code></dfn> 
                gets and sets the time at which a movie begins to play after looping, and the time at which
                it loops when playing in reverse. The initial value is 0. The value must be in the range from 0
                to <code title=dom-media-loopendtime><a href="#loopendtime">loopEndTime</a></code>.
                If the attribute is set to a value outside this range, it is clipped to the nearest legal value. 
                <span class="big-issue">Or should it retain the previous value???</span>
                </p>

                <p>The DOM attribute <dfn id=loopendtime title=dom-media-loopendtime><code>loopEndTime</code></dfn> 
                gets and sets the time at which a movie loops, and the time at which it begins to play 
                after looping when playing in reverse. This attribute is initially set to <code>Number.NaN</code> 
                to signal that it has not been set. The value must be in the range from the
                <code title=dom-media-loopstarttime><a href="#loopstarttime">loopStartTime</a></code>
                to <code title=dom-media-duration><a href="#duration">duration</a></code>. If the attribute
                is set to a value outside this range, it is clipped to the nearest legal value.
                <span class="big-issue">Or should it retain the previous value???</span>
                </p>

        <h6 id="characteristics-attributes"><span class=secno>2.3.2.5.</span> Characteristics</h6>
                <p>The DOM attribute <dfn id=hasaudio title=dom-media-hasaudio><code>hasAudio</code></dfn> 
                returns a value that specifies whether the element has audio media.</p>

                <p>The DOM attribute <dfn id=hasvisual title=dom-media-hasvisual><code>hasVisual</code></dfn> 
                returns a value that specifies whether the element can draw on the screen. An 
                <code title=element-audio><a href="#audio">audio</a></code> element whose 
                <code title="attr-media-src">src</code>
                attribute specifies a media resource that contains visual media shall return false since
                the visual media will not be rendered.</p>

        <h6 id="state-attributes"><span class=secno>2.3.2.6.</span> State</h6>
                <p>The DOM attribute <dfn id=mediastatus title=dom-media-mediastatus><code>mediaStatus</code></dfn> 
                returns the current state of the media element taking into consideration its current loading
                progress and its playability. As loading progresses and playability changes, appropriate
                events (e.g., "mediaunderstandable", "mediapresentable", "load") should be fired. However,
                as it may be necessary to know the current state of the media element after state
                transitions have already occurred, the mediaStatus attribute can be retrieved to know the
                media element's current status.</p>
                
                <p>When the element is created the attribute must be set to 0. It can have the following
                values:</p>

                <dl>
                        <dt>0 <dfn id=uninitialized title=dom-media-UNINITIALIZED><code>UNINITIALIZED</code></dfn> 
                                <dd>The initial value.

                        <dt>1 <dfn id=error title=dom-media-ERROR><code>ERROR</code></dfn> 
                                <dd>This playability state indicates that some kind of error has occurred (which
                                should also be signaled by an error event). One reason this state might be set is
                                that the media file is invalid.

                        <dt>2 <dfn id=understandable title=dom-media-UNDERSTANDABLE><code>UNDERSTANDABLE</code></dfn> 
                                <dd>Attributes of the media element are now available for retrieval (e.g.,
                                <code title=dom-media-duration><a href="#duration">duration</a></code>). It however 
                                has not reached a state where it can render anything (e.g., an image if the media
                                type is visual) or an attempt to play the content should be made.

                        <dt>3 <dfn id=presentable title=dom-media-PRESENTABLE><code>PRESENTABLE</code></dfn> 
                                <dd>The media element has loaded sufficient media data to render at the current time
                                (e.g., it can render the video frame at the current time). It has not however loaded
                                sufficient media data so that setting the 
                                <code title=dom-media-currentrate><a href="#currentrate">currentRate</a></code>
                                property to a non-zero value will render anything (video or audio) more.

                        <dt>4 <dfn id=playable title=dom-media-PLAYABLE><code>PLAYABLE</code></dfn> 
                                <dd>The media element has loaded sufficient media data so that if the play rate was
                                set to a non-zero value, time will advance.

                        <dt>5 <dfn id=playthroughok title=dom-media-PLAYTHROUGHOK><code>PLAYTHROUGHOK</code></dfn> 
                                <dd>The media element has loaded sufficient media data and playback conditions
                                (e.g., download rates, data rate of the media, playback rate) should allow for
                                uninterrupted playback (i.e., no stalls) if the current playback rate is set to the
                                value of playbackRate.

                        <dt>6 <dfn id=loaded title=dom-media-LOADED><code>LOADED</code></dfn> 
                                <dd>All necessary media data for the media element is available (and no data will be
                                evicted). This is not strictly the same thing as all data for the media element's
                                file or files is local, only that all data that can be referenced during playback 
                                will remain available for the life span of the element. To detect if all data 
                                across the media element's files is available, listen for the load event.
                </dl>

                <p>The <code title=dom-media-mediastatus><a href="#mediastatus">mediaStatus</a></code>
                attribute and associated events are useful to an implementor of a custom play controller as
                they can wait for <code title=dom-media-PLAYTHROUGHOK><a href="#playthroughok">PLAYTHROUGHOK</a></code>
                or <code title=dom-media-LOADED><a href="#loaded">LOADED</a></code> to know that autoplay may start. Likewise, if
                during playback, the playback catches up with download, one can pause playback by checking
                for a state less than <code title=dom-media-PLAYABLE><a href="#playable">PLAYABLE</a></code>.</p>

                <p>The mediaStatus state values are ordered so that as the media becomes more playable, the
                values increase. An effect of this is that to detect if the current playability allows for
                querying media properties (i.e., the media element is "understandable"), one can compare the current
                <code title=dom-media-mediastatus><a href="#mediastatus">mediaStatus</a></code> against 
                <code title=dom-media-UNDERSTANDABLE><a href="#understandable">UNDERSTANDABLE</a></code>.
                If equal to or greater than <code title=dom-media-UNDERSTANDABLE><a href="#understandable">UNDERSTANDABLE</a></code>
                , then properties can be queried. 
                If less than <code title=dom-media-UNDERSTANDABLE><a href="#understandable">UNDERSTANDABLE</a></code>
                (including the <code title=dom-media-ERROR><a href="#error">ERROR</a></code> state), 
                properties should not be requested.</p>

                <p>The following state chart illustrates the possible <code title=dom-media-mediastatus>mediaStatus</code>
                state transitions.</p>
        <img src="movie-status-states.png" alt="State chart" />

                <p>It is possible for the states reported by <code title=dom-media-mediastatus><a href="#mediastatus">mediaStatus</a></code>
                to regress as the result of a seek, a change in network conditions (bandwidth changes or
                connection drops), changes in play rate/direction, changes in looping, cache unloading, etc.
                Such changes from any of the presentable/playable states (i.e., 
                <code title=dom-media-PRESENTABLE><a href="#presentable">PRESENTABLE</a></code>, 
                <code title=dom-media-PLAYABLE><a href="#playable">PLAYABLE</a></code>,
                <code title=dom-media-PLAYTHROUGHOK><a href="#playthroughok">PLAYTHROUGHOK</a></code>)
                may push the media element's current media status to an earlier state,
                including <code title=dom-media-UNDERSTANDABLE><a href="#understandable">UNDERSTANDABLE</a></code>.

                <p>To accommodate media playback scenarios where previously loaded media data may be evicted
                during playback (e.g., because of limited caching by the user agent), the 
                <code title=dom-media-LOADED><a href="#loaded">LOADED</a></code> state (and
                the firing of the "load" event) may only occur if all data becomes loaded and cannot be
                evicted during the life of the media element.</p>


        <h6 id="time-triggers"><span class=secno>2.3.2.7.</span> Time triggers</h6>
                <p>The <dfn id=settimetrigger title=dom-media-settimetrigger>
                <code>setTimeTrigger(<var title="">time</var>, <var title="">listener</var>)</code>
                </dfn> method registers a callback for when the media element plays through 
                <var title="">time</var>. <var title="">listener</var> must be an object implementing
                the <code><a href="#time-trigger-listener">TimeTriggerListener</a></code> interface, or a JavaScript 
                function.</p>
        
        
                <p>The <dfn id=removetimetrigger title=dom-media-removetimetrigger>
                <code>removeTimeTrigger(<var title="">time</var>, <var title="">listener</var>)</code>
                </dfn> method removes a previously registered <code><a href="#time-trigger-listener">
                TimeTriggerListener</a></code> from a media element.</p>

        <h2 id="events"><span class="secno">3.</span> Events</h2> 
        
        <h3 id=load-events><span class=secno>3.1.</span> Media loading events</h3>

        <div class='event-definition'>
                <dl>
                        <dt><dfn id=eventdef-event-abort class=event-abort><strong>abort</strong></dfn>
                        <dd>
                        <table >
                                <tr><th><em>Type:</em><td>abort
                                <tr><th><em>Namespace:</em><td>TBD
                                <tr><th><em>Interface:</em><td><a href="http://www.w3.org/TR/DOM-Level-3-Events/events.html#Events-Event">Event</a>
                                <tr><th><em>Cancelable:</em><td>No
                                <tr><th><em>Bubbles:</em><td>Yes
                                <tr><th><em>Target:</em><td>Element
                                <tr><th><em>Context info:</em><td>None
                        </table>
                        <p>The <code title=event-abort>abort</code> event is fired when loading of the media
                        element is canceled.
                </dl>
        </div>

        <div class='event-definition'>
                <dl>
                        <dt><dfn id=eventdef-event-mediarendererror class=event-mediarendererror><strong>mediarendererror</strong></dfn>
                        <dd>
                        <table >
                                <tr><th><em>Type:</em><td>mediarendererror
                                <tr><th><em>Namespace:</em><td>TBD
                                <tr><th><em>Interface:</em><td><a href="http://www.w3.org/TR/DOM-Level-3-Events/events.html#Events-Event">Event</a>
                                <tr><th><em>Cancelable:</em><td>No
                                <tr><th><em>Bubbles:</em><td>Yes
                                <tr><th><em>Target:</em><td>Element
                                <tr><th><em>Context info:</em><td>None
                        </table>
                        <p>The <code title=event-mediarendererror>mediarendererror</code> event is fired if a
                        non-fatal error occurs during media playback that prevents the media resource from being
                        completely rendered. For example: media type is not supported, i.e. the resource
                        contains one or more renderable substreams of types not supported by the user agent; a
                        media format is not supported, i.e. a renderable substream of a type that's supported by
                        the user agent contains media that can't be decoded; or media can't be rendered under
                        current constraints. Here there's no problem with media types or formats but the
                        resource can't be rendered anyway, possibly temporarily.
                </dl>
        </div>

        <div class='event-definition'>
                <dl>
                        <dt><dfn id=eventdef-event-error class=event-error><strong>error</strong></dfn>
                        <dd>
                        <table >
                                <tr><th><em>Type:</em><td>error
                                <tr><th><em>Namespace:</em><td>TBD
                                <tr><th><em>Interface:</em><td><a href="http://www.w3.org/TR/DOM-Level-3-Events/events.html#Events-Event">Event</a>
                                <tr><th><em>Cancelable:</em><td>No
                                <tr><th><em>Bubbles:</em><td>Yes
                                <tr><th><em>Target:</em><td>Element
                                <tr><th><em>Context info:</em><td>None
                        </table>
                        <p>The <code title=event-error>error</code> event is fired if an error occurs during
                        the loading of the media element. This event should not be fired if the loading was
                        canceled; the abort error should be fired in that case.
                </dl>
        </div>

        <div class='event-definition'>
                <dl>
                        <dt><dfn id=eventdef-event-load class=event-load><strong>load</strong></dfn>
                        <dd>
                        <table >
                                <tr><th><em>Type:</em><td>load
                                <tr><th><em>Namespace:</em><td>TBD
                                <tr><th><em>Interface:</em><td><a href="http://www.w3.org/TR/DOM-Level-3-Events/events.html#Events-Event">Event</a>
                                <tr><th><em>Cancelable:</em><td>No
                                <tr><th><em>Bubbles:</em><td>No
                                <tr><th><em>Target:</em><td>Element
                                <tr><th><em>Context info:</em><td>None
                        </table>
                        <p>The <code title=event-load>load</code> event is fired when the media resource is
                        completely loaded by the client. It should only be fired if the data will remain
                        available for the life span of the element. Video and audio elements should be
                        excluded from consideration for the document "load" event.
                </dl>
        </div>
<code title=event-load><a href=#eventdef-event-load">load</a></code>
        <div class='event-definition'>
                <dl>
                        <dt><dfn id=eventdef-event-ratechange class=event-ratechange><strong>ratechange</strong></dfn>
                        <dd>
                        <table >
                                <tr><th><em>Type:</em><td>ratechange
                                <tr><th><em>Namespace:</em><td>TBD
                                <tr><th><em>Interface:</em><td><a href="http://www.w3.org/TR/DOM-Level-3-Events/events.html#Events-Event">Event</a>
                                <tr><th><em>Cancelable:</em><td>No
                                <tr><th><em>Bubbles:</em><td>No
                                <tr><th><em>Target:</em><td>Element
                                <tr><th><em>Context info:</em><td>None
                        </table>
                        <p>The <code title=event-ratechange>ratechange</code> event is fired soon after the 
                        <code title=dom-media-currentrate><a href="#currentrate">currentRate</a></code> property 
                        is changed from its previous value. Inspect the object's currentRate property for the new rate
                        value. To detect that playback is starting, check that the new 
                        <code title=dom-media-currentrate><a href="#currentrate">currentRate</a></code> is
                        non-zero; to detect that playback has paused, check that the new 
                        <code title=dom-media-currentrate><a href="#currentrate">currentRate</a></code> is zero (0).
                </dl>
        </div>

        <div class='event-definition'>
                <dl>
                <dt><dfn id=eventdef-event-volumechange class=event-volumechange><strong>volumechange</strong></dfn>
                        <dd>
                        <table >
                                <tr><th><em>Type:</em><td>volumechange
                                <tr><th><em>Namespace:</em><td>TBD
                                <tr><th><em>Interface:</em><td><a href="http://www.w3.org/TR/DOM-Level-3-Events/events.html#Events-Event">Event</a>
                                <tr><th><em>Cancelable:</em><td>No
                                <tr><th><em>Bubbles:</em><td>No
                                <tr><th><em>Target:</em><td>Element
                                <tr><th><em>Context info:</em><td>None
                        </table>
                        <p>The <code title=event-volumechange>volumechange</code> event is fired after either
                        the <code title=dom-media-volume><a href="#volume">volume</a></code>
                        or the <code title=dom-media-muted><a href="#muted">muted</a></code> property has changed from its
                        previous value. Inspect the object's properties for the new value.
                </dl>
        </div>

        <div class='event-definition'>
                <dl>
                <dt><dfn id=eventdef-event-durationchange class=event-durationchange><strong>durationchange</strong></dfn>
                        <dd>
                        <table >
                                <tr><th><em>Type:</em><td>durationchange
                                <tr><th><em>Namespace:</em><td>TBD
                                <tr><th><em>Interface:</em><td><a href="http://www.w3.org/TR/DOM-Level-3-Events/events.html#Events-Event">Event</a>
                                <tr><th><em>Cancelable:</em><td>No
                                <tr><th><em>Bubbles:</em><td>No
                                <tr><th><em>Target:</em><td>Element
                                <tr><th><em>Context info:</em><td>None
                        </table>
                        <p>The <code title=event-durationchange>durationchange</code> event is fired if the 
                        <code title=dom-media-duration><a href="#duration">duration</a></code>
                        property of the media element changes. One reason this might occur is when the 
                        <code title=dom-media-duration><a href="#duration">duration</a></code> for the media element
                        which was previously estimated becomes known during loading. It might change for 
                        other reasons that are not defined here.
                </dl>
        </div>

        <div class='event-definition'>
                <dl>
                <dt><dfn id=eventdef-event-availabledurationchange class=event-availabledurationchange><strong>availabledurationchange</strong></dfn>
                        <dd>
                        <table >
                                <tr><th><em>Type:</em><td>availabledurationchange
                                <tr><th><em>Namespace:</em><td>TBD
                                <tr><th><em>Interface:</em><td><a href="http://www.w3.org/TR/DOM-Level-3-Events/events.html#Events-Event">Event</a>
                                <tr><th><em>Cancelable:</em><td>No
                                <tr><th><em>Bubbles:</em><td>No
                                <tr><th><em>Target:</em><td>Element
                                <tr><th><em>Context info:</em><td>None
                        </table>
                        <p>The <code title=event-availabledurationchange>availabledurationchange</code> 
                        event is fired if the <code title=dom-media-availableduration><a href="#availableduration">availableduration</a></code>
                        property of the media element changes. One reason this might occur is during progressive
                        download as more media is downloaded. It might change for other reasons that are not
                        defined here. 
                </dl>
                <p class="big-issue">How often should the availabledurationchange event fire? Too often and we
                waste a lot of cycles, too infrequently and the UI can get out of sync with reality.
                Specifying a minimum time interval, eg. "at least once a second", is wasteful in a long file
                when the play head is not near the available duration, but useful when the two are close...
                </p>
        </div>

        <div class='event-definition'>
                <dl>
                <dt><dfn id=eventdef-event-loop class=event-loop><strong>loop</strong></dfn>
                        <dd>
                        <table >
                                <tr><th><em>Type:</em><td>loop
                                <tr><th><em>Namespace:</em><td>TBD
                                <tr><th><em>Interface:</em><td><a href="http://www.w3.org/TR/DOM-Level-3-Events/events.html#Events-Event">Event</a>
                                <tr><th><em>Cancelable:</em><td>No
                                <tr><th><em>Bubbles:</em><td>No
                                <tr><th><em>Target:</em><td>Element
                                <tr><th><em>Context info:</em><td>None
                        </table>
                        <p>The <code title=event-loop>loop</code> event is fired when the media is playing 
                        through a loop prior to its final loop according to its <code title=dom-media-loopcount>
                        <a href="#loopcount">loopCount</a></code>.
                </dl>
        </div>

        <div class='event-definition'>
                <dl>
                <dt><dfn id=eventdef-event-playcomplete class=event-playcomplete><strong>playcomplete</strong></dfn>
                        <dd>
                        <table >
                                <tr><th><em>Type:</em><td>playcomplete
                                <tr><th><em>Namespace:</em><td>TBD
                                <tr><th><em>Interface:</em><td><a href="http://www.w3.org/TR/DOM-Level-3-Events/events.html#Events-Event">Event</a>
                                <tr><th><em>Cancelable:</em><td>No
                                <tr><th><em>Bubbles:</em><td>No
                                <tr><th><em>Target:</em><td>Element
                                <tr><th><em>Context info:</em><td>None
                        </table>
                        <p>The <code title=event-playcomplete>playcomplete</code> event is fired when the element
                        automatically stops playback because it reaches the limit of playback (i.e., the value of the 
                        <code title=dom-media-endtime><a href="#endtime">endTime</a></code>
                        property if playing forward, <code title=dom-media-starttime><a href="#starttime">startTime</a></code>
                        if playing backward) and the media is playing through its final repetition, according to its
                        <code title=dom-media-loopcount><a href="#loopcount">loopCount</a></code>.
                </dl>
        </div>

        <div class='event-definition'>
                <dl>
                <dt><dfn id=eventdef-event-timejump class=event-timejump><strong>timejump</strong></dfn>
                        <dd>
                        <table >
                                <tr><th><em>Type:</em><td>timejump
                                <tr><th><em>Namespace:</em><td>TBD
                                <tr><th><em>Interface:</em><td><a href="http://www.w3.org/TR/DOM-Level-3-Events/events.html#Events-Event">Event</a>
                                <tr><th><em>Cancelable:</em><td>No
                                <tr><th><em>Bubbles:</em><td>No
                                <tr><th><em>Target:</em><td>Element
                                <tr><th><em>Context info:</em><td>None
                        </table>
                        <p>The <code title=event-timechange>timechange</code> event is fired when the media element's 
                        current time changes by any other means than playback at the current rate. This can be either by an explicit
                        change to the <code title=dom-media-currenttime><a href="#currenttime">currentTime</a></code>
                        property (e.g., under script control) or by any other means than playback at the current rate. 
                        In other words, this event is not fired during play back but is fired if the 
                        <code title=dom-media-currenttime><a href="#currenttime">currentTime</a></code> 
                        property is explicitly changed. Setting the <code title=dom-media-currenttime>
                        <a href="#currenttime">currentTime</a></code> to its current value shall not fire the timechange event.
                </dl>
        </div>


        <h3 id=playback-events><span class=secno>3.2.</span> Media playback events</h3>
        <div class='event-definition'>
                <dl>
                <dt><dfn id=eventdef-event-mediaunderstandable class=event-mediaunderstandable><strong>mediaunderstandable</strong></dfn>
                        <dd>
                        <table >
                                <tr><th><em>Type:</em><td>mediaunderstandable
                                <tr><th><em>Namespace:</em><td>TBD
                                <tr><th><em>Interface:</em><td><a href="http://www.w3.org/TR/DOM-Level-3-Events/events.html#Events-Event">Event</a>
                                <tr><th><em>Cancelable:</em><td>No
                                <tr><th><em>Bubbles:</em><td>No
                                <tr><th><em>Target:</em><td>Element
                                <tr><th><em>Context info:</em><td>None
                        </table>
                        <p>The <code title=event-mediaunderstandable>mediaunderstandable</code> event is 
                        fired when the element's <code title=dom-media-mediastatus>
                        <a href="#mediastatus">mediaStatus</a></code> transitions to or
                        past the UNDERSTANDABLE state. This indicates that attributes of the object that are
                        dependent upon the media resource or the loading of the resource (e.g., 
                        <code title=dom-media-duration><a href="#duration">duration</a></code>,
                        <code title=dom-media-availableduration><a href="#availableduration">availableDuration</a></code>,
                        <code title=dom-media-hasaudio><a href="#hasaudio">hasAudio</a></code>, etc)
                        can be retrieved. The UNDERSTANDABLE state does not
                        indicate that the element can render anything (e.g., drawing a frame if the media 
                        is visual or decoding audio if it has audio).
                </dl>
        </div>

        <div class='event-definition'>
                <dl>
                <dt><dfn id=eventdef-event-mediapresentable class=event-mediapresentable><strong>mediapresentable</strong></dfn>
                        <dd>
                        <table >
                                <tr><th><em>Type:</em><td>mediapresentable
                                <tr><th><em>Namespace:</em><td>TBD
                                <tr><th><em>Interface:</em><td><a href="http://www.w3.org/TR/DOM-Level-3-Events/events.html#Events-Event">Event</a>
                                <tr><th><em>Cancelable:</em><td>No
                                <tr><th><em>Bubbles:</em><td>No
                                <tr><th><em>Target:</em><td>Element
                                <tr><th><em>Context info:</em><td>None
                        </table>
                        <p>The <code title=event-mediapresentable>mediapresentable</code> event is fired 
                        when the element's <code title=dom-media-mediastatus>
                        <a href="#mediastatus">mediaStatus</a></code> transitions to or past the
                        the PRESENTABLE state. This indicates that the media object can render something at
                        the current time (e.g., it can render the video frame at the current time). The
                        PRESENTABLE state does not however indicate that it has loaded sufficient media so
                        that setting the <code title=dom-media-currentrate><a href="#currentrate">currentRate</a></code>
                        property to a non-zero value will render anything more (video or audio).

                </dl>
        </div>

        <div class='event-definition'>
                <dl>
                <dt><dfn id=eventdef-event-mediaplayable class=event-mediaplayable><strong>mediaplayable</strong></dfn>
                        <dd>
                        <table >
                                <tr><th><em>Type:</em><td>mediaplayable
                                <tr><th><em>Namespace:</em><td>TBD
                                <tr><th><em>Interface:</em><td><a href="http://www.w3.org/TR/DOM-Level-3-Events/events.html#Events-Event">Event</a>
                                <tr><th><em>Cancelable:</em><td>No
                                <tr><th><em>Bubbles:</em><td>No
                                <tr><th><em>Target:</em><td>Element
                                <tr><th><em>Context info:</em><td>None
                        </table>
                        <p>The <code title=event-mediaplayable>mediaplayable</code> event is fired 
                        when the element's <code title=dom-media-mediastatus>
                        <a href="#mediastatus">mediaStatus</a></code> transitions to or past the
                        PLAYABLE state. This indicates the object has loaded sufficient media data so that
                        if the <code title=dom-media-currentrate><a href="#currentrate">currentRate</a></code>
                        is set to a non-zero value, time will advance. An example usage
                        would be not to allow the play button in a custom movie controller to take effect
                        unless this state or better has been reached.
                </dl>
        </div>

        <div class='event-definition'>
                <dl>
                <dt><dfn id=eventdef-event-mediacanplaythrough class=event-mediacanplaythrough><strong>mediacanplaythrough</strong></dfn>
                        <dd>
                        <table >
                                <tr><th><em>Type:</em><td>mediacanplaythrough
                                <tr><th><em>Namespace:</em><td>TBD
                                <tr><th><em>Interface:</em><td><a href="http://www.w3.org/TR/DOM-Level-3-Events/events.html#Events-Event">Event</a>
                                <tr><th><em>Cancelable:</em><td>No
                                <tr><th><em>Bubbles:</em><td>No
                                <tr><th><em>Target:</em><td>Element
                                <tr><th><em>Context info:</em><td>None
                        </table>
                        <p>The <code title=event-mediacanplaythrough>mediacanplaythrough</code> event is 
                        fired when the element's <code title=dom-media-mediastatus>
                        <a href="#mediastatus">mediaStatus</a></code> transitions to
                        or past the PLAYTHROUGHOK state. This indicates the object has loaded sufficient
                        media data and playback conditions (e.g., download rates, data rate of the media,
                        playback rate) are sufficient to allow for uninterrupted playback (i.e., no stalls)
                        if the current playback rate is set to the value of <code title=dom-media-playrate>
                        <a href="#playrate">playRate</a></code>. 
                </dl>
        </div>

        <h2 id="window-additions"><span class="secno">4.</span> WindowHTML Additions</h2> 

        <p>The <code><a href="#windowhtml">WindowHTML</a></code> object must
        provide the following constructors:
        
        <dl>
                <dt><dfn id=audio-constructor title=dom-audio-constructor><code>Audio()</code></dfn>
                
                <dd>
                <p>Constructs an <code><a href="#html-audio-element">
                HTMLAudioElement</a></code> object (a new <code title=element-audio><a href="#audio">audio</a></code>
                element).

                <dt><dfn id=video-constructor title=dom-video-constructor><code>Video()</code></dfn>
                
                <dt><dfn id=video-constructor-w title=dom-video-constructor-w><code>Video(in unsigned long <var
                title="">width</var>)</code></dfn>
                
                <dt><dfn id=video-constructor-wh title=dom-video-constructor-wh><code>Video(in unsigned long <var
                title="">width</var>, in unsigned long <var title="">height</var>)</code></dfn>
        
                <dd>
                <p>Constructs an <code><a href="#html-video-element">
                HTMLVideoElement</a></code> object (a new
                <code title=element-video><a href="#video">video</a></code> element). If the <var title="">width</var>
                and <var title="">height</var> arguments are both present, the new object's <code title=video-element-width>
                <a href="#dom-video-width">width</a></code> and <code title=video-element-height><a href="#dom-video-height">
                height</a></code> content attributes must be set to <var title="">width</var> and
                <var title="">height</var>. If only the <var title="">width</var> argument is present,
                the new object's <code title=video-element-width><a href="#dom-video-width">width</a></code> content
                attribute must be set to <var title="">width</var> and the <code title=video-element-height>
                <a href="#dom-video-height">height</a></code> content attribute must be set to a value that 
                maintains the media resource's intrinsic aspect ratio.
        </dl>



        <h2 class=no-num id=references>References</h2>

        <p>All references are normative unless marked "Informative".

        <dl>
                <dt id=refsCSS21>[CSS21]

                <dd><cite><a href="http://www.w3.org/TR/2006/WD-CSS21-20061106">
                        Cascading Style Sheets, level 2 revision 1 CSS 2.1 Specification
                </a></cite>, 
                H&aring;kon Wium Lie, Tantek &Ccedil;elik, Bert Bos, and Ian Hickson, Editors.
                World Wide Web Consortium, 06&nbsp;Nov&nbsp;2006.
                CSS 2.1 Specification is available at http://www.w3.org/TR/2006/WD-CSS21-20061106
                
                <dt id=refsRFC2046>[RFC2046]
                
                <dd><cite><a href="http://www.ietf.org/rfc/rfc2046">
                        Multipurpose Internet Mail Extensions (MIME) Part Two: Media Types
                </a></cite>, 
                N. Freed, N. Borenstein. IETF, November&nbsp;1996. 
                RFC 2046 is available at http://www.ietf.org/rfc/rfc2046
                
                <dt id=refsRFC4281>[RFC4281]
                
                <dd><cite><a href="http://www.ietf.org/rfc/rfc4281">
                        The Codecs Parameter for "Bucket" Media Types
                </a></cite>, 
                R. Gellens, D. Singer, P. Frojdh. IETF, November&nbsp;2005. 
                RFC 4281 is available at http://www.ietf.org/rfc/rfc4281
                
        </dl>

        
        <h2 class=no-num id=acknowledgements>Acknowledgements</h2>
                <p class="big-issue">Coming soon</p>
        
</body>
</html>

