Internet DRAFT - draft-engelbart-avtcore-rtp-gpcc

draft-engelbart-avtcore-rtp-gpcc







Audio/Video Transport Core Maintenance                      M. Engelbart
Internet-Draft                                                    J. Ott
Intended status: Standards Track             Technical University Munich
Expires: 25 April 2024                                        L. Kondrad
                                                      Nokia Technologies
                                                         23 October 2023


     RTP Payload Format for Geometry-based Point Cloud Compression
                  draft-engelbart-avtcore-rtp-gpcc-00

Abstract

   This memo describes an RTP payload format for geometry-based point
   cloud compression (G-PCC) ([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).

About This Document

   This note is to be removed before publishing as an RFC.

   The latest revision of this draft can be found at
   https://mengelbart.github.io/draft-engelbart-avtcore-rtp-gpcc/draft-
   engelbart-avtcore-rtp-gpcc.html.  Status information for this
   document may be found at https://datatracker.ietf.org/doc/draft-
   engelbart-avtcore-rtp-gpcc/.

   Discussion of this document takes place on the avtcore Working Group
   mailing list (mailto:avt@ietf.org), which is archived at
   https://mailarchive.ietf.org/arch/browse/avt/.  Subscribe at
   https://www.ietf.org/mailman/listinfo/avt/.

   Source for this draft and an issue tracker can be found at
   https://github.com/mengelbart/draft-engelbart-avtcore-rtp-gpcc.

Status of This Memo

   This Internet-Draft is submitted in full conformance with the
   provisions of BCP 78 and BCP 79.





Engelbart, et al.         Expires 25 April 2024                 [Page 1]

Internet-Draft        RTP Payload Format for G-PCC          October 2023


   Internet-Drafts are working documents of the Internet Engineering
   Task Force (IETF).  Note that other groups may also distribute
   working documents as Internet-Drafts.  The list of current Internet-
   Drafts is at https://datatracker.ietf.org/drafts/current/.

   Internet-Drafts are draft documents valid for a maximum of six months
   and may be updated, replaced, or obsoleted by other documents at any
   time.  It is inappropriate to use Internet-Drafts as reference
   material or to cite them other than as "work in progress."

   This Internet-Draft will expire on 25 April 2024.

Copyright Notice

   Copyright (c) 2023 IETF Trust and the persons identified as the
   document authors.  All rights reserved.

   This document is subject to BCP 78 and the IETF Trust's Legal
   Provisions Relating to IETF Documents (https://trustee.ietf.org/
   license-info) in effect on the date of publication of this document.
   Please review these documents carefully, as they describe your rights
   and restrictions with respect to this document.  Code Components
   extracted from this document must include Revised BSD License text as
   described in Section 4.e of the Trust Legal Provisions and are
   provided without warranty as described in the Revised BSD License.

Table of Contents

   1.  Introduction  . . . . . . . . . . . . . . . . . . . . . . . .   3
     1.1.  Background on Point Clouds  . . . . . . . . . . . . . . .   3
     1.2.  Overview of the G-PCC Codec . . . . . . . . . . . . . . .   4
   2.  Conventions . . . . . . . . . . . . . . . . . . . . . . . . .   6
   3.  Definitions and Abbreviations . . . . . . . . . . . . . . . .   6
     3.1.  General G-PCC related terms . . . . . . . . . . . . . . .   6
     3.2.  Abbreviations . . . . . . . . . . . . . . . . . . . . . .   7
   4.  Payload Format  . . . . . . . . . . . . . . . . . . . . . . .   8
     4.1.  Transmission Modes  . . . . . . . . . . . . . . . . . . .   8
     4.2.  RTP Header Usage  . . . . . . . . . . . . . . . . . . . .   8
     4.3.  Payload Header Usage  . . . . . . . . . . . . . . . . . .   9
     4.4.  Payload Structures  . . . . . . . . . . . . . . . . . . .  10
       4.4.1.  Single Unit . . . . . . . . . . . . . . . . . . . . .  10
       4.4.2.  Aggregation Packet  . . . . . . . . . . . . . . . . .  11
       4.4.3.  Fragmentation Unit  . . . . . . . . . . . . . . . . .  12
   5.  Packetization Rules and Depacketization Rules . . . . . . . .  13
   6.  Payload Format Parameters . . . . . . . . . . . . . . . . . .  13
     6.1.  Media Type Definition . . . . . . . . . . . . . . . . . .  13
     6.2.  Optional Parameters Definition  . . . . . . . . . . . . .  14
     6.3.  SDP Parameters  . . . . . . . . . . . . . . . . . . . . .  15



Engelbart, et al.         Expires 25 April 2024                 [Page 2]

Internet-Draft        RTP Payload Format for G-PCC          October 2023


       6.3.1.  Mapping of Payload Type Parameters to SDP . . . . . .  15
       6.3.2.  Example . . . . . . . . . . . . . . . . . . . . . . .  15
       6.3.3.  Offer/Answer Considerations . . . . . . . . . . . . .  16
       6.3.4.  Declarative SDP Considerations  . . . . . . . . . . .  16
   7.  Congestion Control  . . . . . . . . . . . . . . . . . . . . .  17
   8.  IANA Considerations . . . . . . . . . . . . . . . . . . . . .  17
   9.  Security Considerations . . . . . . . . . . . . . . . . . . .  18
   10. RFC Editor Considerations . . . . . . . . . . . . . . . . . .  18
   11. References  . . . . . . . . . . . . . . . . . . . . . . . . .  18
     11.1.  Normative References . . . . . . . . . . . . . . . . . .  18
     11.2.  Informative References . . . . . . . . . . . . . . . . .  20
   Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . .  20
   Authors' Addresses  . . . . . . . . . . . . . . . . . . . . . . .  20

1.  Introduction

   This document describes the Real-time Transport Protocol (RTP)
   payload format for Geometry-based point cloud compression as
   described in [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.

   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.

1.1.  Background on Point Clouds

   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.








Engelbart, et al.         Expires 25 April 2024                 [Page 3]

Internet-Draft        RTP Payload Format for G-PCC          October 2023


1.2.  Overview of the G-PCC Codec

   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 [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.

   G-PCC users can choose between two methods for geometry coding and
   three for attribute coding.  The geometry coding method called
   _Octree Coding_ is a general compression method, while _Predictive
   tree_ coding specifically targets low latency applications.  The
   methods for attribute coding are called Region Adaptive Hierarchical
   Transform (RAHT) coding, Predicting Transform, and Lifting Transform.

   The output of the encoding process is a sequence of Data Units (DUs).
   Each DU has a type that describes its layout.  Table 1 lists the ten
   different types of DUs defined in [ISO.IEC.23090-9].



























Engelbart, et al.         Expires 25 April 2024                 [Page 4]

Internet-Draft        RTP Payload Format for G-PCC          October 2023


         +======+===============================================+
         | Type | Description                                   |
         +======+===============================================+
         | 0    | Sequence parameter set data unit              |
         +------+-----------------------------------------------+
         | 1    | Geometry parameter set data unit              |
         +------+-----------------------------------------------+
         | 2    | Geometry data unit                            |
         +------+-----------------------------------------------+
         | 3    | Attribute parameter set data unit             |
         +------+-----------------------------------------------+
         | 4    | Attribute data unit                           |
         +------+-----------------------------------------------+
         | 5    | Tile inventory data unit                      |
         +------+-----------------------------------------------+
         | 6    | Frame boundary marker data unit               |
         +------+-----------------------------------------------+
         | 7    | Defaulted attribute data unit                 |
         +------+-----------------------------------------------+
         | 8    | Frame-specific attribute properties data unit |
         +------+-----------------------------------------------+
         | 9    | User data data unit                           |
         +------+-----------------------------------------------+

                      Table 1: G-PCC data unit types

   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.

   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.

   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.

   Annex A of [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.




Engelbart, et al.         Expires 25 April 2024                 [Page 5]

Internet-Draft        RTP Payload Format for G-PCC          October 2023


2.  Conventions

   The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
   "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and
   "OPTIONAL" in this document are to be interpreted as described in
   BCP 14 [RFC2119] [RFC8174] when, and only when, they appear in all
   capitals, as shown here.

3.  Definitions and Abbreviations

   This document uses the definitions of [ISO.IEC.23090-9].  The
   following terms and abbreviations, defined in [ISO.IEC.23090-9], are
   repeated here for convenience.

3.1.  General G-PCC related terms

   *Attribute*
      Scalar or vector property associated with each _point_ in a _point
      cloud_.

   *Bitstream*
      A sequence of bits.

   *Bounding Box*
      Axis-aligned cuboid defining a spatial region that bounds a set of
      _points_.

   *Coded Point Cloud Frame*
      Coded representation of a _point cloud frame_.

   *Data unit*
      Sequence of bytes conveying a single _syntax structure_ of known
      length.

   *Geometry*
      _Point positions_ associated with a set of _points_.

   *Point*
      Fundamental element of a _point cloud_ comprising a position
      specified as _Cartesian coordinates_ and zero or more
      _attributes_.

   *Point Cloud*
      Unordered list of _points_.

   *Point Cloud Frame*
      _Point cloud_ in a _point cloud sequence_.




Engelbart, et al.         Expires 25 April 2024                 [Page 6]

Internet-Draft        RTP Payload Format for G-PCC          October 2023


   *Point Cloud Sequence*
      Sequence of one or more _pont clouds_.

   *Poisition*
      Three dimensional coordinates of a _point_.

   *Slice*
      _Geometry_ and _attributes_ for part of, or an entire, _coded
      point cloud frame_.

   *Syntax element*
      Element of data represented in the _bitstream_.

   *Syntax structure*
      Zero or more _syntax elements_ present together in the _bitstream_
      in a specified order.

   *Tile*
      Set of _slices_ identified by a common slice_tag _syntax element_
      value whose _geometry_ should be contained within a _bounding box_
      specified in a tile inventory _data unit_.

3.2.  Abbreviations

   *ADU*
      Attribute Data Unit

   *APS*
      Attribute Parameter Set

   *DU*
      Data Unit

   *GDU*
      Geometry Data Unit

   *GPS*
      Geometry Parameter Set

   *SPS*
      Sequence Parameter Set

   *TLV*
      Type-Length-Value







Engelbart, et al.         Expires 25 April 2024                 [Page 7]

Internet-Draft        RTP Payload Format for G-PCC          October 2023


4.  Payload Format

   This section describes the details of the RTP payload format.
   Section 4.2 describes the usage of the standard RTP header fields,
   Section 4.3 describes the details of the payload header following the
   RTP header, and Section 4.4 gives details about available
   packetization modes and the specifics of their respective formats.

4.1.  Transmission Modes

      *TODO*: Do we need this section on transmission modes similar to
      other payload formats to define SRST, MRST, and MRMT?

4.2.  RTP Header Usage

   The format of the RTP header is specified in [RFC3550] and replicated
   in Figure 1 for convenience.  This payload format uses the fields of
   the header in a manner consistent with that specification.

    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             |
   |                             ....                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

            Figure 1: RTP Header format as specified in RFC 3550

      *TODO*: if we add a dedicated subsection on SRST/SRMT/MRMT, add
      the following statement:

      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.

   *Marker bit (M): 1 bit*
      Set to 1 for the last packet of a point cloud frame carried in the
      current RTP stream.

   *Payload Type (PT): 7 bits*





Engelbart, et al.         Expires 25 April 2024                 [Page 8]

Internet-Draft        RTP Payload Format for G-PCC          October 2023


      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.

   *Sequence Number (SN): 16 bits*
      Set and used in accordance with [RFC3550].

   *Timestamp: 32 bits*
      The RTP timestamp is set to the sampling timestamp of the content.
      A 90 kHz clock rate MUST 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 MUST have the same timestamp.

   *Synchronization source (SSRC): 32 bits*
      Used to identify the source of the RTP packets.

4.3.  Payload Header Usage

   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.

    0
    0 1 2 3 4 5 6 7
   +-+-+-+-+-+-+-+-+
   | Typ |Unit-Type|
   +-+-+-+-+-+-+-+-+

                      Figure 2: General Payload Header

   *Typ: 3 bits*
      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 Section 4.4 for details.

   *Unit-Type: 5 bits*
      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 [ISO.IEC.23090-9] and shown in Table 1.






Engelbart, et al.         Expires 25 April 2024                 [Page 9]

Internet-Draft        RTP Payload Format for G-PCC          October 2023


4.4.  Payload Structures

   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 MUST be
   set according to Table 2.

   +======+============================================================+
   | Type | Description                                                |
   +======+============================================================+
   | 000  | Single Unit Packet Section 4.4.1                           |
   +------+------------------------------------------------------------+
   | 001  | Aggregation Unit Packet Section 4.4.2                      |
   +------+------------------------------------------------------------+
   | 010  | First packet of an fragmentation unit                      |
   |      | packet Section 4.4.3                                       |
   +------+------------------------------------------------------------+
   | 011  | Fragmentation unit packet                                  |
   |      | Section 4.4.3                                              |
   +------+------------------------------------------------------------+
   | 100  | Last packet of an fragmentation unit                       |
   |      | packet Section 4.4.3                                       |
   +------+------------------------------------------------------------+
   | 101  | Reserved                                                   |
   +------+------------------------------------------------------------+
   | 110  | Reserved                                                   |
   +------+------------------------------------------------------------+
   | 111  | Reserved                                                   |
   +------+------------------------------------------------------------+

                         Table 2: Type field values

   The following sections explain the details and variations from this
   format for the three packet types.

4.4.1.  Single Unit

   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 MUST be set to zero (binary 000).

   Figure 3 shows an example of a single unit packet.





Engelbart, et al.         Expires 25 April 2024                [Page 10]

Internet-Draft        RTP Payload Format for G-PCC          October 2023


    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        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                    Figure 3: Single unit packet payload

4.4.2.  Aggregation Packet

   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 [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.

   An aggregation packet MUST carry at least two DUs.  Aggregation
   packets MAY carry more than two DUs.  The total amount of data in an
   aggregation packet MUST fit into an IP packet, and the size SHOULD be
   chosen so that the resulting IP packet is smaller than the MTU size
   in order to avoid IP layer fragmentation.  An aggregation packet MUST
   NOT contain any fragmentation units.

   An aggregation packet MUST NOT carry DUs of different point cloud
   frames, i.e., all DUs included in an aggregation packet MUST have the
   same timestamp.

   The packet type field of every DU in an aggregation packet MUST be
   set to the value one (binary 001).

   Figure 4 shows the extended payload header format of syntax
   structures in aggregation packets.

    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                 ...
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+



Engelbart, et al.         Expires 25 April 2024                [Page 11]

Internet-Draft        RTP Payload Format for G-PCC          October 2023


                     Figure 4: Aggregation Unit Payload

   An example of an aggregation unit packet with two data unit payloads
   is shown in Figure 5.

    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        |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

                          Figure 5: Packet Payload

4.4.3.  Fragmentation Unit

   Fragmentation units allow fragmentation of single DUs into multiple
   RTP packets without cooperation from the G-PCC encoder.  Fragments of
   the same DU MUST 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).

   Aggregation packets MUST NOT be fragmented.  Fragmentation units MUST
   NOT be nested, i.e., a fragmentation unit cannot contain a subset of
   another fragmentation unit.

   The timestamp of all fragmentation units MUST be set to the same
   value: the timestamp of the DU that is carried in the fragmentation
   unit packets.

   The type field of the first packet of a series of fragmentation units
   MUST be set to 2 (binary 010), the type field of the last packet in
   the series MUST be set to four (binary 100), and the type field of
   all packets between the first and last packet of the fragmented unit
   MUST have the value three (binary 011).





Engelbart, et al.         Expires 25 April 2024                [Page 12]

Internet-Draft        RTP Payload Format for G-PCC          October 2023


5.  Packetization Rules and Depacketization Rules

   *  A DU of a small size SHOULD 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.

   *  For carrying exactly one DU in an RTP packet, a single unit packet
      MUST be used.

   The de-packetization process is implementation dependent.  Therefore,
   the following de-packetization rules SHOULD be taken as an example.

   *  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.

6.  Payload Format Parameters

   This section defines the media type to use with the payload format
   and the optional parameters that can be used with it.

6.1.  Media Type Definition

      *Note*: Template from Section 10 of [RFC4288]

   *Type name*:
      application

   *Subtype name*:
      GPCC

   *Required Parameters*:
      None

   *Optional Parameters*:
      profile-level-id *TODO*: add list from section Section 6.2

   *Encoding considerations*:
      This type is only defined for transfer via RTP [RFC3550].

   *Security considerations*:
      See Section 9.




Engelbart, et al.         Expires 25 April 2024                [Page 13]

Internet-Draft        RTP Payload Format for G-PCC          October 2023


   *Interoperability considerations*:
      N/A

   *Published specification*:
      Please refer to <*TODO*: Reference this document> and
      [ISO.IEC.23090-9].

   *Applications that use this media type*:
      Any application that relies on GPCC-based point cloud transmission
      over RTP

   *Fragment identifier considerations*:
      N/A

   *Additional information*:
      N/A

   *Person & email address to contact for further information*:
      Mathis Engelbart (mathis.engelbart@gmail.com)

   *Intended usage*:
      COMMON

   *Restrictions on usage*:
      N/A

   *Author*:
      See Authors' Addresses section of <*TODO*: Reference this
      document>

   *Change controller*:
      IETF avtcore@ietf.org (mailto:avtcore@ietf.org)

6.2.  Optional Parameters Definition

   *profile-level-id*:  The profile-level-id is a base16 [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 _Simple_, _Predictive_, _Dense_ and _Main_, while the
      last for bits indicate the highest level that the decoder supports
      or a bitstream conforms to.

   *pcc-resolution*:  Describes the resolution of the point cloud as
      number of lines, number of points per line and depth resolution.

      <#lines> <#points-per-line> <#depth-resolution>




Engelbart, et al.         Expires 25 April 2024                [Page 14]

Internet-Draft        RTP Payload Format for G-PCC          October 2023


   *pcc-coverage*:  The field of view coverage of the sensor described
      by the horizontal and vertical angles.

      <h-angle> <v-angle>

   *pcc-anchor*:  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.

      <x> <y> <z>

   *pcc-orientation*:  The orientation of the point cloud sensor.

      <tilt> <pan>

   *pcc-position*:  The location of the LiDAR or point cloud sensor
      relative to _pcc-anchor_ and _pcc-orientation_:

      <delta-x> <delta-y> <delta-z> <delta-tilt> <delta-pan>

   *pcc-point-attr*:  A list of attributes associated with each point.
      Example: color, reflectivity.

6.3.  SDP Parameters

6.3.1.  Mapping of Payload Type Parameters to SDP

   The media type application/GPCC string is mapped to fields in the
   Session Description Protocol (SDP) [RFC8866] as follows:

      *TODO*: Add all parameters from above

   *  The media name in the "m=" line of SDP MUST be application.

   *  The encoding name in the "a=rtpmap" line of SDP MUST be GPCC (the
      media subtype).

   *  The clock rate in the "a=rtpmap" line MUST be 90000.

   *  The optional parameters _profile-level-id_, ... when present, MUST
      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.

6.3.2.  Example






Engelbart, et al.         Expires 25 April 2024                [Page 15]

Internet-Draft        RTP Payload Format for G-PCC          October 2023


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;

6.3.3.  Offer/Answer Considerations

      *TODO*: Are theses rules correct for G-PCC and do we need
      considerations for other parameters?

   When the payload format is offered over RTP using SDP in an Offer/
   Answer model as described in [RFC3264] for negotiation for unicast
   usage, the following limitations and rules apply:

   *  The parameter identifying a media format configuration for G-PCC
      is profile-levle-id.  This media format configuration parameter
      MUST be used symmetrically; that is, the answerer MUST either
      maintain this configuration parameter or remove the media format
      (payload type) completely if it is not supported.

   *  The G-PCC stream sent by either the offerer or the answerer MUST
      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.

6.3.4.  Declarative SDP Considerations

      *TODO*: Are theses rules correct for G-PCC and do we need
      considerations for other parameters?

   When G-PCC over RTP is offered with SDP in a declarative style, as in
   Real Time Streaming Protocol (RTSP) [RFC7826] or Session Announcement
   Protocol (SAP) [RFC2974], the following considerations are necessary.



Engelbart, et al.         Expires 25 April 2024                [Page 16]

Internet-Draft        RTP Payload Format for G-PCC          October 2023


   *  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.

   *  A receiver of the SDP is required to support all parameters and
      values of the parameters provided; otherwise, the receiver MUST
      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.

7.  Congestion Control

   Congestion control for RTP SHALL be used in accordance with
   [RFC3550], and with any applicable RTP profile: e.g., [RFC3551].  An
   additional requirement if best-effort service is being used is users
   of this payload format MUST monitor packet loss to ensure that the
   packet loss rate is within acceptable parameters.  Circuit Breakers
   [RFC8083] is an update to RTP [RFC3550] that defines criteria for
   when one is required to stop sending RTP Packet Streams.  The circuit
   breakers is to be implemented and followed.

   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.

   Attribute decoding depends on geometry decoding and ADUs can become
   obsolete, when the corresponding geometry data is dropped.  Thus,
   intermediates SHOULD 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.

8.  IANA Considerations

      *TODO*: Check if more registrations are necessary.

   This memo requests that IANA registers a new media type as specified
   in Section 6.1.  The media type is also requested to be added to the
   IANA registry for "RTP Payload Format MIME types"
   http://www.iana.org/assignments/rtp-parameters
   (http://www.iana.org/assignments/rtp-parameters).







Engelbart, et al.         Expires 25 April 2024                [Page 17]

Internet-Draft        RTP Payload Format for G-PCC          October 2023


9.  Security Considerations

   RTP packets using the payload format defined in this specification
   are subject to the security considerations discussed in the RTP
   specification [RFC3550], and in any applicable RTP profile such as
   RTP/AVP [RFC3551], RTP/AVPF [RFC4585], RTP/SAVP [RFC3711], or RTP/
   SAVPF [RFC5124].  However, as "Securing the RTP Protocol Framework:
   Why RTP Does Not Mandate a Single Media Security Solution" [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"
   [RFC7201].  Applications SHOULD 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.

   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.

10.  RFC Editor Considerations

   Note to RFC Editor: This section may be removed after carrying out
   all the instructions of this section.

   TODO: Consider

11.  References

11.1.  Normative References

   [ISO.IEC.23090-9]
              ISO/IEC, "Information technology — Coded representation of
              immersive media — Part 9: Geometry-based point cloud
              compression", ISO/IEC 23090-9, 2023,
              <https://www.iso.org/standard/78990.html>.

   [RFC2119]  Bradner, S., "Key words for use in RFCs to Indicate
              Requirement Levels", BCP 14, RFC 2119,
              DOI 10.17487/RFC2119, March 1997,
              <https://www.rfc-editor.org/rfc/rfc2119>.





Engelbart, et al.         Expires 25 April 2024                [Page 18]

Internet-Draft        RTP Payload Format for G-PCC          October 2023


   [RFC3264]  Rosenberg, J. and H. Schulzrinne, "An Offer/Answer Model
              with Session Description Protocol (SDP)", RFC 3264,
              DOI 10.17487/RFC3264, June 2002,
              <https://www.rfc-editor.org/rfc/rfc3264>.

   [RFC3550]  Schulzrinne, H., Casner, S., Frederick, R., and V.
              Jacobson, "RTP: A Transport Protocol for Real-Time
              Applications", STD 64, RFC 3550, DOI 10.17487/RFC3550,
              July 2003, <https://www.rfc-editor.org/rfc/rfc3550>.

   [RFC3551]  Schulzrinne, H. and S. Casner, "RTP Profile for Audio and
              Video Conferences with Minimal Control", STD 65, RFC 3551,
              DOI 10.17487/RFC3551, July 2003,
              <https://www.rfc-editor.org/rfc/rfc3551>.

   [RFC3711]  Baugher, M., McGrew, D., Naslund, M., Carrara, E., and K.
              Norrman, "The Secure Real-time Transport Protocol (SRTP)",
              RFC 3711, DOI 10.17487/RFC3711, March 2004,
              <https://www.rfc-editor.org/rfc/rfc3711>.

   [RFC4585]  Ott, J., Wenger, S., Sato, N., Burmeister, C., and J. Rey,
              "Extended RTP Profile for Real-time Transport Control
              Protocol (RTCP)-Based Feedback (RTP/AVPF)", RFC 4585,
              DOI 10.17487/RFC4585, July 2006,
              <https://www.rfc-editor.org/rfc/rfc4585>.

   [RFC4648]  Josefsson, S., "The Base16, Base32, and Base64 Data
              Encodings", RFC 4648, DOI 10.17487/RFC4648, October 2006,
              <https://www.rfc-editor.org/rfc/rfc4648>.

   [RFC5124]  Ott, J. and E. Carrara, "Extended Secure RTP Profile for
              Real-time Transport Control Protocol (RTCP)-Based Feedback
              (RTP/SAVPF)", RFC 5124, DOI 10.17487/RFC5124, February
              2008, <https://www.rfc-editor.org/rfc/rfc5124>.

   [RFC7826]  Schulzrinne, H., Rao, A., Lanphier, R., Westerlund, M.,
              and M. Stiemerling, Ed., "Real-Time Streaming Protocol
              Version 2.0", RFC 7826, DOI 10.17487/RFC7826, December
              2016, <https://www.rfc-editor.org/rfc/rfc7826>.

   [RFC8083]  Perkins, C. and V. Singh, "Multimedia Congestion Control:
              Circuit Breakers for Unicast RTP Sessions", RFC 8083,
              DOI 10.17487/RFC8083, March 2017,
              <https://www.rfc-editor.org/rfc/rfc8083>.

   [RFC8174]  Leiba, B., "Ambiguity of Uppercase vs Lowercase in RFC
              2119 Key Words", BCP 14, RFC 8174, DOI 10.17487/RFC8174,
              May 2017, <https://www.rfc-editor.org/rfc/rfc8174>.



Engelbart, et al.         Expires 25 April 2024                [Page 19]

Internet-Draft        RTP Payload Format for G-PCC          October 2023


   [RFC8866]  Begen, A., Kyzivat, P., Perkins, C., and M. Handley, "SDP:
              Session Description Protocol", RFC 8866,
              DOI 10.17487/RFC8866, January 2021,
              <https://www.rfc-editor.org/rfc/rfc8866>.

   [RFC9000]  Iyengar, J., Ed. and M. Thomson, Ed., "QUIC: A UDP-Based
              Multiplexed and Secure Transport", RFC 9000,
              DOI 10.17487/RFC9000, May 2021,
              <https://www.rfc-editor.org/rfc/rfc9000>.

11.2.  Informative References

   [RFC2974]  Handley, M., Perkins, C., and E. Whelan, "Session
              Announcement Protocol", RFC 2974, DOI 10.17487/RFC2974,
              October 2000, <https://www.rfc-editor.org/rfc/rfc2974>.

   [RFC4288]  Freed, N. and J. Klensin, "Media Type Specifications and
              Registration Procedures", RFC 4288, DOI 10.17487/RFC4288,
              December 2005, <https://www.rfc-editor.org/rfc/rfc4288>.

   [RFC7201]  Westerlund, M. and C. Perkins, "Options for Securing RTP
              Sessions", RFC 7201, DOI 10.17487/RFC7201, April 2014,
              <https://www.rfc-editor.org/rfc/rfc7201>.

   [RFC7202]  Perkins, C. and M. Westerlund, "Securing the RTP
              Framework: Why RTP Does Not Mandate a Single Media
              Security Solution", RFC 7202, DOI 10.17487/RFC7202, April
              2014, <https://www.rfc-editor.org/rfc/rfc7202>.

Acknowledgments

   TODO acknowledge.

Authors' Addresses

   Mathis Engelbart
   Technical University Munich
   Email: mathis.engelbart@tum.de


   Jörg Ott
   Technical University Munich
   Email: ott@in.tum.de


   Lukasz Kondrad
   Nokia Technologies
   Email: lukasz.kondrad@nokia.com



Engelbart, et al.         Expires 25 April 2024                [Page 20]