<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.23 (Ruby 3.3.6) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-avtcore-abs-capture-time-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.26.0 -->
  <front>
    <title abbrev="Abs capture timestamp">Absolute Capture Timestamp RTP header extension</title>
    <seriesInfo name="Internet-Draft" value="draft-ietf-avtcore-abs-capture-time-00"/>
    <author fullname="Harald Alvestrand">
      <organization>Google</organization>
      <address>
        <email>hta@google.com</email>
      </address>
    </author>
    <date year="2025" month="February" day="06"/>
    <area>Web and Internet Transport</area>
    <workgroup>Audio/Video Transport Core Maintenance</workgroup>
    <keyword>webrtc</keyword>
    <keyword>capture timestamp</keyword>
    <keyword>rtcweb</keyword>
    <abstract>
      <?line 42?>

<t>This document describes an RTP header extension that can be used to carry information
about the capture time of a video frame / audio sample, and include information that
allows the capture time to be estimated by the receiver when the frame may have passed
over multiple hops before reaching the receiver.</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://ietf-wg-avtcore.github.io/id-abs-capture-timestamp/draft-ietf-avtcore-abs-capture-timestamp.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-ietf-avtcore-abs-capture-time/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        Audio/Video Transport Core Maintenance Working Group mailing list (<eref target="mailto:avt@ietf.org"/>),
        which is archived at <eref target="https://mailarchive.ietf.org/arch/browse/avt/"/>.
        Subscribe at <eref target="https://www.ietf.org/mailman/listinfo/avt/"/>.
      </t>
      <t>Source for this draft and an issue tracker can be found at
        <eref target="https://github.com/ietf-wg-avtcore/id-abs-capture-timestamp"/>.</t>
    </note>
  </front>
  <middle>
    <?line 50?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>When dealing with separate media streams originating from a single source, it is often
desirable to present these in such a fashion that media generated at the same time is presented
at the same time; the most well known form of this (between an audio stream and a video stream)
is called "lip-sync".</t>
      <t>In a simple setup with one source system, a single network hop and one destination system, this
is usually done by lining up RTP timestamps. However, when multiple hops and multiple systems
are involved, this task becomes more difficult; in particular, when one desires to synchronize
media from multiple sources with independent clocks, where the media may have traveled over
multiple network hops between the source and destination.</t>
      <t>This memo describes one mechanism for providing information to make such synchronization
possible.</t>
    </section>
    <section anchor="conventions-and-definitions">
      <name>Conventions and Definitions</name>
      <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
"<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as
described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they
appear in all capitals, as shown here.</t>
      <?line -18?>

</section>
    <section anchor="applicability">
      <name>Applicability</name>
      <t>The Absolute Capture Time extension is used to stamp RTP packets with a NTP
timestamp showing when the first audio or video frame in a packet was originally
captured.</t>
      <t>Together with a round-trip-time estimate at the last hop, this extension allows a receiver
to estimate the offset between its own clock and the capturer's clock, thus providing
a way to translate the capture timestamp into a time in its own clock.</t>
      <t>One usage of this functionality is to provide a way to accomplish
audio-to-video synchronization when RTCP-terminating intermediate systems (e.g.
mixers) are involved.</t>
      <t>Another usage is to provide statistics on sender-to-recipient delay in applications with
multiple RTP hops without requiring clocks to be synchronized.</t>
      <t>In the terminology of <xref target="RFC7667"/>, the applicable scenarios are those where RTP is terminated
at an intermediate system: Selective Forwarding Middlebox (3.7) and Point to Multipoint using
RTCP-terminating MCU (3.9)</t>
      <t>Other scenarios such as the Media-Switching Mixer (3.6.2)  may be applicable if RTP header rewriting
is applied, so that per-hop information is isolated to the hop it is destined for</t>
      <t>Multicast scenarios are out of scope.</t>
    </section>
    <section anchor="absolute-capture-time">
      <name>Absolute Capture Time</name>
      <t><strong>Name:</strong>
"Absolute Capture Time"; "RTP Header Extension for Absolute Capture Time"</t>
      <t><strong>Formal name:</strong>
        <eref target="http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time">http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time</eref></t>
      <t><strong>Status:</strong>
