- From: CVS User abergkvi <cvsmail@w3.org>
- Date: Fri, 04 Jul 2014 11:38:59 +0000
- To: public-dap-commits@w3.org
Update of /sources/public/2011/webrtc/editor In directory roscoe:/tmp/cvs-serv15311 Modified Files: getusermedia.html webrtc.html Added Files: MediaRecorder.html Log Message: Added 20140704 archived version (initial import of MediaRecorder spec). --- /sources/public/2011/webrtc/editor/getusermedia.html 2014/06/20 02:48:50 1.33 +++ /sources/public/2011/webrtc/editor/getusermedia.html 2014/07/04 11:38:59 1.34 @@ -385,7 +385,7 @@ } code { - color: #ff4500; + color: #C83500; } /* --- TOC --- */ @@ -467,11 +467,11 @@ </p> <h1 class="title p-name" id="title" property="dcterms:title">Media Capture and Streams</h1> - <h2 id="w3c-editor-s-draft-19-june-2014" property="dcterms:issued" datatype="xsd:dateTime" content="2014-06-20T02:02:40.000Z"><acronym title="World Wide Web Consortium">W3C</acronym> Editor's Draft <time class="dt-published" datetime="2014-06-19">19 June 2014</time></h2> + <h2 id="w3c-editor-s-draft-04-july-2014" property="dcterms:issued" datatype="xsd:dateTime" content="2014-07-04T09:59:36.000Z"><acronym title="World Wide Web Consortium">W3C</acronym> Editor's Draft <time class="dt-published" datetime="2014-07-04">04 July 2014</time></h2> <dl> <dt>This version:</dt> - <dd><a class="u-url" href="http://dev.w3.org/2011/webrtc/editor/archives/20140619/getusermedia.html">http://dev.w3.org/2011/webrtc/editor/archives/20140619/getusermedia.html</a></dd> + <dd><a class="u-url" href="http://dev.w3.org/2011/webrtc/editor/archive/20140704/getusermedia.html">http://dev.w3.org/2011/webrtc/editor/archive/20140704/getusermedia.html</a></dd> <dt>Latest published version:</dt> <dd><a href="http://www.w3.org/TR/mediacapture-streams/">http://www.w3.org/TR/mediacapture-streams/</a></dd> @@ -485,7 +485,7 @@ <dt>Previous editor's draft:</dt> - <dd><a href="http://dev.w3.org/2011/webrtc/editor/archives/20140507/getusermedia.html">http://dev.w3.org/2011/webrtc/editor/archives/20140507/getusermedia.html</a></dd> + <dd><a href="http://dev.w3.org/2011/webrtc/editor/archives/20140619/getusermedia.html">http://dev.w3.org/2011/webrtc/editor/archives/20140619/getusermedia.html</a></dd> @@ -583,9 +583,9 @@ -</section><section id="toc"><h2 id="h2_toc" role="heading" aria-level="1" class="introductory">Table of Contents</h2><ul id="respecContents" role="directory" class="toc"><li class="tocline"><a class="tocxref" href="#intro"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#conformance"><span class="secno">2. </span>Conformance</a></li><li class="tocline"><a class="tocxref" href="#terminology"><span class="secno">3. </span>Terminology</a></li><li class="tocline"><a class="tocxref" href="#stream-api"><span class="secno">4. </span>MediaStream API</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#introduction"><span class="secno">4.1 </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#mediastream"><span class="secno">4.2 </span>MediaStream</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors"><span class="secno">4.2.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes"><pan class="secno">4.2.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods"><span class="secno">4.2.3 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediastreamtrack"><span class="secno">4.3 </span>MediaStreamTrack</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#life-cycle-and-media-flow"><span class="secno">4.3.1 </span>Life-cycle and Media Flow</a></li><li class="tocline"><a class="tocxref" href="#tracks-and-constraints"><span class="secno">4.3.2 </span>Tracks and Constraints</a></li><li class="tocline"><a class="tocxref" href="#media-stream-track-interface-definition"><span class="secno">4.3.3 </span>Interface Definition</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-1"><span class="secno">4.3.3.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods-1"><span class="secno">4.3.3.2 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#track-source-tyes"><span class="secno">4.3.4 </span>Track Source Types</a></li><li class="tocline"><a class="tocxref" href="#media-track-constraints"><span class="secno">4.3.5 </span>MediaTrackConstraints</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-mediatrackconstraints-members"><span class="secno">4.3.5.1 </span>Dictionary <span class="formerLink"><code>MediaTrackConstraints</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#dictionary-mediatrackconstraintset-members"><span class="secno">4.3.5.2 </span>Dictionary <span class="formerLink"><code>MediaTrackConstraintSet</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#isolated-media-streams"><span class="secno">4.3.6 </span>Isolated Media Streams</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediastreamtrackevent"><span class="secno">4.4 </span>MediaStreamTrackEvent</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-1"><span class="secno>4.4.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes-2"><span class="secno">4.4.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#dictionary-mediastreamtrackeventinit-members"><span class="secno">4.4.3 </span>Dictionary <span class="formerLink"><code>MediaStreamTrackEventInit</code></span> Members</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#the-model-sources-sinks-constraints-and-settings"><span class="secno">5. </span>The model: sources, sinks, constraints, and settings</a></li><li class="tocline"><a class="tocxref" href="#mediastreams-as-media-elements"><span class="secno">6. </span>MediaStreams as Media Elements</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#direct-assignment-to-media-elements"><span class="secno">6.1 </span>Direct Assignment to Media Elements</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-3"><span class="secno">6.1.1 </span>Attributes</a></li></ul><li><li class="tocline"><a class="tocxref" href="#loading-and-playing-a-mediastream-in-a-media-element"><span class="secno">6.2 </span>Loading and Playing a MediaStream in a Media Element</a></li><li class="tocline"><a class="tocxref" href="#media-element-attributes-when-playing-a-mediastream"><span class="secno">6.3 </span>Media Element Attributes when Playing a MediaStream</a></li></ul></li><li class="tocline"><a class="tocxref" href="#error-handling"><span class="secno">7. </span>Error Handling</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-4"><span class="secno">7.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#constructors-2"><span class="secno">7.2 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes-5"><span class="secno">7.3 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#dictionary-mediastreamerroreventinit-members"><span class="secno">7.4 </span>Dictionary <span class="formerLink"><code>MeiaStreamErrorEventInit</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#event-summary"><span class="secno">8. </span>Event summary</a></li><li class="tocline"><a class="tocxref" href="#enumerating-devices"><span class="secno">9. </span>Enumerating Local Media Devices</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#navigatorusermedia"><span class="secno">9.1 </span>NavigatorUserMedia</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-6"><span class="secno">9.1.1 </span>Attributes</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediadevices"><span class="secno">9.2 </span>MediaDevices</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-7"><span class="secno">9.2.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods-2"><span class="secno">9.2.2 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#device-info"><span class="secno">9.3 </span>evice Info</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#callback-mediadeviceinfocallback-parameters"><span class="secno">9.3.1 </span>Callback <span class="formerLink"><code>MediaDeviceInfoCallback</code></span> Parameters</a></li><li class="tocline"><a class="tocxref" href="#dictionary-mediadeviceinfo-members"><span class="secno">9.3.2 </span>Dictionary <span class="formerLink"><code>MediaDeviceInfo</code></span> Members</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#local-content"><span class="secno">10. </span>Obtaining local multimedia content</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#navigatorusermedia-interface-extensions"><span class="secno">10.1 </span>NavigatorUserMedia Interface Extensions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#methods-3"><span class="secno">10.1.1 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediadevices-interface-extensions"><span class="secno">10.2 <span>MediaDevices Interface Extensions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#methods-4"><span class="secno">10.2.1 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediastreamconstraints"><span class="secno">10.3 </span>MediaStreamConstraints</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-mediastreamconstraints-members"><span class="secno">10.3.1 </span>Dictionary <span class="formerLink"><code>MediaStreamConstraints</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#navigatorusermediasuccesscallback"><span class="secno">10.4 </span>NavigatorUserMediaSuccessCallback</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#callback-navigatorusermediasuccesscallback-parameters"><span class="secno">10.4.1 </span>Callback <span class="formerLink"><code>NavigatorUserMediaSuccessCallback</code></span> Parameters</a></li></ul></li><li class="tocline"><a class="tocxref" href="#navigatorusrmediaerrorcallback"><span class="secno">10.5 </span>NavigatorUserMediaErrorCallback</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#callback-navigatorusermediaerrorcallback-parameters"><span class="secno">10.5.1 </span>Callback <span class="formerLink"><code>NavigatorUserMediaErrorCallback</code></span> Parameters</a></li></ul></li><li class="tocline"><a class="tocxref" href="#implementation-suggestions"><span class="secno">10.6 </span>Implementation Suggestions</a></li></ul></li><li class="tocline"><a class="tocxref" href="#constrainable-interface"><span class="secno">11. </span>Constrainable Pattern</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#interface-definition"><span class="secno">11.1 </span>Interface Definition</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-8"><span class="secno">11.1.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods-5"><span class="secno">11.1.2 </span>Methods</a></li><li class="toclie"><a class="tocxref" href="#applyconstraints-failure-callback"><span class="secno">11.1.3 </span>applyConstraints Failure Callback</a><ul class="toc"></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#registry"><span class="secno">11.2 </span>The Property Registry</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-constraindoublerange-members"><span class="secno">11.2.1 </span>Dictionary <span class="formerLink"><code>ConstrainDoubleRange</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#dictionary-constrainlongrange-members"><span class="secno">11.2.2 </span>Dictionary <span class="formerLink"><code>ConstrainLongRange</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#dictionary-constraindomstringparameters-members"><span class="secno">11.2.3 </span>Dictionary <span class="formerLink"><code>ConstrainDOMStringParameters</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#dictionary-constrainvieofacingmodeparameters-members"><span class="secno">11.2.4 </span>Dictionary <span class="formerLink"><code>ConstrainVideoFacingModeParameters</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#capabilities"><span class="secno">11.3 </span>Capabilities</a></li><li class="tocline"><a class="tocxref" href="#settings"><span class="secno">11.4 </span><span>Settings</span> +</section><section id="toc"><h2 id="h2_toc" role="heading" aria-level="1" class="introductory">Table of Contents</h2><ul id="respecContents" role="directory" class="toc"><li class="tocline"><a class="tocxref" href="#intro"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#conformance"><span class="secno">2. </span>Conformance</a></li><li class="tocline"><a class="tocxref" href="#terminology"><span class="secno">3. </span>Terminology</a></li><li class="tocline"><a class="tocxref" href="#stream-api"><span class="secno">4. </span>MediaStream API</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#introduction"><span class="secno">4.1 </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#mediastream"><span class="secno">4.2 </span>MediaStream</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors"><span class="secno">4.2.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes"><pan class="secno">4.2.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods"><span class="secno">4.2.3 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediastreamtrack"><span class="secno">4.3 </span>MediaStreamTrack</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#life-cycle-and-media-flow"><span class="secno">4.3.1 </span>Life-cycle and Media Flow</a></li><li class="tocline"><a class="tocxref" href="#tracks-and-constraints"><span class="secno">4.3.2 </span>Tracks and Constraints</a></li><li class="tocline"><a class="tocxref" href="#media-stream-track-interface-definition"><span class="secno">4.3.3 </span>Interface Definition</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-1"><span class="secno">4.3.3.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods-1"><span class="secno">4.3.3.2 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#track-source-tyes"><span class="secno">4.3.4 </span>Track Source Types</a></li><li class="tocline"><a class="tocxref" href="#media-track-constraints"><span class="secno">4.3.5 </span>MediaTrackConstraints</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-mediatrackconstraints-members"><span class="secno">4.3.5.1 </span>Dictionary <span class="formerLink"><code>MediaTrackConstraints</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#dictionary-mediatrackconstraintset-members"><span class="secno">4.3.5.2 </span>Dictionary <span class="formerLink"><code>MediaTrackConstraintSet</code></span> Members</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#mediastreamtrackevent"><span class="secno">4.4 </span>MediaStreamTrackEvent</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-1"><span class="secno">4.4.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes-2"><span class="secno">4.4.2 </span>Attriutes</a></li><li class="tocline"><a class="tocxref" href="#dictionary-mediastreamtrackeventinit-members"><span class="secno">4.4.3 </span>Dictionary <span class="formerLink"><code>MediaStreamTrackEventInit</code></span> Members</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#the-model-sources-sinks-constraints-and-settings"><span class="secno">5. </span>The model: sources, sinks, constraints, and settings</a></li><li class="tocline"><a class="tocxref" href="#mediastreams-as-media-elements"><span class="secno">6. </span>MediaStreams as Media Elements</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#direct-assignment-to-media-elements"><span class="secno">6.1 </span>Direct Assignment to Media Elements</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-3"><span class="secno">6.1.1 </span>Attributes</a></li></ul></li><li class="tocline"><a class="tocxref" href="#loading-and-playing-a-mediastream-in-a-media-element"><span class="secno">6.2 </spanLoading and Playing a MediaStream in a Media Element</a></li><li class="tocline"><a class="tocxref" href="#media-element-attributes-when-playing-a-mediastream"><span class="secno">6.3 </span>Media Element Attributes when Playing a MediaStream</a></li></ul></li><li class="tocline"><a class="tocxref" href="#error-handling"><span class="secno">7. </span>Error Handling</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-4"><span class="secno">7.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#constructors-2"><span class="secno">7.2 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes-5"><span class="secno">7.3 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#dictionary-mediastreamerroreventinit-members"><span class="secno">7.4 </span>Dictionary <span class="formerLink"><code>MediaStreamErrorEventInit</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#event-summary"><span clas="secno">8. </span>Event summary</a></li><li class="tocline"><a class="tocxref" href="#enumerating-devices"><span class="secno">9. </span>Enumerating Local Media Devices</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#navigatorusermedia"><span class="secno">9.1 </span>NavigatorUserMedia</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-6"><span class="secno">9.1.1 </span>Attributes</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediadevices"><span class="secno">9.2 </span>MediaDevices</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-7"><span class="secno">9.2.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods-2"><span class="secno">9.2.2 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#device-info"><span class="secno">9.3 </span>Device Info</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#callback-mediadeviceinfocallback-parameters"><span class=secno">9.3.1 </span>Callback <span class="formerLink"><code>MediaDeviceInfoCallback</code></span> Parameters</a></li><li class="tocline"><a class="tocxref" href="#dictionary-mediadeviceinfo-members"><span class="secno">9.3.2 </span>Dictionary <span class="formerLink"><code>MediaDeviceInfo</code></span> Members</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#local-content"><span class="secno">10. </span>Obtaining local multimedia content</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#navigatorusermedia-interface-extensions"><span class="secno">10.1 </span>NavigatorUserMedia Interface Extensions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#methods-3"><span class="secno">10.1.1 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediadevices-interface-extensions"><span class="secno">10.2 </span>MediaDevices Interface Extensions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#methods-4"><span class="secno>10.2.1 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediastreamconstraints"><span class="secno">10.3 </span>MediaStreamConstraints</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-mediastreamconstraints-members"><span class="secno">10.3.1 </span>Dictionary <span class="formerLink"><code>MediaStreamConstraints</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#navigatorusermediasuccesscallback"><span class="secno">10.4 </span>NavigatorUserMediaSuccessCallback</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#callback-navigatorusermediasuccesscallback-parameters"><span class="secno">10.4.1 </span>Callback <span class="formerLink"><code>NavigatorUserMediaSuccessCallback</code></span> Parameters</a></li></ul></li><li class="tocline"><a class="tocxref" href="#navigatorusermediaerrorcallback"><span class="secno">10.5 </span>NavigatorUserMediaErrorCallback</a><ul class="toc"><li class="tocline"><a class=tocxref" href="#callback-navigatorusermediaerrorcallback-parameters"><span class="secno">10.5.1 </span>Callback <span class="formerLink"><code>NavigatorUserMediaErrorCallback</code></span> Parameters</a></li></ul></li><li class="tocline"><a class="tocxref" href="#implementation-suggestions"><span class="secno">10.6 </span>Implementation Suggestions</a></li></ul></li><li class="tocline"><a class="tocxref" href="#constrainable-interface"><span class="secno">11. </span>Constrainable Pattern</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#interface-definition"><span class="secno">11.1 </span>Interface Definition</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-8"><span class="secno">11.1.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods-5"><span class="secno">11.1.2 </span>Methods</a></li><li class="tocline"><a class="tocxref" href="#applyconstraints-failure-callback"><span class="secno">11.1.3 </span>applyConstraints Failure Callback</><ul class="toc"></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#registry"><span class="secno">11.2 </span>The Property Registry</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-constraindoublerange-members"><span class="secno">11.2.1 </span>Dictionary <span class="formerLink"><code>ConstrainDoubleRange</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#dictionary-constrainlongrange-members"><span class="secno">11.2.2 </span>Dictionary <span class="formerLink"><code>ConstrainLongRange</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#dictionary-constraindomstringparameters-members"><span class="secno">11.2.3 </span>Dictionary <span class="formerLink"><code>ConstrainDOMStringParameters</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#dictionary-constrainvideofacingmodeparameters-members"><span class="secno">11.2.4 </span>Dictionary <span class="formerLink"><code>ConstrainVideoFacingModePrameters</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#capabilities"><span class="secno">11.3 </span>Capabilities</a></li><li class="tocline"><a class="tocxref" href="#settings"><span class="secno">11.4 </span><span>Settings</span> </a></li><li class="tocline"><a class="tocxref" href="#constraints"><span class="secno">11.5 </span><span>Constraints and ConstraintSet</span> - </a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-constraints-members"><span class="secno">11.5.1 </span>Dictionary <span class="formerLink"><code>Constraints</code></span> Members</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#examples"><span class="secno">12. </span>Examples</a></li><li class="tocline"><a class="tocxref" href="#error-names"><span class="secno">13. </span>Error Names</a></li><li class="tocline"><a class="tocxref" href="#iana-registrations"><span class="secno">14. </span>IANA Registrations</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#track-property-registrations"><span class="secno">14.1 </span>Track Property Registrations</a></li></ul></li><li class="tocline"><a class="tocxref" href="#change-log"><span class="secno">15. </span>Change Log</a></li><li class="tocline"><a class="tocxref" href="#acknowledgements"><span class="secno">A. </span>Acknowledgements</a></li><li class="tocline"><a class="tocxref" href="#reerences"><span class="secno">B. </span>References</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#normative-references"><span class="secno">B.1 </span>Normative references</a></li><li class="tocline"><a class="tocxref" href="#informative-references"><span class="secno">B.2 </span>Informative references</a></li></ul></li></ul></section> + </a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-constraints-members"><span class="secno">11.5.1 </span>Dictionary <span class="formerLink"><code>Constraints</code></span> Members</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#examples"><span class="secno">12. </span>Examples</a></li><li class="tocline"><a class="tocxref" href="#error-names"><span class="secno">13. </span>Error Names</a></li><li class="tocline"><a class="tocxref" href="#privacy-and-security-considerations"><span class="secno">14. </span>Privacy and Security Considerations</a></li><li class="tocline"><a class="tocxref" href="#iana-registrations"><span class="secno">15. </span>IANA Registrations</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#track-property-registrations"><span class="secno">15.1 </span>Track Property Registrations</a></li></ul></li><li class="tocline"><a class="tocxref" href="#change-log"><span class="secno">16. </span>Change Log</a></li><li class"tocline"><a class="tocxref" href="#acknowledgements"><span class="secno">A. </span>Acknowledgements</a></li><li class="tocline"><a class="tocxref" href="#references"><span class="secno">B. </span>References</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#normative-references"><span class="secno">B.1 </span>Normative references</a></li><li class="tocline"><a class="tocxref" href="#informative-references"><span class="secno">B.2 </span>Informative references</a></li></ul></li></ul></section> @@ -745,31 +745,6 @@ <p>A conforming user-agent <em title="must" class="rfc2119">must</em> support all the setting names defined in this spec.</p> - - <p>As represented in this specification, a source is the - realization of a device as presented by the User Agent. Thus, - it is possible that the actual settings of the device may - differ from those presented by the User Agent. As an example, - there are some operating systems and native device APIs that - will treat a camera with a single native capture resolution as - if it can produce any resolution less than that value, - downsampling as necessary. Even though the camera technically - has only one specific width and one specific height it can - support, it is likely that the User Agent will represent this - camera as a source with a range of supported widths and - heights. To enable the application to determine when this has - occurred, tracks provide both - a <code><a class="internalDFN" href="#dfn-getsettings">getSettings()</a></code> method (which always - returns a setting that satisfies the constraints applied to - the track) and a <code><a class="internalDFN" href="#dfn-getnativesettings">getNativeSettings()</a></code> - method (which always returns, to the best of the User Agent's - determination, the actual setting of the native device). Note - that both the track settings and the native settings are - snapshots and can change without application involvement. In - particular, changes in the native settings could cause changes - in the track settings that would result in the latter values - being outside of the constraints and thus causing - overconstrained events for all affected tracks.</p> </dd> @@ -1096,16 +1071,10 @@ algorithm).</p> </dd><dt id="widl-MediaStream-id"><code>id</code> of type <span class="idlAttrType">DOMString</span>, readonly </dt><dd> <p>When a <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> object is created, the user - agent <em title="MUST" class="rfc2119">MUST</em> generate a globally unique identifier string, and <em title="MUST" class="rfc2119">MUST</em> - initialize the object's <code><a href="#dom-mediastream-id">id</a></code> attribute to that string. Such - strings <em title="MUST" class="rfc2119">MUST</em> only use characters in the ranges U+0021, U+0023 to - U+0027, U+002A to U+002B, U+002D to U+002E, U+0030 to U+0039, U+0041 - to U+005A, U+005E to U+007E, and <em title="MUST" class="rfc2119">MUST</em> be 36 characters long.</p> - <!-- UUIDs have 36 characters - including hyphens; the ranges above comes from RFC4574 (the a=label: - thing in SDP) --> - <!-- described below --> - + agent <em title="MUST" class="rfc2119">MUST</em> generate an identifier string, and <em title="MUST" class="rfc2119">MUST</em> initialize the + object's <code><a href="#dom-mediastream-id">id</a></code> attribute + to that string. A good practice is to use an UUID, which is 36 + characters long in its canonical form.</p> <p>The <dfn id="dom-mediastream-id"><code>id</code></dfn> attribute <em title="MUST" class="rfc2119">MUST</em> return the value to which it was initialized when the object was @@ -1168,16 +1137,20 @@ <li> - <p>Let <var>trackSetClone</var> be a list that contains the + <p>Let <var>clonedTracks</var> be a list that contains the result of running <code><a href="#dom-mediastreamtrack-clone">MediaStreamTrack.clone()</a></code> - on all the tracks in this stream.</p> + on all the tracks in the stream on which this method was called. + </p> </li> <li> - <p>Let <var>trackSetClone</var> be <var>streamClone</var>'s + <p>Let <var>clonedTracks</var> be <var>streamClone</var>'s <a href="#track-set">track set</a>.</p> </li> + + + <li>Return <var>streamClone</var>.</li> </ol> <div><em>No parameters.</em></div><div><em>Return type: </em><code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code></div></dd><dt id="widl-MediaStream-getAudioTracks-sequence-MediaStreamTrack"><code>getAudioTracks</code></dt><dd> <p>Returns a sequence of <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> objects @@ -1264,27 +1237,69 @@ source reference count to keep track of source usage, but the specifics are out of scope for this specification.</p> + <p>If there is no stored permission to use that source, the + UA <em title="SHOULD" class="rfc2119">SHOULD</em> also remove the "permission granted" indicator for the source.</p> + <section id="life-cycle-and-media-flow"> <h4 id="h4_life-cycle-and-media-flow" role="heading" aria-level="3"><span class="secno">4.3.1 </span>Life-cycle and Media Flow</h4> <h4 id="life-cycle">Life-cycle</h4> - <p>A <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> has three stages in its - life-cycle: <code>new</code>, <code>live</code> and <code>ended</code>. - A track begins as <code>new</code> prior to being connected to a - source. The current stage is reflected by the object's <code><a href="#dom-mediastreamtrack-readystate">readyState</a></code> attribute.</p> - - <div class="note"><div id="h_note_3" role="heading" aria-level="4" class="note-title"><span>Note</span></div><p class="">This document describres no way to create a - <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> that is _not_ connected to - a source. <code>new</code> allows for future extensions. </p></div> + <p>A <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> has two stages in its + life-cycle: <code>live</code> and <code>ended</code>. + A newly created <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> can be in any + stage depending on how it was created. For example, cloning an ended + track results in a new ended track. The current stage is reflected by + the object's <code><a href="#dom-mediastreamtrack-readystate">readyState</a></code> attribute.</p> - <p>Once connected, the <code><a href="#event-mediastreamtrack-started">started</a></code> event fires and - the track becomes <code>live</code>. In the <code>live</code> state, + + <p>In the <code>live</code> state, the track is active and media is available for use by consumers (but may be replaced by zero-information-content if the <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> is <a href="#track-muted">muted</a> or <a href="#track-enabled">enabled</a>, see below).</p> + <p>A muted or disabled <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> renders + either silence (audio), black frames (video), or a + zero-information-content equivalent. For example, a video element + sourced by a muted or disabled <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> + (contained within a <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code>), is playing but + the rendered content is the muted output. When all tracks + connected to a source are muted or disabled, the "on-air" or + "recording" indicator for that source can be turned off; when + the track is no longer muted or disabled, it <em title="MUST" class="rfc2119">MUST</em> be turned + back on.</p> + + + <p>The muted/unmuted state of a track reflects if the source provides + any media at this moment. The enabled/disabled state is under + application control and determines if the track outputs media (to its + consumers). Hence, media from the source only flows when a + <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> object is both unmuted and + enabled.</p> + + + <p>A <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> is <dfn id="track-muted">muted</dfn> when the source is temporarily unable to + provide the track with data. A track can be muted by a user. Often this + action is outside the control of the application. This could be as a + result of the user hitting a hardware switch, or toggling a control in + the operating system or browser chrome. A track can also be muted by + the user agent.</p> + + + <p>Applications are able to <dfn id="track-enabled">enable</dfn> or + disable a <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> to prevent it from + rendering media from the source. A muted track will however, regardless + of the enabled state, render silence and blackness. A disabled track is + logically equivalent to a muted track, from a consumer point of + view.</p> + + + <p>For a newly created <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> object, the + following applies. The track is always enabled unless stated otherwise + (for example when cloned) and the muted state reflects the state of the + source at the time the track is created.</p> + <p>A <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> object is said to <em>end</em> when the source of the track is disconnected or exhausted.</p> @@ -1304,7 +1319,7 @@ the file's end has been reached and the user has not requested that it be looped, or because the application invoked the <code><a href="#dom-mediastreamtrack-stop">stop()</a></code> method on the <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> object, or because the UA has - instructed the track to end for any reason) it is said to be ended.</p> + instructed the track to end for any reason) it is said to be <dfn id="track-ended">ended</dfn>.</p> <p>When a <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> <var>track</var> ends for any reason other than the <code><a href="#dom-mediastreamtrack-stop">stop()</a></code> method being invoked, @@ -1411,7 +1426,7 @@ <p>When <code><a class="internalDFN" href="#dfn-applyconstraints">applyConstraints()</a></code> is called, a user agent <em title="MUST" class="rfc2119">MUST</em> queue a task to evaluate those changes when the task queue is next serviced. Similarly, if the - <a href="#widl-MediaSourceStates-sourceType"><code>sourceType</code></a> + <a class="internalDFN" href="#dfn-sourcetype"><code>sourceType</code></a> changes, then the user agent <em title="MUST" class="rfc2119">MUST</em> perform the same actions to re-evaluate the constraints of each track affected by that source change.</p> @@ -1441,15 +1456,14 @@ <span class="idlAttribute"> readonly attribute <span class="idlAttrType">boolean</span> <span class="idlAttrName"><a href="#widl-MediaStreamTrack-_readonly">_readonly</a></span>;</span> <span class="idlAttribute"> readonly attribute <span class="idlAttrType">boolean</span> <span class="idlAttrName"><a href="#widl-MediaStreamTrack-remote">remote</a></span>;</span> <span class="idlAttribute"> readonly attribute <span class="idlAttrType"><a class="idlType" href="#idl-def-MediaStreamTrackState"><code>MediaStreamTrackState</code></a></span> <span class="idlAttrName"><a href="#widl-MediaStreamTrack-readyState">readyState</a></span>;</span> -<span class="idlAttribute"> attribute <span class="idlAttrType">EventHandler</span> <span class="idlAttrName"><a href="#widl-MediaStreamTrack-onstarted">onstarted</a></span>;</span> <span class="idlAttribute"> attribute <span class="idlAttrType">EventHandler</span> <span class="idlAttrName"><a href="#widl-MediaStreamTrack-onended">onended</a></span>;</span> -<span class="idlMethod"> <span class="idlMethType"><a class="internalDFN" href="#dfn-settings">Settings</a></span> <span class="idlMethName"><a href="#widl-MediaStreamTrack-getNativeSettings-Settings">getNativeSettings</a></span> ();</span> <span class="idlMethod"> <span class="idlMethType"><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></span> <span class="idlMethName"><a href="#widl-MediaStreamTrack-clone-MediaStreamTrack">clone</a></span> ();</span> <span class="idlMethod"> <span class="idlMethType">void</span> <span class="idlMethName"><a href="#widl-MediaStreamTrack-stop-void">stop</a></span> ();</span> <span class="idlMethod"> <span class="idlMethType"><a class="internalDFN" href="#dfn-capabilities">Capabilities</a></span> <span class="idlMethName"><a href="#widl-MediaStreamTrack-getCapabilities-Capabilities">getCapabilities</a></span> ();</span> <span class="idlMethod"> <span class="idlMethType"><a class="idlType" href="#idl-def-MediaTrackConstraints"><code>MediaTrackConstraints</code></a></span> <span class="idlMethName"><a href="#widl-MediaStreamTrack-getConstraints-MediaTrackConstraints">getConstraints</a></span> ();</span> <span class="idlMethod"> <span class="idlMethType"><a class="internalDFN" href="#dfn-settings">Settings</a></span> <span class="idlMethName"><a href="#widl-MediaStreamTrack-getSettings-Settings">getSettings</a></span> ();</span> <span class="idlMethod"> <span class="idlMethType">void</span> <span class="idlMethName"><a href="#widl-MediaStreamTrack-applyConstraints-void-MediaTrackConstraints-constraints-VoidFunction-successCallback-ConstraintErrorCallback-errorCallback">applyConstraints</a></span> (<span class="idlParam"><span class="idlParamType"><a class="idlType" href="#idl-def-MediaTrackConstraints"><code>MediaTrackConstraints</code></a></span> <span class="idlParamName">constraints</span></span>, <span class="idlParam"><span class="idlParamType">VoidFunction</span> <span class="idlParamName">successCallback</span></span>, <span class="idlParam"><span class="idlParamType"><a class="idlType" href="#idl-def-ConstraintErrorCallback"><code>ConstraintErrorCallback</code></a></span> <span class="idlParamName">errorCallback</span></span>);</span> +<span class="idlAttribute"> attribute <span class="idlAttrType">EventHandler</span> <span class="idlAttrName"><a href="#widl-MediaStreamTrack-onoverconstrained">onoverconstrained</a></span>;</span> };</span></pre><section id="attributes-1"><h5 id="h5_attributes-1" role="heading" aria-level="4"><span class="secno">4.3.3.1 </span>Attributes</h5><dl class="attributes"><dt id="widl-MediaStreamTrack-enabled"><code>enabled</code> of type <span class="idlAttrType">boolean</span>, </dt><dd> <p>The <dfn id="dom-mediastreamtrack-enabled"><code>MediaStreamTrack.enabled</code></dfn> attribute controls the <code><a href="#track-enabled">enabled</a></code> state for the object.</p> @@ -1459,17 +1473,18 @@ the <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> object has been <a href="#track-detached">detached</a> from its source or not.</p> - <div class="note"><div id="h_note_4" role="heading" aria-level="5" class="note-title"><span>Note</span></div><p class="">Thus, after a <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> + <div class="note"><div id="h_note_3" role="heading" aria-level="5" class="note-title"><span>Note</span></div><p class="">Thus, after a <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> is detached from its source, its <code><a href="#dom-mediastreamtrack-enabled">enabled</a></code> attribute still changes value when set; it just doesn't do anything with that new value.</p></div> </dd><dt id="widl-MediaStreamTrack-id"><code>id</code> of type <span class="idlAttrType">DOMString</span>, readonly </dt><dd> <p>Unless a <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> object is created as a part a of special purpose algorithm that specifies how the - track id must be initialized, the user agent <em title="MUST" class="rfc2119">MUST</em> generate a - globally unique identifier string and initialize the object's + track id must be initialized, the user agent <em title="MUST" class="rfc2119">MUST</em> generate an + identifier string and initialize the object's <code><a href="#dom-mediastreamtrack-id">id</a></code> attribute to - that string.</p> + that string. See <code><a href="#dom-mediastream-id">MediaStream.id</a></code> for guidelines on + how to generate such an identifier.</p> <p>An example of an algorithm that specifies how the track id must @@ -1499,9 +1514,10 @@ by all objects implementing the <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> interface.</dd><dt id="widl-MediaStreamTrack-onmute"><code>onmute</code> of type <span class="idlAttrType">EventHandler</span>, </dt><dd>This event handler, of type <code><a href="#event-mediastreamtrack-mute">mute</a></code>, <em title="MUST" class="rfc2119">MUST</em> be supported by all objects implementing the <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> - interface.</dd><dt id="widl-MediaStreamTrack-onstarted"><code>onstarted</code> of type <span class="idlAttrType">EventHandler</span>, </dt><dd>This event handler, of type <code><a href="#event-mediastreamtrack-started">started</a></code>, <em title="MUST" class="rfc2119">MUST</em> be - supported by all objects implementing the - <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> interface.</dd><dt id="widl-MediaStreamTrack-onunmute"><code>onunmute</code> of type <span class="idlAttrType">EventHandler</span>, </dt><dd>This event handler, of type <code><a href="#event-mediastreamtrack-unmute">unmute</a></code>, <em title="MUST" class="rfc2119">MUST</em> be supported + interface.</dd><dt id="widl-MediaStreamTrack-onoverconstrained"><code>onoverconstrained</code> of type <span class="idlAttrType">EventHandler</span>, </dt><dd> + <p>See <a href="#constrainable-interface">ConstrainablePattern + Interface</a> for the definition of this event handler.</p> + </dd><dt id="widl-MediaStreamTrack-onunmute"><code>onunmute</code> of type <span class="idlAttrType">EventHandler</span>, </dt><dd>This event handler, of type <code><a href="#event-mediastreamtrack-unmute">unmute</a></code>, <em title="MUST" class="rfc2119">MUST</em> be supported by all objects implementing the <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> interface.</dd><dt id="widl-MediaStreamTrack-_readonly"><code>readonly</code> of type <span class="idlAttrType">boolean</span>, readonly </dt><dd>If the track (audio or video) is backed by a read-only source such as a file, or the track source is a local microphone or camera, @@ -1512,12 +1528,12 @@ <p>The <dfn id="dom-mediastreamtrack-readystate"><code>readyState</code></dfn> attribute represents the state of the track. It <em title="MUST" class="rfc2119">MUST</em> return the value to which the user agent last set it.</p> - </dd><dt id="widl-MediaStreamTrack-remote"><code>remote</code> of type <span class="idlAttrType">boolean</span>, readonly </dt><dd>If the track is sourced by an <code>RTCPeerConnection</code>, the + </dd><dt id="widl-MediaStreamTrack-remote"><code>remote</code> of type <span class="idlAttrType">boolean</span>, readonly </dt><dd>If the track is sourced by a non-local source, the <dfn id="dom-mediastreamtrack-remote"><code>remote</code></dfn> attribute <em title="MUST" class="rfc2119">MUST</em> return the value <code>true</code>. Otherwise, it must return the value <code>false</code>.</dd></dl></section><section id="methods-1"><h5 id="h5_methods-1" role="heading" aria-level="4"><span class="secno">4.3.3.2 </span>Methods</h5><dl class="methods"><dt id="widl-MediaStreamTrack-applyConstraints-void-MediaTrackConstraints-constraints-VoidFunction-successCallback-ConstraintErrorCallback-errorCallback"><code>applyConstraints</code></dt><dd> - See <a href="#constraintable-interface">ConstrainablePattern Interface</a> + See <a href="#constrainable-interface">ConstrainablePattern Interface</a> for the definition of this method.<table class="parameters"><tbody><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">constraints</td><td class="prmType"><code><a class="idlType" href="#idl-def-MediaTrackConstraints"><code>MediaTrackConstraints</code></a></code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc">A new constraint structure to apply to this object.</td></tr><tr><td class="prmName">successCallback</td><td class="prmType"><code>VoidFunction</code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc">Called if the required constraints can be satisfied.</td></tr><tr><td class="prmName">errorCallback</td><td class="prmType"><code><a class="idlType" href="#idl-def-ConstraintErrorCalback"><code>ConstraintErrorCallback</code></a></code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc">Called if the required constraints cannot be satisfied.</td></tr></tbody></table><div><em>Return type: </em><code>void</code></div></dd><dt id="widl-MediaStreamTrack-clone-MediaStreamTrack"><code>clone</code></dt><dd> <p>Clones the given <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code>.</p> @@ -1552,22 +1568,11 @@ </li> </ol> <div><em>No parameters.</em></div><div><em>Return type: </em><code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code></div></dd><dt id="widl-MediaStreamTrack-getCapabilities-Capabilities"><code>getCapabilities</code></dt><dd> - <p>See <a href="#constraintable-interface">ConstrainablePattern Interface</a> + <p>See <a href="#constrainable-interface">ConstrainablePattern Interface</a> for the definition of this method.</p> - <div><em>No parameters.</em></div><div><em>Return type: </em><code><a class="internalDFN" href="#dfn-capabilities">Capabilities</a></code></div></dd><dt id="widl-MediaStreamTrack-getConstraints-MediaTrackConstraints"><code>getConstraints</code></dt><dd>See <a href="#constraintable-interface">ConstrainablePattern Interface</a> + <div><em>No parameters.</em></div><div><em>Return type: </em><code><a class="internalDFN" href="#dfn-capabilities">Capabilities</a></code></div></dd><dt id="widl-MediaStreamTrack-getConstraints-MediaTrackConstraints"><code>getConstraints</code></dt><dd>See <a href="#constrainable-interface">ConstrainablePattern Interface</a> for the definition of this method. - <div><em>No parameters.</em></div><div><em>Return type: </em><code><a class="idlType" href="#idl-def-MediaTrackConstraints"><code>MediaTrackConstraints</code></a></code></div></dd><dt id="widl-MediaStreamTrack-getNativeSettings-Settings"><code>getNativeSettings</code></dt><dd>The <dfn id="dfn-getnativesettings">getNativeSettings()</dfn> method returns the - native settings of all the properties of the object. Note - that the actual setting of a property <em title="must" class="rfc2119">must</em> be a single value. Unlike the - return value from the <code><a class="internalDFN" href="#dfn-getsettings">getSettings()</a></code> - method, this return object a) <em title="MUST" class="rfc2119">MUST</em> reflect, to the best of - the User Agent's ability, the actual native settings of the - source device, b) <em title="MAY" class="rfc2119">MAY</em> have values that do not match the - current composite set of constraints applied by all tracks - associated with this source, only to the extent necessary to - reflect the native settings of the source device, and c) - <em title="MUST" class="rfc2119">MUST</em> be the same for all tracks associated with this same - source.<div><em>No parameters.</em></div><div><em>Return type: </em><code><a class="internalDFN" href="#dfn-settings">Settings</a></code></div></dd><dt id="widl-MediaStreamTrack-getSettings-Settings"><code>getSettings</code></dt><dd>See <a href="#constraintable-interface">ConstrainablePattern Interface</a> + <div><em>No parameters.</em></div><div><em>Return type: </em><code><a class="idlType" href="#idl-def-MediaTrackConstraints"><code>MediaTrackConstraints</code></a></code></div></dd><dt id="widl-MediaStreamTrack-getSettings-Settings"><code>getSettings</code></dt><dd>See <a href="#constrainable-interface">ConstrainablePattern Interface</a> for the definition of this method. <div><em>No parameters.</em></div><div><em>Return type: </em><code><a class="internalDFN" href="#dfn-settings">Settings</a></code></div></dd><dt id="widl-MediaStreamTrack-stop-void"><code>stop</code></dt><dd> <p>When a <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code> object's <dfn id="dom-mediastreamtrack-stop"><code>stop()</code></dfn> method is @@ -1582,10 +1587,8 @@ <li> - <p>If <var>track</var> has no source attached - (<code><a class="internalDFN" href="#dfn-sourcetype">sourceType</a></code> is "none") or if the source is - provided by an <code>RTCPeerConnection</code>, then abort these - steps.</p> + <p>If <var>track</var> is sourced by a non-local source, then + abort these steps.</p> </li> @@ -1609,12 +1612,9 @@ <pre class="idl"><span class="idlEnum" id="idl-def-MediaStreamTrackState">enum <span class="idlEnumID">MediaStreamTrackState</span> { - "<a href="#idl-def-MediaStreamTrackState.new" class="idlEnumItem">new</a>", "<a href="#idl-def-MediaStreamTrackState.live" class="idlEnumItem">live</a>", "<a href="#idl-def-MediaStreamTrackState.ended" class="idlEnumItem">ended</a>" -};</span></pre><table class="simple"><tbody><tr><th colspan="2">Enumeration description</th></tr><tr><td><code id="idl-def-MediaStreamTrackState.new">new</code></td><td>The track type is new and has not been initialized (connected to - a source of any kind). This state implies that the track's label will - be the empty string.</td></tr><tr><td><code id="idl-def-MediaStreamTrackState.live">live</code></td><td> +};</span></pre><table class="simple"><tbody><tr><th colspan="2">Enumeration description</th></tr><tr><td><code id="idl-def-MediaStreamTrackState.live">live</code></td><td> <p>The track is active (the track's underlying media source is making a best-effort attempt to provide data in real time).</p> @@ -1640,12 +1640,9 @@ <pre class="idl"><span class="idlEnum" id="idl-def-SourceTypeEnum">enum <span class="idlEnumID">SourceTypeEnum</span> { - "<a href="#idl-def-SourceTypeEnum.none" class="idlEnumItem">none</a>", "<a href="#idl-def-SourceTypeEnum.camera" class="idlEnumItem">camera</a>", "<a href="#idl-def-SourceTypeEnum.microphone" class="idlEnumItem">microphone</a>" -};</span></pre><table class="simple"><tbody><tr><th colspan="2">Enumeration description</th></tr><tr><td><code id="idl-def-SourceTypeEnum.none">none</code></td><td>This track has no source. This is the case when the track is in - the <code>"new"</code> or <code>"ended"</code> - <code><a class="internalDFN" href="#dom-mediastreamtrack-readystate">readyState</a></code>.</td></tr><tr><td><code id="idl-def-SourceTypeEnum.camera">camera</code></td><td>A valid source type only for video +};</span></pre><table class="simple"><tbody><tr><th colspan="2">Enumeration description</th></tr><tr><td><code id="idl-def-SourceTypeEnum.camera">camera</code></td><td>A valid source type only for video <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code>s. The source is a local video-producing camera source.</td></tr><tr><td><code id="idl-def-SourceTypeEnum.microphone">microphone</code></td><td>A valid source type only for audio <code><a class="idlType" href="#idl-def-MediaStreamTrack"><code>MediaStreamTrack</code></a></code>s. The source is a local @@ -1664,59 +1661,15 @@ <span class="idlMember"> <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainLong"><code>ConstrainLong</code></a></span> <span class="idlMemberName"><a href="#widl-MediaTrackConstraintSet-height">height</a></span>;</span> <span class="idlMember"> <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainDouble"><code>ConstrainDouble</code></a></span> <span class="idlMemberName"><a href="#widl-MediaTrackConstraintSet-aspectRatio">aspectRatio</a></span>;</span> <span class="idlMember"> <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainDouble"><code>ConstrainDouble</code></a></span> <span class="idlMemberName"><a href="#widl-MediaTrackConstraintSet-frameRate">frameRate</a></span>;</span> -<span class="idlMember"> <span class="idlMemberType">ConstrainVideoFacingMode</span> <span class="idlMemberName"><a href="#widl-MediaTrackConstraintSet-facingMode">facingMode</a></span>;</span> +<span class="idlMember"> <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainVideoFacingMode"><code>ConstrainVideoFacingMode</code></a></span> <span class="idlMemberName"><a href="#widl-MediaTrackConstraintSet-facingMode">facingMode</a></span>;</span> <span class="idlMember"> <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainDouble"><code>ConstrainDouble</code></a></span> <span class="idlMemberName"><a href="#widl-MediaTrackConstraintSet-volume">volume</a></span>;</span> <span class="idlMember"> <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainLong"><code>ConstrainLong</code></a></span> <span class="idlMemberName"><a href="#widl-MediaTrackConstraintSet-sampleRate">sampleRate</a></span>;</span> <span class="idlMember"> <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainLong"><code>ConstrainLong</code></a></span> <span class="idlMemberName"><a href="#widl-MediaTrackConstraintSet-sampleSize">sampleSize</a></span>;</span> <span class="idlMember"> <span class="idlMemberType">boolean</span> <span class="idlMemberName"><a href="#widl-MediaTrackConstraintSet-echoCancelation">echoCancelation</a></span>;</span> -<span class="idlMember"> <span class="idlMemberType">ConstrainDOMString</span> <span class="idlMemberName"><a href="#widl-MediaTrackConstraintSet-sourceId">sourceId</a></span>;</span> -};</span></pre><section id="dictionary-mediatrackconstraintset-members"><h5 id="h5_dictionary-mediatrackconstraintset-members" role="heading" aria-level="4"><span class="secno">4.3.5.2 </span>Dictionary <a href="#idl-def-MediaTrackConstraintSet" class="idlType"><code>MediaTrackConstraintSet</code></a> Members</h5><dl class="dictionary-members"><dt id="widl-MediaTrackConstraintSet-aspectRatio"><code>aspectRatio</code> of type <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainDouble"><code>ConstrainDouble</code></a></span></dt><dd> </dd><dt id="widl-MediaTrackConstraintSet-echoCancelation"><code>echoCancelation</code> of type <span class="idlMemberType">boolean</span></dt><dd> </dd><dt id="widl-MediaTrackConstraintSet-facingMode"><code>facingMode</code> of type <span class="idlMemberType">ConstrainVideoFacingMode</span></dt><dd> </dd><dt id="widl-MediaTrackConstraintSet-frameRate"><code>frameRate</code> of type <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainDouble><code>ConstrainDouble</code></a></span></dt><dd> </dd><dt id="widl-MediaTrackConstraintSet-height"><code>height</code> of type <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainLong"><code>ConstrainLong</code></a></span></dt><dd> </dd><dt id="widl-MediaTrackConstraintSet-sampleRate"><code>sampleRate</code> of type <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainLong"><code>ConstrainLong</code></a></span></dt><dd> </dd><dt id="widl-MediaTrackConstraintSet-sampleSize"><code>sampleSize</code> of type <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainLong"><code>ConstrainLong</code></a></span></dt><dd> </dd><dt id="widl-MediaTrackConstraintSet-sourceId"><code>sourceId</code> of type <span class="idlMemberType">ConstrainDOMString</span></dt><dd> </dd><dt id="widl-MediaTrackConstraintSet-volume"><code>volume</code> of type <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainDouble"><code>ConstrainDouble</code></a></span></dt><dd></dd><dt id="widl-MediaTrackConstraintSet-width"><code>width</code> of type <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainLong"><code>ConstrainLong</code></a></span></dt><dd> </dd></dl></section> +<span class="idlMember"> <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainDOMString"><code>ConstrainDOMString</code></a></span> <span class="idlMemberName"><a href="#widl-MediaTrackConstraintSet-sourceId">sourceId</a></span>;</span> +<span class="idlMember"> <span class="idlMemberType">DOMString</span> <span class="idlMemberName"><a href="#widl-MediaTrackConstraintSet-groupId">groupId</a></span>;</span> +};</span></pre><section id="dictionary-mediatrackconstraintset-members"><h5 id="h5_dictionary-mediatrackconstraintset-members" role="heading" aria-level="4"><span class="secno">4.3.5.2 </span>Dictionary <a href="#idl-def-MediaTrackConstraintSet" class="idlType"><code>MediaTrackConstraintSet</code></a> Members</h5><dl class="dictionary-members"><dt id="widl-MediaTrackConstraintSet-aspectRatio"><code>aspectRatio</code> of type <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainDouble"><code>ConstrainDouble</code></a></span></dt><dd> </dd><dt id="widl-MediaTrackConstraintSet-echoCancelation"><code>echoCancelation</code> of type <span class="idlMemberType">boolean</span></dt><dd> </dd><dt id="widl-MediaTrackConstraintSet-facingMode"><code>facingMode</code> of type <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainVideoFacingMode"><code>ConstrainVideoFacingMode</code></a></span></dt><dd> </dd><dt id="widl-MediaTrackConstraintSet-frameRate"><code>frameRate</code> of type span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainDouble"><code>ConstrainDouble</code></a></span></dt><dd> </dd><dt id="widl-MediaTrackConstraintSet-groupId"><code>groupId</code> of type <span class="idlMemberType">DOMString</span></dt><dd> </dd><dt id="widl-MediaTrackConstraintSet-height"><code>height</code> of type <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainLong"><code>ConstrainLong</code></a></span></dt><dd> </dd><dt id="widl-MediaTrackConstraintSet-sampleRate"><code>sampleRate</code> of type <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainLong"><code>ConstrainLong</code></a></span></dt><dd> </dd><dt id="widl-MediaTrackConstraintSet-sampleSize"><code>sampleSize</code> of type <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainLong"><code>ConstrainLong</code></a></span></dt><dd> </dd><dt id="widl-MediaTrackConstraintSet-sourceId"><code>sourceId</code> of type <span class="idlMemberType"><a class="idlType" href="#idldef-ConstrainDOMString"><code>ConstrainDOMString</code></a></span></dt><dd> </dd><dt id="widl-MediaTrackConstraintSet-volume"><code>volume</code> of type <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainDouble"><code>ConstrainDouble</code></a></span></dt><dd> </dd><dt id="widl-MediaTrackConstraintSet-width"><code>width</code> of type <span class="idlMemberType"><a class="idlType" href="#idl-def-ConstrainLong"><code>ConstrainLong</code></a></span></dt><dd> </dd></dl></section> </section> - - <section id="isolated-media-streams"> - <h4 id="h4_isolated-media-streams" role="heading" aria-level="3"><span class="secno">4.3.6 </span>Isolated Media Streams</h4> - - - <p>When the <code><dfn id="dfn-peeridentity">peerIdentity</dfn></code> option is supplied to - <code>getUserMedia</code>, the resulting - <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> is isolated so that its content is not - accessible to any application. An isolated - <code><a class="idlType" href="#idl-def-MediaStream"><code>MediaStream</code></a></code> may be used for two purposes:</p> - - <ul> - <li> - <p>Displayed in an appropriate tag (e.g., a video or audio - element). The browser <em title="MUST" class="rfc2119">MUST</em> ensure that content is inaccessible to - the application by ensuring that the resulting content is given the - same protections as content that is <a href="http://www.w3.org/html/wg/drafts/html/master/infrastructure.html#cors-cross-origin">CORS - cross-origin</a>, as described in the relevant <a href="www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#security-and-privacy-considerations">Security - and privacy considerations section </a> of [<cite><a href="#bib-HTML5" class="bibref">HTML5</a></cite>].</p> - </li> - - - <li> - <p>Used as the argument to addStream() for an RTCPeerConnection, - subject to the restrictions detailed in [<cite><a href="#bib-WEBRTC10" class="bibref">WEBRTC10</a></cite>].</p> - </li> - </ul> [392 lines skipped] --- /sources/public/2011/webrtc/editor/webrtc.html 2014/06/17 12:06:06 1.39 +++ /sources/public/2011/webrtc/editor/webrtc.html 2014/07/04 11:38:59 1.40 @@ -48,7 +48,7 @@ } code { - color: #ff4500; + color: #C83500; } /* --- TOC --- */ @@ -437,11 +437,11 @@ </p> <h1 class="title p-name" id="title" property="dcterms:title">WebRTC 1.0: Real-time Communication Between Browsers</h1> - <h2 id="w3c-editor-s-draft-17-june-2014" property="dcterms:issued" datatype="xsd:dateTime" content="2014-06-17T10:55:37.000Z"><acronym title="World Wide Web Consortium">W3C</acronym> Editor's Draft <time class="dt-published" datetime="2014-06-17">17 June 2014</time></h2> + <h2 id="w3c-editor-s-draft-01-july-2014" property="dcterms:issued" datatype="xsd:dateTime" content="2014-07-01T10:16:49.000Z"><acronym title="World Wide Web Consortium">W3C</acronym> Editor's Draft <time class="dt-published" datetime="2014-07-01">01 July 2014</time></h2> <dl> <dt>This version:</dt> - <dd><a class="u-url" href="http://dev.w3.org/2011/webrtc/editor/archives/20140617/webrtc.html">http://dev.w3.org/2011/webrtc/editor/archives/20140617/webrtc.html</a></dd> + <dd><a class="u-url" href="http://dev.w3.org/2011/webrtc/editor/archive/20140704/webrtc.html">http://dev.w3.org/2011/webrtc/editor/archive/20140704/webrtc.html</a></dd> <dt>Latest published version:</dt> <dd><a href="http://www.w3.org/TR/webrtc/">http://www.w3.org/TR/webrtc/</a></dd> @@ -455,7 +455,7 @@ <dt>Previous editor's draft:</dt> - <dd><a href="http://dev.w3.org/2011/webrtc/editor/archives/20140410/webrtc.html">http://dev.w3.org/2011/webrtc/editor/archives/20140410/webrtc.html</a></dd> + <dd><a href="http://dev.w3.org/2011/webrtc/editor/archives/20140617/webrtc.html">http://dev.w3.org/2011/webrtc/editor/archives/20140617/webrtc.html</a></dd> @@ -579,7 +579,7 @@ -</section><section id="toc"><h2 id="h2_toc" role="heading" aria-level="1" class="introductory">Table of Contents</h2><ul id="respecContents" role="directory" class="toc"><li class="tocline"><a class="tocxref" href="#intro"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#conformance"><span class="secno">2. </span>Conformance</a></li><li class="tocline"><a class="tocxref" href="#terminology"><span class="secno">3. </span>Terminology</a></li><li class="tocline"><a class="tocxref" href="#peer-to-peer-connections"><span class="secno">4. </span>Peer-to-peer connections</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#introduction"><span class="secno">4.1 </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#configuration"><span class="secno">4.2 </span>Configuration</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#rtcconfiguration-type"><span class="secno">4.2.1 </span>RTCConfiguration Type</a><ul class="toc"><liclass="tocline"><a class="tocxref" href="#dictionary-rtcconfiguration-members"><span class="secno">4.2.1.1 </span>Dictionary <span class="formerLink"><code>RTCConfiguration</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtciceserver-type"><span class="secno">4.2.2 </span>RTCIceServer Type</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-rtciceserver-members"><span class="secno">4.2.2.1 </span>Dictionary <span class="formerLink"><code>RTCIceServer</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcicetransports-enum"><span class="secno">4.2.3 </span>RTCIceTransports Enum</a></li><li class="tocline"><a class="tocxref" href="#offer-answer-options"><span class="secno">4.2.4 </span>Offer/Answer Options</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-rtcofferansweroptions-members"><span class="secno">4.2.4.1 </span>Dictionary <span class="formerLink"><code>RTCOfferAnswerOptions</code</span> Members</a></li><li class="tocline"><a class="tocxref" href="#dictionary-rtcofferoptions-members"><span class="secno">4.2.4.2 </span>Dictionary <span class="formerLink"><code>RTCOfferOptions</code></span> Members</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcpeerconnection-interface"><span class="secno">4.3 </span>RTCPeerConnection Interface</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#operation"><span class="secno">4.3.1 </span>Operation</a></li><li class="tocline"><a class="tocxref" href="#interface-definition"><span class="secno">4.3.2 </span>Interface Definition</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors"><span class="secno">4.3.2.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes"><span class="secno">4.3.2.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods"><span class="secno">4.3.2.3 </span>Methods</a></li></ul></li><li class="tocline"><a clas="tocxref" href="#garbage-collection"><span class="secno">4.3.3 </span>Garbage collection</a></li></ul></li><li class="tocline"><a class="tocxref" href="#state-definitions"><span class="secno">4.4 </span>State Definitions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#rtcpeerstate-enum"><span class="secno">4.4.1 </span>RTCPeerState Enum</a></li><li class="tocline"><a class="tocxref" href="#rtcicegatheringstate-enum"><span class="secno">4.4.2 </span>RTCIceGatheringState Enum</a></li><li class="tocline"><a class="tocxref" href="#rtciceconnectionstate-enum"><span class="secno">4.4.3 </span>RTCIceConnectionState Enum</a></li></ul></li><li class="tocline"><a class="tocxref" href="#callback-definitions"><span class="secno">4.5 </span>Callback Definitions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#rtcpeerconnectionerrorcallback"><span class="secno">4.5.1 </span>RTCPeerConnectionErrorCallback</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#callback-rtcpeerconectionerrorcallback-parameters"><span class="secno">4.5.1.1 </span>Callback <span class="formerLink"><code>RTCPeerConnectionErrorCallback</code></span> Parameters</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#error-handling"><span class="secno">4.6 </span>Error Handling</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#general-principles"><span class="secno">4.6.1 </span>General Principles</a></li><li class="tocline"><a class="tocxref" href="#rtcsdperror"><span class="secno">4.6.2 </span>RTCSdpError</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-1"><span class="secno">4.6.2.1 </span>Attributes</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#session-description-model"><span class="secno">4.7 </span>Session Description Model</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#rtcsdptype"><span class="secno">4.7.1 </span>RTCSdpType</a></li><li class="tocline"><a class="tocxref" href="#rtcsessiondescrition-class"><span class="secno">4.7.2 </span>RTCSessionDescription Class</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-1"><span class="secno">4.7.2.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes-2"><span class="secno">4.7.2.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#serializer"><span class="secno">4.7.2.3 </span>Serializer</a></li><li class="tocline"><a class="tocxref" href="#dictionary-rtcsessiondescriptioninit-members"><span class="secno">4.7.2.4 </span>Dictionary <span class="formerLink"><code>RTCSessionDescriptionInit</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcsessiondescriptioncallback"><span class="secno">4.7.3 </span>RTCSessionDescriptionCallback</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#callback-rtcsessiondescriptioncallback-parameters"><span class="secno">4.7.3.1 </span>Callback <span class="formerLink"><code>RTCSessionDescriptioCallback</code></span> Parameters</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#interfaces-for-connectivity-establishment"><span class="secno">4.8 </span>Interfaces for Connectivity Establishment</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#rtcicecandidate-type"><span class="secno">4.8.1 </span>RTCIceCandidate Type</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-2"><span class="secno">4.8.1.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes-3"><span class="secno">4.8.1.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#serializer-1"><span class="secno">4.8.1.3 </span>Serializer</a></li><li class="tocline"><a class="tocxref" href="#dictionary-rtcicecandidateinit-members"><span class="secno">4.8.1.4 </span>Dictionary <span class="formerLink"><code>RTCIceCandidateInit</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcpeerconnectioniceevet"><span class="secno">4.8.2 </span>RTCPeerConnectionIceEvent</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-3"><span class="secno">4.8.2.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes-4"><span class="secno">4.8.2.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#dictionary-rtcpeerconnectioniceeventinit-members"><span class="secno">4.8.2.3 </span>Dictionary <span class="formerLink"><code>RTCPeerConnectionIceEventInit</code></span> Members</a></li></ul></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#peer-to-peer-data-api"><span class="secno">5. </span>Peer-to-peer Data API</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#rtcpeerconnection-interface-extensions"><span class="secno">5.1 </span>RTCPeerConnection Interface Extensions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-5"><span class="secno">5.1.1 </span>Attributes</a></li><li class="tocline"<a class="tocxref" href="#methods-1"><span class="secno">5.1.2 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcdatachannel"><span class="secno">5.2 </span>RTCDataChannel</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-6"><span class="secno">5.2.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods-2"><span class="secno">5.2.2 </span>Methods</a></li><li class="tocline"><a class="tocxref" href="#dictionary-rtcdatachannelinit-members"><span class="secno">5.2.3 </span>Dictionary <span class="formerLink"><code>RTCDataChannelInit</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcdatachannelevent"><span class="secno">5.3 </span>RTCDataChannelEvent</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-4"><span class="secno">5.3.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes-7"><span class="secno">5.3.2 </span>Attributes</a></i><li class="tocline"><a class="tocxref" href="#dictionary-rtcdatachanneleventinit-members"><span class="secno">5.3.3 </span>Dictionary <span class="formerLink"><code>RTCDataChannelEventInit</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#garbage-collection-1"><span class="secno">5.4 </span>Garbage Collection</a></li></ul></li><li class="tocline"><a class="tocxref" href="#peer-to-peer-dtmf"><span class="secno">6. </span>Peer-to-peer DTMF</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#rtcpeerconnection-interface-extensions-1"><span class="secno">6.1 </span>RTCPeerConnection Interface Extensions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#methods-3"><span class="secno">6.1.1 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcdtmfsender"><span class="secno">6.2 </span>RTCDTMFSender</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-8"><span class="secno">6.2.1 </span>Attributes</></li><li class="tocline"><a class="tocxref" href="#methods-4"><span class="secno">6.2.2 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcdtmftonechangeevent"><span class="secno">6.3 </span>RTCDTMFToneChangeEvent</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-5"><span class="secno">6.3.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes-9"><span class="secno">6.3.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#dictionary-rtcdtmftonechangeeventinit-members"><span class="secno">6.3.3 </span>Dictionary <span class="formerLink"><code>RTCDTMFToneChangeEventInit</code></span> Members</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#statistics-model"><span class="secno">7. </span>Statistics Model</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#introduction-1"><span class="secno">7.1 </span>Introduction</a></li><li class="tocline"><a class="tocxref" hef="#rtcpeerconnection-interface-extensions-2"><span class="secno">7.2 </span>RTCPeerConnection Interface Extensions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#methods-5"><span class="secno">7.2.1 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcstatscallback"><span class="secno">7.3 </span>RTCStatsCallback</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#callback-rtcstatscallback-parameters"><span class="secno">7.3.1 </span>Callback <span class="formerLink"><code>RTCStatsCallback</code></span> Parameters</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcstatsreport-object"><span class="secno">7.4 </span>RTCStatsReport Object</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#methods-6"><span class="secno">7.4.1 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcstats-dictionary"><span class="secno">7.5 </span>RTCStats Dictionary</a><ul class="toc"><li class="tocline"><a class"tocxref" href="#dictionary-rtcstats-members"><span class="secno">7.5.1 </span>Dictionary <span class="formerLink"><code>RTCStats</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#derived-stats-dictionaries"><span class="secno">7.6 </span>Derived Stats Dictionaries</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-rtcrtpstreamstats-members"><span class="secno">7.6.1 </span>Dictionary <span class="formerLink"><code>RTCRTPStreamStats</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#dictionary-rtcinboundrtpstreamstats-members"><span class="secno">7.6.2 </span>Dictionary <span class="formerLink"><code>RTCInboundRTPStreamStats</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#dictionary-rtcoutboundrtpstreamstats-members"><span class="secno">7.6.3 </span>Dictionary <span class="formerLink"><code>RTCOutboundRTPStreamStats</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" hef="#example"><span class="secno">7.7 </span>Example</a></li></ul></li><li class="tocline"><a class="tocxref" href="#identity"><span class="secno">8. </span>Identity</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#identity-provider-interaction"><span class="secno">8.1 </span>Identity Provider Interaction</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#identity-provider-selection"><span class="secno">8.1.1 </span>Identity Provider Selection</a></li><li class="tocline"><a class="tocxref" href="#instantiating-an-idp-proxy"><span class="secno">8.1.2 </span>Instantiating an IdP Proxy</a></li></ul></li><li class="tocline"><a class="tocxref" href="#requesting-identity-assertions"><span class="secno">8.2 </span>Requesting Identity Assertions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#user-login-procedure"><span class="secno">8.2.1 </span>User Login Procedure</a></li></ul></li><li class="tocline"><a class="tocxref" href="#verifying-identity-assertions"><span clss="secno">8.3 </span>Verifying Identity Assertions</a></li><li class="tocline"><a class="tocxref" href="#rtcpeerconnection-interface-extensions-3"><span class="secno">8.4 </span>RTCPeerConnection Interface Extensions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-10"><span class="secno">8.4.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods-7"><span class="secno">8.4.2 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcidentityassertion-type"><span class="secno">8.5 </span>RTCIdentityAssertion Type</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-rtcidentityassertion-members"><span class="secno">8.5.1 </span>Dictionary <span class="formerLink"><code>RTCIdentityAssertion</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcidentityevent-type"><span class="secno">8.6 </span>RTCIdentityEvent Type</a><ul class="toc"><li class="tocline"><a class="tocxref" href"#attributes-11"><span class="secno">8.6.1 </span>Attributes</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcidentityerrorevent-type"><span class="secno">8.7 </span>RTCIdentityErrorEvent Type</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-12"><span class="secno">8.7.1 </span>Attributes</a></li></ul></li><li class="tocline"><a class="tocxref" href="#examples"><span class="secno">8.8 </span>Examples</a></li></ul></li><li class="tocline"><a class="tocxref" href="#media-stream-api-extensions-for-network-use"><span class="secno">9. </span>Media Stream API Extensions for Network Use</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#introduction-2"><span class="secno">9.1 </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#mediastream"><span class="secno">9.2 </span>MediaStream</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#id"><span class="secno">9.2.1 </span>id</a></li><li class="tocline"><a class="tocxref" hre="#events-on-mediastream"><span class="secno">9.2.2 </span>Events on MediaStream</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediastreamtrack"><span class="secno">9.3 </span>MediaStreamTrack</a></li><li class="tocline"><a class="tocxref" href="#mediastreamevent"><span class="secno">9.4 </span>MediaStreamEvent</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-6"><span class="secno">9.4.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes-13"><span class="secno">9.4.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#dictionary-mediastreameventinit-members"><span class="secno">9.4.3 </span>Dictionary <span class="formerLink"><code>MediaStreamEventInit</code></span> Members</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#examples-and-call-flows"><span class="secno">10. </span>Examples and Call Flows</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#simple-peer-to-peerexample"><span class="secno">10.1 </span>Simple Peer-to-peer Example</a></li><li class="tocline"><a class="tocxref" href="#advanced-peer-to-peer-example"><span class="secno">10.2 </span>Advanced Peer-to-peer Example</a></li><li class="tocline"><a class="tocxref" href="#peer-to-peer-data-example"><span class="secno">10.3 </span>Peer-to-peer Data Example</a></li><li class="tocline"><a class="tocxref" href="#call-flow-browser-to-browser"><span class="secno">10.4 </span>Call Flow Browser to Browser</a></li><li class="tocline"><a class="tocxref" href="#dtmf-example"><span class="secno">10.5 </span>DTMF Example</a></li></ul></li><li class="tocline"><a class="tocxref" href="#event-summary"><span class="secno">11. </span>Event summary</a></li><li class="tocline"><a class="tocxref" href="#security-considerations"><span class="secno">12. </span>Security Considerations</a></li><li class="tocline"><a class="tocxref" href="#change-log"><span class="secno">13. </span>Change Log</a></li><li class="tocline"><a class="tocxrf" href="#acknowledgements"><span class="secno">A. </span>Acknowledgements</a></li><li class="tocline"><a class="tocxref" href="#references"><span class="secno">B. </span>References</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#normative-references"><span class="secno">B.1 </span>Normative references</a></li><li class="tocline"><a class="tocxref" href="#informative-references"><span class="secno">B.2 </span>Informative references</a></li></ul></li></ul></section> +</section><section id="toc"><h2 id="h2_toc" role="heading" aria-level="1" class="introductory">Table of Contents</h2><ul id="respecContents" role="directory" class="toc"><li class="tocline"><a class="tocxref" href="#intro"><span class="secno">1. </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#conformance"><span class="secno">2. </span>Conformance</a></li><li class="tocline"><a class="tocxref" href="#terminology"><span class="secno">3. </span>Terminology</a></li><li class="tocline"><a class="tocxref" href="#peer-to-peer-connections"><span class="secno">4. </span>Peer-to-peer connections</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#introduction"><span class="secno">4.1 </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#configuration"><span class="secno">4.2 </span>Configuration</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#rtcconfiguration-type"><span class="secno">4.2.1 </span>RTCConfiguration Type</a><ul class="toc"><liclass="tocline"><a class="tocxref" href="#dictionary-rtcconfiguration-members"><span class="secno">4.2.1.1 </span>Dictionary <span class="formerLink"><code>RTCConfiguration</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtciceserver-type"><span class="secno">4.2.2 </span>RTCIceServer Type</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-rtciceserver-members"><span class="secno">4.2.2.1 </span>Dictionary <span class="formerLink"><code>RTCIceServer</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcicetransports-enum"><span class="secno">4.2.3 </span>RTCIceTransports Enum</a></li><li class="tocline"><a class="tocxref" href="#offer-answer-options"><span class="secno">4.2.4 </span>Offer/Answer Options</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-rtcofferoptions-members"><span class="secno">4.2.4.1 </span>Dictionary <span class="formerLink"><code>RTCOfferOptions</code></span> Memers</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcpeerconnection-interface"><span class="secno">4.3 </span>RTCPeerConnection Interface</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#operation"><span class="secno">4.3.1 </span>Operation</a></li><li class="tocline"><a class="tocxref" href="#interface-definition"><span class="secno">4.3.2 </span>Interface Definition</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors"><span class="secno">4.3.2.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes"><span class="secno">4.3.2.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods"><span class="secno">4.3.2.3 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#garbage-collection"><span class="secno">4.3.3 </span>Garbage collection</a></li></ul></li><li class="tocline"><a class="tocxref" href="#state-definitions"><span class="secno">4.4 </span>State Definiions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#rtcpeerstate-enum"><span class="secno">4.4.1 </span>RTCPeerState Enum</a></li><li class="tocline"><a class="tocxref" href="#rtcicegatheringstate-enum"><span class="secno">4.4.2 </span>RTCIceGatheringState Enum</a></li><li class="tocline"><a class="tocxref" href="#rtciceconnectionstate-enum"><span class="secno">4.4.3 </span>RTCIceConnectionState Enum</a></li></ul></li><li class="tocline"><a class="tocxref" href="#callback-definitions"><span class="secno">4.5 </span>Callback Definitions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#rtcpeerconnectionerrorcallback"><span class="secno">4.5.1 </span>RTCPeerConnectionErrorCallback</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#callback-rtcpeerconnectionerrorcallback-parameters"><span class="secno">4.5.1.1 </span>Callback <span class="formerLink"><code>RTCPeerConnectionErrorCallback</code></span> Parameters</a></li></ul></li></ul></li><li class="tocline"><a clss="tocxref" href="#error-handling"><span class="secno">4.6 </span>Error Handling</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#general-principles"><span class="secno">4.6.1 </span>General Principles</a></li><li class="tocline"><a class="tocxref" href="#rtcsdperror"><span class="secno">4.6.2 </span>RTCSdpError</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-1"><span class="secno">4.6.2.1 </span>Attributes</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#session-description-model"><span class="secno">4.7 </span>Session Description Model</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#rtcsdptype"><span class="secno">4.7.1 </span>RTCSdpType</a></li><li class="tocline"><a class="tocxref" href="#rtcsessiondescription-class"><span class="secno">4.7.2 </span>RTCSessionDescription Class</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-1"><span class="secno">4.7.2.1 </span>Constructors</a></li><li clss="tocline"><a class="tocxref" href="#attributes-2"><span class="secno">4.7.2.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#serializer"><span class="secno">4.7.2.3 </span>Serializer</a></li><li class="tocline"><a class="tocxref" href="#dictionary-rtcsessiondescriptioninit-members"><span class="secno">4.7.2.4 </span>Dictionary <span class="formerLink"><code>RTCSessionDescriptionInit</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcsessiondescriptioncallback"><span class="secno">4.7.3 </span>RTCSessionDescriptionCallback</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#callback-rtcsessiondescriptioncallback-parameters"><span class="secno">4.7.3.1 </span>Callback <span class="formerLink"><code>RTCSessionDescriptionCallback</code></span> Parameters</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#interfaces-for-connectivity-establishment"><span class="secno">4.8 </span>Interfaces for Connectivity Establshment</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#rtcicecandidate-type"><span class="secno">4.8.1 </span>RTCIceCandidate Type</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-2"><span class="secno">4.8.1.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes-3"><span class="secno">4.8.1.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#serializer-1"><span class="secno">4.8.1.3 </span>Serializer</a></li><li class="tocline"><a class="tocxref" href="#dictionary-rtcicecandidateinit-members"><span class="secno">4.8.1.4 </span>Dictionary <span class="formerLink"><code>RTCIceCandidateInit</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcpeerconnectioniceevent"><span class="secno">4.8.2 </span>RTCPeerConnectionIceEvent</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-3"><span class="secno">4.8.2.1 </span>Constructors</a></li><li class="toclin"><a class="tocxref" href="#attributes-4"><span class="secno">4.8.2.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#dictionary-rtcpeerconnectioniceeventinit-members"><span class="secno">4.8.2.3 </span>Dictionary <span class="formerLink"><code>RTCPeerConnectionIceEventInit</code></span> Members</a></li></ul></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#peer-to-peer-data-api"><span class="secno">5. </span>Peer-to-peer Data API</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#rtcpeerconnection-interface-extensions"><span class="secno">5.1 </span>RTCPeerConnection Interface Extensions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-5"><span class="secno">5.1.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods-1"><span class="secno">5.1.2 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcdatachannel"><span class="secno">5.2 </span>RTCDataChannel</a><ul class"toc"><li class="tocline"><a class="tocxref" href="#attributes-6"><span class="secno">5.2.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods-2"><span class="secno">5.2.2 </span>Methods</a></li><li class="tocline"><a class="tocxref" href="#dictionary-rtcdatachannelinit-members"><span class="secno">5.2.3 </span>Dictionary <span class="formerLink"><code>RTCDataChannelInit</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcdatachannelevent"><span class="secno">5.3 </span>RTCDataChannelEvent</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-4"><span class="secno">5.3.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes-7"><span class="secno">5.3.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#dictionary-rtcdatachanneleventinit-members"><span class="secno">5.3.3 </span>Dictionary <span class="formerLink"><code>RTCDataChannelEventInit</code></span> Members</a>/li></ul></li><li class="tocline"><a class="tocxref" href="#garbage-collection-1"><span class="secno">5.4 </span>Garbage Collection</a></li></ul></li><li class="tocline"><a class="tocxref" href="#peer-to-peer-dtmf"><span class="secno">6. </span>Peer-to-peer DTMF</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#rtcpeerconnection-interface-extensions-1"><span class="secno">6.1 </span>RTCPeerConnection Interface Extensions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#methods-3"><span class="secno">6.1.1 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcdtmfsender"><span class="secno">6.2 </span>RTCDTMFSender</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-8"><span class="secno">6.2.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods-4"><span class="secno">6.2.2 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcdtmftonechangeevent"><span class="secno">6.3 /span>RTCDTMFToneChangeEvent</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-5"><span class="secno">6.3.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes-9"><span class="secno">6.3.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#dictionary-rtcdtmftonechangeeventinit-members"><span class="secno">6.3.3 </span>Dictionary <span class="formerLink"><code>RTCDTMFToneChangeEventInit</code></span> Members</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#statistics-model"><span class="secno">7. </span>Statistics Model</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#introduction-1"><span class="secno">7.1 </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#rtcpeerconnection-interface-extensions-2"><span class="secno">7.2 </span>RTCPeerConnection Interface Extensions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#methods-5"><span class="secno">7.21 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcstatscallback"><span class="secno">7.3 </span>RTCStatsCallback</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#callback-rtcstatscallback-parameters"><span class="secno">7.3.1 </span>Callback <span class="formerLink"><code>RTCStatsCallback</code></span> Parameters</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcstatsreport-object"><span class="secno">7.4 </span>RTCStatsReport Object</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#methods-6"><span class="secno">7.4.1 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcstats-dictionary"><span class="secno">7.5 </span>RTCStats Dictionary</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-rtcstats-members"><span class="secno">7.5.1 </span>Dictionary <span class="formerLink"><code>RTCStats</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#erived-stats-dictionaries"><span class="secno">7.6 </span>Derived Stats Dictionaries</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-rtcrtpstreamstats-members"><span class="secno">7.6.1 </span>Dictionary <span class="formerLink"><code>RTCRTPStreamStats</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#dictionary-rtcinboundrtpstreamstats-members"><span class="secno">7.6.2 </span>Dictionary <span class="formerLink"><code>RTCInboundRTPStreamStats</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#dictionary-rtcoutboundrtpstreamstats-members"><span class="secno">7.6.3 </span>Dictionary <span class="formerLink"><code>RTCOutboundRTPStreamStats</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#example"><span class="secno">7.7 </span>Example</a></li></ul></li><li class="tocline"><a class="tocxref" href="#identity"><span class="secno">8. </span>Identity</a><ul class="toc"><li class="tocline"><a class="tcxref" href="#identity-provider-interaction"><span class="secno">8.1 </span>Identity Provider Interaction</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#identity-provider-selection"><span class="secno">8.1.1 </span>Identity Provider Selection</a></li><li class="tocline"><a class="tocxref" href="#instantiating-an-idp-proxy"><span class="secno">8.1.2 </span>Instantiating an IdP Proxy</a></li></ul></li><li class="tocline"><a class="tocxref" href="#requesting-identity-assertions"><span class="secno">8.2 </span>Requesting Identity Assertions</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#user-login-procedure"><span class="secno">8.2.1 </span>User Login Procedure</a></li></ul></li><li class="tocline"><a class="tocxref" href="#verifying-identity-assertions"><span class="secno">8.3 </span>Verifying Identity Assertions</a></li><li class="tocline"><a class="tocxref" href="#rtcpeerconnection-interface-extensions-3"><span class="secno">8.4 </span>RTCPeerConnection Interface Extension</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-10"><span class="secno">8.4.1 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#methods-7"><span class="secno">8.4.2 </span>Methods</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcidentityassertion-type"><span class="secno">8.5 </span>RTCIdentityAssertion Type</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-rtcidentityassertion-members"><span class="secno">8.5.1 </span>Dictionary <span class="formerLink"><code>RTCIdentityAssertion</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcidentityevent-type"><span class="secno">8.6 </span>RTCIdentityEvent Type</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#attributes-11"><span class="secno">8.6.1 </span>Attributes</a></li></ul></li><li class="tocline"><a class="tocxref" href="#rtcidentityerrorevent-type"><span class="secno">8.7 </span>RTCIdentityErrorEvent Type</a><u class="toc"><li class="tocline"><a class="tocxref" href="#attributes-12"><span class="secno">8.7.1 </span>Attributes</a></li></ul></li><li class="tocline"><a class="tocxref" href="#examples"><span class="secno">8.8 </span>Examples</a></li></ul></li><li class="tocline"><a class="tocxref" href="#media-stream-api-extensions-for-network-use"><span class="secno">9. </span>Media Stream API Extensions for Network Use</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#introduction-2"><span class="secno">9.1 </span>Introduction</a></li><li class="tocline"><a class="tocxref" href="#mediastream"><span class="secno">9.2 </span>MediaStream</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#id"><span class="secno">9.2.1 </span>id</a></li><li class="tocline"><a class="tocxref" href="#events-on-mediastream"><span class="secno">9.2.2 </span>Events on MediaStream</a></li></ul></li><li class="tocline"><a class="tocxref" href="#mediastreamtrack"><span class="secno">9.3 </span>MediaStreamTrack</a></i><li class="tocline"><a class="tocxref" href="#mediastreamevent"><span class="secno">9.4 </span>MediaStreamEvent</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#constructors-6"><span class="secno">9.4.1 </span>Constructors</a></li><li class="tocline"><a class="tocxref" href="#attributes-13"><span class="secno">9.4.2 </span>Attributes</a></li><li class="tocline"><a class="tocxref" href="#dictionary-mediastreameventinit-members"><span class="secno">9.4.3 </span>Dictionary <span class="formerLink"><code>MediaStreamEventInit</code></span> Members</a></li></ul></li><li class="tocline"><a class="tocxref" href="#isolated-media-streams"><span class="secno">9.5 </span>Isolated Media Streams</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#dictionary-mediastreamconstraints-members"><span class="secno">9.5.1 </span>Dictionary <span class="formerLink"><code>MediaStreamConstraints</code></span> Members</a></li><li class="tocline"><a class="tocxref" href="#isolated-track"><span class="seno">9.5.2 </span>Extended MediaStreamTrack Properties</a></li><li class="tocline"><a class="tocxref" href="#isolated-pc"><span class="secno">9.5.3 </span>Isolated Streams and RTCPeerConnection</a></li><li class="tocline"><a class="tocxref" href="#isolation-protection"><span class="secno">9.5.4 </span>Protection Afforded by Media Isolation</a></li></ul></li></ul></li><li class="tocline"><a class="tocxref" href="#examples-and-call-flows"><span class="secno">10. </span>Examples and Call Flows</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#simple-peer-to-peer-example"><span class="secno">10.1 </span>Simple Peer-to-peer Example</a></li><li class="tocline"><a class="tocxref" href="#advanced-peer-to-peer-example"><span class="secno">10.2 </span>Advanced Peer-to-peer Example</a></li><li class="tocline"><a class="tocxref" href="#peer-to-peer-data-example"><span class="secno">10.3 </span>Peer-to-peer Data Example</a></li><li class="tocline"><a class="tocxref" href="#call-flow-browser-to-browser"><spn class="secno">10.4 </span>Call Flow Browser to Browser</a></li><li class="tocline"><a class="tocxref" href="#dtmf-example"><span class="secno">10.5 </span>DTMF Example</a></li></ul></li><li class="tocline"><a class="tocxref" href="#event-summary"><span class="secno">11. </span>Event summary</a></li><li class="tocline"><a class="tocxref" href="#security-considerations"><span class="secno">12. </span>Security Considerations</a></li><li class="tocline"><a class="tocxref" href="#change-log"><span class="secno">13. </span>Change Log</a></li><li class="tocline"><a class="tocxref" href="#acknowledgements"><span class="secno">A. </span>Acknowledgements</a></li><li class="tocline"><a class="tocxref" href="#references"><span class="secno">B. </span>References</a><ul class="toc"><li class="tocline"><a class="tocxref" href="#normative-references"><span class="secno">B.1 </span>Normative references</a></li><li class="tocline"><a class="tocxref" href="#informative-references"><span class="secno">B.2 </span>Informative eferences</a></li></ul></li></ul></section> @@ -698,16 +698,18 @@ <pre class="idl"><span class="idlDictionary" id="idl-def-RTCConfiguration">dictionary <span class="idlDictionaryID">RTCConfiguration</span> { <span class="idlMember"> <span class="idlMemberType">sequence<<a class="idlType" href="#idl-def-RTCIceServer"><code>RTCIceServer</code></a>></span> <span class="idlMemberName"><a href="#widl-RTCConfiguration-iceServers">iceServers</a></span>;</span> <span class="idlMember"> <span class="idlMemberType"><a class="idlType" href="#idl-def-RTCIceTransports"><code>RTCIceTransports</code></a></span> <span class="idlMemberName"><a href="#widl-RTCConfiguration-iceTransports">iceTransports</a></span> = <span class="idlMemberValue">"all"</span>;</span> -<span class="idlMember"> <span class="idlMemberType"><a class="idlType" href="#idl-def-RTCIdentityOption"><code>RTCIdentityOption</code></a></span> <span class="idlMemberName"><a href="#widl-RTCConfiguration-requestIdentity">requestIdentity</a></span> = <span class="idlMemberValue">"ifconfigured"</span>;</span> +<span class="idlMember"> <span class="idlMemberType">DOMString</span> <span class="idlMemberName"><a href="#widl-RTCConfiguration-peerIdentity">peerIdentity</a></span>;</span> };</span></pre><section id="dictionary-rtcconfiguration-members"><h5 id="h5_dictionary-rtcconfiguration-members" role="heading" aria-level="4"><span class="secno">4.2.1.1 </span>Dictionary <a href="#idl-def-RTCConfiguration" class="idlType"><code>RTCConfiguration</code></a> Members</h5><dl class="dictionary-members"><dt id="widl-RTCConfiguration-iceServers"><code>iceServers</code> of type <span class="idlMemberType">sequence<<a class="idlType" href="#idl-def-RTCIceServer"><code>RTCIceServer</code></a>></span></dt><dd> <p>An array containing URIs of servers available to be used by ICE, such as STUN and TURN server.</p> </dd><dt id="widl-RTCConfiguration-iceTransports"><code>iceTransports</code> of type <span class="idlMemberType"><a class="idlType" href="#idl-def-RTCIceTransports"><code>RTCIceTransports</code></a></span>, defaulting to <code>"all"</code></dt><dd> <p>Indicates which candidates the ICE engine is allowed to use. </p> - </dd><dt id="widl-RTCConfiguration-requestIdentity"><code>requestIdentity</code> of type <span class="idlMemberType"><a class="idlType" href="#idl-def-RTCIdentityOption"><code>RTCIdentityOption</code></a></span>, defaulting to <code>"ifconfigured"</code></dt><dd> - <p>See the <a href="#dom-rtcoaoptions-requestidentity">requestIdentity</a> member of - the <code><a class="idlType" href="#idl-def-RTCOfferAnswerOptions"><code>RTCOfferAnswerOptions</code></a></code> dictionary.</p> + </dd><dt id="widl-RTCConfiguration-peerIdentity"><code>peerIdentity</code> of type <span class="idlMemberType">DOMString</span></dt><dd> + <p>Sets the <a href="#target-peer-identity">target peer identity</a> + for the <a class="idlType" href="#idl-def-RTCPeerConnection"><code>RTCPeerConnection</code></a>. The <a class="idlType" href="#idl-def-RTCPeerConnection"><code>RTCPeerConnection</code></a> will + establish a connection to a remote peer unless it can be + successfully authenticated with the provided name.</p> </dd></dl></section> </section> @@ -770,26 +772,12 @@ <p>These dictionaries describe the options that can be used to control the offer/answer creation process.</p> - - <pre class="idl"><span class="idlDictionary" id="idl-def-RTCOfferAnswerOptions">dictionary <span class="idlDictionaryID">RTCOfferAnswerOptions</span> { -<span class="idlMember"> <span class="idlMemberType"><a class="idlType" href="#idl-def-RTCIdentityOption"><code>RTCIdentityOption</code></a></span> <span class="idlMemberName"><a href="#widl-RTCOfferAnswerOptions-requestIdentity">requestIdentity</a></span> = <span class="idlMemberValue">"ifconfigured"</span>;</span> -};</span></pre><section id="dictionary-rtcofferansweroptions-members"><h5 id="h5_dictionary-rtcofferansweroptions-members" role="heading" aria-level="4"><span class="secno">4.2.4.1 </span>Dictionary <a href="#idl-def-RTCOfferAnswerOptions" class="idlType"><code>RTCOfferAnswerOptions</code></a> Members</h5><dl class="dictionary-members"><dt id="widl-RTCOfferAnswerOptions-requestIdentity"><code>requestIdentity</code> of type <span class="idlMemberType"><a class="idlType" href="#idl-def-RTCIdentityOption"><code>RTCIdentityOption</code></a></span>, defaulting to <code>"ifconfigured"</code></dt><dd> - <p>The <dfn id="dom-rtcoaoptions-requestidentity"><code>requestIdentity</code></dfn> - option indicates whether an identity should be requested. The option - may be used with either of the <code>createOffer()</code> or - <code>createAnswer()</code> calls, but also with the <code> - <a class="idlType" href="#idl-def-RTCPeerConnection"><code>RTCPeerConnection</code></a></code> constructor. Note that since - DTLS-SRTP is used, fingerprints will be sent regardless of the - value of this option.</p> - </dd></dl></section> - - - <pre class="idl"><span class="idlDictionary" id="idl-def-RTCOfferOptions">dictionary <span class="idlDictionaryID">RTCOfferOptions</span> : <span class="idlSuperclass"><a class="idlType" href="#idl-def-RTCOfferAnswerOptions"><code>RTCOfferAnswerOptions</code></a></span> { + <pre class="idl"><span class="idlDictionary" id="idl-def-RTCOfferOptions">dictionary <span class="idlDictionaryID">RTCOfferOptions</span> { <span class="idlMember"> <span class="idlMemberType">long</span> <span class="idlMemberName"><a href="#widl-RTCOfferOptions-offerToReceiveVideo">offerToReceiveVideo</a></span>;</span> <span class="idlMember"> <span class="idlMemberType">long</span> <span class="idlMemberName"><a href="#widl-RTCOfferOptions-offerToReceiveAudio">offerToReceiveAudio</a></span>;</span> <span class="idlMember"> <span class="idlMemberType">boolean</span> <span class="idlMemberName"><a href="#widl-RTCOfferOptions-voiceActivityDetection">voiceActivityDetection</a></span> = <span class="idlMemberValue">true</span>;</span> <span class="idlMember"> <span class="idlMemberType">boolean</span> <span class="idlMemberName"><a href="#widl-RTCOfferOptions-iceRestart">iceRestart</a></span> = <span class="idlMemberValue">false</span>;</span> -};</span></pre><section id="dictionary-rtcofferoptions-members"><h5 id="h5_dictionary-rtcofferoptions-members" role="heading" aria-level="4"><span class="secno">4.2.4.2 </span>Dictionary <a href="#idl-def-RTCOfferOptions" class="idlType"><code>RTCOfferOptions</code></a> Members</h5><dl class="dictionary-members"><dt id="widl-RTCOfferOptions-iceRestart"><code>iceRestart</code> of type <span class="idlMemberType">boolean</span>, defaulting to <code>false</code></dt><dd> +};</span></pre><section id="dictionary-rtcofferoptions-members"><h5 id="h5_dictionary-rtcofferoptions-members" role="heading" aria-level="4"><span class="secno">4.2.4.1 </span>Dictionary <a href="#idl-def-RTCOfferOptions" class="idlType"><code>RTCOfferOptions</code></a> Members</h5><dl class="dictionary-members"><dt id="widl-RTCOfferOptions-iceRestart"><code>iceRestart</code> of type <span class="idlMemberType">boolean</span>, defaulting to <code>false</code></dt><dd> <p>When the value of this dictionary member is true, the generated description will have ICE credentials that are different from the current credentials (as visible in the @@ -1236,7 +1224,7 @@ <pre class="idl"><span class="idlInterface" id="idl-def-RTCPeerConnection">[<span class="idlCtor"> <span class="idlCtorKeyword"></span><span class="idlCtorName"><a href="#widl-ctor-RTCPeerConnection--RTCConfiguration-configuration">Constructor</a></span> (<span class="idlParam"><span class="idlParamType"><a class="idlType" href="#idl-def-RTCConfiguration"><code>RTCConfiguration</code></a></span> <span class="idlParamName">configuration</span></span>)</span>] interface <span class="idlInterfaceID">RTCPeerConnection</span> : <span class="idlSuperclass">EventTarget </span> { <span class="idlMethod"> <span class="idlMethType">void</span> <span class="idlMethName"><a href="#widl-RTCPeerConnection-createOffer-void-RTCSessionDescriptionCallback-successCallback-RTCPeerConnectionErrorCallback-failureCallback-RTCOfferOptions-options">createOffer</a></span> (<span class="idlParam"><span class="idlParamType"><a class="idlType" href="#idl-def-RTCSessionDescriptionCallback"><code>RTCSessionDescriptionCallback</code></a></span> <span class="idlParamName">successCallback</span></span>, <span class="idlParam"><span class="idlParamType"><a class="idlType" href="#idl-def-RTCPeerConnectionErrorCallback"><code>RTCPeerConnectionErrorCallback</code></a></span> <span class="idlParamName">failureCallback</span></span>, <span class="idlParam">optional <span class="idlParamType"><a class="idlType" href="#idl-def-RTCOfferOptions"><code>RTCOfferOptions</code></a></span> <span class="idlParamName">options</span></span>);</span> -<span class="idlMethod"> <span class="idlMethType">void</span> <span class="idlMethName"><a href="#widl-RTCPeerConnection-createAnswer-void-RTCSessionDescriptionCallback-successCallback-RTCPeerConnectionErrorCallback-failureCallback-RTCOfferAnswerOptions-options">createAnswer</a></span> (<span class="idlParam"><span class="idlParamType"><a class="idlType" href="#idl-def-RTCSessionDescriptionCallback"><code>RTCSessionDescriptionCallback</code></a></span> <span class="idlParamName">successCallback</span></span>, <span class="idlParam"><span class="idlParamType"><a class="idlType" href="#idl-def-RTCPeerConnectionErrorCallback"><code>RTCPeerConnectionErrorCallback</code></a></span> <span class="idlParamName">failureCallback</span></span>, <span class="idlParam">optional <span class="idlParamType"><a class="idlType" href="#idl-def-RTCOfferAnswerOptions"><code>RTCOfferAnswerOptions</code></a></span> <span class="idlParamName">options</span></span>);</span> +<span class="idlMethod"> <span class="idlMethType">void</span> <span class="idlMethName"><a href="#widl-RTCPeerConnection-createAnswer-void-RTCSessionDescriptionCallback-successCallback-RTCPeerConnectionErrorCallback-failureCallback">createAnswer</a></span> (<span class="idlParam"><span class="idlParamType"><a class="idlType" href="#idl-def-RTCSessionDescriptionCallback"><code>RTCSessionDescriptionCallback</code></a></span> <span class="idlParamName">successCallback</span></span>, <span class="idlParam"><span class="idlParamType"><a class="idlType" href="#idl-def-RTCPeerConnectionErrorCallback"><code>RTCPeerConnectionErrorCallback</code></a></span> <span class="idlParamName">failureCallback</span></span>);</span> <span class="idlMethod"> <span class="idlMethType">void</span> <span class="idlMethName"><a href="#widl-RTCPeerConnection-setLocalDescription-void-RTCSessionDescription-description-VoidFunction-successCallback-RTCPeerConnectionErrorCallback-failureCallback">setLocalDescription</a></span> (<span class="idlParam"><span class="idlParamType"><a class="idlType" href="#idl-def-RTCSessionDescription"><code>RTCSessionDescription</code></a></span> <span class="idlParamName">description</span></span>, <span class="idlParam"><span class="idlParamType">VoidFunction</span> <span class="idlParamName">successCallback</span></span>, <span class="idlParam"><span class="idlParamType"><a class="idlType" href="#idl-def-RTCPeerConnectionErrorCallback"><code>RTCPeerConnectionErrorCallback</code></a></span> <span class="idlParamName">failureCallback</span></span>);</span> <span class="idlAttribute"> readonly attribute <span class="idlAttrType"><a class="idlType" href="#idl-def-RTCSessionDescription"><code>RTCSessionDescription</code></a>?</span> <span class="idlAttrName"><a href="#widl-RTCPeerConnection-localDescription">localDescription</a></span>;</span> <span class="idlMethod"> <span class="idlMethType">void</span> <span class="idlMethName"><a href="#widl-RTCPeerConnection-setRemoteDescription-void-RTCSessionDescription-description-VoidFunction-successCallback-RTCPeerConnectionErrorCallback-failureCallback">setRemoteDescription</a></span> (<span class="idlParam"><span class="idlParamType"><a class="idlType" href="#idl-def-RTCSessionDescription"><code>RTCSessionDescription</code></a></span> <span class="idlParamName">description</span></span>, <span class="idlParam"><span class="idlParamType">VoidFunction</span> <span class="idlParamName">successCallback</span></span>, <span class="idlParam"><span class="idlParamType"><a class="idlType" href="#idl-def-RTCPeerConnectionErrorCallback"><code>RTCPeerConnectionErrorCallback</code></a></span> <span class="idlParamName">failureCallback</span></span>);</span> @@ -1404,12 +1392,9 @@ stream <a href="http://www.w3.org/html/wg/drafts/html/master/infrastructure.html#cors-cross-origin">CORS cross-origin</a>. These streams can be added to the <a href="#local-streams-set">local streams set</a> but content <em title="MUST NOT" class="rfc2119">MUST - NOT</em> be transmitted, with one exception.</p> - - <p>A stream marked with the <var>peerIdentity</var> option can - be transmitted if the RTCPeerConnection has successfully <a href="sec.identity-verify-assertion">validated the identity</a> - of the peer to have the same identity as the value of the - <var>peerIdentity</var> option on the stream.</p> + NOT</em> be transmitted, though streams marked with + <var>peerIdentity</var> can be transmitted if they meet the + requirements for sending (see <a class="sec-ref" href="#isolated-pc"><span class="secno">9.5.3</span> <span class="sec-title">Isolated Streams and RTCPeerConnection</span></a>) .</p> <p>All other streams that are not accessible to the application <em title="MUST NOT" class="rfc2119">MUST NOT</em> be sent to the peer, with silence (audio), black frames @@ -1451,7 +1436,7 @@ signalingState</a> to <code>closed</code>.</p> </li> </ol> - <div><em>No parameters.</em></div><div><em>Return type: </em><code>void</code></div></dd><dt id="widl-RTCPeerConnection-createAnswer-void-RTCSessionDescriptionCallback-successCallback-RTCPeerConnectionErrorCallback-failureCallback-RTCOfferAnswerOptions-options"><code>createAnswer</code></dt><dd> + <div><em>No parameters.</em></div><div><em>Return type: </em><code>void</code></div></dd><dt id="widl-RTCPeerConnection-createAnswer-void-RTCSessionDescriptionCallback-successCallback-RTCPeerConnectionErrorCallback-failureCallback"><code>createAnswer</code></dt><dd> <p>The createAnswer method generates an [<cite><a href="#bib-SDP" class="bibref">SDP</a></cite>] answer with the supported configuration for the session that is compatible with the parameters in the remote configuration. Like createOffer, the @@ -1505,7 +1490,7 @@ <p>If the SDP generation process failed for any reason, the user agent <em title="MUST" class="rfc2119">MUST</em> queue a task to invoke <var>failureCallback</var> with an <code>DOMError</code> object of type TBD as its argument.</p> - <table class="parameters"><tbody><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">successCallback</td><td class="prmType"><code><a class="idlType" href="#idl-def-RTCSessionDescriptionCallback"><code>RTCSessionDescriptionCallback</code></a></code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc"></td></tr><tr><td class="prmName">failureCallback</td><td class="prmType"><code><a class="idlType" href="#idl-def-RTCPeerConnectionErrorCallback"><code>RTCPeerConnectionErrorCallback</code></a></code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc"></td></tr><tr><td class="prmName">options</td><td class="prmType"><code><a class="idlType" href="#idl-def-RTCOfferAnswerOptions"><code>RTCOfferAswerOptions</code></a></code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptTrue"><span role="img" aria-label="True">✔</span></td><td class="prmDesc"></td></tr></tbody></table><div><em>Return type: </em><code>void</code></div></dd><dt id="widl-RTCPeerConnection-createOffer-void-RTCSessionDescriptionCallback-successCallback-RTCPeerConnectionErrorCallback-failureCallback-RTCOfferOptions-options"><code>createOffer</code></dt><dd> + <table class="parameters"><tbody><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">successCallback</td><td class="prmType"><code><a class="idlType" href="#idl-def-RTCSessionDescriptionCallback"><code>RTCSessionDescriptionCallback</code></a></code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc"></td></tr><tr><td class="prmName">failureCallback</td><td class="prmType"><code><a class="idlType" href="#idl-def-RTCPeerConnectionErrorCallback"><code>RTCPeerConnectionErrorCallback</code></a></code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc"></td></tr></tbody></table><div><em>Return type: </em><code>void</code></div></dd><dt id="widl-RTCPeerConnection-createOffer-void-RTCSessionDescrptionCallback-successCallback-RTCPeerConnectionErrorCallback-failureCallback-RTCOfferOptions-options"><code>createOffer</code></dt><dd> <p>The createOffer method generates a blob of SDP that contains an RFC 3264 offer with the supported configurations for the session, including descriptions of the local <code>MediaStream</code>s @@ -1883,10 +1868,16 @@ assertion.</a>. Identity validation completes asynchronously and does not block the completion of <code>setRemoteDescription</code>, unless there is a <a href="#target-peer-identity">target peer identity</a>.</p> + + <p>The <a href="#target-peer-identity">target peer identity</a> + cannot be changed once set. Once set, if a different value is + provided, the user agent <em title="MUST" class="rfc2119">MUST</em> throw an + <code>InvalidStateError</code> exception and abort this + operation.</p> </li> <li> - <p>If the "peerIdentity" constraint is applied to the + <p>If the "peerIdentity" configuration is applied to the <code><a class="idlType" href="#idl-def-RTCPeerConnection"><code>RTCPeerConnection</code></a></code>, this establishes a <dfn id="target-peer-identity">target peer identity</dfn>. Alternatively, if the <code><a class="idlType" href="#idl-def-RTCPeerConnection"><code>RTCPeerConnection</code></a></code> has previously authenticated the identity of the peer (that is, @@ -1896,10 +1887,8 @@ <p>If there is a <a href="#target-peer-identity">target peer identity</a>, then <code>setRemoteDescription</code> fails unless it contains an identity assertion that matches the <a href="#target-peer-identity">target peer identity</a>. The - <code>RTCPeerConnection</code> <em title="MAY" class="rfc2119">MAY</em> be closed if the validated - peer identity does not match the <a href="#target-peer-identity">target peer identity</a>. [[TODO: - determine if it is possible at this point to back out the - change. Seems unlikely.]]</p> + <code><a class="idlType" href="#idl-def-RTCPeerConnection"><code>RTCPeerConnection</code></a></code> <em title="MAY" class="rfc2119">MAY</em> be closed if the + validated peer identity does not match the <a href="#target-peer-identity">target peer identity</a>.</p> </li> </ul> <table class="parameters"><tbody><tr><th>Parameter</th><th>Type</th><th>Nullable</th><th>Optional</th><th>Description</th></tr><tr><td class="prmName">description</td><td class="prmType"><code><a class="idlType" href="#idl-def-RTCSessionDescription"><code>RTCSessionDescription</code></a></code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc"></td></tr><tr><td class="prmName">successCallback</td><td class="prmType"><code>VoidFunction</code></td><td class="prmNullFalse"><span role="img" aria-label="False">✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc"></td></tr><tr><td class="prmName">failureCallback</td><td class="prmType"><code><a class="idlType" href="#idl-def-RTCPeerConnectionErrorCallback"><code>RTCPeerConnectionErrorCallback</code></a></code></td><td class="prmNullFalse"><span role="img" aria-label="False"✘</span></td><td class="prmOptFalse"><span role="img" aria-label="False">✘</span></td><td class="prmDesc"></td></tr></tbody></table><div><em>Return type: </em><code>void</code></div></dd><dt id="widl-RTCPeerConnection-updateIce-void-RTCConfiguration-configuration"><code>updateIce</code></dt><dd> @@ -3688,7 +3677,6 @@ <section id="identity" rel="bibo:Chapter" resource="#sec.identity-proxy" typeof="bibo:Chapter"> <!--OddPage--><h2 role="heading" aria-level="1" id="sec.identity-proxy"><span class="secno">8. </span>Identity</h2> - <section id="identity-provider-interaction"> <h3 id="h3_identity-provider-interaction" role="heading" aria-level="2"><span class="secno">8.1 </span>Identity Provider Interaction</h3> @@ -4456,6 +4444,211 @@ <p>TODO</p> </dd></dl></section> </section> + + <section id="isolated-media-streams"> + <h3 id="h3_isolated-media-streams" role="heading" aria-level="2"><span class="secno">9.5 </span>Isolated Media Streams</h3> + + <p>A MediaStream acquired using <code>getUserMedia()</code> is, by + default, accessible to an application. This means that the application is + able to access the contents of tracks, modify their content, and send that + media to any peer it chooses.</p> + + <p>WebRTC supports calling scenarios where media is sent to a specifically + identified peer, without the contents of media streams being accessible to + applications. This is enabled by use of the + <code><dfn id="dfn-peeridentity">peerIdentity</dfn></code> parameter to + <code>getUserMedia()</code>.</p> + + <p>An application willingly relinquishes access to media by including a + <code>peerIdentity</code> parameter in the + <code>MediaStreamConstraints</code>. This attribute is set to a + <code>DOMString</code> containing the identity of a specific peer.</p> + + <p>The <code><dfn id="dfn-mediastreamconstraints">MediaStreamConstraints</dfn></code> dictionary is + expanded to include the <code>peerIdentity</code> parameter.</p> + + <pre class="idl"><span class="idlDictionary" id="idl-def-MediaStreamConstraints">dictionary <span class="idlDictionaryID">MediaStreamConstraints</span> { +<span class="idlMember"> <span class="idlMemberType">DOMString</span> <span class="idlMemberName"><a href="#widl-MediaStreamConstraints-peerIdentity">peerIdentity</a></span>;</span> +};</span></pre><section id="dictionary-mediastreamconstraints-members"><h4 id="h4_dictionary-mediastreamconstraints-members" role="heading" aria-level="3"><span class="secno">9.5.1 </span>Dictionary <a href="#idl-def-MediaStreamConstraints" class="idlType"><code>MediaStreamConstraints</code></a> Members</h4><dl class="dictionary-members"><dt id="widl-MediaStreamConstraints-peerIdentity"><code>peerIdentity</code> of type <span class="idlMemberType">DOMString</span></dt><dd> + <p>If set, <code>peerIdentity</code> isolates media from the + application. Media can only be sent to the identified peer.</p> + </dd></dl></section> + + <p>A user that is prompted to provide consent for access to a camera or + microphone can be shown the value of the <code>peerIdentity</code> + parameter, so that they can be informed that the consent is more narrowly + restricted.</p> + + <p>When the <code><dfn id="dfn-peeridentity-1">peerIdentity</dfn></code> option is supplied to + <code>getUserMedia()</code>, all of the <code>MediaStreamTrack</code>s in + the resulting <code>MediaStream</code> are isolated so that content is not + accessible to any application. Isolated <code>MediaStreamTrack</code>s + can be used for two purposes:</p> + + <ul> + <li> + <p>Displayed in an appropriate media tag (e.g., a video or audio + element). The browser <em title="MUST" class="rfc2119">MUST</em> ensure that content is inaccessible to the + application by ensuring that the resulting content is given the same + protections as content that + is <a href="http://www.w3.org/html/wg/drafts/html/master/infrastructure.html#cors-cross-origin">CORS + cross-origin</a>, as described in the + relevant <a href="http://www.w3.org/html/wg/drafts/html/master/embedded-content-0.html#security-and-privacy-considerations">Security + and privacy considerations section </a> of [<cite><a href="#bib-HTML5" class="bibref">HTML5</a></cite>].</p> + </li> + + <li> + <p>Used as the argument to <a href="#widl-RTCPeerConnection-addStream-void-MediaStream-stream">addStream()</a> + on an <code><a class="idlType" href="#idl-def-RTCPeerConnection"><code>RTCPeerConnection</code></a></code> instance, subject to the + restrictions in <a class="sec-ref" href="#isolated-pc"><span class="secno">9.5.3</span> <span class="sec-title">Isolated Streams and RTCPeerConnection</span></a>.</p> + </li> + </ul> + + <p>A <code>MediaStreamTrack</code> that is added to another + <code>MediaStream</code> remains isolated. When an isolated + <code>MediaStreamTrack</code> is added to a <code>MediaStream</code> with + a different peerIdentity, the <code>MediaStream</code> gets a combination + of isolation restrictions. A <code>MediaStream</code> containing + <code>MediaStreamTrack</code> instances with mixed isolation properties + can be displayed, but cannot be sent using <code> + <a class="idlType" href="#idl-def-RTCPeerConnection"><code>RTCPeerConnection</code></a></code>.</p> + + <p>Any <code>peerIdentity</code> property <em title="MUST" class="rfc2119">MUST</em> be retained on cloned + copies of <code>MediaStreamTrack</code>s.</p> + + <!-- Any stream or track that might be derived from an isolated stream, + such as + through <a href="https://www.w3.org/TR/streamproc/#media-element-extensions">captureStreamUntilEnded + or captureStream</a>, MUST also retain any isolation protections. + --> + + <section rel="bibo:Chapter" resource="#isolated-track" typeof="bibo:Chapter" id="isolated-track"> + <h4 id="h4_isolated-track" role="heading" aria-level="3"><span class="secno">9.5.2 </span>Extended MediaStreamTrack Properties</h4> + + <p><code>MediaStreamTrack</code> is expanded to include + an <var>isolated</var> attribute and a corresponding event. This allows + an application to quickly and easily determine whether a track is + accessible.</p> + + + <dl title="partial interface MediaStreamTrack"> + <dt>readonly attribute boolean isolated</dt> + <dd> + <p>A <code>MediaStreamTrack</code> is isolated (and the + corresponding <var>isolated</var> attribute set to <var>true</var>) + when content is inaccessible to the owning document. This occurs as + a result of setting the <var>peerIdentity</var> option. A track is + also isolated if it comes from a cross origin source.</p> + </dd> + + <dt>attribute EventHandler onisolationchange</dt> + <dd> + <p>This event handler, of + type <a href="#event-isolationchange">isolationchange</a>, is fired when + the value of the <var>isolated</var> attribute changes.</p> + </dd> + </dl> + + </section> + + <section rel="bibo:Chapter" resource="#isolated-pc" typeof="bibo:Chapter" id="isolated-pc"> + <h4 id="h4_isolated-pc" role="heading" aria-level="3"><span class="secno">9.5.3 </span>Isolated Streams and RTCPeerConnection</h4> + + <p>A <code>MediaStreamTrack</code> with a <var>peerIdentity</var> option + set can be added to any <code><a class="idlType" href="#idl-def-RTCPeerConnection"><code>RTCPeerConnection</code></a></code>. However, + the content of an isolated track <em title="MUST NOT" class="rfc2119">MUST NOT</em> be transmitted unless all of + the following constraints are met:</p> + + <ul> + <li> + <p>A <code>MediaStreamTrack</code> from a stream acquired using the + <var>peerIdentity</var> option can be transmitted if the + <code><a class="idlType" href="#idl-def-RTCPeerConnection"><code>RTCPeerConnection</code></a></code> has successfully <a href="sec.identity-verify-assertion">validated the identity</a> of + the peer AND that identity is the same identity that was used in the + <var>peerIdentity</var> option associated with the track. That is, + the <code>name</code> attribute of the <code>peerIdentity</code> + attribute of the <code><a class="idlType" href="#idl-def-RTCPeerConnection"><code>RTCPeerConnection</code></a></code> instance <em title="MUST" class="rfc2119">MUST</em> + match the value of the <code>peerIdentity</code> option passed to + <code>getUserMedia()</code>.</p> + + <p>Rules for matching identity are described in + [<cite><a href="#bib-RTCWEB-SECURITY-ARCH" class="bibref">RTCWEB-SECURITY-ARCH</a></cite>].</p> + </li> + + <li> + <p>The peer has indicated that it will respect the isolation + properties of streams. That is, a DTLS connection with a promise to + respect stream confidentiality, as defined in [<cite><a href="#bib-WEBRTC-ALPN" class="bibref">WEBRTC-ALPN</a></cite>] has + been established.</p> + </li> + </ul> + + <p>Failing to meet these conditions means that no media can be sent for + the affected <code>MediaStreamTrack</code>. Video <em title="MUST" class="rfc2119">MUST</em> be replaced by + black frames, audio <em title="MUST" class="rfc2119">MUST</em> be replaced by silence, and equivalently + information-free content <em title="MUST" class="rfc2119">MUST</em> be provided for other media types.</p> + + <p>Remotely sourced <code>MediaStreamTrack</code>s <em title="MUST" class="rfc2119">MUST</em> be isolated if + they are received over a DTLS connection that has been negotiated with + track isolation. This protects isolated media from the application in + the receiving browser. These tracks <em title="MUST" class="rfc2119">MUST</em> only be displayed to a user + using the appropriate media element (e.g., <video> or + <audio>).</p> + + <p>Any <code>MediaStreamTrack</code> that has the <var>peerIdentity</var> option set causes all tracks + sent using the same <code><a class="idlType" href="#idl-def-RTCPeerConnection"><code>RTCPeerConnection</code></a></code> to be isolated + at the receiving peer. All DTLS connections created for a + <code><a class="idlType" href="#idl-def-RTCPeerConnection"><code>RTCPeerConnection</code></a></code> with isolated local streams <em title="MUST" class="rfc2119">MUST</em> + be negotiated so that media remains isolated at the remote peer. This + causes non-isolated media to become isolated at the receiving peer if + any isolated tracks are added to the same + <code><a class="idlType" href="#idl-def-RTCPeerConnection"><code>RTCPeerConnection</code></a></code>.</p> + + <div class="note"><div id="h_note_14" role="heading" aria-level="4" class="note-title"><span>Note</span></div><p class="">Tracks that are not bound to a + particular <var>peerIdentity</var> do not cause other streams to be + isolated, these tracks simply do not have their content transmitted.</p></div> + + <p>If a stream becomes isolated after initially being accessible, or an + isolated stream is added to an active session, then media for that + stream is replaced by information-free content (e.g., black frames or + silence).</p> + + </section> + + <section rel="bibo:Chapter" resource="#isolation-protection" typeof="bibo:Chapter" id="isolation-protection"> + <h4 id="h4_isolation-protection" role="heading" aria-level="3"><span class="secno">9.5.4 </span>Protection Afforded by Media Isolation</h4> + + <p>Media isolation ensures that the content of + a <code>MediaStreamTrack</code> is not accessible to web applications. + However, to ensure that media with a <var>peerIdentity</var> option set + can be sent to peers, some meta-information about the media will be + exposed to applications.</p> + + <p>Applications will be able to observe the parameters of the media that + affect session negotiation and conversion into RTP. This includes the + codecs that might be supported by the track, the bitrate, the number of + packets, and the current settings that are set on the + <code>MediaStreamTrack</code>.</p> + + <p>In particular, the <a href="#statistics-model">statistics</a> + that <code><a class="idlType" href="#idl-def-RTCPeerConnection"><code>RTCPeerConnection</code></a></code> records are not reduced in + capability. New statistics that might compromise isolation <em title="MUST" class="rfc2119">MUST</em> be + avoided, or explicitly suppressed for isolated streams.</p> + + <p>Most of these data are exposed to the network when the media is + transmitted. Only the settings for the <code>MediaStreamTrack</code> + present a new source of information. This can includes the frame rate + and resolution of video tracks, the bandwidth of audio tracks, and other + information about the source, which would not otherwise be revealed to a + network observer. Since settings don't change at a high frequency or in + response to changes in media content, settings only reveal limited + reveal information about the content of a track. However, any setting + that might change dynamically in response to the content of an + isolated <code>MediaStreamTrack</code> <em title="MUST" class="rfc2119">MUST</em> have changes suppressed.</p> + + </section> + </section> + </section> @@ -4561,7 +4754,7 @@ is ready, messages are received and when the channel is closed.</p> - <div class="note"><div id="h_note_14" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">This example uses the <code>negotiationneeded</code> + <div class="note"><div id="h_note_15" role="heading" aria-level="3" class="note-title"><span>Note</span></div><p class="">This example uses the <code>negotiationneeded</code> event to initiate the offer/answer dialog. The exact behavior surrounding the <code>negotiationneeded</code> event is not specified in detail at the moment. This example can hopefully help to drive that @@ -4662,7 +4855,7 @@ <h3 id="h3_call-flow-browser-to-browser" role="heading" aria-level="2"><span class="secno">10.4 </span>Call Flow Browser to Browser</h3> [118 lines skipped] --- /sources/public/2011/webrtc/editor/MediaRecorder.html 2014/07/04 11:38:59 NONE +++ /sources/public/2011/webrtc/editor/MediaRecorder.html 2014/07/04 11:38:59 1.1 [1111 lines skipped]
Received on Friday, 4 July 2014 11:39:05 UTC