<?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.19 (Ruby 3.3.3) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-alvestrand-avtcore-abs-capture-time-00" category="info" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.23.2 -->
  <front>
    <title abbrev="Abs capture timestamp">Absolute Capture Timestamp RTP header extension</title>
    <seriesInfo name="Internet-Draft" value="draft-alvestrand-avtcore-abs-capture-time-00"/>
    <author fullname="Harald Alvestrand">
      <organization>Google</organization>
      <address>
        <email>hta@google.com</email>
      </address>
    </author>
    <date year="2024" month="October" day="03"/>
    <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 40?>

<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://alvestrand.github.io/id-abs-capture-timestamp/draft-alvestrand-avtcore-abs-capture-timestamp.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-alvestrand-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/alvestrand/id-abs-capture-timestamp"/>.</t>
    </note>
  </front>
  <middle>
    <?line 48?>

<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 more 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="absolute-capture-time">
      <name>Absolute Capture Time</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. The intent of this extension is to provide a way to accomplish
audio-to-video synchronization when RTCP-terminating intermediate systems (e.g.
mixers) are involved.</t>
      <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 anchor="further-details">
          <name>Further details</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>
          </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 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>
            </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>
      </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 xxxxx is used to
identify the extension.</t>
    </section>
  </middle>
  <back>
    <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="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>
    <?line 275?>

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

-->

</rfc>