This extension is defined here to allow for experimentation. Experience with the experiment has shown that it is useful; this draft therefore presents it to the
IETF for consideration of whether to standardize it or leave it as a proprietary
extension.</t>
      <section anchor="rtp-header-extension-format">
        <name>RTP header extension format</name>
        <section anchor="data-layout-overview">
          <name>Data layout overview</name>
          <t>Data layout of the shortened version of <tt>abs-capture-time</tt> with a 1-byte header
+ 8 bytes of data:</t>
          <artwork><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  ID   | len=7 |     absolute capture timestamp (bit 0-23)     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |             absolute capture timestamp (bit 24-55)            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  ... (56-63)  |
 +-+-+-+-+-+-+-+-+
]]></artwork>
          <t>Data layout of the extended version of <tt>abs-capture-time</tt> with a 1-byte header +
16 bytes of data:</t>
          <artwork><![CDATA[
  0                   1                   2                   3
  0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  ID   | len=15|     absolute capture timestamp (bit 0-23)     |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |             absolute capture timestamp (bit 24-55)            |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  ... (56-63)  |   estimated capture clock offset (bit 0-23)   |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |           estimated capture clock offset (bit 24-55)          |
 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
 |  ... (56-63)  |
 +-+-+-+-+-+-+-+-+
]]></artwork>
        </section>
        <section anchor="data-layout-details">
          <name>Data layout details</name>
          <section anchor="absolute-capture-timestamp">
            <name>Absolute capture timestamp</name>
            <t>Absolute capture timestamp is the NTP timestamp of when the first frame in a
packet was originally captured. This timestamp <bcp14>MUST</bcp14> be based on the same clock
as the clock used to generate NTP timestamps for RTCP sender reports on the
capture system.</t>
            <t>It's not always possible to do an NTP clock readout at the exact moment of when
a media frame is captured. A capture system <bcp14>MAY</bcp14> postpone the readout until a
more convenient time. A capture system <bcp14>SHOULD</bcp14> have known delays (e.g. from
hardware buffers) subtracted from the readout to make the final timestamp as
close to the actual capture time as possible.</t>
            <t>This field is encoded as a 64-bit unsigned fixed-point number with the high 32
bits for the timestamp in seconds and low 32 bits for the fractional part. This
is also known as the UQ32.32 format and is what the RTP specification defines as
the canonical format to represent NTP timestamps.</t>
          </section>
          <section anchor="estimated-capture-clock-offset">
            <name>Estimated capture clock offset</name>
            <t>Estimated capture clock offset is the sender's estimate of the offset between
its own NTP clock and the capture system's NTP clock. The sender is here defined
as the system that owns the NTP clock used to generate the NTP timestamps for
the RTCP sender reports on this stream. The sender system is typically either
the capture system or a mixer.</t>
            <t>This field is encoded as a 64-bit two's complement <strong>signed</strong> fixed-point number
with the high 32 bits for the seconds and low 32 bits for the fractional part.
It's intended to make it easy for a receiver, that knows how to estimate the
sender system's NTP clock, to also estimate the capture system's NTP clock:</t>
            <artwork><![CDATA[
 Capture NTP Clock = Sender NTP Clock + Capture Clock Offset
]]></artwork>
            <t>If the estimated capture clock offset is not present (short format), it means
that the sending system does not have enough data to compute a clock offset.</t>
          </section>
        </section>
      </section>
      <section anchor="details-of-operation">
        <name>Details of operation</name>
        <section anchor="capture-system">
          <name>Capture system</name>
          <t>The capture system generates the timestamp as close as possible to the true
capture time. This may involve subtracting known delays in the capture pipeline
from the time at which the system clock is read.</t>
          <t>The capture time <bcp14>SHOULD</bcp14> be from the same clock as used to generate the NTP timestamp
in RTP Sender Reports (SR) (<xref target="RFC3550"/> section 6.4.1), and indicate this by setting
the "estimated capture clock offset" to zero; if this is not possible,
the "estimated capture clock offset" <bcp14>MUST</bcp14> indicate the offset between
the clock used for the capture timestamp and the clock used for RTP Sender Reports.</t>
          <t>When the media is not captured in real time, such as when sending stored media, the
sender can choose any reasonable start time; in that case, the offset between the
chosen start time and the NTP clock of the sender system <bcp14>MUST</bcp14> be encoded into the
"offset" value of the extension.</t>
          <t>The "capture" timestamp should then advance according to the natural progression of
