W3C home > Mailing lists > Public > public-dap-commits@w3.org > August 2012

2011/webrtc/editor getusermedia.html,1.11,1.12

From: Anant Narayanan via cvs-syncmail <cvsmail@w3.org>
Date: Mon, 13 Aug 2012 18:38:01 +0000
To: public-dap-commits@w3.org
Message-Id: <E1T0zWb-0005Kw-A6@lionel-hutz.w3.org>
Update of /sources/public/2011/webrtc/editor
In directory hutz:/tmp/cvs-serv20471/editor

Modified Files:
	getusermedia.html 
Log Message:
Updating draft to github version getusermedia-20120813.html

Index: getusermedia.html
===================================================================
RCS file: /sources/public/2011/webrtc/editor/getusermedia.html,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -d -r1.11 -r1.12
--- getusermedia.html	25 Jun 2012 06:23:24 -0000	1.11
+++ getusermedia.html	13 Aug 2012 18:37:59 -0000	1.12
@@ -7,35 +7,14 @@
   <link href="getusermedia.css" rel="stylesheet" type="text/css">
 
   <title>Media Capture and Streams</title>
-  <meta content="text/html; charset=utf-8" http-equiv="Content-Type"><!--
-    === NOTA BENE ===
-      For the three scripts below, if your spec resides on dev.w3 you can
-      check them out in the same tree and use relative links so that they'll
-      work offline.
-
-    To generate the dated version of the specification:
-
-      Open this doc in Mozilla.
-
-      Do a CTRL-ALT-SHIFT-S
-
-      Select "XHMTL( source)" from dialog box. This will pop a new tab with
-      genreated version of the document.
-
-      This will open a new tab with generated html. Copy and paste this to
-      a new file. Note if you use Chrome or Safari, this step will not
-      work. What will happen is the paste will have th original document,
-      not what was displayed in the window that you did the copy on.
-
-      Rename the new file to the correct day such as
-      getusermedia-20111003.html then search for and edit the links for
-      "This version" and "Previos version". Add the new file into git and
-      check in.
-
-      Once everyone is happy, the getusermedia.html and
-      getusermedia-20111003.html files can be coppied to
-      getusermedia.html and getusermedia-20111003.html
-      respectively in the ../editor/. W3C directory.
+  <meta content="text/html; charset=utf-8" http-equiv="Content-Type">
+  <!--
+    After making changes to this document in the github repo, run:
+      ./publish.sh getusermedia.html
+    to publish a new editor's draft to the W3C CVS. This assumes your
+    CVS checkout is located at ../2011/webrtc, you can specify the location
+    as the second argument, for example:
+      ./publish.sh getusermedia.html ~/path/to/w3/2011/webrtc
   -->
 
   <script class="remove" src="http://www.w3.org/Tools/respec/respec-w3c-common"
@@ -73,7 +52,7 @@
   </section>
 
   <section class="informative" id="intro">
-    <h1>Introduction</h1>
+    <h2>Introduction</h2>
 
     <p>Access to multimedia streams (video, audio, or both) from local devices
     (video cameras, microphones, Web cams) can have a number of uses, such as
@@ -85,11 +64,45 @@
     process it.</p>
   </section>
 
+<section id="conformance">
+      <p>
+        This specification defines conformance criteria that apply to a single
+        product: the <dfn>user agent</dfn> that implements the
+        interfaces that it contains.
+      </p>
+      <p>
+        Implementations that use ECMAScript to implement the APIs defined in
+        this specification must implement them in a manner consistent with the
+        ECMAScript Bindings defined in the Web IDL specification [[!WEBIDL]],
+        as this specification uses that specification and terminology.
+      </p>
+    </section>
+    <section>
+      <h2>Terminology</h2>
+      <p>
+        The <code><a href="http://dev.w3.org/html5/spec/webappapis.html#eventhandler">
+        EventHandler</a></code> interface represents a callback used for event
+        handlers as defined in [[!HTML5]].
+      </p>
+      <p>
+        The concepts <dfn><a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">
+        queue a task</a></dfn> and
+        <dfn><a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">
+        fires a simple event</a></dfn> are defined in [[!HTML5]].
+      </p>
+      <p>
+        The terms <dfn><a href="http://dev.w3.org/html5/spec/webappapis.html#event-handlers">
+        event handlers</a></dfn> and
+        <dfn><a href="http://dev.w3.org/html5/spec/webappapis.html#event-handler-event-type">
+        event handler event types</a></dfn> are defined in [[!HTML5]].
+      </p>
+    </section>  
+
   <section id="stream-api">
