<?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.1 (Ruby 3.2.2) -->
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-engelbart-avtcore-rtp-gpcc-00" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.18.2 -->
  <front>
    <title abbrev="RTP Payload Format for G-PCC">RTP Payload Format for Geometry-based Point Cloud Compression</title>
    <seriesInfo name="Internet-Draft" value="draft-engelbart-avtcore-rtp-gpcc-00"/>
    <author initials="M." surname="Engelbart" fullname="Mathis Engelbart">
      <organization>Technical University Munich</organization>
      <address>
        <email>mathis.engelbart@tum.de</email>
      </address>
    </author>
    <author initials="J." surname="Ott" fullname="Jörg Ott">
      <organization>Technical University Munich</organization>
      <address>
        <email>ott@in.tum.de</email>
      </address>
    </author>
    <author initials="L." surname="Kondrad" fullname="Lukasz Kondrad">
      <organization>Nokia Technologies</organization>
      <address>
        <email>lukasz.kondrad@nokia.com</email>
      </address>
    </author>
    <date/>
    <area>Applications and Real-Time Area</area>
    <workgroup>Audio/Video Transport Core Maintenance</workgroup>
    <keyword>RTP</keyword>
    <keyword>G-PCC</keyword>
    <keyword>Payload Format</keyword>
    <abstract>
      <?line 56?>

<t>This memo describes an RTP payload format for geometry-based point cloud
compression (G-PCC) (<xref target="ISO.IEC.23090-9"/>). The RTP payload format defined in
this document supports the packetization of one or more data units in an RTP
packet payload and the fragmentation of a single data unit into multiple RTP
packets. This memo also describes congestion control for a practical solution
for the real-time streaming of point clouds.
Finally, the document defines parameters that may be used to select
optional features of the payload format or signall properties of the RTP stream.
The parameters can be used with Session Description Protocol (SDP).</t>
    </abstract>
    <note removeInRFC="true">
      <name>About This Document</name>
      <t>
        The latest revision of this draft can be found at <eref target="https://mengelbart.github.io/draft-engelbart-avtcore-rtp-gpcc/draft-engelbart-avtcore-rtp-gpcc.html"/>.
        Status information for this document may be found at <eref target="https://datatracker.ietf.org/doc/draft-engelbart-avtcore-rtp-gpcc/"/>.
      </t>
      <t>
        Discussion of this document takes place on the
        avtcore 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/mengelbart/draft-engelbart-avtcore-rtp-gpcc"/>.</t>
    </note>
  </front>
  <middle>
    <?line 68?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>This document describes the Real-time Transport Protocol (RTP) payload format
for Geometry-based point cloud compression as described in <xref target="ISO.IEC.23090-9"/>.
Point clouds are commonly used to represent three-dimensional scans of
environments or objects. The payload format enables the streaming of compressed
point clouds in real-time applications. It applies to various use cases, such as
autonomous vehicles and virtual reality.</t>
      <t>In addition to describing the payload format, this document also includes
examples of the payload format, provides guidance on how to negotiate the
parameters to be used with the format, and discusses congestion control and rate
adaptation of point cloud streaming applications.</t>
      <section anchor="background-on-point-clouds">
        <name>Background on Point Clouds</name>
        <t>A point cloud is a data structure used to represent three-dimensional scenes.
Point clouds consist of a list of points in three-dimensional space where each
point may optionally be associated with zero or more attributes, such as a color
or reflectance. Point clouds have diverse use cases. For example, a point cloud
can store a 3D representation of the vehicle's surrounding environment in
autonomous cars. Another example is object scanning for the archival of
historical objects or the creation of digital twins of real-world objects for
further analysis. Point clouds are either acquired passively using multiple
camera setups or actively, e.g., using a Lidar sensor to measure distances using
beams of light.</t>
      </section>
      <section anchor="overview-of-the-g-pcc-codec">
        <name>Overview of the G-PCC Codec</name>
        <t>Point clouds can contain large amounts of data, which requires efficient
compression to reduce storage and transmission costs. The Moving Picture Experts
Group (MPEG) has published a Geometry-based Point Cloud Compression (G-PCC)
standard in <xref target="ISO.IEC.23090-9"/>. The G-PCC codec takes as input an unordered
list of points, optional attributes, and metadata. All points have the same
number, type, and order of attributes. Attributes can, for example, be the
color, opacity, reflectance, or frame number of the associated point.
Compression is defined separately for geometry and attributes. The attribute
coding depends on the decoded geometry. Thus, geometry encoding and decoding
happen before attribute encoding and decoding.</t>
        <t>G-PCC users can choose between two methods for geometry coding and three for
attribute coding. The geometry coding method called <em>Octree Coding</em> is a general
compression method, while <em>Predictive tree</em> coding specifically targets low
latency applications. The methods for attribute coding are called Region
Adaptive Hierarchical Transform (RAHT) coding, Predicting Transform, and Lifting
Transform.</t>
        <t>The output of the encoding process is a sequence of Data Units (DUs). Each
DU has a type that describes its layout.
<xref target="_table-gpcc-unit-type-descriptions"/> lists the ten different types of DUs
defined in <xref target="ISO.IEC.23090-9"/>.</t>
        <table anchor="_table-gpcc-unit-type-descriptions">
          <name>G-PCC data unit types</name>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">0</td>
              <td align="left">Sequence parameter set data unit</td>
            </tr>
            <tr>
              <td align="left">1</td>
              <td align="left">Geometry parameter set data unit</td>
            </tr>
            <tr>
              <td align="left">2</td>
              <td align="left">Geometry data unit</td>
            </tr>
            <tr>
              <td align="left">3</td>
              <td align="left">Attribute parameter set data unit</td>
            </tr>
            <tr>
              <td align="left">4</td>
              <td align="left">Attribute data unit</td>
            </tr>
            <tr>
              <td align="left">5</td>
              <td align="left">Tile inventory data unit</td>
            </tr>
            <tr>
              <td align="left">6</td>
              <td align="left">Frame boundary marker data unit</td>
            </tr>
            <tr>
              <td align="left">7</td>
              <td align="left">Defaulted attribute data unit</td>
            </tr>
            <tr>
              <td align="left">8</td>
              <td align="left">Frame-specific attribute properties data unit</td>
            </tr>
            <tr>
              <td align="left">9</td>
              <td align="left">User data data unit</td>
            </tr>
          </tbody>
        </table>
        <t>Sequence Parameter Set (SPS), Geometry Parameter Set (GPS), and Attribute
