<?xml version="1.0" encoding="US-ASCII"?>
<!-- This template is for creating an Internet Draft using xml2rfc,
    which is available here: http://xml.resource.org. -->
<!DOCTYPE rfc SYSTEM "rfc2629.dtd" [
<!-- One method to get references from the online citation libraries.
    There has to be one entity for each item to be referenced.
    An alternate method (rfc include) is described in the references. -->

<!ENTITY RFC2119 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml">
<!ENTITY RFC2629 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.2629.xml">
<!ENTITY RFC3552 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3552.xml">
<!ENTITY RFC5226 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5226.xml">
<!ENTITY RFC3550 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3550.xml">
<!ENTITY RFC3551 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3551.xml">
<!ENTITY RFC3711 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3711.xml">
<!ENTITY RFC4175 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4175.xml">
<!ENTITY RFC4566 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4566.xml">
<!ENTITY RFC4585 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4585.xml">
<!ENTITY RFC5124 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5124.xml">
<!ENTITY RFC6562 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6562.xml">
<!ENTITY RFC7201 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7201.xml">
<!ENTITY RFC7202 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7202.xml">
<!ENTITY RFC3264 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3264.xml">
<!ENTITY RFC6838 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6838.xml">
<!-- !ENTITY RFC7273 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.7273.xml" -->
<!ENTITY RFC8083 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8083.xml">
<!ENTITY RFC8085 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.8085.xml">
]>
<?xml-stylesheet type='text/xsl' href='rfc2629.xslt' ?>
<!-- used by XSLT processors -->
<!-- For a complete list and description of processing instructions (PIs),
    please see http://xml.resource.org/authoring/README.html. -->
<!-- Below are generally applicable Processing Instructions (PIs) that most I-Ds might want to use.
    (Here they are set differently than their defaults in xml2rfc v1.32) -->
<?rfc strict="yes" ?>
<!-- give errors regarding ID-nits and DTD validation -->
<!-- control the table of contents (ToC) -->
<?rfc toc="yes"?>
<!-- generate a ToC -->
<?rfc tocdepth="4"?>
<!-- the number of levels of subsections in ToC. default: 3 -->
<!-- control references -->
<?rfc symrefs="yes"?>
<!-- use symbolic references tags, i.e, [RFC2119] instead of [1] -->
<?rfc sortrefs="yes" ?>
<!-- sort the reference entries alphabetically -->
<!-- control vertical white space
    (using these PIs as follows is recommended by the RFC Editor) -->
<?rfc compact="yes" ?>
<!-- do not start each main section on a new page -->
<?rfc subcompact="no" ?>
<!-- keep one blank line between list items -->
<!-- end of list of popular I-D processing instructions -->
<rfc category="std" docName="draft-ietf-payload-rtp-jpegxs-05" ipr="trust200902">
 <!-- category values: std, bcp, info, exp, and historic
    ipr values: trust200902, noModificationTrust200902, noDerivativesTrust200902,
       or pre5378Trust200902
    you can add the attributes updates="NNNN" and obsoletes="NNNN"
    they will automatically be output with "(if approved)" -->

 <!-- ***** FRONT MATTER ***** -->

 <front>
   <title abbrev="RTP Payload Format for JPEG XS">
     RTP Payload Format for ISO/IEC 21122 (JPEG XS)
   </title>

   <author fullname="S&eacute;bastien Lugan" initials="S.L."
           surname="Lugan">
     <organization abbrev="intoPIX">intoPIX S.A.</organization>
     <address>
       <postal>
         <street>Rue Emile Francqui, 9</street>
         <city>1435 Mont-Saint-Guibert</city>
         <country>Belgium</country>
       </postal>
       <phone>+32 10 23 84 70</phone>
       <email>rtp@intopix.com</email>
       <uri>http://www.intopix.com</uri>
     </address>
   </author>

  <author fullname="Antonin Descampe" initials="A.D."
           surname="Descampe">
     <organization abbrev="intoPIX">intoPIX S.A.</organization>
     <address>
       <postal>
         <street>Rue Emile Francqui, 9</street>
         <city>1435 Mont-Saint-Guibert</city>
         <country>Belgium</country>
       </postal>
       <phone>+32 10 23 84 70</phone>
       <email>a.descampe@intopix.com</email>
       <uri>http://www.intopix.com</uri>
     </address>
   </author>

  <author fullname="Corentin Damman" initials="C.D."
           surname="Damman">
     <organization abbrev="intoPIX">intoPIX S.A.</organization>
     <address>
       <postal>
         <street>Rue Emile Francqui, 9</street>
         <city>1435 Mont-Saint-Guibert</city>
         <country>Belgium</country>
       </postal>
       <phone>+32 10 23 84 70</phone>
       <email>c.damman@intopix.com</email>
       <uri>http://www.intopix.com</uri>
     </address>
   </author>

   <author fullname="Thomas Richter" initials="T.R."
           surname="Richter">
     <organization abbrev="IIS">Fraunhofer IIS</organization>
     <address>
       <postal>
         <street>Am Wolfsmantel 33</street>
         <city>91048 Erlangen</city>
         <country>Germany</country>
       </postal>
       <phone>+49 9131 776 5126</phone>
       <email>thomas.richter@iis.fraunhofer.de</email>
       <uri>https://www.iis.fraunhofer.de/</uri>
     </address>
   </author>

   <author fullname="Alexandre Willeme" initials="A.W."
           surname="Willeme">
     <organization abbrev="UCL/ICTEAM">Universit&eacute; catholique de Louvain</organization>
     <address>
       <postal>
         <!-- region>UCL/ICTEAM/ELEN</region -->
         <street>Place du Levant, 2 - bte L5.04.04</street>
         <city>1348 Louvain-la-Neuve</city>
         <country>Belgium</country>
       </postal>
       <phone>+32 10 47 80 82</phone>
       <email>alexandre.willeme@uclouvain.be</email>
       <uri>https://uclouvain.be/en/icteam</uri>
     </address>
   </author>

   <date year="2020" />

   <!-- If the month and year are both specified and are the current ones, xml2rfc will fill
        in the current day for you. If only the current year is specified, xml2rfc will fill
        in the current day and month for you. If the year is not the current one, it is
        necessary to specify at least a month (xml2rfc assumes day="1" if not specified for the
        purpose of calculating the expiry date). With drafts it is normally sufficient to
        specify just the year. -->

   <!-- Meta-data Declarations -->

   <area>General</area>

   <workgroup>avtcore</workgroup>
<!--
   <workgroup>Internet Engineering Task Force</workgroup>