-    <h1>Stream API</h1>
+    <h2>Stream API</h2>
 
     <section>
-      <h1>Introduction</h1>
+      <h2>Introduction</h2>
 
       <p>The <code><a>MediaStream</a></code> interface is used to represent
       streams of media data, typically (but not necessarily) of audio and/or
@@ -169,29 +182,29 @@
     </section>
 
     <section>
-      <h1>MediaStream</h1>
+      <h2>MediaStream</h2>
 
-      <p>The <dfn id="dom-mediastream"><code>MediaStream()</code></dfn>
-      constructor takes two arguments. The arguments are two lists with
-      <code><a>MediaStreamTrack</a></code> objects which will be used to
-      construct the audio and video track lists of the new
-      <code><a>MediaStream</a></code> object. When the constructor is invoked,
-      the UA must run the following steps:</p>
+      <p>The <dfn id="dom-mediastream"> <code>MediaStream()</code></dfn>
+      constructor takes zero or one argument. If the argument,
+      <var>trackContainers</var>, is supplied, it specifies a list of <code>
+      <a>MediaStream</a></code>, <code><a>MediaStreamTrackList</a></code> and
+      <code><a>MediaStreamTrack</a></code> objects. The list objects specifies
+      existing tracks whose sources will be used to constuct the tracks in the
+      new <code><a>MediaStream</a></code> object. A <code>
+      <a>MediaStreamTrack</a></code> object specifies a track directly, while
+      <code><a>MediaStream</a></code> and <code><a>MediaStreamTrackList</a>
+      </code> objects specifiy all tracks contained within these objects. When
+      the constructor is invoked, the UA must run the following steps:</p>
 
       <ol>
         <li>
-          <p>Let <var>audioTracks</var> be the constructor’s first
-          argument.</p>
-        </li>
-
-        <li>
-          <p>Let <var>videoTracks</var> be the constructor’s second
-          argument.</p>
+          <p>Let <var>trackContainers</var> be the constructor’s argument, if
+          any, or null otherwise.</p>
         </li>
 
         <li>
-          <p>Let <var>stream</var> be a newly constructed
-          <code><a>MediaStream</a></code> object.</p>
+          <p>Let <var>stream</var> be a newly constructed <code>
+          <a>MediaStream</a></code> object.</p>
         </li>
 
         <li>
@@ -200,53 +213,81 @@
         </li>
 
         <li>
-          <p>If <var>audioTracks</var> is not null, then run the following sub
-          steps for each element <var>track</var> in
-          <var>audioTracks</var>:</p>
+          <p>If <var>trackContainers</var> is not null, then run the following
+          sub steps for every element, <var>trackContainer</var>, in
+          <var>trackContainers</var>:</p>
+        </li>
 
-          <ol>
+        <ol>
             <li>
-              <p>If <var>track</var> is of any other kind than
-              "<code>audio</code>", then throw a <code>SyntaxError</code>
-              exception.</p>
+              <p>If <var>trackContainer</var> is null, then abort these steps
+              and continue with the next element.</p>
             </li>
 
             <li>
-              <p>If <var>track</var> has the same underlying source as another
-              element in <var>stream’s</var> audio track list, then abort these
-              steps.</p>
+              <p>If <var>trackContainer</var> is of type <code>
+              <a>MediaStreamTrack</a></code>, then run the following sub
+              steps:</p>
             </li>
 
-            <li>
-              <p>Add <var>track</var> to <var>stream’s</var> audio track
-              list.</p>
-            </li>
-          </ol>
-        </li>
+            <ol>
+              <li>
+                <p><em>Add track</em>: Let <var>track</var> be the <code>
+                <a>MediaStreamTrack</a></code> about to be processed.</p>
+              </li>
 