Parameter Set (APS) hold the coding parameters of a point cloud sequence, the
geometry coding in use, and the attribute coding in use, respectively.</t>
        <t>Geometry and attribute data units contain the coded representation of points geometry information and
points attributes information. Geometry and attribute data units hold references to their
associated parameter sets, and each referenced parameter set must be available
before decoding of the data unit is possible.</t>
        <t>Coded point clouds do not have dependencies between frames, i.e., decoding a
point cloud frame is always without depending on a previous or following frame
in a sequence. However, future versions of G-PCC might support inter-frame
prediction.</t>
        <t>Annex A of <xref target="ISO.IEC.23090-9"/> describes profiles and levels of the G-PCC codec.
Decoders can support different profiles and levels. Profiles are subsets of
algorithmic features of the codec specification. A decoder that supports a
specific profile must be able to decode a bitstream conforming to that profile.</t>
      </section>
    </section>
    <section anchor="conventions">
      <name>Conventions</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="definitions-and-abbreviations">
      <name>Definitions and Abbreviations</name>
      <t>This document uses the definitions of <xref target="ISO.IEC.23090-9"/>. The following terms
and abbreviations, defined in <xref target="ISO.IEC.23090-9"/>, are repeated here for
convenience.</t>
      <section anchor="general-g-pcc-related-terms">
        <name>General G-PCC related terms</name>
        <dl newline="true">
          <dt><strong>Attribute</strong></dt>
          <dd>
            <t>Scalar or vector property associated with each <em>point</em> in a <em>point cloud</em>.</t>
          </dd>
          <dt><strong>Bitstream</strong></dt>
          <dd>
            <t>A sequence of bits.</t>
          </dd>
          <dt><strong>Bounding Box</strong></dt>
          <dd>
            <t>Axis-aligned cuboid defining a spatial region that bounds a set of
   <em>points</em>.</t>
          </dd>
          <dt><strong>Coded Point Cloud Frame</strong></dt>
          <dd>
            <t>Coded representation of a <em>point cloud frame</em>.</t>
          </dd>
          <dt><strong>Data unit</strong></dt>
          <dd>
            <t>Sequence of bytes conveying a single <em>syntax structure</em> of known length.</t>
          </dd>
          <dt><strong>Geometry</strong></dt>
          <dd>
            <t><em>Point positions</em> associated with a set of <em>points</em>.</t>
          </dd>
          <dt><strong>Point</strong></dt>
          <dd>
            <t>Fundamental element of a <em>point cloud</em> comprising a position specified as
   <em>Cartesian coordinates</em> and zero or more <em>attributes</em>.</t>
          </dd>
          <dt><strong>Point Cloud</strong></dt>
          <dd>
            <t>Unordered list of <em>points</em>.</t>
          </dd>
          <dt><strong>Point Cloud Frame</strong></dt>
          <dd>
            <t><em>Point cloud</em> in a <em>point cloud sequence</em>.</t>
          </dd>
          <dt><strong>Point Cloud Sequence</strong></dt>
          <dd>
            <t>Sequence of one or more <em>pont clouds</em>.</t>
          </dd>
          <dt><strong>Poisition</strong></dt>
          <dd>
            <t>Three dimensional coordinates of a <em>point</em>.</t>
          </dd>
          <dt><strong>Slice</strong></dt>
          <dd>
            <t><em>Geometry</em> and <em>attributes</em> for part of, or an entire, <em>coded point cloud
   frame</em>.</t>
          </dd>
          <dt><strong>Syntax element</strong></dt>
          <dd>
            <t>Element of data represented in the <em>bitstream</em>.</t>
          </dd>
          <dt><strong>Syntax structure</strong></dt>
          <dd>
            <t>Zero or more <em>syntax elements</em> present together in the <em>bitstream</em> in a
   specified order.</t>
          </dd>
          <dt><strong>Tile</strong></dt>
          <dd>
            <t>Set of <em>slices</em> identified by a common slice_tag <em>syntax element</em> value
   whose <em>geometry</em> should be contained within a <em>bounding box</em> specified in a
   tile inventory <em>data unit</em>.</t>
          </dd>
        </dl>
      </section>
      <section anchor="abbreviations">
        <name>Abbreviations</name>
        <dl newline="true">
          <dt><strong>ADU</strong></dt>
          <dd>
            <t>Attribute Data Unit</t>
          </dd>
          <dt><strong>APS</strong></dt>
          <dd>
            <t>Attribute Parameter Set</t>
          </dd>
          <dt><strong>DU</strong></dt>
          <dd>
            <t>Data Unit</t>
          </dd>
          <dt><strong>GDU</strong></dt>
          <dd>
            <t>Geometry Data Unit</t>
          </dd>
          <dt><strong>GPS</strong></dt>
          <dd>
            <t>Geometry Parameter Set</t>
          </dd>
          <dt><strong>SPS</strong></dt>
          <dd>
            <t>Sequence Parameter Set</t>
          </dd>
          <dt><strong>TLV</strong></dt>
          <dd>
            <t>Type-Length-Value</t>
          </dd>
        </dl>
      </section>
    </section>
    <section anchor="payload-format">
      <name>Payload Format</name>
      <t>This section describes the details of the RTP payload format. <xref target="rtp-header"/>
describes the usage of the standard RTP header fields, <xref target="payload-header"/>
describes the details of the payload header following the RTP header, and
<xref target="payload-structures"/> gives details about available packetization modes and the
specifics of their respective formats.</t>
      <section anchor="transmission-modes">
        <name>Transmission Modes</name>
        <ul empty="true">
          <li>
            <t><strong>TODO</strong>: Do we need this section on transmission modes similar to other payload formats to define SRST, MRST, and MRMT?</t>
          </li>
        </ul>
      </section>
      <section anchor="rtp-header">
        <name>RTP Header Usage</name>
        <t>The format of the RTP header is specified in <xref target="RFC3550"/> and replicated in <xref target="fig-header"/> for convenience. This payload format uses the fields of the header in a manner consistent with that specification.</t>
        <figure anchor="fig-header">
          <name>RTP Header format as specified in RFC 3550</name>
          <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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X|  CC   |M|     PT      |       sequence number         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           timestamp                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           synchronization source (SSRC) identifier            |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|            contributing source (CSRC) identifiers             |
|                             ....                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <ul empty="true">
          <li>
            <t><strong>TODO</strong>: if we add a dedicated subsection on SRST/SRMT/MRMT, add the
following statement:</t>
            <t>When MRST or MRMT is in use, if an access unit appears in multiple RTP
