<?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 RFC3264 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3264.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 RFC3552 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.3552.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 RFC4568 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.4568.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 RFC5226 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.5226.xml">
<!ENTITY RFC6562 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6562.xml">
<!ENTITY RFC6838 SYSTEM "http://xml.resource.org/public/rfc/bibxml/reference.RFC.6838.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 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-09" 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>https://www.intopix.com/</uri>
     </address>
   </author>

  <author fullname="Antonin Descampe" initials="A.D."
           surname="Descampe">
     <organization abbrev="UCL">Universit&eacute; catholique de Louvain</organization>
     <address>
       <postal>
         <street>Place du Levant, 3 - bte L5.03.02</street>
         <city>1348 Louvain-la-Neuve</city>
         <country>Belgium</country>
       </postal>
       <phone>+32 10 47 25 97</phone>
       <email>antonin.descampe@uclouvain.be</email>
       <uri>https://uclouvain.be/en/research-institutes/icteam</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>https://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="Tim Bruylants" initials="T.B."
           surname="Bruylants">
     <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>t.bruylants@intopix.com</email>
       <uri>https://www.intopix.com/</uri>
     </address>
   </author>

   <date year="2021" />

   <!-- 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 [ISO21122-1] 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 frame mode (progressive or interlaced),
         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.
       </t>
       <t>
       	 In the case of a progressive video stream, each JPEG XS frame consists of one single
         JPEG XS picture segment.
       </t>
       <t>
         In the case of an interlaced video stream, each JPEG XS frame is made of two
         concatenated JPEG XS picture segments. The codestream of each picture segment corresponds
         exclusively to one of the two fields of the interlaced frame. Both picture segments
         SHALL contain identical boxes (i.e. concatenation of the video support box and the
         colour specification box is byte exact the same for both picture segments of the frame).
       </t>
       <t>
       	 Note that the interlaced mode as signaled by the frat field in the video support
       	 box indicates either progressive, interlaced top-field first, or interlaced       	 
       	 bottom-field first mode. Thus, its value too SHALL be identical in both picture segments.
       </t>
     </section>
   </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 JPEG XS picture segment (i.e. 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>
       Due 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 is required. 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 all 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 SHALL 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. This information allows a receiver 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. In the case that the Transmission mode (T) is
         set to 0, the 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>
           <t hangText="00:">
             The payload is progressively scanned.
           </t>
           <t hangText="01:">
             Reserved for future use.
           </t>
           <t hangText="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 hangText="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. Within the RTP stream, all of the video support boxes
       and all of the colour specification boxes SHALL retain their respective layouts
       for each JPEG XS frame. Thus, each video support box in the RTP stream SHALL
       define the same sub boxes. The effective values in the boxes are allowed to
       change under the condition that their relative byte offsets SHALL not change.
     </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>
   </section>

   <section title="Payload Format Parameters">
     <section title="Media Type Definition" anchor="media_type_def">
       <t>
         <list style="hanging">
           <t hangText="Type name:">video</t>
           <t hangText="Subtype name:">jxsv</t>
           <t hangText="Required parameters:">
             <list>
               <t hangText="rate:">
               	 The RTP timestamp clock rate. Applications using this payload format SHALL use a value of 90000.
               </t>
               <t hangText="transmode:">
               	 This parameter specifies the configured transmission mode as defined
               	 by the Transmission mode (T) bit in the payload header of <xref target="payload_hdr" />.
               	 This value SHALL be equal to the T bit value configured in the RTP stream (i.e. 0 for out-of-order-allowed or 1 for sequential).
               </t>
             </list>
           </t>
           <t hangText="Optional parameters:">
             <list>
               <t hangText="packetmode:">
                 This parameter specifies the configured packetization mode as defined
                 by the pacKetization mode (K) bit in the payload header of <xref target="payload_hdr" />.
                 If specified, this value SHALL be equal to the K bit value configured in the RTP stream (i.e. 0 for codestream or 1 for slice).
               </t>
               <t hangText="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 hangText="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 hangText="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 hangText="depth:">
                 Determines the number of bits per sample. This is an
                 integer with typical values including 8, 10, 12, and 16.
               </t>
               <t hangText="width:">
                 Determines the number of pixels per line. This is an
                 integer between 1 and 32767.
               </t>
               <t hangText="height:">
                 Determines the number of lines per frame. This is an
                 integer between 1 and 32767.
               </t>
               <t hangText="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 hangText="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 hangText="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 hangText="sampling:">
                 Signals the colour difference signal sub-sampling
                 structure.
                 <vspace /><vspace />
                 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>
                 <vspace /><vspace />
                 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>
                 <vspace /><vspace />
                 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>
                 <vspace /><vspace />
                 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>
                 <vspace /><vspace />
                 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>
                 <vspace /><vspace />
                 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>
                 <vspace /><vspace />
                 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 signaled by the payload.)
                 ]]></artwork></figure>
               </t>
               <t hangText="colorimetry:">
                 Specifies the system colorimetry used by the
                 image samples. Valid values and their specification are:
                 <figure><artwork><![CDATA[
         BT601-5      ITU-R Recommendation BT.601-5.
         BT709-2      ITU-R Recommendation BT.709-2.
         SMPTE240M    SMPTE ST 240M.
         BT601        ITU-R Recommendation BT.601-7.
         BT709        ITU-R Recommendation BT.709-6.
         BT2020       ITU-R Recommendation BT.2020-2.
         BT2100       ITU-R Recommendation BT.2100
                      Table 2 titled "System colorimetry".
         ST2065-1     SMPTE ST 2065-1 Academy Color Encoding
                      Specification (ACES).
         ST2065-3     SMPTE ST 2065-3 Academy Density Exchange
                      Encoding (ADX).
         XYZ          ISO/IEC 11664-1, section titled
                      "1931 Observer".
         UNSPECIFIED  Colorimetry is signaled in the payload by
                      the Color Specification Box of 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. Signals utilizing the
                 UNSPECIFIED colorimetry might require manual coordination between
                 the sender and the receiver.
               </t>
               <t hangText="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 that
                      utilize the OETF of ITU-R Recommendation
                      BT.709 or ITU-R Recommendation BT.2020. Such
                      streams SHALL be assumed to target the EOTF
                      specified in ITU-R Recommendation BT.1886.
         PQ           High dynamic range video streams that utilize
                      the Perceptual Quantization system of ITU-R
                      Recommendation BT.2100.
         HLG          High dynamic range video streams that utilize
                      the Hybrid Log-Gamma system of ITU-R
                      Recommendation BT.2100.
         UNSPECIFIED  Video streams whose transfer characteristics
                      are signaled by the payload as specified in
                      ISO/IEC 21122-3, or must be manually
                      coordinated between sender and receiver.
                 ]]></artwork></figure>
               </t>
               <t hangText="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>
     </section>

     <section title="Mapping to SDP">
       <section title="General">
         <t>
           A <xref target="RFC4566">Session Description Protocol (SDP)</xref> media description 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 the SDP fields, 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 SHALL 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 media description 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>
           When XS is offered using <xref target="RFC3264">An Offer/Answer Model with Session Description Protocol (SDP)</xref>
           for negotiation for unicast usage, the following limitations and rules apply:
         </t>
         <t>
           All parameters are declarative, i.e. apply only to media sent by the entity
           that generated the SDP <xref target="RFC4568">RFC 4568</xref>. Thus, a declarative parameter in an offer
           applies to media sent by the offeror, whereas a declarative parameter in an
           answer applies to media sent by the answerer. All parameters must be
           supported by both sides, i.e. the answerer SHALL either maintain all parameters
           or remove the media format (payload type) completely if one or more of the
           parameter values are not supported.
         </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">
     <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>

     <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>
   </section>

   <section title="Acknowledgments">
     <t>
       The authors would like to thank the following people for their
       valuable contributions to this specification: Arnaud Germain,
       Alexandre Will&egrave;me, Ga&euml;l Rouvroy, and Jean-Baptise Lorent.
     </t>
   </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;
     &RFC4566;
     &RFC4568;
     &RFC6838;
     &RFC8083;
     &RFC8085;

     <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>

     <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>
   </references>

   <references title="Informative References">
     &RFC4175;
     &RFC4585;
     &RFC5124;
     &RFC7201;
     &RFC7202;
   </references>
 </back>
</rfc>