-        <li>
-          <p>If <var>videoTracks</var> is not null, then run the following sub
-          steps for each element <var>track</var> in
-          <var>videoTracks</var>:</p>
+              <li>
+                <p>If <var>track’s</var> kind attribute is not
+                "<code>audio</code>" or "<code>video</code>", then throw a
+                <code>SyntaxError</code> exception.</p>
+              </li>
+
+              <li>
+                <p>If <var>track</var> has <a>ended</a> or if there is already
+                a <code><a>MediaStreamTrack</a></code> contained within
+                <var>stream</var> that has the same underlying source as
+                <var>track</var>, then abort these steps.
+                </p>
+              </li>
+
+              <li>
+                <p>Create a new <code><a>MediaStreamTrack</a></code> object
+                and let it inherit <var>track’s</var> underlying source,
+                <code><a href="#dom-mediastreamtrack-kind">kind</a></code> and
+                <code><a href="#dom-mediastreamtrack-label">label</a></code>
+                attributes. Append the new <code><a>MediaStreamTrack</a>
+                </code> to the corresponding track list
+                (<code><a href="#dom-mediastream-audiotracks">audioTracks</a>
+                </code> or <code>
+                <a href="#dom-mediastream-videotracks">videoTracks</a></code>)
+                in <var>stream</var> according to kind.</p>
+              </li>
+            </ol>
 
-          <ol>
             <li>
-              <p>If <var>track</var> is of any other kind than
-              "<code>video</code>", then throw a <code>SyntaxError</code>
-              exception.</p>
+              <p>If <var>trackContainer</var> is of type <code>
+              <a>MediaStreamTrackList</a></code>, then run the sub steps
+              labeled <em>Add track</em> (above) for every <code>
+              <a>MediaStreamTrack</a></code> in <var>trackContainer</var>.</p>
             </li>
 
             <li>
-              <p>If <var>track</var> has the same underlying source as another
-              element in <var>stream’s</var> video track list, then abort these
-              steps.</p>
+              <p>If <var>trackContainer</var> is of type <code>
+              <a>MediaStream</a></code>, then run the sub steps labeled
+              <em>Add track</em> (above) for every <code>
+              <a>MediaStreamTrack</a></code> in <var>trackContainer’s</var>
+              two track lists
+              (<code><a href="#dom-mediastream-audiotracks">audioTracks</a>
+              </code> and <code>
+              <a href="#dom-mediastream-videotracks">videoTracks</a></code>).
+              </p>
             </li>
 
-            <li>
-              <p>Add <var>track</var> to <var>stream’s</var> video track
-              list.</p>
             </li>
-          </ol>
+        </ol>
+
+        <li>
+          <p>Return <var>stream</var>.</p>
         </li>
       </ol>
 
@@ -314,8 +355,13 @@
       interaction task source. Otherwise the task source for this <span title=
       "concept-task">task</span> is the networking task source.</p>
 
-      <dl class="idl" title=
-      "[Constructor (MediaStreamTrackList? audioTracks, MediaStreamTrackList? videoTracks)] interface MediaStream">
+      <p class="note">The union type we want to express here is not supported
+      by ReSpec at the moment. Until it is supported, let
+      <code>TracksUnionType</code> be defined as <code>(MediaStream? or
+      MediaStreamTrackList or MediaStreamTrack)[]</code>.</p>
+
+      <dl class="idl"
+        title="[Constructor (TracksUnionType? trackContainers)] interface MediaStream">
       <dt>readonly attribute DOMString label</dt>
 
         <dd>
@@ -333,8 +379,7 @@
 
           <p>When a <code><a>MediaStream</a></code> is created from another
           using the <code><a href="#dom-mediastream">MediaStream()</a></code>
-          constructor, the <code title="dom-MediaStream-label"><a href=
-          "#dom-mediastream-label">label</a></code> attribute is initialized to
+          constructor, the <code><a>label</a></code> attribute is initialized to
           a newly generated value.</p><!-- described above -->
 
           <p>The <dfn id="dom-mediastream-label"><code>label</code></dfn>
@@ -391,7 +436,7 @@
           to true.</p>
         </dd>
 
-        <dt>attribute Function? onended</dt>
+        <dt>attribute EventHandler onended</dt>
 
         <dd>This event handler, of type <code><a href=
         "#event-mediastream-ended">ended</a></code>, MUST be supported by all
@@ -403,7 +448,7 @@
     </section>
 
     <section>
-      <h1>LocalMediaStream</h1>
+      <h2>LocalMediaStream</h2>
 
       <p>Before the web application can access the user's media input devices
       it must let <code><a href=
@@ -471,7 +516,7 @@
     </section>
 
     <section>
-      <h1>MediaStreamTrack</h1>
+      <h2>MediaStreamTrack</h2>
 
       <p>A <code><a>MediaStreamTrack</a></code> object represents a media
       source in the user agent. Several <code><a>MediaStreamTrack</a></code>
