-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathindex.html
152 lines (150 loc) · 5.52 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>WebRTC Timing Extensions</title>
<script src="https://www.w3.org/Tools/respec/respec-w3c-common" class="remove"></script>
<script class='remove'>
"use strict";
// See https://github.com/w3c/respec/wiki/ for how to configure ReSpec
var respecConfig = {
"doRDFa": false,
"format": "markdown",
// "githubAPI": "https://api.github.com/repos/WICG/webrtc-timing",
// "issueBase": "https://www.github.com/WICG/webrtc-timing/issues/",
"noLegacyStyle": true,
"editors": [{
name: "Henrik Boström",
email: "[email protected]",
company: "Google Inc.",
},
{
name: "Harald Alvestrand",
email: "[email protected]",
company: "Google Inc.",
},
// Add additional editors here.
// https://github.com/w3c/respec/wiki/editors
],
"shortName": "webrtc-timing",
"specStatus": "CG-DRAFT",
"subjectPrefix": "[webrtc-timing]",
// "wg": "WICG",
"otherLinks": [{
"key": "Repository",
"data": [{
"value": "We are on Github.",
"href": "https://github.com/henbos/webrtc-timing"
}, {
"value": "File a bug.",
"href": "https://github.com/henbos/webrtc-timing/issues"
}, {
"value": "Commit history.",
"href": "https://github.com/henbos/webrtc-timing/commits/master"
}, ]
}],
};
</script>
</head>
<body>
<section id="abstract">
<p>
TODO(henbos): Fill in.
</p>
</section>
<section id="sotd">
<p>
This is an unofficial proposal.
</p>
</section>
<section id="introduction">
<h2>Introduction</h2>
<p>
TODO(henbos): Fill in.
</p>
</section>
<section id="rtcrtpreceiver-interface">
<h3>
<dfn>RTCRtpReceiver</dfn> extensions
</h3>
<p>
Let <code>RTCRtpReceiver</code> objects have a
<dfn>[[\PlayoutDelayHint]]</dfn> internal slot initially
initialized to <code>null</code>.
</p>
<pre class="idl">partial interface RTCRtpReceiver {
attribute double? playoutDelayHint;
};</pre>
<section>
<h2>Attributes</h2>
<dl data-link-for="RTCRtpReceiver" data-dfn-for="RTCRtpReceiver"
class="attributes">
<dt><dfn><code>playoutDelayHint</code></dfn> of type <span
class="idlAttrType">double</span>, nullable</dt>
<dd>
<p>This attribute allows the application to give a hint to the User
Agent about what playout delay is acceptable. The User Agent SHOULD
NOT playout audio or video that is received unless this amount of time
has passed in seconds, allowing the User Agent to perform more or less
buffering than it might otherwise do. This allows to influence the
tradeoffs between having a higher delay and the risk that buffers such
as the jitter buffer will run out of audio or video frames to play due
to network jitter. This API only serves to provide a hint, and the
User Agent may ignore it. The hint SHOULD NOT be followed if it
significantly impacts audio or video quality (e.g. bad network), or if
the value implies allocating larger buffers than the User Agent is
willing to provide.</p>
<p class="note">
The playout delay hint applies even if DTX is used. For example, if
DTX is used and packets start flowing after silence, the hint can
influence the User Agent to buffer these packets rather than playing
them out.
</p>
<p>On getting, this attribute MUST return the value of the
<a>[[\PlayoutDelayHint]]</a> internal slot.</p>
<p>On setting, the User Agent MUST run the following steps:</p>
<ol>
<li>
<p>Let <var>receiver</var> be the
<code><a>RTCRtpReceiver</a></code> object on which the setter is
invoked.</p>
</li>
<li>
<p>Let <var>delay</var> be the argument to the setter.</p>
</li>
<li>
<p>If <var>delay</var> is negative, <a>throw</a> a
<code>TypeError</code> and abort these steps.</p>
</li>
<li>
<p>Set the value of <var>receiver</var>'s
<a>[[\PlayoutDelayHint]]</a> internal slot to
<var>delay</var>.</p>
</li>
<li>
<p>In parallel, begin executing the following steps:</p>
<ol>
<li>
<p>Update the underlying system about the new delay hint, or
that there is no hint if <var>delay</var> is
<code>null</code>. If at any point in time this value is
larger than the User Agent is able or willing to provide, the
User Agent SHOULD use the maximum value available to match the
requested delay as close as possible. If at any point in time
this value is smaller than the User Agent determines is needed
in order provide sufficient audio or video quality, the User
Agent SHOULD use the smallest value possible.</p>
<p class="note">
If User Agent ignores the hint at any time, this is not
reflected in the <a>[[\PlayoutDelayHint]]</a> internal slot.
</p>
</li>
</ol>
</li>
</ol>
</dd>
</dl>
</section>
</section>
</body>
</html>