- From: CVS User dburnett <cvsmail@w3.org>
- Date: Tue, 05 Nov 2013 18:10:45 +0000
- To: public-dap-commits@w3.org
Update of /sources/public/2011/webrtc/editor/sources
In directory roscoe:/tmp/cvs-serv480/sources
Added Files:
getusermedia.css getusermedia.html getusermedia.js webrtc.css
webrtc.html webrtc.js
Log Message:
Added 20131105 archived version.
--- /sources/public/2011/webrtc/editor/sources/getusermedia.css 2013/11/05 18:10:45 NONE
+++ /sources/public/2011/webrtc/editor/sources/getusermedia.css 2013/11/05 18:10:45 1.1
@media screen {
html { background: #eeeeee; }
body { margin-bottom: 30%; border-bottom: thin solid #3c790a; }
}
pre { margin-left: 2em; white-space: pre-wrap; }
dt, dfn { font-weight: bold; font-style: normal; }
i, em, dt dfn { font-style: italic; }
pre, code { font-size: inherit; font-family: monospace, Droid Sans Fallback, sans-serif; font-variant: normal; }
pre strong { color: black; font: inherit; font-weight: bold; background: yellow; }
pre em { font-weight: bolder; font-style: normal; }
@media screen { code { color: orangered; } }
var sub { vertical-align: bottom; font-size: smaller; position: relative; top: 0.1em; }
table { border-collapse: collapse; border-style: hidden hidden none hidden; }
table thead, table tbody { border-bottom: solid; }
table tbody th { text-align: left; }
table tbody th:first-child { border-left: solid; }
table td, table th { border-left: solid; border-right: solid; border-bottom: solid thin; vertical-align: top; padding: 0.2em; }
ins { background: green; color: white; /* color: green; border: solid thin lime; padding: 0.3em; line-height: 1.6em; */ text-decoration: none; }
del { background: maroon; color: white; /* color: maroon; border: solid thin red; padding: 0.3em; line-height: 1.6em; */ text-decoration: line-through; }
body ins, body del { display: block; }
body * ins, body * del { display: inline; }
p > span:not([title=""]):not([class="XXX"]):not([class="impl"]):not([class="note"]),
li > span:not([title=""]):not([class="XXX"]):not([class="impl"]):not([class="note"]) { border-bottom: solid #99CC99; }
.note { color: green; background: transparent; font-family: sans-serif, Droid Sans Fallback; }
.warning { color: red; background: transparent; }
.note, .warning { font-weight: bolder; font-style: italic; }
.note em, .warning em, .note i, .warning i { font-style: normal; }
p.note, div.note { padding: 0.5em 2em; }
span.note { padding: 0 2em; }
.note p:first-child, .warning p:first-child { margin-top: 0; }
.note p:last-child, .warning p:last-child { margin-bottom: 0; }
.warning:before { font-style: normal; }
p.note:before { content: 'Note: '; }
p.warning:before { content: '\26A0 Warning! '; }
.bookkeeping:before { display: block; content: 'Bookkeeping details'; font-weight: bolder; font-style: italic; }
.bookkeeping { font-size: 0.8em; margin: 2em 0; }
.bookkeeping p { margin: 0.5em 2em; display: list-item; list-style: square; }
.bookkeeping dt { margin: 0.5em 2em 0; }
.bookkeeping dd { margin: 0 3em 0.5em; }
.critical { margin: 1em; border: double thick red; padding: 1em; background: #FFFFCC; }
.critical > :first-child { margin-top: 0; }
.example { display: block; color: #222222; background: #FCFCFC; border-left: double; margin-left: 2em; padding-left: 1em; }
td > .example:only-child { margin: 0 0 0 0.1em; }
a.externalDFN {
color: inherit;
border-bottom: 1px dotted #ccc;
text-decoration: none;
}
--- /sources/public/2011/webrtc/editor/sources/getusermedia.html 2013/11/05 18:10:45 NONE
+++ /sources/public/2011/webrtc/editor/sources/getusermedia.html 2013/11/05 18:10:45 1.1
<!DOCTYPE html>
<html lang="en-us">
<head>
<meta name="generator" content=
"HTML Tidy for HTML5 (experimental) for Linux https://github.com/w3c/tidy-html5/tree/68a9e74">
<link href="getusermedia.css" rel="stylesheet" type="text/css">
<title>Media Capture and Streams</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">
<!--
To publish this document, see instructions in README
-->
<script class="remove" src="http://www.w3.org/Tools/respec/respec-w3c-common"
type="text/javascript">
<!-- keep this comment -->
</script>
<script class="remove" src="getusermedia.js" type="text/javascript">
<!-- keep this comment -->
</script>
</head>
<body>
<section id="abstract">
<p>This document defines a set of JavaScript APIs that allow local media,
including audio and video, to be requested from a platform.</p>
</section>
<section id="sotd">
<p>This document is not complete. It is subject to major changes and, while
early experimentations are encouraged, it is therefore not intended for
implementation. The API is based on preliminary work done in the WHATWG.</p>
</section>
<section class="informative" id="intro">
<h2>Introduction</h2>
<p>Access to multimedia streams (video, audio, or both) from local devices
(video cameras, microphones, Web cams) can have a number of uses, such as
real-time communication, recording, and surveillance.</p>
<p>This document defines the APIs used to get access to local devices that
can generate multimedia stream data. This document also defines the MediaStream
API by which JavaScript is able to manipulate the stream data or otherwise
process it.</p>
</section>
<section id="conformance">
<p>
This specification defines conformance criteria that apply to a single
product: the <dfn>user agent</dfn> that implements the
interfaces that it contains.
</p>
<p>
Implementations that use ECMAScript to implement the APIs defined in
this specification must implement them in a manner consistent with the
ECMAScript Bindings defined in the Web IDL specification [[!WEBIDL]],
as this specification uses that specification and terminology.
</p>
</section>
<section>
<h2>Terminology</h2>
<dl>
<dt><i>HTML Terms:</i></dt>
<dd>
<p>
The <code><a href="http://dev.w3.org/html5/spec/webappapis.html#eventhandler">
EventHandler</a></code> interface represents a callback used for event
handlers as defined in [[!HTML5]].
</p>
<p>
The concepts <dfn><a href="http://dev.w3.org/html5/spec/webappapis.html#queue-a-task">
queue a task</a></dfn> and
<dfn><a href="http://dev.w3.org/html5/spec/webappapis.html#fire-a-simple-event">
fires a simple event</a></dfn> are defined in [[!HTML5]].
</p>
<p>
The terms <dfn><a href="http://dev.w3.org/html5/spec/webappapis.html#event-handlers">
event handlers</a></dfn> and
<dfn><a href="http://dev.w3.org/html5/spec/webappapis.html#event-handler-event-type">
event handler event types</a></dfn> are defined in [[!HTML5]].
</p>
</dd>
<dt><dfn>source</dfn></dt>
<dd>
<p>A source is the "thing" providing the source of a media stream
track. The source is the broadcaster of the media itself. A
source can be a physical webcam, microphone, local video or
audio file from the user's hard drive, network resource, or
static image.</p>
<p>Some sources have an identifier which <em title="must"
class="rfc2119">must</em> be unique to the application
(un-guessable by another application) and persistent between
application sessions (e.g., the identifier for a given
source device/application must stay the same, but not be
guessable by another application). Sources that must have an
identifier are camera and microphone sources; local file
sources are not required to have an identifier. Source
identifiers let the application save, identify the
availability of, and directly request specific sources.</p>
<p>Other than the identifier, other bits of source identity
are <strong>never</strong> directly available to the
application until the user agent connects a source to a
track. Once a source has been "released" to the application
(either via a permissions UI, pre-configured allow-list, or
some other release mechanism) the application will be able
discover additional source-specific capabilities.</p>
<p>Sources <strong>do not</strong> have constraints --
tracks have constraints. When a source is connected to a
track, it must conform to the constraints present on that
track (or set of tracks).</p>
<p>Sources will be released (un-attached) from a track when
the track is ended for any reason.</p>
<p>On the <code><a>MediaStreamTrack</a></code> object,
sources are represented by a <code><a>sourceType</a></code>
attribute. The behavior of APIs associated with the source's
capabilities and settings change depending on the source
type.</p>
<p>Sources have <code><a>capabilities</a></code>
and <code><a>settings</a></code>. The capabilities and settings
are "owned" by the source and are common to any (multiple)
tracks that happen to be using the same source (e.g., if two
different track objects bound to the same source ask for
the same capability or setting information, they will get back
the same answer).</p>
</dd>
<dt><dfn title="state">Setting (Source Setting)</dfn></dt>
<dd>
<p>A setting refers to the immediate, current value of the
source's (optionally constrained) capabilities. Settings are
always read-only.</p>
<p>A source's settings can change dynamically over time due to
environmental conditions, sink configurations, or constraint
changes. A source's settings must always conform to the current
set of mandatory constraints that all of the tracks it is
bound to have defined, and should do its best to conform to
the set of optional constraints specified.</p>
<p>A source's settings are directly exposed to audio and video
track objects through individual read-only attributes. These
attributes share the same name as their
corresponding <a>capabilities</a>
and <a>constraints</a>.</p>
<p>Events are available that signal to the application that
a source's settings have changed.</p>
<p>A conforming user-agent <em title="must"
class="rfc2119">must</em> support all the setting names
defined in this spec.</p>
</dd>
<dt><dfn title="capabilities"
id="dfn-capabilities">Capabilities</dfn></dt>
<dd>
<p>Source capabilities are the intrinsic "features" of a
source object. For each source setting, there is a
corresponding capability that describes whether it is
supported by the source and if so, what the range of
supported values are. Capabilities are expressed as either a
series of settings (for enumerated-type capabilities) or as a
min/max range.</p>
<p>The values of the supported capabilities must be
normalized to the ranges and enumerated types defined in
this specification.</p>
<p>Capabilities return the same underlying per-source
capabilities, regardless of any user-supplied constraints
present on the source (capabilities are independent of
constraints).</p>
<p>Source capabilities are effectively
constant. Applications should be able to depend on a
specific source having the same capabilities for any
session.</p>
</dd>
<dt><dfn title="constraints"
id="dfn-constraints">Constraints</dfn></dt>
<dd>
<p>Constraints are an optional feature for restricting the
range of allowed variability on a source. Without provided
constraints, implementations are free to select a source's
settings from the full ranges of its supported capabilities, and
to adjust those settings at any time for any reason.</p>
<p>Constraints may be optional or mandatory. Optional
constraints are represented by an ordered list, mandatory
constraints are an unordered set. The order of the optional
constraints is from most important (at the head of the list)
to least important (at the tail of the list).</p>
<p>Constraints are stored on the track object, not the
source. Each track can be optionally initialized with
constraints, or constraints can be added afterward through
the constraint APIs defined in this spec.</p>
<p>Applying track level constraints to a source is
conditional based on the type of source. For example,
read-only sources will ignore any specified constraints on
the track.</p>
<p>It is possible for two tracks that share a unique source
to apply contradictory constraints. Under such
contradictions, the implementation will mute both tracks and
notify them that they are over-constrained.</p>
<p>Events are available that allow the application to know
when constraints cannot be met by the user agent. These
typically occur when the application applies constraints
beyond the capability of a source, contradictory
constraints, or in some cases when a source cannot sustain
itself in over-constrained scenarios (overheating,
etc.).</p>
<p>A correspondingly-named constraint exists for each
corresponding source setting name and capability name. In
general, user agents will have more flexibility to optimize
the media streaming experience the fewer constraints are
applied.</p>
</dd>
</dl>
</section>
<section id="stream-api">
<h2>MediaStream API</h2>
<section>
<h2>Introduction</h2>
<p>The <code><a>MediaStream</a></code> interface is used to represent
streams of media data, typically (but not necessarily) of audio and/or
video content, e.g. from a local camera. The data from a
<code><a>MediaStream</a></code> object does not necessarily have a
canonical binary form; for example, it could just be "the video currently
coming from the user's video camera". This allows user agents to
manipulate media streams in whatever fashion is most suitable on the
user's platform.</p>
<p>Each <code><a>MediaStream</a></code> object can contain zero or more
tracks, in particular audio and video tracks. All tracks in a MediaStream
are intended to be synchronized when rendered. Different MediaStreams do
not need to be synchronized.</p>
<p>Each track in a MediaStream object has a corresponding
<code><a>MediaStreamTrack</a></code> object.</p>
<p>A <code><a>MediaStreamTrack</a></code> represents content comprising
one or more channels, where the channels have a defined well known
relationship to each other (such as a stereo or 5.1 audio signal).</p>
<p>A channel is the smallest unit considered in this API
specification.</p>
<p>A <code><a>MediaStream</a></code> object has an input and an output.
The input depends on how the object was created: a
<code><a>MediaStream</a></code> object generated by a <code><a href=
"#dom-navigator-getusermedia">getUserMedia()</a></code> call (which is
described later in this document), for instance, might take its input
from the user's local camera. The output of the object controls how the
object is used, e.g., what is saved if the object is written to a file or
what is displayed if the object is used in a <code>video</code>
element.</p>
<p>Each track in a <code><a>MediaStream</a></code> object can be
disabled, meaning that it is muted in the object's output. All tracks are
initially enabled.</p>
<p>A <code><a>MediaStream</a></code> can be <a>finished</a>, indicating
that its inputs have forever stopped providing data.</p>
<p>The output of a <code><a>MediaStream</a></code> object MUST correspond
to the tracks in its input. Muted audio tracks MUST be replaced with
silence. Muted video tracks MUST be replaced with blackness.</p>
<p>A new <code><a>MediaStream</a></code> object can be created from
accessible media sources (that does not require any additional
permissions) using the <code><a href="#dom-mediastream">MediaStream()</a>
</code> constructor. The constructor argument can either be an existing
<code><a>MediaStream</a></code> object, in which case all the tracks of
the given stream are added to the new <code><a>MediaStream</a></code>
object, or an array of <code><a>MediaStreamTrack</a></code> objects. The
latter form makes it possible to compose a stream from different source
streams.</p>
<p><img alt="A MediaStream" src="images/media-stream.png" width=
"418"></p>
<p>Both <code><a>MediaStream</a></code> and <code>
<a>MediaStreamTrack</a></code> objects can be cloned. This allows for
greater control since the separate instances can be manipulated and
<a title="consumer">consumed</a> individually. A cloned <code>
<a>MediaStream</a></code> contains clones of all member tracks from the
original stream.</p>
<p>When a <code><a>MediaStream</a></code> object is being generated
from a local file (as opposed to a live audio/video source), the user
agent SHOULD stream the data from the file in real time, not all at once.
The <code>MediaStream</code> object is also used in contexts outside
<code>getUserMedia</code>, such as [[!WEBRTC10]]. In both cases, ensuring
a realtime stream reduces the ease with which pages can distinguish live
video from pre-recorded video, which can help protect the user's
privacy.</p>
</section>
<section>
<h2>MediaStream</h2>
<p>The <dfn id="dom-mediastream"> <code>MediaStream()</code></dfn>
constructor composes a new stream out of existing tracks. It takes an
optional argument of type <code><a>MediaStream</a></code> or an array of
<code><a>MediaStreamTrack</a></code> objects. <dfn id='mediastream-constructor'>When the constructor is
invoked</dfn>, the UA must run the following steps:</p>
<ol>
<li>
<p>Let <var>stream</var> be a newly constructed <code>
<a>MediaStream</a></code> object.</p>
</li>
<li>
<p>Initialize <var>stream's</var> <code><a href=
"#dom-mediastream-id">id</a></code> attribute to a newly generated
value.</p>
</li>
<li>
<p>If the constructor's argument is present, run the sub steps that
corresponds to the argument type.</p>
<ul>
<li>
<p><code>Array</code> of <code><a>MediaStreamTrack</a></code>
objects:</p>
[3383 lines skipped]
--- /sources/public/2011/webrtc/editor/sources/getusermedia.js 2013/11/05 18:10:45 NONE
+++ /sources/public/2011/webrtc/editor/sources/getusermedia.js 2013/11/05 18:10:45 1.1
[3475 lines skipped]
--- /sources/public/2011/webrtc/editor/sources/webrtc.css 2013/11/05 18:10:45 NONE
+++ /sources/public/2011/webrtc/editor/sources/webrtc.css 2013/11/05 18:10:45 1.1
[3527 lines skipped]
--- /sources/public/2011/webrtc/editor/sources/webrtc.html 2013/11/05 18:10:45 NONE
+++ /sources/public/2011/webrtc/editor/sources/webrtc.html 2013/11/05 18:10:45 1.1
[8304 lines skipped]
--- /sources/public/2011/webrtc/editor/sources/webrtc.js 2013/11/05 18:10:45 NONE
+++ /sources/public/2011/webrtc/editor/sources/webrtc.js 2013/11/05 18:10:45 1.1
[8377 lines skipped]
Received on Tuesday, 5 November 2013 18:10:48 UTC