@@ -652,21 +697,21 @@
           (1).</p>
         </dd>
 
-        <dt>attribute Function? onmute</dt>
+        <dt>attribute EventHandler onmute</dt>
 
         <dd>This event handler, of type <code><a href=
         "#event-mediastreamtrack-muted">muted</a></code>, MUST be supported by
         all objects implementing the <code><a>MediaStreamTrack</a></code>
         interface.</dd>
 
-        <dt>attribute Function? onunmute</dt>
+        <dt>attribute EventHandler onunmute</dt>
 
         <dd>This event handler, of type <code><a href=
         "#event-mediastreamtrack-unmuted">unmuted</a></code>, MUST be supported
         by all objects implementing the <code><a>MediaStreamTrack</a></code>
         interface.</dd>
 
-        <dt>attribute Function? onended</dt>
+        <dt>attribute EventHandler onended</dt>
 
         <dd>This event handler, of type <code><a href=
         "#event-mediastreamtrack-ended">ended</a></code>, MUST be supported by
@@ -676,7 +721,7 @@
     </section>
 
     <section>
-      <h1>URL</h1>
+      <h2>URL</h2>
 
       <dl class="idl" title="partial interface URL">
         <dt>static DOMString createObjectURL (MediaStream stream)</dt>
@@ -706,7 +751,7 @@
     </section>
 
     <section>
-      <h1>MediaStreamTrackList</h1>
+      <h2>MediaStreamTrackList</h2>
 
       <p>A <code><a>MediaStreamTrackList</a></code> object’s <dfn id=
       "concept-track-list-corresponding-stream">corresponding</dfn>
@@ -812,14 +857,14 @@
           </ol>
         </dd>
 
-        <dt>attribute Function? onaddtrack</dt>
+        <dt>attribute EventHandler onaddtrack</dt>
 
         <dd>This event handler, of type <code><a href=
         "#event-mediastreamtracklist-addtrack">addtrack</a></code>, MUST be
         supported by all objects implementing the
         <code><a>MediaStreamTrackList</a></code> interface.</dd>
 
-        <dt>attribute Function? onremovetrack</dt>
+        <dt>attribute EventHandler onremovetrack</dt>
 
         <dd>This event handler, of type <code><a href=
         "#event-mediastreamtracklist-removetrack">removetrack</a></code>, MUST
@@ -829,21 +874,21 @@
     </section>
 
     <section>
-      <h1>MediaStreams as Media Elements</h1>
+      <h2>MediaStreams as Media Elements</h2>
 
-      <p>A MediaStream may be assigned to media elements as defined in <a href=
-      "http://www.w3.org/TR/html5/media-elements.html#media-elements">HTML5</a>
-      by calling createObjectURL to obtain a URL for the MediaStream and then
-      setting the media elements 'src' attribute to that url. A MediaStream is
+      <p>A <code>MediaStream</code> may be assigned to media elements as defined in <a href=
+      "http://www.w3.org/TR/html5/media-elements.html#media-elements">HTML5</a> [[!HTML5]]
+      by calling <code><a>createObjectURL</a></code> to obtain a URL for the <code>MediaStream</code> and then
+      setting the media elements <code>src</code> attribute to that URL. A <code>MediaStream</code> is
       not preloadable or seekable and represents a simple, potentially infinite,
       linear media timeline. The timeline starts at 0 and increments linearly
-      in real time as long as the MediaStream is playing. The timeline does not
-      increment when the MediaStream is paused.</p>
+      in real time as long as the <code>MediaStream</code> is playing. The timeline does not
+      increment when the <code>MediaStream</code> is paused.</p>
 
       <p class="issue">Do we also need to support direct assignment and access
       of the underlying stream?</p>
 
-      <p>The nature of the MediaStream places certain restrictions on the
+      <p>The nature of the <code>MediaStream</code> places certain restrictions on the
       behavior and attribute values of the associated media element and on the
       operations that can be performed on it, as shown below:</p>
 
@@ -853,17 +898,15 @@
           media element load algorithm</a>, reaches the <a href=
           "http://www.w3.org/TR/html5/media-elements.html#concept-media-load-resource">
           resource fetch phase</a> of this algorithm and determines that the
