-
Notifications
You must be signed in to change notification settings - Fork 20
Capture, receive, and RTP timestamp concept definitions & normative requirements for gUM/gDM #156
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 3 commits
6f40605
ae946a9
2dc8783
41da924
069793f
88a2e13
15e2399
958a9bd
c79520a
4d9e139
584ace5
8d59ae2
f5d3490
d915bd5
a8fc811
b5778b0
012628d
794cd2d
fcafe1c
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,7 +9,7 @@ | |
// See https://github.com/w3c/respec/wiki/ for how to configure ReSpec | ||
var respecConfig = { | ||
group: "webrtc", | ||
xref: ["geometry-1", "html", "infra", "permissions", "dom", "image-capture", "mediacapture-streams", "webaudio", "webcodecs", "webidl"], | ||
xref: ["geometry-1", "html", "infra", "permissions", "dom", "hr-time", "image-capture", "mediacapture-fromelement", "mediacapture-streams", "screen-capture", "webaudio", "webcodecs", "webidl"], | ||
edDraftURI: "https://w3c.github.io/mediacapture-extensions/", | ||
editors: [ | ||
{name: "Jan-Ivar Bruaroey", company: "Mozilla Corporation", w3cid: 79152}, | ||
|
@@ -58,6 +58,10 @@ <h2>Terminology</h2> | |
<p>The terms [=permission state=], [=request permission to use=], and | ||
<a data-cite="permissions">prompt the user to choose</a> are defined in | ||
[[!permissions]].</p> | ||
<p> | ||
{{Performance.timeOrigin}} and {{Performance.now()}} are defined in | ||
[[!hr-time]]. | ||
</p> | ||
</section> | ||
<section id="conformance"> | ||
</section> | ||
|
@@ -1151,6 +1155,40 @@ <h2>Constrainable Properties</h2> | |
</tbody> | ||
</table> | ||
</section> | ||
<section> | ||
<h2>Capture timestamps</h2> | ||
<div> | ||
Some video sources can supply information about when a video frame was captured. | ||
This information is useful for example for AV sync and end-to-end delay measurement. | ||
</p> | ||
<p> | ||
{{VideoFrameMetadata}}.{{VideoFrameMetadata/captureTime}} MUST be set by the user | ||
agent in video frames sourced from {{MediaDevices/getUserMedia()}}, | ||
{{MediaDevices/getDisplayMedia()}}, and {{HTMLMediaElement/captureStream()}}. | ||
handellm marked this conversation as resolved.
Outdated
Show resolved
Hide resolved
|
||
</p> | ||
<section> | ||
<h3>{{VideoFrameMetadata}}</h3> | ||
<pre class="idl"> | ||
partial dictionary VideoFrameMetadata { | ||
DOMHighResTimeStamp captureTime; | ||
};</pre> | ||
<section class="notoc"> | ||
<h4>Members</h4> | ||
<dl class="dictionary-members" data-link-for="VideoFrameMetadata" data-dfn-for="VideoFrameMetadata"> | ||
<dt><dfn><code>captureTime</code></dfn> of type <span | ||
class="idlMemberType">DOMHighResTimeStamp, readonly</span></dt> | ||
<dd> | ||
<p> | ||
The capture time of the frame, defined as {{Performance.timeOrigin}} + {{Performance.now()}}. | ||
This is the user agent's best estimate of the instant the frame content was captured or | ||
generated. | ||
|
||
</p> | ||
</dd> | ||
</dl> | ||
</section> | ||
</section> | ||
</div> | ||
</section> | ||
<section> | ||
<h2>Exposing MediaStreamTrack source heuristic reactions support</h2> | ||
<div> | ||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How does it help with AV sync if it's only on video frames?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Absolute audio capture timestamps are available via other web APIs right?
To try to answer the overarching question, presentation timestamps alone are insufficient if you want to do accurate AV sync on a local (think MediaRecorder) or on a remote receiver, especially in the presence of delays in the capture process, or insert VTGs in the capture pipeline to do video processing.
Is this answer enough or do you want to see further changes to clarify this in the spec text based on latest uploaded revision?