From 1acc485ffba3c12886e146f03557068d898a1f48 Mon Sep 17 00:00:00 2001
From: Markus Handell
The process of freeing a candidate is defined in [[RFC8445]] Section 8.3.
+
+ The following terms are defined in mediacapture-extensions
+ video timestamp concepts
+
+ The user agent defines a frame timestamp being the same as the [=capture timestamp=]
+ of the frame being produced on the {{RTCRtpSender}} {{MediaStreamTrack}} if it is set.
+ If it is unset the user agent estimates a timestamp from the sent frame's [= presentation timestamp =] together with the
+ time it was received by the {{RTCRtpSender}}.
+
+ The NTP and RTP timestamps of the encoded frame corresponding to the frame being produced on the {{RTCRtpSender}}
+ {{MediaStreamTrack}} are sourced from the [= frame timestamp =].
+
+ The [=RTP timestamp=] of frames being produced on the {{RTCRtpSender}} is ignored.
+
+
+ For a frame produced in a {{RTCRtpReceiver}} track, the user agent computes a
+ remote capture timestamp. It is a best-effort estimate of the local capture
+ time on the sender translated to the receiver clock, and can use methods like using RTCP SR
+ as specified in [[?RFC3550]] Section 6.4.1, or by other alternative means if use by RTCP SR
+ isn't feasible.
+
+ Each frame's [= capture timestamp =] is set to the [= remote capture timestamp =], if available.
+
+ For a frame produced in a {{RTCRtpReceiver}} track, the frame's [=RTP timestamp=] is set
+ from the RTP timestamp of constituent packets of the corresponding received encoded frame.
+
+ For a frame produced in a {{RTCRtpReceiver}} track, the [=receive timestamp=] is set
+ as the time the corresponding encoded frame was received by the platform, i.e. the time at which the
+ last packet belonging to this frame was received over the network.
+
The user agent defines a frame timestamp being the same as the [=capture timestamp=]
of the frame being produced on the {{RTCRtpSender}} {{MediaStreamTrack}} if it is set.
- If it is unset the user agent estimates a timestamp from the sent frame's [= presentation timestamp =] together with the
+ If it is unset the user agent estimates a timestamp from the sent frame's [=presentation timestamp=] together with the
time it was received by the {{RTCRtpSender}}.
The NTP and RTP timestamps of the encoded frame corresponding to the frame being produced on the {{RTCRtpSender}}
- {{MediaStreamTrack}} are sourced from the [= frame timestamp =].
+ {{MediaStreamTrack}} are sourced from the [=frame timestamp=].
The [=RTP timestamp=] of frames being produced on the {{RTCRtpSender}} is ignored.
@@ -1579,7 +1579,7 @@ Terminology
+
@@ -1540,6 +1553,46 @@
Event summary
Timestamp behavior
+ RTCRtpSender timestamp effects on packet NTP and RTP timestamps
+ RTCRtpReceiver timestamps
+ Remote capture timestamp
+ Received RTP timestamp
+ Receive timestamp
+
Security Considerations
From 92a79db41a4d39cb310fa49f0d371a419d9aaa8a Mon Sep 17 00:00:00 2001
From: Markus Handell
RTCRtpSender timestamp effects on packet NTP and RTP timestamps
Remote capture timestamp
as specified in [[?RFC3550]] Section 6.4.1, or by other alternative means if use by RTCP SR
isn't feasible.
- Each frame's [= capture timestamp =] is set to the [= remote capture timestamp =], if available. + Each frame's [=capture timestamp=] is set to the [=remote capture timestamp=], if available.
diff --git a/webrtc-extensions.js b/webrtc-extensions.js
index 468cac8..7cc3dc4 100644
--- a/webrtc-extensions.js
+++ b/webrtc-extensions.js
@@ -1,52 +1,50 @@
var respecConfig = {
- "group": "webrtc",
- github: {
- repoURL: "https://github.com/w3c/webrtc-extensions/",
- branch: "main"
- },
- latestVersion: null,
- "xref": ["html", "webidl", "webrtc", "hr-time", "mediacapture-streams", "webrtc-stats", "infra", "dom"],
- "specStatus": "ED",
- editors: [
- // { name: "Your Name", url: "http://example.org/",
- // company: "Your Company", companyURL: "http://example.com/" },
- {
- name: "Bernard Aboba", company: "Microsoft Corporation",
- w3cid: "65611"
- }
- ],
- formerEditors: [
- { name: "Henrik Boström", company: "Google", w3cid: "96936", retiredDate: "2021-02-01" }
- ],
- authors: [
- ],
- wgPublicList: "public-webrtc",
- otherLinks: [
- {
- key: "Participate",
- data: [
- {
- value: "Mailing list",
- href: "https://lists.w3.org/Archives/Public/public-webrtc/"
- }
- ]
- }
- ],
- localBiblio: {
- "IANA-STUN-6": {
- "title": "STUN Error Codes",
- "href": "https://www.iana.org/assignments/stun-parameters/stun-parameters.xhtml#stun-parameters-6",
- "publisher": "IANA"
+ "group": "webrtc",
+ github: {
+ repoURL: "https://github.com/w3c/webrtc-extensions/",
+ branch: "main"
},
- "CRYPTEX": {
- "aliasOf": "RFC9335"
- },
- "RTP-EXT-CAPTURE-TIME": {
- "title": "RTP Header Extension for Absolute Capture Time",
- "publisher": "WebRTC Project",
- href: "https://webrtc.googlesource.com/src/+/refs/heads/main/docs/native-code/rtp-hdrext/abs-capture-time",
- "status": "Experimental RTP Header Extension"
+ latestVersion: null,
+ "xref": ["html", "webidl", "webrtc", "hr-time", "mediacapture-streams", "webrtc-stats", "infra", "dom"],
+ "specStatus": "ED",
+ editors: [
+ // { name: "Your Name", url: "http://example.org/",
+ // company: "Your Company", companyURL: "http://example.com/" },
+ { name: "Bernard Aboba", company: "Microsoft Corporation",
+ w3cid: "65611"
+ }
+ ],
+ formerEditors: [
+ { name: "Henrik Boström", company: "Google", w3cid: "96936", retiredDate: "2021-02-01" }
+ ],
+ authors: [
+ ],
+ wgPublicList: "public-webrtc",
+ otherLinks: [
+ {
+ key: "Participate",
+ data: [
+ {
+ value: "Mailing list",
+ href: "https://lists.w3.org/Archives/Public/public-webrtc/"
+ }
+ ]
+ }
+ ],
+ localBiblio: {
+ "IANA-STUN-6": {
+ "title": "STUN Error Codes",
+ "href": "https://www.iana.org/assignments/stun-parameters/stun-parameters.xhtml#stun-parameters-6",
+ "publisher": "IANA"
+ },
+ "CRYPTEX": {
+ "aliasOf": "RFC9335"
+ },
+ "RTP-EXT-CAPTURE-TIME": {
+ "title": "RTP Header Extension for Absolute Capture Time",
+ "publisher": "WebRTC Project",
+ href: "https://webrtc.googlesource.com/src/+/refs/heads/main/docs/native-code/rtp-hdrext/abs-capture-time",
+ "status": "Experimental RTP Header Extension"
+ }
}
- },
- "xref": ["webrtc", "hr-time", "mediacapture-streams", "webrtc-stats", "mediacapture-extensions"]
}
From 18a0c80346628c64340e3447d116ef8f462ae129 Mon Sep 17 00:00:00 2001
From: Markus Handell
The user agent defines a frame timestamp being the same as the [=capture timestamp=]
of the frame being produced on the {{RTCRtpSender}} {{MediaStreamTrack}} if it is set.
- If it is unset the user agent estimates a timestamp from the sent frame's [=presentation timestamp=] together with the
+ If it is unset the user agent MUST estimate a timestamp from the sent frame's [=presentation timestamp=] together with the
time it was received by the {{RTCRtpSender}}.
The NTP and RTP timestamps of the encoded frame corresponding to the frame being produced on the {{RTCRtpSender}}
- {{MediaStreamTrack}} are sourced from the [=frame timestamp=].
+ {{MediaStreamTrack}} MUST be sourced from the [=frame timestamp=].
- The [=RTP timestamp=] of frames being produced on the {{RTCRtpSender}} is ignored.
+ The [=RTP timestamp=] of frames produced on the {{RTCRtpSender}} {{MediaStreamTrack}} SHOULD not be used by the {{RTCRtpSender}}.
Event summary
- Timestamp behavior
- RTCRtpSender timestamp effects on packet NTP and RTP timestamps
+ RTCRtpSender video track frame timestamp effects on outgoing packet NTP and RTP timestamps
RTCRtpReceiver timestamps
Remote capture timestamp
@@ -1583,12 +1583,12 @@ Remote capture timestamp
- For a frame produced in a {{RTCRtpReceiver}} track, the frame's [=RTP timestamp=] is set + For a video frame produced in a {{RTCRtpReceiver}} track, the frame's [=RTP timestamp=] MUST be set from the RTP timestamp of constituent packets of the corresponding received encoded frame.
- For a frame produced in a {{RTCRtpReceiver}} track, the [=receive timestamp=] is set + For a frame produced in a {{RTCRtpReceiver}} track, the [=receive timestamp=] MUST be set as the time the corresponding encoded frame was received by the platform, i.e. the time at which the last packet belonging to this frame was received over the network.
From 427dec6cb78a66276e7858581841ce167af1953e Mon Sep 17 00:00:00 2001 From: Markus HandellThe NTP and RTP timestamps of the encoded frame corresponding to the frame being produced on the {{RTCRtpSender}} {{MediaStreamTrack}} MUST be sourced from the [=frame timestamp=].
-- The [=RTP timestamp=] of frames produced on the {{RTCRtpSender}} {{MediaStreamTrack}} SHOULD not be used by the {{RTCRtpSender}}. -