the media; if this deviates from the NTP clock of the sender system, such as on a
reader stall, this change <bcp14>SHOULD</bcp14> be reflected in the "offset" value.</t>
        </section>
        <section anchor="intermediate-systems">
          <name>Intermediate systems</name>
          <t>An intermediate system <bcp14>MAY</bcp14> compute the outgoing capture clock offset as follows:</t>
          <ul spacing="normal">
            <li>
              <t>Start with the "estimated capture clock offset" from the incoming packet</t>
            </li>
            <li>
              <t>Add the estimated offset between the sender's NTP clock and the intermediate's NTP clock
(see <xref target="offset"/>)</t>
            </li>
          </ul>
          <t>This should give a reasonable estimate of the offset between the capture system's
clock and the NTP timestamps sent in SR blocks by the intermediate system.</t>
          <t>An intermediate system (e.g. mixer) <bcp14>MAY</bcp14> adjust these timestamps as needed. It
<bcp14>MAY</bcp14> also choose to rewrite the timestamps completely, using its own NTP clock as
reference clock, if it wants to present itself as a capture system for A/V-sync
purposes.</t>
        </section>
        <section anchor="end-systems">
          <name>End systems</name>
          <t>A receiver can use the same algorithm as intermediate systems in order to compute
the approximate time in the receiver's NTP clock at which the packet was generated.
This should be more comparable between source systems with different clocks than just using
the raw timestamp.</t>
          <t>A receiver <bcp14>MUST</bcp14> treat the first CSRC in the CSRC list of a received packet as if
it belongs to the capture system. If the CSRC list is empty, then the receiver
<bcp14>MUST</bcp14> treat the SSRC as if it belongs to the capture system. Mixers <bcp14>SHOULD</bcp14> put
the most prominent CSRC as the first CSRC in a packet's CSRC list.</t>
        </section>
      </section>
      <section anchor="offset">
        <name>Estimating the NTP clock offset</name>
        <t>The NTP clock offset can be calculated from an SR packet in the following way:</t>
        <ul spacing="normal">
          <li>
            <t>Take the NTP timestamp from the SR packet</t>
          </li>
          <li>
            <t>Subtract the arrival time of the SR packet, in the receiver's NTP clock</t>
          </li>
          <li>
            <t>Add half the estimated RTT between the sender and the receiver</t>
          </li>
        </ul>
        <t>The resulting number should be a reasonable approximation of the offset between the
two clocks, with positive numbers indicating that the sender's clock is running ahead,
and negative numbers indicate that the sender's clock is running behind.</t>
        <t>Note that this method is sensitive to a number of issues:</t>
        <ul spacing="normal">
          <li>
            <t>Clock drift means that you have to continuously monitor and update the offset</t>
          </li>
          <li>
            <t>RTT variance will cause variation in offset; a smoothed value should be used</t>
          </li>
          <li>
            <t>Asymmetric delays, if present, will cause biased estimates</t>
          </li>
        </ul>
        <t>This document is not normative about how the NTP clock offset is estimated.</t>
      </section>
      <section anchor="timestamp-interpolation">
        <name>Timestamp interpolation</name>
        <t>A sender <bcp14>SHOULD</bcp14> save bandwidth by not sending <tt>abs-capture-time</tt> with every
RTP packet. It <bcp14>SHOULD</bcp14> still send them at regular intervals (e.g. every second)
to help mitigate the impact of clock drift and packet loss. Mixers <bcp14>SHOULD</bcp14> always
send <tt>abs-capture-time</tt> with the first RTP packet after changing capture system.</t>
        <t>A receiver <bcp14>SHOULD</bcp14> memorize the capture system (i.e. CSRC/SSRC), capture
timestamp, and RTP timestamp of the most recently received <tt>abs-capture-time</tt>
packet on each received stream. It can then use that information, in combination
with RTP timestamps of packets without <tt>abs-capture-time</tt>, to extrapolate
missing capture timestamps.</t>
        <t>Timestamp interpolation works fine as long as there's reasonably low NTP/RTP
clock drift. This is not always true. Senders that detect "jumps" between its
NTP and RTP clock mappings <bcp14>SHOULD</bcp14> send <tt>abs-capture-time</tt> with the first RTP
packet after such a thing happening.</t>
      </section>
      <section anchor="year-2036-considerations">
        <name>Year 2036 considerations</name>
        <t><xref target="RFC5905"/> section 6 describes how the 32-bit unsigned seconds field should be