-->

   <!-- WG name at the upperleft corner of the doc,
        IETF is fine for individual submissions.
        If this element is not present, the default is "Network Working Group",
        which is used by the RFC Editor as a nod to the history of the IETF. -->

   <keyword>template</keyword>

   <!-- Keywords will be incorporated into HTML output
        files in a meta tag but they have no effect on text or nroff
        output. If you submit your draft to the RFC Editor, the
        keywords will be used for the search engine. -->

   <abstract>
     <t>
       This document specifies a Real-Time Transport Protocol (RTP) payload
       format to be used for transporting JPEG XS (ISO/IEC 21122) encoded video.
       JPEG XS is a low-latency, lightweight image coding system. Compared to an
       uncompressed video use case, it allows higher resolutions and frame
       rates, while offering visually lossless quality, reduced power
       consumption, and end-to-end latency confined to a fraction of a frame.
     </t>
   </abstract>
 </front>

 <middle>
   <section title="Introduction">
     <t>
       This document specifies a payload format for packetization of
       JPEG XS encoded video signals into the
       <xref target="RFC3550">Real-time Transport Protocol (RTP)</xref>.
     </t>
     <t>
       The JPEG XS coding system offers compression and recompression of image
       sequences with very moderate computational resources while remaining
       robust under multiple compression and decompression cycles and mixing of
       content sources, e.g. embedding of subtitles, overlays or logos. Typical
       target compression ratios ensuring visually lossless quality are in the
       range of 2:1 to 10:1, depending on the nature of the source material. The
       end-to-end latency can be confined to a fraction of a frame, typically
       between a small number of lines down to below a single line.
     </t>
   </section>

   <section title="Conventions, Definitions, and Abbreviations">
       <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
       "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this
       document are to be interpreted as described in <xref
       target="RFC2119">RFC 2119</xref>.</t>

       <t>
       <list style="hanging">
         <t hangText="Application Data Unit (ADU)"><vspace />
           The unit of source data provided as payload to the transport layer,
           and corresponding, in this RTP payload definition, to a single
           JPEG XS frame.
         </t>

         <t hangText="Colour specification box (CS box)"><vspace />
           A ISO colour specification box defined in <xref
           target="ISO21122-3">ISO/IEC 21122-3</xref> that includes
           colour-related metadata required to correctly display JPEG XS frames,
           such as colour primaries, transfer characteristics and matrix
           coefficients.
         </t>

         <t hangText="EOC marker"><vspace />
           A marker that consists of the two bytes 0xff11 indicating the
           end of a JPEG XS codestream.
         </t>

         <t hangText="JPEG XS codestream"><vspace />
           A sequence of bytes representing a compressed image formatted
           according to <xref target="ISO21122-1">JPEG XS Part-1</xref>.
         </t>

         <t hangText="JPEG XS codestream header"><vspace />
           A sequence of bytes, starting with a SOC marker, at the beginning of
           each JPEG XS codestream encoded in multiple markers and marker
           segments that does not carry entropy coded data, but metadata such as
           the frame dimension and component precision.
         </t>

         <t hangText="JPEG XS frame"><vspace />
           A JPEG XS picture segment in the case of a progressive frame, or, in
           the case of an interlaced frame, the concatenation of two JPEG XS
           picture segments.
         </t>

         <t hangText="JPEG XS header segment"><vspace />
           The concatenation of a video support box, as defined in <xref
           target="ISO21122-3">ISO/IEC 21122-3</xref>, a colour specification
           box, as defined in <xref target="ISO21122-3">ISO/IEC 21122-3 as well
           </xref> and a JPEG XS codestream header.
         </t>

         <t hangText="JPEG XS picture segment"><vspace />
           The concatenation of a video support box, as defined in <xref
           target="ISO21122-3">ISO/IEC 21122-3</xref>, a colour specification
           box, as defined in <xref target="ISO21122-3">ISO/IEC 21122-3 as well
           </xref> and a JPEG XS codestream.
         </t>

         <t hangText="JPEG XS stream"><vspace />
           A sequence of JPEG XS frames.
         </t>

         <t hangText="Marker"><vspace />
           A two-byte functional sequence that is part of a JPEG XS
           codestream starting with a 0xff byte and a subsequent byte
           defining its function.
         </t>

         <t hangText="Marker segment"><vspace />
           A marker along with a 16-bit marker size and payload data
           following the size.
         </t>

         <t hangText="Packetization unit"><vspace />
           A portion of an Application Data Unit whose boundaries coincide
           with boundaries of RTP packet payloads (excluding payload header),
           i.e. the first (resp. last) byte of a packetization unit is the
           first (resp. last) byte of a RTP packet payload (excluding its
           payload header).
         </t>

         <t hangText="Slice"><vspace />
           The smallest independently decodable unit of a JPEG XS
           codestream, bearing in mind that it decodes to wavelet coefficients
           which still require inverse wavelet filtering to give an image.
         </t>

         <t hangText="SOC marker"><vspace />
           A marker that consists of the two bytes 0xff10 indicating the
           start of a JPEG XS codestream.
         </t>

         <t hangText="Video support box (VS box)"><vspace />
           <!-- Removed reference to 15444-1 as concept of box is repeated in
           21122-3 -->
           A ISO video support box defined in <xref target="ISO21122-3">ISO/IEC
           21122-3</xref> that includes metadata required to play back a JPEG XS
           stream, such as its maximum bitrate, its subsampling structure, its
           buffer model and its frame rate.
         </t>

       </list>
       </t>
   </section>

   <section title="Media Format Description">
     <section title="Image Data Structures">
       <!-- FIXME -->
       <t>
         JPEG XS is a low-latency lightweight image coding system for coding
         continuous-tone grayscale or continuous-tone colour digital images.
       </t>
       <t>
         This coding system provides an efficient representation of image
         signals through the mathematical tool of wavelet analysis. The wavelet
         filter process separates each component into multiple bands, where
         each band consists of multiple coefficients describing the image
         signal of a given component within a frequency domain specific to the
         wavelet filter type, i.e. the particular filter corresponding to the
         band.
       </t>
       <t>
         Wavelet coefficients are grouped into precincts, where each precinct
         includes all coefficients over all bands that contribute to a spatial
         region of the image.
       </t>
       <t>
         One or multiple precincts are furthermore combined into slices
         consisting of an integer number of precincts. Precincts do not
         cross slice boundaries, and wavelet coefficients in precincts that
         are part of different slices can be decoded independently from each
         other. Note, however, that the wavelet transformation runs across
         slice boundaries. A slice always extends over the full width of the
         image, but may only cover parts of its height.
       </t>

     </section>

     <section title="Codestream">
       <t>
         A JPEG XS codestream header, followed by several slices, and terminated
         by an EOC marker form a JPEG XS codestream.
       </t>
       <t>
         The overall codestream format, including the definition of all
         markers, is further defined in <xref target="ISO21122-1">ISO/IEC
         21122-1</xref>. It represents sample values of a single image, bare
         any interpretation relative to a colour space.
       </t>
     </section>

     <section title="Video support box and colour specification box">
       <t>
         While the information defined in the codestream is sufficient to
         reconstruct the sample values of one image, the interpretation of
         the samples remains undefined by the codestream itself. This
         interpretation is given by the video support box and the colour
         specification box which contain significant information to correctly
         play the JPEG XS stream. The layout and syntax of these boxes, together
         with their content, are defined in <xref target="ISO21122-3">ISO/IEC
         21122-3</xref>. The video support box provides information on the
         maximum bitrate, the frame rate, the subsampling image format, the
         timecode of the current JPEG XS frame, the profile, level and sublevel
         used (as defined in <xref target="ISO21122-2">ISO/IEC 21122-2</xref>),
         and optionally on the buffer model and the mastering display metadata.
         The colour specification box indicates the colour primaries, transfer
         characteristics, matrix coefficients and video full range flag needed
         to specify the colour space of the video stream.
       </t>
     </section>

     <section title="JPEG XS Frame">
       <t>
         The concatenation of a video support box, a colour specification box
         and a JPEG XS codestream forms a JPEG XS picture segment. In the case
         of a video stream made of progressive frames, each frame is made of
         one single JPEG XS picture segment. In the case of a video stream
         made of interlaced frames, each frame is made of two concatenated
         JPEG XS picture segments. The codestream of each segment corresponds
         to a field of the interlaced frame. The boxes in the first segment
         SHALL be equal to the boxes in the second segment. Note that the
         video information box included in each video support box contains a
         frat field indicating if the frame is progressive or interlaced, and,
         in case of interlaced frame, if the top field (i.e. the field
         containing the top line of the frame) is in the first or second
         segment (see <xref target="ISO21122-3">ISO/IEC 21122-3</xref>).
       </t>
     </section>

     <!--
       TBD: overview of the capabilities and major properties of the media
       format. It should be kept short and concise and is not a complete
       replacement for reading the media format specification.
     -->

   </section>

   <section title="RTP Payload Format">

     <t>
       This section specifies the payload format for JPEG XS streams over
       the <xref target="RFC3550">Real-time Transport Protocol (RTP)</xref>.
     </t>

     <t>
       In order to be transported over RTP, each JPEG XS stream is
       transported in a distinct RTP stream, identified by a distinct SSRC.
     </t>

     <t>
       A JPEG XS stream is divided into Application Data Units (ADUs), each ADU
       corresponding to a single JPEG XS frame.
     </t>

     <section title="RTP packetization" anchor="rtp_packet">

      <t>
        An ADU is made of several packetization units. If a packetization unit
        is bigger than the maximum size of a RTP packet payload, the unit is
        split into multiple RTP packet payloads, as illustrated in <xref
        target="rtp_packetization"></xref>. As seen there, each packet SHALL
        contain (part of) one and only one packetization unit. A packetization
        unit may extend over multiple packets. The payload of every packet
        SHALL have the same size (based e.g. on the Maximum Transfer Unit of
        the network), except (possibly) the last packet of a packetization
        unit. The boundaries of a packetization unit SHALL coincide with the
        boundaries of the payload of a packet (excluding the payload header),
        i.e. the first (resp. last) byte of the packetization unit SHALL be
        the first (resp. last) byte of the payload (excluding its header).
      </t>

      <figure anchor="rtp_packetization" title="Example of ADU packetization">
       <artwork><![CDATA[
RTP        +-----+------------------------+
Packet #1  | Hdr | Packetization unit #1  |
           +-----+------------------------+
RTP        +-----+--------------------------------------+
Packet #2  | Hdr | Packetization unit #2                |
           +-----+--------------------------------------+
RTP        +-----+--------------------------------------------------+
Packet #3  | Hdr | Packetization unit #3  (part 1/3)                |
           +-----+--------------------------------------------------+
RTP        +-----+--------------------------------------------------+
Packet #4  | Hdr | Packetization unit #3  (part 2/3)                |
           +-----+--------------------------------------------------+
RTP        +-----+----------------------------------------------+
Packet #5  | Hdr | Packetization unit #3  (part 3/3)            |
           +-----+----------------------------------------------+
             ...
RTP        +-----+-----------------------------------------+
Packet #P  | Hdr | Packetization unit #N  (part q/q)       |
           +-----+-----------------------------------------+
       ]]></artwork>
     </figure>

      <t>
        There are two different packetization modes defined for this RTP payload format.
        <list style="numbers">
          <t>Codestream packetization mode: in this mode, the packetization unit
          SHALL be the entire codestream, preceeded by boxes. This means
          that a progressive frame will have a single packetization unit, while
          an interlaced frame will have two. The progressive case is illustrated
          in <xref target="cs_packetization"></xref>.
          </t>

          <t>Slice packetization mode: in this mode, the packetization unit
          SHALL be the slice, i.e. there SHALL be data from no more than one
          slice per RTP packet. The first packetization unit SHALL be made of
          the JPEG XS header segment (i.e. the concatenation of the VS box, the
          CS box and the JPEG XS codestream header). This first unit is then
          followed by successive units, each containing one and only one slice.
          The packetization unit containing the last slice of a JPEG XS
          codestream SHALL also contain the EOC marker immediately following
          this last slice. This is illustrated in
          <xref target="slice_packetization"></xref>. In the case of an
          interlaced frame, the JPEG XS header segment of the second field SHALL
          be in its own packetization unit.
          </t>
       </list>
      </t>

     <figure anchor="cs_packetization" title="Example of codestream packetization mode">
      <artwork><![CDATA[
RTP        +-----+--------------------------------------------------+
Packet #1  | Hdr | VS box + CS box + JPEG XS codestream (part 1/q)  |
           +-----+--------------------------------------------------+
RTP        +-----+--------------------------------------------------+
Packet #2  | Hdr | JPEG XS codestream (part 2/q)                    |
           +-----+--------------------------------------------------+
             ...
RTP        +-----+--------------------------------------+
Packet #P  | Hdr | JPEG XS codestream (part q/q)        |
           +-----+--------------------------------------+
       ]]></artwork>
     </figure>

    <figure anchor="slice_packetization" title="Example of slice packetization mode">
        <artwork><![CDATA[
RTP        +-----+----------------------------+
Packet #1  | Hdr | JPEG XS header segment     |
           +-----+----------------------------+
RTP        +-----+--------------------------------------------------+
Packet #2  | Hdr | Slice #1  (part 1/2)                             |
           +-----+--------------------------------------------------+
RTP        +-----+-------------------------------------------+
Packet #3  | Hdr | Slice #1  (part 2/2)                      |
           +-----+-------------------------------------------+
RTP        +-----+--------------------------------------------------+
Packet #4  | Hdr | Slice #2  (part 1/3)                             |
           +-----+--------------------------------------------------+
             ...
RTP        +-----+---------------------------------------+
Packet #P  | Hdr | Slice #N  (part q/q) + EOC marker     |
           +-----+---------------------------------------+
       ]]></artwork>
     </figure>

     <t>
       Thanks to the constant bit-rate of JPEG XS, the codestream packetization
       mode guarantees that a JPEG XS RTP stream will produce a constant number
       of bytes per frame, and a constant number of RTP packets per frame. To
       reach the same guarantee with the slice packetization mode, an additional
       mechanism needs to be put in place. This can involve a constraint at the
       rate allocation stage in the JPEG XS encoder to impose a constant
       bit-rate at the slice level, the usage of padding data, or the insertion
       of empty RTP packets (i.e. a RTP packet whose payload data is empty).
     </t>

   </section>

   <section title="RTP Header Usage" anchor="rtp_hdr">

     <t>
       The format of the RTP header is specified in <xref target="RFC3550">RFC
       3550</xref> and reprinted in <xref target="rtp_header"></xref> for
       convenience. This RTP payload format uses the fields of the header in a
       manner consistent with that specification.
     </t>

     <t>
       The RTP payload (and the settings for some RTP header bits) for
       packetization units are specified in <xref target="payload_hdr"></xref>.
     </t>

     <figure anchor="rtp_header" title="RTP header according to RFC 3550">
       <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 |P|X|  CC   |M|     PT      |       sequence number         |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |                           timestamp                           |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |           synchronization source (SSRC) identifier            |
   +=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
   |            contributing source (CSRC) identifiers             |
   |                             ....                              |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       ]]></artwork>
     </figure>

     <t>
       The version (V), padding (P), extension (X), CSRC count (CC),
       sequence number, synchronization source (SSRC) and contributing
       source (CSRC) fields follow their respective definitions in
       <xref target="RFC3550">RFC 3550</xref>.
     </t>

     <t>
       The remaining RTP header information to be set according to this RTP
       payload format is set as follows:
     </t>

     <t>
     <list style="hanging">
       <t hangText="Marker (M) [1 bit]:"><vspace /><vspace />
         If progressive scan video is being transmitted, the marker bit
         denotes the end of a video frame. If interlaced video is being
         transmitted, it denotes the end of the field. The marker bit SHALL
         be set to 1 for the last packet of the video frame/field. It SHALL
         be set to 0 for other packets.
       </t>

       <t hangText="Payload Type (PT) [7 bits]:"><vspace /><vspace />
         A dynamically allocated payload type field that designates the
         payload as JPEG XS video.
       </t>

       <t hangText="Timestamp [32 bits]:"><vspace /><vspace />
         The RTP timestamp is set to the sampling timestamp of the content.
         A 90 kHz clock rate SHOULD be used.<vspace /><vspace />
         
         As per specified in <xref target="RFC3550">RFC 3550</xref> and
         <xref target="RFC4175">RFC 4175</xref>, the RTP timestamp designates the
         sampling instant of the first octet of the frame to which the RTP
         packet belongs. Packets SHALL not include data from multiple frames, and
         all packets belonging to the same frame SHALL have the same timestamp.
         Several successive RTP packets will consequently have equal timestamps
         if they belong to the same frame (that is until the marker bit is set
         to 1, marking the last packet of the frame), and the timestamp is only
         increased when a new frame begins.<vspace /><vspace />
         
         If the sampling instant does not correspond to an integer value of
         the clock, the value SHALL be truncated to the next lowest integer,
         with no ambiguity.
       </t>    
     </list>
     </t>
     
   </section>

   <section title="Payload Header Usage" anchor="payload_hdr">

     <t>
       The first four bytes of the payload of an RTP packet in this RTP
       payload format are referred to as the payload header. <xref
       target="payload_header"></xref> illustrates the structure of this
       payload header.
     </t>

     <figure anchor="payload_header" title="Payload header">
       <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
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
   |T|K|L| I |F counter|     SEP counter     |     P counter       |
   +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
       ]]></artwork>
     </figure>

     <t>
       The payload header consists of the following fields:
     </t>

     <t>
     <list style="hanging">
       <t hangText="Transmission mode (T) [1 bit]:"><vspace /><vspace />
         The T bit is set to indicate that packets are sent sequentially by the
         transmitter. A receiver could use this information to dimension its
         input buffer(s) accordingly. If T=0, nothing can be assumed about the
         transmission order and packets may be sent out-of-order by the
         transmitter. If T=1, packets SHALL be sent sequentially by the
         transmitter.
       </t>

       <t hangText="pacKetization mode (K) [1 bit]:"><vspace /><vspace />
         The K bit is set to indicate which packetization mode is used. K=0
         indicates codestream packetization mode, while K=1 indicates slice
         packetization mode. If Transmission mode (T) is set to 0, slice
         packetization mode SHALL be used and K SHALL be set to 1.
       </t>

       <t hangText="Last (L) [1 bit]:"><vspace /><vspace />
         The L bit is set to indicate the last packet of a packetization unit.
         As the end of the frame also ends the packet containing the last unit
         of the frame, the L bit is set whenever the M bit is set. If
         codestream packetization mode is used, L bit and M bit are
         equivalent.
       </t>

       <t hangText="Interlaced information (I) [2 bit]:"><vspace /><vspace />
         These 2 bits are used to indicate how the JPEG XS frame is scanned
         (progressive or interlaced). In case of an interlaced frame, they also
         indicate which JPEG XS picture segment the payload is part of (first
         or second).
         <list hangIndent="1">
           <t>
             00: The payload is progressively scanned.
           </t><t>
             01: Reserved for future use.
           </t><t>
             10: The payload is part of the first JPEG XS picture segment of
             an interlaced video frame. The height specified in the included
             JPEG XS codestream header is half of the height of the entire
             displayed image.
            </t><t>
             11: The payload is part of the second JPEG XS picture segment of
             an interlaced video frame. The height specified in the included
             JPEG XS codestream header is half of the height of the entire
             displayed image.
           </t>
         </list>
       </t>

       <t hangText="F counter [5 bits]:"><vspace /><vspace />
         The frame (F) counter identifies the frame number modulo 32 to which a
         packet belongs. Frame numbers are incremented by 1 for each frame
         transmitted. The frame number, in addition to the timestamp, may help
         the decoder manage its input buffer and bring packets back into their
         natural order.
       </t>

       <t hangText="SEP counter [11 bits]:"><vspace /><vspace />
         The Slice and Extended Packet (SEP) counter is used differently
         depending on the packetization mode.
        <list style="symbols">
          <t>In the case of codestream packetization mode (K=0), this counter
          resets whenever the Packet counter resets (see hereunder), and
          increments by 1 whenever the Packet counter overruns.
          </t>

          <t>In the case of slice packetization mode (K=1), this counter
          identifies the slice modulo 2047 to which the packet contributes. If
          the data belongs to the JPEG XS header segment, this field SHALL have
          its maximal value, namely 2047 = 0x07ff. Otherwise, it is the slice
          index modulo 2047. Slice indices are counted from 0 (corresponding to
          the top of the frame).
          </t>
        </list>
       </t>

       <t hangText="P counter [11 bits]:"><vspace /><vspace />
         The packet (P) counter identifies the packet number modulo 2048
         within the current packetization unit. It is set to 0 at the start of
         the packetization unit and incremented by 1 for every subsequent
         packet (if any) belonging to the same unit. Practically, if
         codestream packetization mode is enabled, this field counts the
         packets within a JPEG XS picture segment and is extended by the SEP
         counter when it overruns. If slice packetization mode is enabled,
         this field counts the packets within a slice or within the JPEG XS
         header segment.
       </t>
     </list>
     </t>

     </section>

     <section title="Payload Data">
     <t>
       The payload data of a JPEG XS RTP stream consists of a concatenation of
       multiple JPEG XS frames.
     </t>
     <t>
       Each JPEG XS frame is the concatenation of one or more packetization
       unit(s), as explained in <xref target="rtp_packet"></xref>.
       <xref target="rtp_cs_progressive_packet_data"></xref> depicts this
       layout for a progressive frame in the codestream packetization mode,
       <xref target="rtp_cs_interlaced_packet_data"></xref> depicts this
       layout for an interlaced frame in the codestream packetization mode, 
       <xref target="rtp_slice_progressive_packet_data"></xref> depicts this
       layout for a progressive frame in the slice packetization mode and
       <xref target="rtp_slice_interlaced_packet_data"></xref> depicts this
       layout for an interlaced frame in the slice packetization mode. The Frame
       counter value is not indicated because the value is constant for all
       packetization units of a given frame.
     </t>

     <figure anchor="rtp_cs_progressive_packet_data" title="Example of JPEG XS Payload Data (codestream packetization mode, progressive frame)">
       <artwork><![CDATA[
+=====[ Packetization unit (PU) #1 ]====+
|           Video support box           |  SEP counter = 0
|  +---------------------------------+  |  P counter = 0
|  :      Sub boxes of the VS box    :  |
|  +---------------------------------+  |
+- - - - - - - - - - - - - - - - - - - -+
|       Colour specification box        |
|  +---------------------------------+  |
|  :     Fields of the CS box        :  |
|  +---------------------------------+  |
+- - - - - - - - - - - - - - - - - - - -+
|          JPEG XS codestream           |
:             (part 1/q)                :  M=0, K=0, L=0, I=00
+---------------------------------------+
|          JPEG XS codestream           |  SEP counter = 0
|             (part 2/q)                |  P counter = 1
:                                       :  M=0, K=0, L=0, I=00
+---------------------------------------+
|          JPEG XS codestream           |  SEP counter = 0
|             (part 3/q)                |  P counter = 2
:                                       :  M=0, K=0, L=0, I=00
+---------------------------------------+
:                                       :
+---------------------------------------+
|          JPEG XS codestream           |  SEP counter = 1
|            (part 2049/q)              |  P counter = 0
:                                       :  M=0, K=0, L=0, I=00
+---------------------------------------+
:                                       :
+---------------------------------------+
|          JPEG XS codestream           |  SEP counter = (q-1) div 2048
|             (part q/q)                |  P counter = (q-1) mod 2048
:                                       :  M=1, K=0, L=1, I=00
+=======================================+
        ]]></artwork>
     </figure>

     <t><vspace blankLines='100' /></t>

     <figure anchor="rtp_cs_interlaced_packet_data" title="Example of JPEG XS Payload Data (codestream packetization mode, interlaced frame)">
       <artwork><![CDATA[
+=====[ Packetization unit (PU) #1 ]====+
|           Video support box           |  SEP counter = 0
+- - - - - - - - - - - - - - - - - - - -+  P counter = 0
|       Colour specification box        |
+- - - - - - - - - - - - - - - - - - - -+
|     JPEG XS codestream (1st field)    |
:             (part 1/q)                :  M=0, K=0, L=0, I=10
+---------------------------------------+
|     JPEG XS codestream (1st field)    |  SEP counter = 0
|             (part 2/q)                |  P counter = 1
:                                       :  M=0, K=0, L=0, I=10
+---------------------------------------+
:                                       :
+---------------------------------------+
|     JPEG XS codestream (1st field)    |  SEP counter = 1
|            (part 2049/q)              |  P counter = 0
:                                       :  M=0, K=0, L=0, I=10
+---------------------------------------+
:                                       :
+---------------------------------------+
|     JPEG XS codestream (1st field)    |  SEP counter = (q-1) div 2048
|             (part q/q)                |  P counter = (q-1) mod 2048
:                                       :  M=1, K=0, L=1, I=10
+===============[ PU #2 ]===============+
|           Video support box           |  SEP counter = 0
+- - - - - - - - - - - - - - - - - - - -+  P counter = 0
|       Colour specification box        |
+- - - - - - - - - - - - - - - - - - - -+
|     JPEG XS codestream (2nd field)    |
|             (part 1/q)                |
:                                       :  M=0, K=0, L=0, I=11
+---------------------------------------+
|     JPEG XS codestream (2nd field)    |  SEP counter = 0
|             (part 2/q)                |  P counter = 1
:                                       :  M=0, K=0, L=0, I=11
+---------------------------------------+
:                                       :
+---------------------------------------+
|     JPEG XS codestream (2nd field)    |  SEP counter = (q-1) div 2048
|             (part q/q)                |  P counter = (q-1) mod 2048
:                                       :  M=1, K=0, L=1, I=11
+=======================================+
        ]]></artwork>
     </figure>

     <t><vspace blankLines='100' /></t>

     <figure anchor="rtp_slice_progressive_packet_data" title="Example of JPEG XS Payload Data (slice packetization mode, progressive frame)">
       <artwork><![CDATA[
+===[ PU #1: JPEG XS Header segment ]===+
|           Video support box           |  SEP counter = 0x07FF
+- - - - - - - - - - - - - - - - - - - -+  P counter = 0
|       Colour specification box        |
+- - - - - - - - - - - - - - - - - - - -+
|      JPEG XS codestream header        |
|  +---------------------------------+  |
|  :  Markers and marker segments    :  |
|  +---------------------------------+  |  M=0, T=0, K=1, L=1, I=00
+==========[ PU #2: Slice #1 ]==========+
|  +---------------------------------+  |  SEP counter = 0
|  |           SLH Marker            |  |  P counter = 0
|  +---------------------------------+  |
|  :       Entropy Coded Data        :  |
|  +---------------------------------+  |  M=0, T=0, K=1, L=1, I=00
+==========[ PU #3: Slice #2 ]==========+
|               Slice #2                |  SEP counter = 1
|              (part 1/q)               |  P counter = 0
:                                       :  M=0, T=0, K=1, L=0, I=00
+---------------------------------------+
|               Slice #2                |  SEP counter = 1
|              (part 2/q)               |  P counter = 1
:                                       :  M=0, T=0, K=1, L=0, I=00
+---------------------------------------+
:                                       :
+---------------------------------------+
|               Slice #2                |  SEP counter = 1
|              (part q/q)               |  P counter = q-1
:                                       :  M=0, T=0, K=1, L=1, I=00
+=======================================+
:                                       :
+========[ PU #N: Slice #(N-1) ]========+
|             Slice #(N-1)              |  SEP counter = N-2
|              (part 1/r)               |  P counter = 0
:                                       :  M=0, T=0, K=1, L=0, I=00
+---------------------------------------+
:                                       :
+---------------------------------------+
|             Slice #(N-1)              |  SEP counter = N-2
|              (part r/r)               |  P counter = r-1
:             + EOC marker              :  M=1, T=0, K=1, L=1, I=00
+=======================================+
        ]]></artwork>
     </figure>

     <t><vspace blankLines='100' /></t>

     <figure anchor="rtp_slice_interlaced_packet_data" title="Example of JPEG XS Payload Data (slice packetization mode, interlaced frame)">
       <artwork><![CDATA[
+====[ PU #1: JPEG XS Hdr segment 1 ]===+
|           Video support box           |  SEP counter = 0x07FF
+- - - - - - - - - - - - - - - - - - - -+  P counter = 0
|       Colour specification box        |
+- - - - - - - - - - - - - - - - - - - -+
|      JPEG XS codestream header 1      |
|  +---------------------------------+  |
|  :   Markers and marker segments   :  |
|  +---------------------------------+  |  M=0, T=0, K=1, L=1, I=10
+====[ PU #2: Slice #1 (1st field) ]====+
|  +---------------------------------+  |  SEP counter = 0
|  |           SLH Marker            |  |  P counter = 0
|  +---------------------------------+  |
|  :       Entropy Coded Data        :  |
|  +---------------------------------+  |  M=0, T=0, K=1, L=1, I=10
+====[ PU #3: Slice #2 (1st field) ]====+
|              Slice #2                 |  SEP counter = 1
|             (part 1/q)                |  P counter = 0
:                                       :  M=0, T=0, K=1, L=0, I=10
+---------------------------------------+
|              Slice #2                 |  SEP counter = 1
|             (part 2/q)                |  P counter = 1
:                                       :  M=0, T=0, K=1, L=0, I=10
+---------------------------------------+
:                                       :
+---------------------------------------+
|              Slice #2                 |  SEP counter = 1
|             (part q/q)                |  P counter = q-1
:                                       :  M=0, T=0, K=1, L=1, I=10
+=======================================+
:                                       :
+==[ PU #N: Slice #(N-1) (1st field) ]==+
|            Slice #(N-1)               |  SEP counter = N-2
|             (part 1/r)                |  P counter = 0
:                                       :  M=0, T=0, K=1, L=0, I=10
+---------------------------------------+
:                                       :
+---------------------------------------+
|            Slice #(N-1)               |  SEP counter = N-2
|             (part r/r)                |  P counter = r-1
:            + EOC marker               :  M=1, T=0, K=1, L=1, I=10
+=======================================+
+===[ PU #N+1: JPEG XS Hdr segment 2 ]==+
|           Video support box           |  SEP counter = 0x07FF
+- - - - - - - - - - - - - - - - - - - -+  P counter = 0
|       Colour specification box        |
+- - - - - - - - - - - - - - - - - - - -+
|       JPEG XS codestream header 2     |
|  +---------------------------------+  |
|  :  Markers and marker segments    :  |
|  +---------------------------------+  |  M=0, T=0, K=1, L=1, I=11
+===[ PU #N+2: Slice #1 (2nd field) ]===+
|  +---------------------------------+  |  SEP counter = 0
|  |           SLH Marker            |  |  P counter = 0
|  +---------------------------------+  |
|  :      Entropy Coded Data         :  |
|  +---------------------------------+  |  M=0, T=0, K=1, L=1, I=11
+===[ PU #N+3: Slice #2 (2nd field) ]===+
|               Slice #2                |  SEP counter = 1
|              (part 1/s)               |  P counter = 0
:                                       :  M=0, T=0, K=1, L=0, I=11
+---------------------------------------+
|               Slice #2                |  SEP counter = 1
|              (part 2/s)               |  P counter = 1
:                                       :  M=0, T=0, K=1, L=0, I=11
+---------------------------------------+
:                                       :
+---------------------------------------+
|               Slice #2                |  SEP counter = 1
|              (part s/s)               |  P counter = s-1
:                                       :  M=0, T=0, K=1, L=1, I=11
+=======================================+
:                                       :
+==[ PU #2N: Slice #(N-1) (2nd field) ]=+
|             Slice #(N-1)              |  SEP counter = N-2
|              (part 1/t)               |  P counter = 0
:                                       :  M=0, T=0, K=1, L=0, I=11
+---------------------------------------+
:                                       :
+---------------------------------------+
|             Slice #(N-1)              |  SEP counter = N-2
|              (part t/t)               |  P counter = t-1
:             + EOC marker              :  M=1, T=0, K=1, L=1, I=11
+=======================================+
        ]]></artwork>
     </figure>
     </section>

     <section title="Traffic Shaping and Delivery Timing" anchor="tsdt">
       <t>
         The traffic shaping and delivery timing SHALL be in accordance with the
         Network Compatibility Model compliance definitions specified in <xref
         target="SMPTE-ST2110-21">SMPTE ST 2110-21</xref> for either Narrow
         Linear Senders (Type NL) or Wide Senders (Type W). The session
         description SHALL include a format-specific parameter of either
         TP=2110TPNL or TP=2110TPW to indicate compliance with Type NL or Type W
         respectively.
       </t>
       <t>
         NOTE: The Virtual Receiver Buffer Model compliance definitions of
         ST 2110-21 do not apply.
       </t>
     </section>

   </section>

   <section title="Congestion Control Considerations">
     <t>
       Congestion control for RTP SHALL be used in accordance with
       <xref target="RFC3550">RFC 3550</xref>, and with any applicable
       RTP profile: e.g., <xref target="RFC3551">RFC 3551</xref>.
       An additional requirement if best-effort service is being
       used is users of this payload format SHALL monitor packet loss to
       ensure that the packet loss rate is within acceptable parameters.
       <xref target="RFC8083">Circuit Breakers</xref> is an update to
       <xref target="RFC3550">RTP</xref> that defines criteria for when one
       is required to stop sending RTP Packet Streams and applications
       implementing this standard SHALL comply with it.
       <xref target="RFC8085">RFC 8085</xref> provides additional information
       on the best practices for applying congestion control to UDP streams.
     </t>

<!--
     <t>
       The bitrate adaptation necessary for obeying the congestion control
       principle is easily achievable when real-time encoding is used, for
       example, by adequately tuning the quantization parameter.
     </t>
-->
   </section>

   <section title="Payload Format Parameters">

     <section title="Media Type Definition" anchor="media_type_def">

<!--
FIXME
       <t>
         The media subtype for the JPEG XS codec is being
         submitted to the IETF in order to be allocated from the IETF tree.
       </t>
-->
       <t>
         <list style="hanging" hangIndent="1">
           <t hangText="Type name:">video</t>
           <t hangText="Subtype name:">jxsv</t>
           <t hangText="Required parameters:">
             <list hangIndent="1">
               <t>
                 rate: The RTP timestamp clock rate. Applications using this
                 payload format SHOULD use a value of 90000.
               </t><t>
                 transmode: Indicates if packets are sent sequentially by the
                 transmitter. A receiver could use this information to
                 dimension its input buffer(s) accordingly. If set to 0,
                 nothing can be assumed about the transmission order and
                 packets may be sent out-of-order. If value is 1, packets SHALL
                 be sent sequentially by the transmitter.
               </t>
             </list>
           </t>
           <t hangText="Optional parameters:">
             <list hangIndent="1">
               <t>
                 profile: The JPEG XS profile in use, as defined in <xref
                 target="ISO21122-2">ISO/IEC 21122-2 (JPEG XS Part 2)</xref>.
                 Any white space in the profile name SHALL be replaced by a
                 dash (-). Examples are 'Main-444.12' or 'High-444.12'. 
               </t><t>
                 level: The JPEG XS level in use, as defined in <xref
                 target="ISO21122-2">ISO/IEC 21122-2 (JPEG XS Part 2)</xref>.
                 Any white space in the level name SHALL be replaced by a dash
                 (-). Examples are '2k-1' or '4k-2'.
               </t><t>
                 sublevel: The JPEG XS sublevel in use, as defined in <xref
                 target="ISO21122-2">ISO/IEC 21122-2 (JPEG XS Part 2)</xref>.
                 Any white space in the sublevel name SHALL be replaced by a
                 dash (-). Examples are 'Sublev3bpp' or 'Sublev6bpp'.
               </t><t>
                 depth: Determines the number of bits per sample. This is an
                 integer with typical values including 8, 10, 12, and 16.
               </t><t>
                 width: Determines the number of pixels per line. This is an
                 integer between 1 and 32767.
               </t><t>
                 height: Determines the number of lines per frame. This is an
                 integer between 1 and 32767.
               </t><t>
                 exactframerate: Signals the frame rate in frames per second.
                 Integer frame rates SHALL be signaled as a single decimal
                 number (e.g. "25") whilst non-integer frame rates SHALL be
                 signaled as a ratio of two integer decimal numbers separated
                 by a "forward-slash" character (e.g. "30000/1001"), utilizing
                 the numerically smallest numerator value possible.
               </t><t>
                 interlace: If this parameter name is present, it indicates
                 that the video is interlaced, or that the video is
                 Progressive segmented Frame (PsF). If this parameter name is
                 not present, the progressive video format SHALL be assumed.
               </t><t>
                 segmented: If this parameter name is present, and the
                 interlace parameter name is also present, then the video is a
                 Progressive segmented Frame (PsF). Signaling of this
                 parameter without the interlace parameter is forbidden.
               </t><t>
                 sampling: Signals the colour difference signal sub-sampling
                 structure.
                 <list hangIndent="2">
                   <t>
                 Signals utilizing the non-constant luminance
                 Y'C'B C'R signal format of Recommendation ITU-R BT.601-7,
                 Recommendation ITU-R BT.709-6, Recommendation ITU-R BT.2020-2,
                 or Recommendation ITU-R BT.2100 SHALL use the appropriate one
                 of the following values for the Media Type Parameter
                 "sampling":
                 <figure><artwork><![CDATA[
      YCbCr-4:4:4  (4:4:4 sampling).
      YCbCr-4:2:2  (4:2:2 sampling).
      YCbCr-4:2:0  (4:2:0 sampling).
                 ]]></artwork></figure>
                   </t><t>
                 Signals utilizing the Constant Luminance Y'C C'BC C'RC signal
                 format of Recommendation ITU-R BT.2020-2 SHALL use the
                 appropriate one of the following values for the Media Type
                 Parameter "sampling":
                 <figure><artwork><![CDATA[
      CLYCbCr-4:4:4 (4:4:4 sampling).
      CLYCbCr-4:2:2 (4:2:2 sampling).
      CLYCbCr-4:2:0 (4:2:0 sampling).
                 ]]></artwork></figure>
                   </t><t>
                 Signals utilizing the constant intensity I CT CP signal format
                 of Recommendation ITU-R BT.2100 SHALL use the appropriate one
                 of the following values for the Media Type Parameter
                 "sampling":
                 <figure><artwork><![CDATA[
      ICtCp-4:4:4  (4:4:4 sampling).
      ICtCp-4:2:2  (4:2:2 sampling).
      ICtCp-4:2:0  (4:2:0 sampling).
                 ]]></artwork></figure>
                   </t><t>
                 Signals utilizing the 4:4:4 R' G' B' or RGB signal format
                 (such as that of Recommendation ITU-R BT.601, Recommendation
                 ITU-R BT.709, Recommendation ITU-R BT.2020, Recommendation
                 ITU-R BT.2100, SMPTE ST 2065-1 or ST 2065-3) SHALL use the
                 following value for the Media Type Parameter sampling.
                 <figure><artwork><![CDATA[
      RGB          RGB or R' G' B' samples.
                 ]]></artwork></figure>
                   </t><t>
                 Signals utilizing the 4:4:4 X' Y' Z' signal format (such as
                 defined in SMPTE ST 428-1) SHALL use the following value for
                 the Media Type Parameter sampling.
                 <figure><artwork><![CDATA[
      XYZ          X' Y' Z' samples.
                 ]]></artwork></figure>
                   </t><t>
                 Key signals as defined in SMPTE RP 157 SHALL use the value key
                 for the Media Type Parameter sampling. The Key signal is
                 represented as a single component.
                 <figure><artwork><![CDATA[
      KEY          Samples of the key signal.
                 ]]></artwork></figure>
                   </t><t>
                 Signals utilizing a colour sub-sampling other than what is
                 defined here SHALL use the following value for the Media
                 Type Parameter sampling.
                 <figure><artwork><![CDATA[
      UNSPECIFIED  Sampling information is not specified in the SDP.
                   It is only signaled in the payload.
                 ]]></artwork></figure>
                   </t>
                 </list>
               </t><t>
                 colorimetry: Specifies the system colorimetry used by the
                 image samples. Valid values and their specification are:
                 <figure><artwork><![CDATA[
    BT601-5      As specified in ITU-R Recommendation BT.601-5.
    BT709-2      As specified in ITU-R Recommendation BT.709-2.
    SMPTE240M    As specified in SMPTE ST 240M.
    BT601        As specified in Recommendation ITU-R BT.601-7.
    BT709        As specified in Recommendation ITU-R BT.709-6.
    BT2020       As specified in Recommendation ITU-R BT.2020-2.
    BT2100       As specified in Recommendation ITU-R BT.2100
                 Table 2 titled "System colorimetry".
    ST2065-1     As specified in SMPTE ST 2065-1 Academy Color
                 Encoding Specification (ACES).
    ST2065-3     As specified for Academy Density Exchange
                 Encoding (ADX) in SMPTE ST 2065-3.
    XYZ          As specified in ISO/IEC 11664-1 section titled
                 "1931 Observer".
    UNSPECIFIED  Colorimetry is not specified in the SDP. It is
                 signaled in the payload by the Color Specification
                 Box, specified in ISO/IEC 21122-3, or it must be
                 manually coordinated between sender and receiver.
                 ]]></artwork></figure>
                 Signals utilizing the Recommendation ITU-R BT.2100 colorimetry
                 SHOULD also signal the representational range using the
                 optional parameter RANGE defined below.
               </t><t>
                 Signals utilizing the UNSPECIFIED colometry might require manual
                 coordination between the sender and the receiver.
               </t><t>
                 TCS: Transfer Characteristic System. This parameter specifies
                 the transfer characteristic system of the image samples.
                 Valid values and their specification are:
                 <figure><artwork><![CDATA[
    SDR          (Standard Dynamic Range) Video streams of
                 standard dynamic range, that utilize the OETF
                 of Recommendation ITU-R BT.709 or Recommendation
                 ITU-R BT.2020. Such streams SHALL be assumed to
                 target the EOTF specified in ITU-R BT.1886.
    PQ           Video streams of high dynamic range video that
                 utilize the Perceptual Quantization system of
                 Recommendation ITU-R BT.2100.
    HLG          Video streams of high dynamic range video that
                 utilize the Hybrid Log-Gamma system of
                 Recommendation ITU-R BT.2100.
    UNSPECIFIED  Video streams whose transfer characteristics are
                 not specified in the SDP. The transfer
                 characteristics is signaled by the payload as
                 specified in ISO 21122-3 or must be manually
                 coordinated between sender and receiver.
                 ]]></artwork></figure>
               </t><t>
                 RANGE: This parameter SHOULD be used to signal the encoding
                 range of the sample values within the stream. When paired with
                 ITU Rec BT.2100 colorimetry, this parameter has two allowed
                 values NARROW and FULL, corresponding to the ranges specified
                 in table 9 of ITU Rec BT.2100. In any other context, this
                 parameter has three allowed values: NARROW, FULLPROTECT, and
                 FULL, which correspond to the ranges specified in
                 SMPTE RP 2077. In the absence of this parameter, and for all
                 but the UNSPECIFIED colometries, NARROW SHALL be the assumed
                 value. When paired with the UNSPECIFIED colometry, FULL SHALL
                 be the default assumed value.
               </t>
             </list>
           </t>
           <t hangText="Encoding considerations:"><vspace /><vspace />
             This media type is framed and binary; see Section 4.8 in
             <xref target="RFC6838">RFC 6838</xref>.
           </t>
           <t hangText="Security considerations:"><vspace /><vspace />
             Please see the Security Considerations section in RFC XXXX
           </t>
         </list>
       </t>
<!--
       <figure><artwork><![CDATA[
  Type name:  video

  Subtype name:  jxsv

  Required parameters:

     encode:  type of JPEG XS format. Permissible values for encode are:
       ]]></artwork></figure>
<t></t>
  -->
     </section>

   <section title="Mapping to SDP">

     <section title="General">
       <t>
         A Session Description Protocol (SDP) object SHALL be created for each
         RTP stream and it SHALL be in accordance with the provisions of
         <xref target="SMPTE-ST2110-10">SMPTE ST 2110-10</xref>.
       </t>
       <t>
         The information carried in the media type specification has a
         specific mapping to fields in the Session Description Protocol (SDP),
         which is commonly used to describe RTP sessions. This information is
         redundant with the information found in the payload data (namely, in
         the JPEG XS header segment) and SHALL be consistent with it. In case
         of discrepancy between parameters values found in the payload data
         and in the SDP fields, the values from the payload data SHALL
         prevail. 
       </t>
     </section>

     <section title="Media type and subtype">
       <t>
         The media type ("video") goes in SDP "m=" as the media name.
       </t>
       <t>
         The media subtype ("jxsv") goes in SDP "a=rtpmap" as the encoding
         name, followed by a slash ("/") and the required parameter "rate"
         corresponding to the RTP timestamp clock rate (which for the payload
         format defined in this document SHOULD be 90000). The required
         parameter "transmode" and the additional optional parameters
         go in the SDP "a=fmtp" attribute by copying them directly from the
         MIME media type string as a semicolon-separated list of
         parameter=value pairs.
       </t><t>
         A sample SDP mapping for JPEG XS video is as follows:
       <figure><artwork><![CDATA[
     m=video 30000 RTP/AVP 112
     a=rtpmap:112 jxsv/90000
     a=fmtp:112 transmode=1;sampling=YCbCr-4:2:2;width=1920;
                height=1080;depth=10;colorimetry=BT709;TCS=SDR;
                RANGE=FULL;TP=2110TPNL
       ]]></artwork></figure>
       </t><t>
         In this example, a JPEG XS RTP stream is being sent to UDP destination
         port 30000, with an RTP dynamic payload type of 112 and a media clock
         rate of 90000 Hz. Note that the "a=fmtp:" line has been wrapped to fit
         this page, and will be a single long line in the SDP file.
       </t>
     </section>
     <section title="Traffic shaping">
       <t>
         The SDP object SHALL include the TP parameter (either 2110TPNL or
         2110TPW as specified in <xref target="tsdt" />)
         and may include the CMAX parameter as specified in
         <xref target="SMPTE-ST2110-21">SMPTE ST 2110-21</xref>.
       </t>
     </section>

     <section title="Offer/Answer Considerations">
       <t>
         All parameters are declarative.
       </t>
     </section>
   </section>
   </section>

   <section title="IANA Considerations">
     <t>
       This memo requests that IANA registers video/jxsv
       as specified in <xref target="media_type_def"></xref>.
       The media type is also requested to be added to the IANA registry for
       <eref target="http://www.iana.org/assignments/rtp-parameters">"RTP Payload Format MIME types"</eref>.
     </t>
   </section>

   <section title="Security Considerations">
     <!-- FIXME: imported from RFC 7587 -->
     <t>
     <!--
       Use of VBR is subject to the security considerations in
       <xref target="RFC6562">RFC 6562</xref>.
       -->

       RTP packets using the payload format defined in this specification
       are subject to the security considerations discussed in the
       <xref target="RFC3550">RTP specification</xref> and in any applicable
       RTP profile such as <xref target="RFC3551">RTP/AVP</xref>,
       <xref target="RFC4585">RTP/AVPF</xref>,
       <xref target="RFC3711">RTP/SAVP</xref>, or
       <xref target="RFC5124">RTP/SAVPF</xref>. This implies
       that confidentiality of the media streams is achieved by encryption.
     </t>

     <t>
       However, as <xref target="RFC7202">"Securing the RTP Framework: Why RTP
       Does Not Mandate a Single Media Security Solution"</xref>
       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 lies on anyone using RTP in an
       application. They can find guidance on available security mechanisms
       and important considerations in
       <xref target="RFC7201">"Options for Securing RTP Sessions"</xref>.
       Applications SHOULD use one or more appropriate strong
       security mechanisms.
     </t>

     <t>
       This payload format and the JPEG XS encoding do not exhibit any
       substantial non-uniformity, either in output or in complexity to perform
       the decoding operation and thus are unlikely to pose a denial-of-service
       threat due to the receipt of pathological datagrams.
     </t>
     <!-- /FIXME -->

     <!-- FIXME: imported from RFC 4175 -->
     <t>
       It is important to note that HD or UHDTV JPEG XS-encoded video can have
       significant bandwidth requirements (typically more than 1 Gbps for
       ultra high-definition video, especially if using high framerate).
       This is sufficient to cause potential for denial-of-service if
       transmitted onto most currently available Internet paths.
     </t>

     <t>
       Accordingly, if best-effort service is being used, users of this
       payload format SHALL monitor packet loss to ensure that the packet
       loss rate is within acceptable parameters. Packet loss is considered
       acceptable if a TCP flow across the same network path, and
       experiencing the same network conditions, would achieve an average
       throughput, measured on a reasonable timescale, that is not less than
       the RTP flow is achieving. This condition can be satisfied by
       implementing congestion control mechanisms to adapt the transmission
       rate (or the number of layers subscribed for a layered multicast
       session), or by arranging for a receiver to leave the session if the
       loss rate is unacceptably high.
     </t>

     <t>
       This payload format may also be used in networks that provide
       quality-of-service guarantees. If enhanced service is being used,
       receivers SHOULD monitor packet loss to ensure that the service that
       was requested is actually being delivered. If it is not, then they
       SHOULD assume that they are receiving best-effort service and behave
       accordingly.
     </t>
     <!-- /FIXME -->
   </section>

   <section title="RFC Editor Considerations">
     <t>
       Note to RFC Editor: This section may be removed after carrying out
       all the instructions of this section.
     </t>

     <t>
       RFC XXXX is to be replaced by the RFC number this specification
       receives when published.
     </t>
   </section>

 </middle>

 <!--  *****BACK MATTER ***** -->

 <back>
   <!-- References split into informative and normative -->

   <!-- There are 2 ways to insert reference entries from the citation libraries:
    1. define an ENTITY at the top, and use "ampersand character"RFC2629; here (as shown)
    2. simply use a PI "less than character"?rfc include="reference.RFC.2119.xml"?> here
       (for I-Ds: include="reference.I-D.narten-iana-considerations-rfc2434bis.xml")

    Both are cited textually in the same manner: by using xref elements.
    If you use the PI option, xml2rfc will, by default, try to find included files in the same
    directory as the including file. You can also define the XML_LIBRARY environment variable
    with a value containing a set of directories to search. These can be either in the local
    filing system or remote ones accessed by http (http://domain/dir/... ).-->

   <references title="Normative References">
     <!--?rfc include="http://xml.resource.org/public/rfc/bibxml/reference.RFC.2119.xml"?-->
     &RFC2119;
     &RFC3264;
     &RFC3550;
     &RFC3551;
     &RFC3711;
     &RFC6838;
     &RFC8083;
     &RFC8085;
   <!--
     &RFC2326;
     &RFC4566;
     &RFC6562;
     -->

<!-- the following is the minimum to make xml2rfc happy
     <reference anchor="min_ref">
       <front>
         <title>Minimal Reference</title>
         <author initials="authInitials" surname="authSurName">
           <organization></organization>
         </author>
         <date year="2006" />
       </front>
     </reference>
-->
<!-- unused reference
     <reference anchor="ISO15444-1" target="https://www.iso.org/standard/70018.html">
       <front>
         <title>
           Information technology - JPEG 2000 image coding system: Core coding system
         </title>
         <author>
           <organization>International Organization for Standardization (ISO) -
           International Electrotechnical Commission (IEC)</organization>
         </author>
         <date year="2016"/>
       </front>
       <seriesInfo name="ISO/IEC" value="IS 15444-1"/>
     </reference>
-->

     <reference anchor="ISO21122-1" target="https://www.iso.org/standard/74535.html">
       <front>
         <title>
           Information technology - JPEG XS low-latency lightweight image coding
           system - Part 1: Core coding system
         </title>
         <author>
           <organization>International Organization for Standardization (ISO) -
           International Electrotechnical Commission (IEC)</organization>
         </author>
         <date year="2019"/>
       </front>
       <seriesInfo name="ISO/IEC" value="IS 21122-1"/>
     </reference>

     <reference anchor="ISO21122-2" target="https://www.iso.org/standard/74536.html">
       <front>
         <title>
           Information technology - JPEG XS low-latency lightweight image coding
           system - Part 2: Profiles and buffer models
         </title>
         <author>
           <organization>International Organization for Standardization (ISO) -
           International Electrotechnical Commission (IEC)</organization>
         </author>
         <date year="2019"/>
       </front>
       <seriesInfo name="ISO/IEC" value="IS 21122-2"/>
     </reference>

     <reference anchor="ISO21122-3" target="https://www.iso.org/standard/74537.html">
       <front>
         <title>
           Information technology - JPEG XS low-latency lightweight image coding
           system - Part 3: Transport and container formats
         </title>
         <author>
           <organization>International Organization for Standardization (ISO) -
           International Electrotechnical Commission (IEC)</organization>
         </author>
         <date year="2019"/>
       </front>
       <seriesInfo name="ISO/IEC" value="IS 21122-3"/>
     </reference>

<!-- unused reference
     <reference anchor="ISO18477-3" target="https://www.iso.org/standard/66071.html">
       <front>
         <title>
           Information technology - Scalable compression and coding of continuous-tone still images - Part 3: Box file format
         </title>
         <author>
           <organization>International Organization for Standardization (ISO) -
           International Electrotechnical Commission (IEC)</organization>
         </author>
         <date year="2015"/>
       </front>
       <seriesInfo name="ISO/IEC" value="18477-3:2015"/>
     </reference>
-->
     <reference anchor="SMPTE-ST2110-10" target="https://doi.org/10.5594/SMPTE.ST2110-10.2017">
       <front>
         <title>
           SMPTE Standard - Professional Media Over Managed IP Networks: System Timing and Definitions
         </title>
         <author>
           <organization>Society of Motion Picture and Television Engineers</organization>
         </author>
         <date year="2017"/>
       </front>
       <seriesInfo name="SMPTE" value="ST 2110-10:2017"/>
     </reference>

     <reference anchor="SMPTE-ST2110-21" target="https://doi.org/10.5594/SMPTE.ST2110-21.2017">
       <front>
         <title>
           SMPTE Standard - Professional Media Over Managed IP Networks: Traffic Shaping and Delivery Timing for Video
         </title>
         <author>
           <organization>Society of Motion Picture and Television Engineers</organization>
         </author>
         <date year="2017"/>
       </front>
       <seriesInfo name="SMPTE" value="ST 2110-21:2017"/>
     </reference>

<!-- unused reference
     <reference anchor="SMPTE-ST2110-22" target="TBD">
       <front>
         <title>
           SMPTE Standard - Professional Media Over Managed IP Networks: Constant Bit-Rate Compressed Video
         </title>
         <author>
           <organization>Society of Motion Picture and Television Engineers</organization>
         </author>
         <date year="201X"/>
       </front>
       <seriesInfo name="SMPTE" value="ST 2110-22:201X"/>
     </reference>
-->

   </references>

   <references title="Informative References">
     &RFC4175;
     &RFC4585;
     &RFC5124;
     &RFC7201;
     &RFC7202;
<!--
     &RFC7273;

     <reference anchor="SMPTE-ST2059" target="https://doi.org/10.5594/SMPTE.ST2059-1.2015">
       <front>
         <title>
           SMPTE Standard - Generation and Alignment of Interface Signals to the SMPTE Epoch
         </title>
         <author>
           <organization>Society of Motion Picture and Television Engineers</organization>
         </author>
         <date year="2015"/>
       </front>
       <seriesInfo name="SMPTE" value="ST 2059-1:2015"/>
     </reference>
-->
   </references>
 </back>
</rfc>