-          media resource in question is a MediaStream, it <em class="rfc2119"
-          title="must">must</em> immediately abort the <a href=
+          media resource in question is a MediaStream, it MUST immediately abort the <a href=
           "http://www.w3.org/TR/html5/media-elements.html#concept-media-load-algorithm">
           resource selection algorithm</a>, setting the <a href=
           "http://www.w3.org/TR/html5/media-elements.html#dom-media-readystate">
           <code>media.readystate</code></a> to HAVE_ENOUGH_DATA.
         </li>
 
-        <li>The UA <em class="rfc2119" title="must">must not</em> buffer data
-        from a MediaStream. When playing, the UA <em class="rfc2119" title=
-        "must">must</em> always play the current data from the stream.</li>
+        <li>The UA MUST NOT buffer data
+        from a MediaStream. When playing, the UA MUST always play the current data from the stream.</li>
       </ul>
 
       <table summary=
@@ -920,7 +963,7 @@
 
             <td><code>DOMString</code></td>
 
-            <td>'None'</td>
+            <td><code>none</code></td>
 
             <td>A MediaStream cannot be preloaded.</td>
           </tr>
@@ -928,7 +971,7 @@
           <tr>
             <td>
               <a href=
-              "http://www.w3.org/TR/html5/media-elements.html#attr-media-buffered"
+              "http://www.w3.org/TR/html5/media-elements.html#dom-media-buffered"
               class="externalDFN"><code>buffered</code></a>
             </td>
 
@@ -938,12 +981,9 @@
               class="externalDFN"><code>TimeRanges</code></a>
             </td>
 
-            <td><code>buffered.length</code> <em class="rfc2119" title=
-            "must">must</em> return <code>1</code>.<br>
-            <code>buffered.start(0)</code> <em class="rfc2119" title=
-            "must">must</em> return <code>0</code>.<br>
-            <code>buffered.end(0)</code> <em class="rfc2119" title=
-            "must">must</em> return <code>0</code>.<br></td>
+            <td><code>buffered.length</code> MUST return <code>1</code>.<br>
+            <code>buffered.start(0)</code> MUST return <code>0</code>.<br>
+            <code>buffered.end(0)</code> MUST return <code>0</code>.<br></td>
 
             <td>A MediaStream cannot be preloaded. Therefore, the amount
             buffered is always an empty TimeRange.</td>
@@ -963,7 +1003,7 @@
             playing.</td>
 
             <td>The value is the current stream position, in seconds. The UA
-            <em class="rfc2119" title="must">must</em> ignore attempts to set
+            MUST ignore attempts to set
             this attribute.</td>
           </tr>
 
@@ -981,8 +1021,7 @@
             <td>
               A MediaStream does not have a pre-defined duration.
 
-              <p>If the underlying MediaStream is destroyed, the UA <em class=
-              "rfc2119" title="must">must</em> set this property to the value
+              <p>If the underlying MediaStream is destroyed, the UA MUST set this property to the value
               of the last known <code>currentTime</code>.</p>
             </td>
           </tr>
@@ -999,7 +1038,7 @@
             <td>false</td>
 
             <td>A MediaStream is not seekable. Therefore, this attribute
-            <em class="rfc2119" title="must">must</em> always have the value
+            MUST always have the value
             <code>false</code>.</td>
           </tr>
 
@@ -1015,9 +1054,8 @@
             <td>1.0</td>
 
             <td>A MediaStream is not seekable. Therefore, this attribute
-            <em class="rfc2119" title="must">must</em> always have the value
-            <code>1.0</code> and any attempt to alter it <em class="rfc2119"
-            title="must">must</em> fail.</td>
+            MUST always have the value
+            <code>1.0</code> and any attempt to alter it MUST fail.</td>
           </tr>
 
           <tr>
@@ -1032,9 +1070,8 @@
             <td>1.0</td>
 
             <td>A MediaStream is not seekable. Therefore, this attribute
-            <em class="rfc2119" title="must">must</em> always have the value
-            <code>1.0</code> and any attempt to alter it <em class="rfc2119"
-            title="must">must</em> fail.</td>
+            MUST always have the value
+            <code>1.0</code> and any attempt to alter it MUST fail.</td>
           </tr>
 
           <tr>
@@ -1051,12 +1088,9 @@
             </td>
 
             <td>