streams, the marker bit is set on each RTP stream's last packet of the access
unit.</t>
          </li>
        </ul>
        <dl newline="true">
          <dt><strong>Marker bit (M): 1 bit</strong></dt>
          <dd>
            <t>Set to 1 for the last packet of a point cloud frame carried in the current RTP stream.</t>
          </dd>
          <dt><strong>Payload Type (PT): 7 bits</strong></dt>
          <dd>
            <t>The assignment of an RTP payload type for this new packet format is outside
   the scope of this document and will not be specified here. The assignment of
   a payload type has to be performed either through the profile used or in a
   dynamic way.</t>
          </dd>
          <dt><strong>Sequence Number (SN): 16 bits</strong></dt>
          <dd>
            <t>Set and used in accordance with <xref target="RFC3550"/>.</t>
          </dd>
          <dt><strong>Timestamp: 32 bits</strong></dt>
          <dd>
            <t>The RTP timestamp is set to the sampling timestamp of the content. A 90 kHz
   clock rate <bcp14>MUST</bcp14> be used. The sampling timestamp of the content is the
   reconstruction time. It denotes the earliest sampling time of all points in the
   point cloud frame to which the data unit transmitted in the packet belongs.
   If the data unit has no timing properties (e.g., parameter sets), the RTP
   timestamp is set to the RTP timestamp of the first data unit that references
   the parameter set. If the packet is an aggregation unit packet, all data
   units <bcp14>MUST</bcp14> have the same timestamp.</t>
          </dd>
          <dt><strong>Synchronization source (SSRC): 32 bits</strong></dt>
          <dd>
            <t>Used to identify the source of the RTP packets.</t>
          </dd>
        </dl>
      </section>
      <section anchor="payload-header">
        <name>Payload Header Usage</name>
        <t>The first bytes of the payload of an RTP packet are referred to as the payload
