- From: Anant Narayanan via cvs-syncmail <cvsmail@w3.org>
- Date: Mon, 13 Aug 2012 18:38:01 +0000
- To: public-dap-commits@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 UTC