-              <code>played.length</code> <em class="rfc2119" title=
-              "must">must</em> return <code>1</code>.<br>
-              <code>played.start(0)</code> <em class="rfc2119" title=
-              "must">must</em> return <code>0</code>.<br>
-              <code>played.end(0)</code> <em class="rfc2119" title=
-              "must">must</em> return the last known <a href=
+              <code>played.length</code> MUST return <code>1</code>.<br>
+              <code>played.start(0)</code> MUST return <code>0</code>.<br>
+              <code>played.end(0)</code> MUST return the last known <a href=
               "http://www.w3.org/TR/html5/media-elements.html#dom-media-currenttime"
               class="externalDFN"><code>currentTime</code></a>.
             </td>
@@ -1079,14 +1113,11 @@
             </td>
 
             <td>
-              <code>seekable.length</code> <em class="rfc2119" title=
-              "must">must</em> return <code>0</code>.<br>
-              <code>seekable.start()</code> <em class="rfc2119" title=
-              "must">must</em> return <a href=
+              <code>seekable.length</code> MUST return <code>0</code>.<br>
+              <code>seekable.start()</code> MUST return <a href=
               "http://www.w3.org/TR/html5/media-elements.html#dom-media-currenttime"
               class="externalDFN"><code>currentTime</code></a>.<br>
-              <code>seekable.end()</code> <em class="rfc2119" title=
-              "must">must</em> return <a href=
+              <code>seekable.end()</code> MUST return <a href=
               "http://www.w3.org/TR/html5/media-elements.html#dom-media-currenttime"
               class="externalDFN"><code>currentTime</code></a>.
             </td>
@@ -1125,13 +1156,174 @@
         </tbody>
       </table>
     </section>
+
+    <section class="informative">
+      <h2>Event summary</h2>
+
+      <p>The following event fires on <code>
+          <a>MediaStream</a>
+        </code> objects:</p>
+
+      <table>
+        <tr>
+          <th>Event name</th>
+
+          <th>Interface</th>
+
+          <th>Fired when...</th>
+        </tr>
+
+        <tbody>
+          <tr>
+            <td>
+              <dfn id="event-mediastream-ended">
+                <code>ended</code>
+              </dfn>
+            </td>
+
+            <td>
+              <code>Event</code>
+            </td>
+
+            <td>The <code>
+                <a>MediaStream</a>
+              </code> <a>finished</a> as a result of all tracks in the <code>
+                <a>MediaStream</a>
+              </code> <a title="ended">ending</a>.</td>
+          </tr>
+        </tbody>
+      </table>
+
+      <p>The following event fires on <code>
+          <a>MediaStreamTrack</a>
+        </code> objects:</p>
+
+      <table>
+        <tr>
+          <th>Event name</th>
+
+          <th>Interface</th>
+
+          <th>Fired when...</th>
+        </tr>
+
+        <tbody>
+          <tr>
+            <td>
+              <dfn id="event-mediastreamtrack-muted">
+                <code>muted</code>
+              </dfn>
+            </td>
+
+            <td>
+              <code>Event</code>
+            </td>
+
+            <td>The <code>
+                <a>MediaStreamTrack</a>
+              </code> object's source is temporarily unable to provide
+            data.</td>
+          </tr>
+
+          <tr>
+            <td>
+              <dfn id="event-mediastreamtrack-unmuted">
+                <code>unmuted</code>
+              </dfn>
+            </td>
+
+            <td>
+              <code>Event</code>
+            </td>
+
+            <td>The <code>
+                <a>MediaStreamTrack</a>
+              </code> object's source is live again after having been
+            temporarily unable to provide data.</td>
+          </tr>
+
+          <tr>
+            <td>
+              <dfn id="event-mediastreamtrack-ended">
+                <code>ended</code>
+              </dfn>
+            </td>
+
+            <td>
+              <code>Event</code>
+            </td>
+
+            <td>The <code>
+                <a>MediaStreamTrack</a>
+              </code> object's source will no longer provide any data, either
+            because the user revoked the permissions, or because the source
+            device has been ejected, or because the remote peer stopped
+            sending data, or because the <code>
+                <a href="#dom-mediastream-stop">stop()</a>
+              </code> method was invoked.</td>
+          </tr>
+        </tbody>
+      </table>
+
+      <p>The following event fires on <code>
+          <a>MediaStreamTrackList</a>
+        </code> objects:</p>
+
+      <table>
+        <tr>
+          <th>Event name</th>
+
+          <th>Interface</th>
+
+          <th>Fired when...</th>
+        </tr>
+
+        <tbody>
+          <tr>
+            <td>
+              <dfn id="event-mediastreamtracklist-addtrack">
+                <code>addtrack</code>
+              </dfn>
+            </td>
+
+            <td>
+              <code>
+                <a>MediaStreamTrackEvent</a>
+              </code>
+            </td>
+
+            <td>A new <code>
+                <a>MediaStreamTrack</a>
+              </code> has been added to this list.</td>
+          </tr>
+
+          <tr>
+            <td>
+              <dfn id="event-mediastreamtracklist-removetrack">
+                <code>removetrack</code>
+              </dfn>
+            </td>
+
+            <td>
+              <code>
+                <a>MediaStreamTrackEvent</a>
+              </code>
+            </td>
+
+            <td>A <code>
+                <a>MediaStreamTrack</a>
+              </code> has been removed from this list.</td>
+          </tr>
+        </tbody>
+      </table>
+    </section>
   </section>
 
   <section id="local-content">