compared to a system clock, explaining how comparison of times works correctly when the
64-bit unsigned seconds field wraps in 2036 (the beginning of NTP era 1) provided
proper two's complement arithmetic is used for subtractions.</t>
        <t>For the purposes of this memo, it is sufficient to note that a timestamp represents
the closest timestamp in a relevant era.</t>
      </section>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>This extension carries information that may allow an attacker to identify different
media streams on a connection. However, this information is already carried in the
RTP SSRC, which is not encrypted, so it is unlikely that much additional information
is exposed.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>If the WG decides that this extension should be registered as a standardized
extension, IANA is requested to perform the appropriate registration.</t>
      <t>If the WG decides that this is a private extension, the URL
http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time is used to
identify the extension.</t>
    </section>
  </middle>
  <back>
    <references anchor="sec-combined-references">
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3550">
          <front>
            <title>RTP: A Transport Protocol for Real-Time Applications</title>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <author fullname="S. Casner" initials="S." surname="Casner"/>
            <author fullname="R. Frederick" initials="R." surname="Frederick"/>
            <author fullname="V. Jacobson" initials="V." surname="Jacobson"/>
            <date month="July" year="2003"/>
            <abstract>
              <t>This memorandum describes RTP, the real-time transport protocol. RTP provides end-to-end network transport functions suitable for applications transmitting real-time data, such as audio, video or simulation data, over multicast or unicast network services. RTP does not address resource reservation and does not guarantee quality-of- service for real-time services. The data transport is augmented by a control protocol (RTCP) to allow monitoring of the data delivery in a manner scalable to large multicast networks, and to provide minimal control and identification functionality. RTP and RTCP are designed to be independent of the underlying transport and network layers. The protocol supports the use of RTP-level translators and mixers. Most of the text in this memorandum is identical to RFC 1889 which it obsoletes. There are no changes in the packet formats on the wire, only changes to the rules and algorithms governing how the protocol is used. The biggest change is an enhancement to the scalable timer algorithm for calculating when to send RTCP packets in order to minimize transmission in excess of the intended rate when many participants join a session simultaneously. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="64"/>
          <seriesInfo name="RFC" value="3550"/>
          <seriesInfo name="DOI" value="10.17487/RFC3550"/>
        </reference>
        <reference anchor="RFC5905">
          <front>
            <title>Network Time Protocol Version 4: Protocol and Algorithms Specification</title>
            <author fullname="D. Mills" initials="D." surname="Mills"/>
            <author fullname="J. Martin" initials="J." role="editor" surname="Martin"/>
            <author fullname="J. Burbank" initials="J." surname="Burbank"/>
            <author fullname="W. Kasch" initials="W." surname="Kasch"/>
            <date month="June" year="2010"/>
            <abstract>
              <t>The Network Time Protocol (NTP) is widely used to synchronize computer clocks in the Internet. This document describes NTP version 4 (NTPv4), which is backwards compatible with NTP version 3 (NTPv3), described in RFC 1305, as well as previous versions of the protocol. NTPv4 includes a modified protocol header to accommodate the Internet Protocol version 6 address family. NTPv4 includes fundamental improvements in the mitigation and discipline algorithms that extend the potential accuracy to the tens of microseconds with modern workstations and fast LANs. It includes a dynamic server discovery scheme, so that in many cases, specific server configuration is not required. It corrects certain errors in the NTPv3 design and implementation and includes an optional extension mechanism. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5905"/>
          <seriesInfo name="DOI" value="10.17487/RFC5905"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC7667">
          <front>
            <title>RTP Topologies</title>
            <author fullname="M. Westerlund" initials="M." surname="Westerlund"/>
            <author fullname="S. Wenger" initials="S." surname="Wenger"/>
            <date month="November" year="2015"/>
            <abstract>
              <t>This document discusses point-to-point and multi-endpoint topologies used in environments based on the Real-time Transport Protocol (RTP). In particular, centralized topologies commonly employed in the video conferencing industry are mapped to the RTP terminology.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7667"/>
          <seriesInfo name="DOI" value="10.17487/RFC7667"/>
        </reference>
      </references>
    </references>
    <?line 319?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>Chen Xing, for writing the original version of this specification.</t>
      <t>Bernard Aboba and Jonathan Lennox, for helpful comments.</t>
    </section>
  </back>
  <!-- ##markdown-source:
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
cDQAAA==

-->

</rfc>