header. The payload header consists of a packet type and unit type field.</t>
        <figure anchor="fig-payload-header">
          <name>General Payload Header</name>
          <artwork><![CDATA[
 0
 0 1 2 3 4 5 6 7
+-+-+-+-+-+-+-+-+
| Typ |Unit-Type|
+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <dl newline="true">
          <dt><strong>Typ: 3 bits</strong></dt>
          <dd>
            <t>Type of the packet. This field indicates if the packet is a single unit
  packet, an aggregation unit packet, or a fragmentation unit packet. See
  <xref target="payload-structures"/> for details.</t>
          </dd>
          <dt><strong>Unit-Type: 5 bits</strong></dt>
          <dd>
            <t>The type of the following data unit. This field specifies the type field
  from the type-length-value encapsulation defined in Annex-B of G-PCC
  <xref target="ISO.IEC.23090-9"/> and shown in <xref target="_table-gpcc-unit-type-descriptions"/>.</t>
          </dd>
        </dl>
      </section>
      <section anchor="payload-structures">
        <name>Payload Structures</name>
        <t>Three different RTP packet payload structures are specified: Single Unit
Packets, Aggregation Unit Packets, and Fragmentation Unit Packets. A receiver
can identify the payload structure by the type field of
the payload header. The type field indicates whether the unit is a single unit,
an aggregation unit, or the first, last, or middle part of a fragmentation unit
packet. The type field <bcp14>MUST</bcp14> be set according to <xref target="_table-type-field"/>.</t>
        <table anchor="_table-type-field">
          <name>Type field values</name>
          <thead>
            <tr>
              <th align="left">Type</th>
              <th align="left">Description</th>
            </tr>
          </thead>
          <tbody>
            <tr>
              <td align="left">000</td>
              <td align="left">Single Unit Packet <xref target="single-unit"/></td>
            </tr>
            <tr>
              <td align="left">001</td>
              <td align="left">Aggregation Unit Packet <xref target="aggregation-packet"/></td>
            </tr>
            <tr>
              <td align="left">010</td>
              <td align="left">First packet of an fragmentation unit packet <xref target="fragmentation-unit"/></td>
            </tr>
            <tr>
              <td align="left">011</td>
              <td align="left">Fragmentation unit packet <xref target="fragmentation-unit"/></td>
            </tr>
            <tr>
              <td align="left">100</td>
              <td align="left">Last packet of an fragmentation unit packet <xref target="fragmentation-unit"/></td>
            </tr>
            <tr>
              <td align="left">101</td>
              <td align="left">Reserved</td>
            </tr>
            <tr>
              <td align="left">110</td>
              <td align="left">Reserved</td>
            </tr>
            <tr>
              <td align="left">111</td>
              <td align="left">Reserved</td>
            </tr>
          </tbody>
        </table>
        <t>The following sections explain the details and variations from this format for
the three packet types.</t>
        <section anchor="single-unit">
          <name>Single Unit</name>
          <t>A Single Unit packet contains only one data unit. The first byte in the packet
is the payload header, followed by the payload data. The data unit extends until
the end of the packet. The packet type field of a single unit packet <bcp14>MUST</bcp14> be set
to zero (binary <tt>000</tt>).</t>
          <t><xref target="fig-single-unit-payload"/> shows an example of a single unit packet.</t>
          <figure anchor="fig-single-unit-payload">
            <name>Single unit packet payload</name>
            <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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PayloadHeader |                                               |
+-+-+-+-+-+-+-+-+                                               |
|                           Data Unit                           |
|                                                               |
|                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               :...OPTIONAL RTP padding        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
        </section>
        <section anchor="aggregation-packet">
          <name>Aggregation Packet</name>
          <t>An aggregation packet contains two or more DUs. Aggregation
packets can reduce packetization and header overhead for small DUs
such as parameter sets. Each DU is prefixed with a separate
payload header and an additional length field. The length field is of variable
size and indicates the length of the DU. The two most significant
bits of the length field encode the base-2 logarithm of the size of the length
field in bytes as defined in Section 16 of <xref target="RFC9000"/>. Thus, the length field
can have 1, 2, 4, or 8 bytes. The receiver can split the packet payload into
individual units by reading the length byte.</t>
          <t>An aggregation packet <bcp14>MUST</bcp14> carry at least two DUs. Aggregation
packets <bcp14>MAY</bcp14> carry more than two DUs. The total amount of data in
an aggregation packet <bcp14>MUST</bcp14> fit into an IP packet, and the size <bcp14>SHOULD</bcp14> be chosen
so that the resulting IP packet is smaller than the MTU size in order to avoid
IP layer fragmentation. An aggregation packet <bcp14>MUST NOT</bcp14> contain any fragmentation
units.</t>
          <t>An aggregation packet <bcp14>MUST NOT</bcp14> carry DUs of different point cloud
frames, i.e., all DUs included in an aggregation packet <bcp14>MUST</bcp14> have
the same timestamp.</t>
          <t>The packet type field of every DU in an aggregation packet <bcp14>MUST</bcp14> be
set to the value one (binary <tt>001</tt>).</t>
          <t><xref target="fig-aggregation-header"/> shows the extended payload header format of syntax
structures in aggregation packets.</t>
          <figure anchor="fig-aggregation-header">
            <name>Aggregation Unit Payload</name>
            <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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Typ=1|Unit-Type|                VarInt Length                 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
          <t>An example of an aggregation unit packet with two data unit payloads is shown in
<xref target="fig-aggregation-format"/>.</t>
          <figure anchor="fig-aggregation-format">
            <name>Packet Payload</name>
            <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
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PayloadHeader |                VarInt Length                 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                           Data Unit                           |
|                                                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| PayloadHeader |                VarInt Length                 ...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                                                               |
|                           Data Unit                           |
|                                                               |
|                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               :...OPTIONAL RTP padding        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
        </section>
        <section anchor="fragmentation-unit">
          <name>Fragmentation Unit</name>
          <t>Fragmentation units allow fragmentation of single DUs into
multiple RTP packets without cooperation from the G-PCC encoder. Fragments of
the same DU <bcp14>MUST</bcp14> be sent in consecutive order with ascending RTP
sequence numbers (with no other RTP packets within the same RTP stream being
sent between the first and last fragment).</t>
          <t>Aggregation packets <bcp14>MUST NOT</bcp14> be fragmented. Fragmentation units <bcp14>MUST NOT</bcp14> be
nested, i.e., a fragmentation unit cannot contain a subset of another
fragmentation unit.</t>
          <t>The timestamp of all fragmentation units <bcp14>MUST</bcp14> be set to the same value: the
timestamp of the DU that is carried in the fragmentation unit
packets.</t>
          <t>The type field of the first packet of a series of fragmentation units <bcp14>MUST</bcp14> be
set to 2 (binary <tt>010</tt>), the type field of the last packet in the series <bcp14>MUST</bcp14> be
set to four (binary <tt>100</tt>), and the type field of all packets between the first
and last packet of the fragmented unit <bcp14>MUST</bcp14> have the value three (binary <tt>011</tt>).</t>
        </section>
      </section>
    </section>
    <section anchor="packetization-rules-and-depacketization-rules">
      <name>Packetization Rules and Depacketization Rules</name>
      <ul spacing="normal">
        <li>
          <t>A DU of a small size <bcp14>SHOULD</bcp14> be encapsulated in an aggregation
packet together with one or more other DUs in order to avoid the
unnecessary packetization overhead for small DUs. For example,
parameter sets are typically small and can often be aggregated with without
violating MTU size constraints.</t>
        </li>
        <li>
          <t>For carrying exactly one DU in an RTP packet, a single unit
packet <bcp14>MUST</bcp14> be used.</t>
        </li>
      </ul>
      <t>The de-packetization process is implementation dependent. Therefore, the
following de-packetization rules <bcp14>SHOULD</bcp14> be taken as an example.</t>
      <ul spacing="normal">
        <li>
          <t>All normal RTP mechanisms related to buffer management apply. In particular,
duplicated or outdated RTP packets (as indicated by the RTP sequence number
and the RTP timestamp) are removed. To determine the exact time for decoding,
factors such as a possible intentional delay to allow for proper inter-stream
synchronization must be factored in.</t>
        </li>
      </ul>
    </section>
    <section anchor="payload-format-parameters">
      <name>Payload Format Parameters</name>
      <t>This section defines the media type to use with the payload format and the
optional parameters that can be used with it.</t>
      <section anchor="media-type">
        <name>Media Type Definition</name>
        <ul empty="true">
          <li>
            <t><strong>Note</strong>: Template from <xref section="10" sectionFormat="of" target="RFC4288"/></t>
          </li>
        </ul>
        <dl newline="true">
          <dt><strong>Type name</strong>:</dt>
          <dd>
            <t>application</t>
          </dd>
          <dt><strong>Subtype name</strong>:</dt>
          <dd>
            <t>GPCC</t>
          </dd>
          <dt><strong>Required Parameters</strong>:</dt>
          <dd>
            <t>None</t>
          </dd>
          <dt><strong>Optional Parameters</strong>:</dt>
          <dd>
            <t>profile-level-id <strong>TODO</strong>: add list from section <xref target="optional-parameters-definition"/></t>
          </dd>
          <dt><strong>Encoding considerations</strong>:</dt>
          <dd>
            <t>This type is only defined for transfer via RTP <xref target="RFC3550"/>.</t>
          </dd>
          <dt><strong>Security considerations</strong>:</dt>
          <dd>
            <t>See <xref target="security-considerations"/>.</t>
          </dd>
          <dt><strong>Interoperability considerations</strong>:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt><strong>Published specification</strong>:</dt>
          <dd>
            <t>Please refer to &lt;<strong>TODO</strong>: Reference this document&gt; and
  <xref target="ISO.IEC.23090-9"/>.</t>
          </dd>
          <dt><strong>Applications that use this media type</strong>:</dt>
          <dd>
            <t>Any application that relies on GPCC-based point cloud transmission over RTP</t>
          </dd>
          <dt><strong>Fragment identifier considerations</strong>:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt><strong>Additional information</strong>:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt><strong>Person &amp; email address to contact for further information</strong>:</dt>
          <dd>
            <t>Mathis Engelbart (mathis.engelbart@gmail.com)</t>
          </dd>
          <dt><strong>Intended usage</strong>:</dt>
          <dd>
            <t>COMMON</t>
          </dd>
          <dt><strong>Restrictions on usage</strong>:</dt>
          <dd>
            <t>N/A</t>
          </dd>
          <dt><strong>Author</strong>:</dt>
          <dd>
            <t>See Authors' Addresses section of &lt;<strong>TODO</strong>: Reference this document&gt;</t>
          </dd>
          <dt><strong>Change controller</strong>:</dt>
          <dd>
            <t>IETF <eref target="mailto:avtcore@ietf.org">avtcore@ietf.org</eref></t>
          </dd>
        </dl>
      </section>
      <section anchor="optional-parameters-definition">
        <name>Optional Parameters Definition</name>
        <dl>
          <dt><strong>profile-level-id</strong>:</dt>
          <dd>
            <t>The profile-level-id is a base16 <xref target="RFC4648"/> (hexadecimal) representation
  of one byte containing the flags indicating support or conformance to the
  G-PCC profiles and levels. The first four bits are flags indicating support
  for the profiles <em>Simple</em>, <em>Predictive</em>, <em>Dense</em> and <em>Main</em>, while the last
  for bits indicate the highest level that the decoder supports or a bitstream
  conforms to.</t>
          </dd>
          <dt><strong>pcc-resolution</strong>:</dt>
          <dd>
            <t>Describes the resolution of the point cloud as number of lines, number of
points per line and depth resolution.</t>
          </dd>
        </dl>
        <ul empty="true">
          <li>
            <t>&lt;#lines&gt; &lt;#points-per-line&gt; &lt;#depth-resolution&gt;</t>
          </li>
        </ul>
        <dl>
          <dt><strong>pcc-coverage</strong>:</dt>
          <dd>
            <t>The field of view coverage of the sensor described by the horizontal and
vertical angles.</t>
          </dd>
        </dl>
        <ul empty="true">
          <li>
            <t>&lt;h-angle&gt; &lt;v-angle&gt;</t>
          </li>
        </ul>
        <dl>
          <dt><strong>pcc-anchor</strong>:</dt>
          <dd>
            <t>An anchor reference point for the point cloud, relative to which coordinates
are given. This can be useful to relate multiple point clouds to each other.</t>
          </dd>
        </dl>
        <ul empty="true">
          <li>
            <t>&lt;x&gt; &lt;y&gt; &lt;z&gt;</t>
          </li>
        </ul>
        <dl>
          <dt><strong>pcc-orientation</strong>:</dt>
          <dd>
            <t>The orientation of the point cloud sensor.</t>
          </dd>
        </dl>
        <ul empty="true">
          <li>
            <t>&lt;tilt&gt; &lt;pan&gt;</t>
          </li>
        </ul>
        <dl>
          <dt><strong>pcc-position</strong>:</dt>
          <dd>
            <t>The location of the LiDAR or point cloud sensor relative to <em>pcc-anchor</em> and
<em>pcc-orientation</em>:</t>
          </dd>
        </dl>
        <ul empty="true">
          <li>
            <t>&lt;delta-x&gt; &lt;delta-y&gt; &lt;delta-z&gt; &lt;delta-tilt&gt; &lt;delta-pan&gt;</t>
          </li>
        </ul>
        <dl>
          <dt><strong>pcc-point-attr</strong>:</dt>
          <dd>
            <t>A list of attributes associated with each point. Example: color,
reflectivity.</t>
          </dd>
        </dl>
      </section>
      <section anchor="sdp-parameters">
        <name>SDP Parameters</name>
        <section anchor="mapping-of-payload-type-parameters-to-sdp">
          <name>Mapping of Payload Type Parameters to SDP</name>
          <t>The media type application/GPCC string is mapped to fields in the Session
Description Protocol (SDP) <xref target="RFC8866"/> as follows:</t>
          <ul empty="true">
            <li>
              <t><strong>TODO</strong>: Add all parameters from above</t>
            </li>
          </ul>
          <ul spacing="normal">
            <li>
              <t>The media name in the "m=" line of SDP <bcp14>MUST</bcp14> be application.</t>
            </li>
            <li>
              <t>The encoding name in the "a=rtpmap" line of SDP <bcp14>MUST</bcp14> be GPCC (the media
subtype).</t>
            </li>
            <li>
              <t>The clock rate in the "a=rtpmap" line <bcp14>MUST</bcp14> be 90000.</t>
            </li>
            <li>
              <t>The optional parameters <em>profile-level-id</em>, ... when present, <bcp14>MUST</bcp14> be included
in the "a=fmtp" line of SDP. The fmtp line is expressed as a media type
string, in the form of a semicolon-separated list of parameter=value pairs.</t>
            </li>
          </ul>
        </section>
        <section anchor="example">
          <name>Example</name>
          <artwork><![CDATA[
m=application 54321 RTP/AVPF 95
a=rtpmap:95 GPCC/90000
a=fmtp:95 profile-level-id=84; // 0x84 => 0b10000100 => simple profile, level 4
          --
          -- point cloud resolution
          pcc-resolution: #lines #points-per-line #depth-resolution;
          --
          -- field of view
          pcc-coverage: h-angle v-angle;
          --
          -- optional anchor point 
          pcc-anchor: <type> <type-specific format> "mm" x y z | "gps" lat lon alt;
          pcc-orientation: tilt pan;
          --
          -- where is this lidar located (relative to possible others)
          pcc-position: delta-x, delta-y, delta-z delta-tilt delta-pan;
          --
          -- which attributes are encoded per point: list of properties | profile
          pcc-point-attr: "attr" color, reflectance;
]]></artwork>
        </section>
        <section anchor="offeranswer-considerations">
          <name>Offer/Answer Considerations</name>
          <ul empty="true">
            <li>
              <t><strong>TODO</strong>: Are theses rules correct for G-PCC and do we need considerations for
other parameters?</t>
            </li>
          </ul>
          <t>When the payload format is offered over RTP using SDP in an Offer/Answer model
as described in <xref target="RFC3264"/> for negotiation for unicast usage, the following
limitations and rules apply:</t>
          <ul spacing="normal">
            <li>
              <t>The parameter identifying a media format configuration for G-PCC is
profile-levle-id. This media format configuration parameter <bcp14>MUST</bcp14> be used
symmetrically; that is, the answerer <bcp14>MUST</bcp14> either maintain this configuration
parameter or remove the media format (payload type) completely if it is not
supported.</t>
            </li>
            <li>
              <t>The G-PCC stream sent by either the offerer or the answerer <bcp14>MUST</bcp14> be encoded
with a profile and level, lesser or equal to the values of the level and
profile declared in the SDP by the receiving agent.</t>
            </li>
          </ul>
        </section>
        <section anchor="declarative-sdp-considerations">
          <name>Declarative SDP Considerations</name>
          <ul empty="true">
            <li>
              <t><strong>TODO</strong>: Are theses rules correct for G-PCC and do we need considerations for
other parameters?</t>
            </li>
          </ul>
          <t>When G-PCC over RTP is offered with SDP in a declarative style, as in Real Time
Streaming Protocol (RTSP) <xref target="RFC7826"/> or Session Announcement Protocol (SAP)
<xref target="RFC2974"/>, the following considerations are necessary.</t>
          <ul spacing="normal">
            <li>
              <t>All parameters capable of indicating both stream properties and receiver
capabilities are used to indicate only stream properties. In this case, the
parameters profile and level declare only the values used by the stream, not
the capabilities for receiving streams.</t>
            </li>
            <li>
              <t>A receiver of the SDP is required to support all parameters and values of the
parameters provided; otherwise, the receiver <bcp14>MUST</bcp14> reject (RTSP) or not
participate in (SAP) the session. It falls on the creator of the session to
use values that are expected to be supported by the receiving application.</t>
            </li>
          </ul>
        </section>
      </section>
    </section>
    <section anchor="congestion-control">
      <name>Congestion Control</name>
      <t>Congestion control for RTP <bcp14>SHALL</bcp14> be used in accordance with <xref target="RFC3550"/>, and
with any applicable RTP profile: e.g., <xref target="RFC3551"/>.  An additional requirement
if best-effort service is being used is users of this payload format <bcp14>MUST</bcp14>
monitor packet loss to ensure that the packet loss rate is within acceptable
parameters. Circuit Breakers <xref target="RFC8083"/> is an update to RTP <xref target="RFC3550"/> that
defines criteria for when one is required to stop sending RTP Packet Streams.
The circuit breakers is to be implemented and followed.</t>
      <t>The bitrate can be dynamically adapted when real-time encoding is used. If the
packet payload is not encrypted and intermediate network elements have access to
the payload, they can select packets to drop based on the payload header.</t>
      <t>Attribute decoding depends on geometry decoding and ADUs can become obsolete,
when the corresponding geometry data is dropped. Thus, intermediates <bcp14>SHOULD</bcp14>
prefer dropping ADUs first. Similarly, fragmentation units can only be
reconstructed if all fragments arrive. Thus, it is reasonable to drop either all
or none of the packets that are part of the same fragmentation unit.</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <ul empty="true">
        <li>
          <t><strong>TODO</strong>: Check if more registrations are necessary.</t>
        </li>
      </ul>
      <t>This memo requests that IANA registers a new media type as specified in
<xref target="media-type"/>. The media type is also requested to be added to the IANA
registry for "RTP Payload Format MIME types"
<eref target="http://www.iana.org/assignments/rtp-parameters">http://www.iana.org/assignments/rtp-parameters</eref>.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>RTP packets using the payload format defined in this specification are subject
to the security considerations discussed in the RTP specification <xref target="RFC3550"/>,
and in any applicable RTP profile such as RTP/AVP <xref target="RFC3551"/>, RTP/AVPF <xref target="RFC4585"/>,
RTP/SAVP <xref target="RFC3711"/>, or RTP/ SAVPF <xref target="RFC5124"/>.  However, as "Securing the RTP
Protocol Framework: Why RTP Does Not Mandate a Single Media Security Solution"
<xref target="RFC7202"/> discusses, it is not an RTP payload format's responsibility to discuss
or mandate what solutions are used to meet the basic security goals like
confidentiality, integrity, and source authenticity for RTP in general.  This
responsibility lays on anyone using RTP in an application.  They can find
guidance on available security mechanisms and important considerations in
"Options for Securing RTP Sessions" <xref target="RFC7201"/>.  Applications <bcp14>SHOULD</bcp14> use one or
more appropriate strong security mechanisms.  The rest of this Security
Considerations section discusses the security impacting properties of the
payload format itself.</t>
      <t>This RTP payload format and its media decoder do not exhibit any significant
non-uniformity in the receiver-side computational complexity for packet
processing, and thus are unlikely to pose a denial-of-service threat due to the
receipt of pathological data. Nor does the RTP payload format contain any active
content.</t>
    </section>
    <section anchor="rfc-editor-considerations">
      <name>RFC Editor Considerations</name>
      <t>Note to RFC Editor: This section may be removed after carrying out all the
instructions of this section.</t>
      <t>TODO: Consider</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="ISO.IEC.23090-9" target="https://www.iso.org/standard/78990.html">
          <front>
            <title>Information technology — Coded representation of immersive media — Part 9: Geometry-based point cloud compression</title>
            <author>
              <organization>ISO/IEC</organization>
            </author>
            <date year="2023"/>
          </front>
          <seriesInfo name="ISO/IEC" value="23090-9"/>
        </reference>
        <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="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>
        <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="RFC9000">
          <front>
            <title>QUIC: A UDP-Based Multiplexed and Secure Transport</title>
            <author fullname="J. Iyengar" initials="J." role="editor" surname="Iyengar"/>
            <author fullname="M. Thomson" initials="M." role="editor" surname="Thomson"/>
            <date month="May" year="2021"/>
            <abstract>
              <t>This document defines the core of the QUIC transport protocol. QUIC provides applications with flow-controlled streams for structured communication, low-latency connection establishment, and network path migration. QUIC includes security measures that ensure confidentiality, integrity, and availability in a range of deployment circumstances. Accompanying documents describe the integration of TLS for key negotiation, loss detection, and an exemplary congestion control algorithm.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="9000"/>
          <seriesInfo name="DOI" value="10.17487/RFC9000"/>
        </reference>
        <reference anchor="RFC4648">
          <front>
            <title>The Base16, Base32, and Base64 Data Encodings</title>
            <author fullname="S. Josefsson" initials="S." surname="Josefsson"/>
            <date month="October" year="2006"/>
            <abstract>
              <t>This document describes the commonly used base 64, base 32, and base 16 encoding schemes. It also discusses the use of line-feeds in encoded data, use of padding in encoded data, use of non-alphabet characters in encoded data, use of different encoding alphabets, and canonical encodings. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4648"/>
          <seriesInfo name="DOI" value="10.17487/RFC4648"/>
        </reference>
        <reference anchor="RFC8866">
          <front>
            <title>SDP: Session Description Protocol</title>
            <author fullname="A. Begen" initials="A." surname="Begen"/>
            <author fullname="P. Kyzivat" initials="P." surname="Kyzivat"/>
            <author fullname="C. Perkins" initials="C." surname="Perkins"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>This memo defines the Session Description Protocol (SDP). SDP is intended for describing multimedia sessions for the purposes of session announcement, session invitation, and other forms of multimedia session initiation. This document obsoletes RFC 4566.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8866"/>
          <seriesInfo name="DOI" value="10.17487/RFC8866"/>
        </reference>
        <reference anchor="RFC3264">
          <front>
            <title>An Offer/Answer Model with Session Description Protocol (SDP)</title>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <date month="June" year="2002"/>
            <abstract>
              <t>This document defines a mechanism by which two entities can make use of the Session Description Protocol (SDP) to arrive at a common view of a multimedia session between them. In the model, one participant offers the other a description of the desired session from their perspective, and the other participant answers with the desired session from their perspective. This offer/answer model is most useful in unicast sessions where information from both participants is needed for the complete view of the session. The offer/answer model is used by protocols like the Session Initiation Protocol (SIP). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3264"/>
          <seriesInfo name="DOI" value="10.17487/RFC3264"/>
        </reference>
        <reference anchor="RFC7826">
          <front>
            <title>Real-Time Streaming Protocol Version 2.0</title>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <author fullname="A. Rao" initials="A." surname="Rao"/>
            <author fullname="R. Lanphier" initials="R." surname="Lanphier"/>
            <author fullname="M. Westerlund" initials="M." surname="Westerlund"/>
            <author fullname="M. Stiemerling" initials="M." role="editor" surname="Stiemerling"/>
            <date month="December" year="2016"/>
            <abstract>
              <t>This memorandum defines the Real-Time Streaming Protocol (RTSP) version 2.0, which obsoletes RTSP version 1.0 defined in RFC 2326.</t>
              <t>RTSP is an application-layer protocol for the setup and control of the delivery of data with real-time properties. RTSP provides an extensible framework to enable controlled, on-demand delivery of real-time data, such as audio and video. Sources of data can include both live data feeds and stored clips. This protocol is intended to control multiple data delivery sessions; provide a means for choosing delivery channels such as UDP, multicast UDP, and TCP; and provide a means for choosing delivery mechanisms based upon RTP (RFC 3550).</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7826"/>
          <seriesInfo name="DOI" value="10.17487/RFC7826"/>
        </reference>
        <reference anchor="RFC3551">
          <front>
            <title>RTP Profile for Audio and Video Conferences with Minimal Control</title>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <author fullname="S. Casner" initials="S." surname="Casner"/>
            <date month="July" year="2003"/>
            <abstract>
              <t>This document describes a profile called "RTP/AVP" for the use of the real-time transport protocol (RTP), version 2, and the associated control protocol, RTCP, within audio and video multiparticipant conferences with minimal control. It provides interpretations of generic fields within the RTP specification suitable for audio and video conferences. In particular, this document defines a set of default mappings from payload type numbers to encodings. This document also describes how audio and video data may be carried within RTP. It defines a set of standard encodings and their names when used within RTP. The descriptions provide pointers to reference implementations and the detailed standards. This document is meant as an aid for implementors of audio, video and other real-time multimedia applications. This memorandum obsoletes RFC 1890. It is mostly backwards-compatible except for functions removed because two interoperable implementations were not found. The additions to RFC 1890 codify existing practice in the use of payload formats under this profile and include new payload formats defined since RFC 1890 was published. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="65"/>
          <seriesInfo name="RFC" value="3551"/>
          <seriesInfo name="DOI" value="10.17487/RFC3551"/>
        </reference>
        <reference anchor="RFC8083">
          <front>
            <title>Multimedia Congestion Control: Circuit Breakers for Unicast RTP Sessions</title>
            <author fullname="C. Perkins" initials="C." surname="Perkins"/>
            <author fullname="V. Singh" initials="V." surname="Singh"/>
            <date month="March" year="2017"/>
            <abstract>
              <t>The Real-time Transport Protocol (RTP) is widely used in telephony, video conferencing, and telepresence applications. Such applications are often run on best-effort UDP/IP networks. If congestion control is not implemented in these applications, then network congestion can lead to uncontrolled packet loss and a resulting deterioration of the user's multimedia experience. The congestion control algorithm acts as a safety measure by stopping RTP flows from using excessive resources and protecting the network from overload. At the time of this writing, however, while there are several proprietary solutions, there is no standard algorithm for congestion control of interactive RTP flows.</t>
              <t>This document does not propose a congestion control algorithm. It instead defines a minimal set of RTP circuit breakers: conditions under which an RTP sender needs to stop transmitting media data to protect the network from excessive congestion. It is expected that, in the absence of long-lived excessive congestion, RTP applications running on best-effort IP networks will be able to operate without triggering these circuit breakers. To avoid triggering the RTP circuit breaker, any Standards Track congestion control algorithms defined for RTP will need to operate within the envelope set by these RTP circuit breaker algorithms.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8083"/>
          <seriesInfo name="DOI" value="10.17487/RFC8083"/>
        </reference>
        <reference anchor="RFC4585">
          <front>
            <title>Extended RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/AVPF)</title>
            <author fullname="J. Ott" initials="J." surname="Ott"/>
            <author fullname="S. Wenger" initials="S." surname="Wenger"/>
            <author fullname="N. Sato" initials="N." surname="Sato"/>
            <author fullname="C. Burmeister" initials="C." surname="Burmeister"/>
            <author fullname="J. Rey" initials="J." surname="Rey"/>
            <date month="July" year="2006"/>
            <abstract>
              <t>Real-time media streams that use RTP are, to some degree, resilient against packet losses. Receivers may use the base mechanisms of the Real-time Transport Control Protocol (RTCP) to report packet reception statistics and thus allow a sender to adapt its transmission behavior in the mid-term. This is the sole means for feedback and feedback-based error repair (besides a few codec-specific mechanisms). This document defines an extension to the Audio-visual Profile (AVP) that enables receivers to provide, statistically, more immediate feedback to the senders and thus allows for short-term adaptation and efficient feedback-based repair mechanisms to be implemented. This early feedback profile (AVPF) maintains the AVP bandwidth constraints for RTCP and preserves scalability to large groups. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4585"/>
          <seriesInfo name="DOI" value="10.17487/RFC4585"/>
        </reference>
        <reference anchor="RFC3711">
          <front>
            <title>The Secure Real-time Transport Protocol (SRTP)</title>
            <author fullname="M. Baugher" initials="M." surname="Baugher"/>
            <author fullname="D. McGrew" initials="D." surname="McGrew"/>
            <author fullname="M. Naslund" initials="M." surname="Naslund"/>
            <author fullname="E. Carrara" initials="E." surname="Carrara"/>
            <author fullname="K. Norrman" initials="K." surname="Norrman"/>
            <date month="March" year="2004"/>
            <abstract>
              <t>This document describes the Secure Real-time Transport Protocol (SRTP), a profile of the Real-time Transport Protocol (RTP), which can provide confidentiality, message authentication, and replay protection to the RTP traffic and to the control traffic for RTP, the Real-time Transport Control Protocol (RTCP). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3711"/>
          <seriesInfo name="DOI" value="10.17487/RFC3711"/>
        </reference>
        <reference anchor="RFC5124">
          <front>
            <title>Extended Secure RTP Profile for Real-time Transport Control Protocol (RTCP)-Based Feedback (RTP/SAVPF)</title>
            <author fullname="J. Ott" initials="J." surname="Ott"/>
            <author fullname="E. Carrara" initials="E." surname="Carrara"/>
            <date month="February" year="2008"/>
            <abstract>
              <t>An RTP profile (SAVP) for secure real-time communications and another profile (AVPF) to provide timely feedback from the receivers to a sender are defined in RFC 3711 and RFC 4585, respectively. This memo specifies the combination of both profiles to enable secure RTP communications with feedback. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="5124"/>
          <seriesInfo name="DOI" value="10.17487/RFC5124"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC4288">
          <front>
            <title>Media Type Specifications and Registration Procedures</title>
            <author fullname="N. Freed" initials="N." surname="Freed"/>
            <author fullname="J. Klensin" initials="J." surname="Klensin"/>
            <date month="December" year="2005"/>
            <abstract>
              <t>This document defines procedures for the specification and registration of media types for use in MIME and other Internet protocols. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="4288"/>
          <seriesInfo name="DOI" value="10.17487/RFC4288"/>
        </reference>
        <reference anchor="RFC2974">
          <front>
            <title>Session Announcement Protocol</title>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <author fullname="C. Perkins" initials="C." surname="Perkins"/>
            <author fullname="E. Whelan" initials="E." surname="Whelan"/>
            <date month="October" year="2000"/>
            <abstract>
              <t>This document describes version 2 of the multicast session directory announcement protocol, Session Announcement Protocol (SAP), and the related issues affecting security and scalability that should be taken into account by implementors. This memo defines an Experimental Protocol for the Internet community.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="2974"/>
          <seriesInfo name="DOI" value="10.17487/RFC2974"/>
        </reference>
        <reference anchor="RFC7202">
          <front>
            <title>Securing the RTP Framework: Why RTP Does Not Mandate a Single Media Security Solution</title>
            <author fullname="C. Perkins" initials="C." surname="Perkins"/>
            <author fullname="M. Westerlund" initials="M." surname="Westerlund"/>
            <date month="April" year="2014"/>
            <abstract>
              <t>This memo discusses the problem of securing real-time multimedia sessions. It also explains why the Real-time Transport Protocol (RTP) and the associated RTP Control Protocol (RTCP) do not mandate a single media security mechanism. This is relevant for designers and reviewers of future RTP extensions to ensure that appropriate security mechanisms are mandated and that any such mechanisms are specified in a manner that conforms with the RTP architecture.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7202"/>
          <seriesInfo name="DOI" value="10.17487/RFC7202"/>
        </reference>
        <reference anchor="RFC7201">
          <front>
            <title>Options for Securing RTP Sessions</title>
            <author fullname="M. Westerlund" initials="M." surname="Westerlund"/>
            <author fullname="C. Perkins" initials="C." surname="Perkins"/>
            <date month="April" year="2014"/>
            <abstract>
              <t>The Real-time Transport Protocol (RTP) is used in a large number of different application domains and environments. This heterogeneity implies that different security mechanisms are needed to provide services such as confidentiality, integrity, and source authentication of RTP and RTP Control Protocol (RTCP) packets suitable for the various environments. The range of solutions makes it difficult for RTP-based application developers to pick the most suitable mechanism. This document provides an overview of a number of security solutions for RTP and gives guidance for developers on how to choose the appropriate security mechanism.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="7201"/>
          <seriesInfo name="DOI" value="10.17487/RFC7201"/>
        </reference>
      </references>
    </references>
    <?line 738?>

<section numbered="false" anchor="acknowledgments">
      <name>Acknowledgments</name>
      <t>TODO acknowledge.</t>
    </section>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+19a3IbSZLm/zhFLGW2TWEA8KFHSaiSqlGkVMUZUeKKVPX2
To9NJ4AAmKtEJjofpCBKbXOIOcCcYg8we5M9yfrnHhEZkQAp9VTNzFrbssxK
QCIeHh4e/g7PwWCg6rTOzEjvvL0402fJOiuSmX5ZlMuk1vOi1D+aYmnqcj2Y
JJWZ6bMizWt9lBXNTB8Vy1Vpqiot8h2VTCalubpjnMHZ0dGOmhXTPFnSfLMy
mdcDky9MNknKepBc1dOiNIOyXg0Wq+l0sL+vpkltFkW5HumqnqkZfRvpm+Px
xYvPSqWrcqTrsqnqw/39p/uHKilNQtOPV6sspY4EVKWTfKbfmiQbXKRLo8fU
YkddF+X7RVk0KzRuZmmx93M6M4W+KJO8WhUlrY7g0KcJLdTkST41O+q9WVO3
2Ujpgab14R9eDz7Ea1WqqmnWf0yyIido16ZSq3Sk/74upn1d0eilmVf0ab3E
h39QVTNZpozCer2iDicvLl5qfU8nWVUQgGk+MytD/8vrnb7eORn/QP8QNndO
3l683FHqyuSNIbC0XZHFIj2Q4X5Hi03zhf4RP9PTZZJm3Oq3qannw6Jc0MOk
nF6O9GVdr6rR3h6a4El6ZYau0R4e7E3K4roye9R7DzOm9WUzGeml38O9L+0p
9cpoE6s6mM23HsqAQ9qQL43zxQbDy3qZKZU09WVRYtdoZq3TvBrp06F+4frx
03mTZUKSp0l9mVadn2n1SZ5+ZIIa6QszvcyJvDL9LicElVVar/VpQ48uubUR
BC95pKEH8Ld1sxzOTATI3w71m7oLwt/+7/9VLvzzf9PcRU2bmw+3zPhqqP+u
yAl3s86sr5r3SfUx+jGe+nXxPk0EgCIrFilRdTBjxt2H76X7b3M0Hk6LpVIq
50NB0IJG9cn5m+HJi6Ph4QM6sYOn/Iz+HAc6yefSvMh17eZa6//zT/9MR3JG
zKc04Dd0FqRNMdfpcglEXBkiwxmBiLZnhHD9dNTlXCvmXFPmXNOQcwkQnlbc
H2EAMJ2/2SOQXSvhQYf7hw/sg8qUhI2UIA+62k7UUBbq1pmUCxPQ/vX19TCt
Cj5gzDWScrb3zZOnT/ct/Q4GA51MqrpMpsRYLkCcS7Ms9MxU0zKdGDA48CO9
sjxo3vLbxa2rV8Hq9S7zsft69+amszufP98f6otLs22CmZmnOY2a5oqPDHH1
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
zezZDhkgleHLvjQArc61NEP1fwEA5mhcPHQAAA==

-->

</rfc>