-    <h1>Obtaining local multimedia content</h1>
+    <h2>Obtaining local multimedia content</h2>
 
     <section>
-      <h1>NavigatorUserMedia</h1>
+      <h2>NavigatorUserMedia</h2>
 
       <dl class="idl" title="[NoInterfaceObject] interface NavigatorUserMedia">
         <dt>void getUserMedia(MediaStreamConstraints? constraints,
@@ -1368,14 +1560,9 @@
             </li>
 
             <li>
-              <p>Let <var>error</var> be a new <code><a href=
-              "#navigatorusermediaerror">NavigatorUserMediaError</a></code>
-              object whose <code title=
-              "dom-NavigatorUserMediaError-code"><a href=
-              "#dom-navigatorusermediaerror-code">code</a></code> attribute has
-              the numeric value 1 (<code title=
-              "dom-NavigatorUserMediaError-PERMISSION_DENIED"><a href=
-              "#dom-navigatorusermediaerror-permission_denied">PERMISSION_DENIED</a></code>).</p>
+              <p>Let <var>error</var> be a new <code><a>NavigatorUserMediaError</a></code>
+              object whose <code><a>code</a></code> attribute has
+              the numeric value 1 (<code><a>PERMISSION_DENIED</a></code>).</p>
             </li>
 
             <li>
@@ -1396,7 +1583,7 @@
     </section>
 
     <section>
-      <h1>MediaStreamConstraints</h1>
+      <h2>MediaStreamConstraints</h2>
 
       <dl class="idl" title="dictionary MediaStreamConstraints">
         <!--        <dt>boolean audio</dt>
@@ -1449,7 +1636,7 @@
     </section>
 
     <section>
-      <h1>NavigatorUserMediaSuccessCallback</h1>
+      <h2>NavigatorUserMediaSuccessCallback</h2>
 
       <dl class="idl" title=
       "callback NavigatorUserMediaSuccessCallback = void">
@@ -1460,7 +1647,7 @@
     </section>
 
     <section>
-      <h1>NavigatorUserMediaError and NavigatorUserMediaErrorCallback</h1>
+      <h2>NavigatorUserMediaError and NavigatorUserMediaErrorCallback</h2>
 
       <dl class="idl" title=
       "[NoInterfaceObject] interface NavigatorUserMediaError">
@@ -1486,7 +1673,7 @@
     </section>
 
     <section class="informative">
-      <h1>Implementation Suggestions</h1>
+      <h2>Implementation Suggestions</h2>
 
       <div class="practice">
         <span id="resource-reservation" class="practicelab">Resource
@@ -1559,7 +1746,7 @@
   </section>
 
   <section>
-    <h1>Examples</h1>
+    <h2>Examples</h2>
 
     <div>
       <p>This sample code exposes a button. When clicked, the button is
@@ -1687,7 +1874,7 @@
   </section>
 
   <section>
-    <h1 id="sec-iana">IANA Registrations</h1>
+    <h1 id="sec-iana">IANA Registrations</h2>
 
     <section>
       <h2 id="sec-constraints">Constraints Registrations</h2>
@@ -1757,7 +1944,7 @@
   </section>
 
   <section>
-    <h1>Change Log</h1>
+    <h2>Change Log</h2>
 
     <p>This section will be removed before publication.</p><!--
     <h2>To Do Items</h2>
@@ -1851,7 +2038,7 @@
   </section>
 
   <section class="appendix">
-    <h1>Acknowledgements</h1>
+    <h2>Acknowledgements</h2>
   </section>
 </body>
 </html>
Received on Monday, 13 August 2012 18:38:04 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 13 August 2012 18:38:05 GMT