<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [
  <!ENTITY nbsp    "&#160;">
  <!ENTITY zwsp   "&#8203;">
  <!ENTITY nbhy   "&#8209;">
  <!ENTITY wj     "&#8288;">
]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.5 (Ruby 3.0.2) -->
<?rfc docmapping="yes"?>
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-hsyang-avtcore-rtp-haptics-01" category="std" consensus="true" submissionType="IETF" tocInclude="true" sortRefs="true" symRefs="true" version="3">
  <!-- xml2rfc v2v3 conversion 3.19.2 -->
  <front>
    <title abbrev="RTP-Payload-Haptic">RTP Payload for Haptics</title>
    <seriesInfo name="Internet-Draft" value="draft-hsyang-avtcore-rtp-haptics-01"/>
    <author initials="" surname="HS Yang" fullname="Hyunsik Yang">
      <organization>InterDigital</organization>
      <address>
        <postal>
          <country>USA</country>
        </postal>
        <email>hyunsik.yang@interdigital.com</email>
      </address>
    </author>
    <author initials="X." surname="de Foy" fullname="Xavier de Foy">
      <organization>InterDigital</organization>
      <address>
        <postal>
          <country>Canada</country>
        </postal>
        <email>xavier.defoy@interdigital.com</email>
      </address>
    </author>
    <date/>
    <area>Transport</area>
    <workgroup>avtcore</workgroup>
    <abstract>
      <?line 51?>

<t>This memo describes an RTP payload format for the MPEG-I haptic data. A haptic media stream is composed of MIHS units including a MIHS(MPEG-I Haptic Stream)  unit header and zero or more MIHS packets. The RTP payload header format allows for packetization of a MIHS unit in an RTP packet payload as well as fragmentation of a MIHS unit into multiple RTP packets.</t>
    </abstract>
  </front>
  <middle>
    <?line 55?>

<section anchor="introduction">
      <name>Introduction</name>
      <t>Haptics provides users with tactile effects in addition to audio and video, allowing them to experience sensory immersion. Haptic data is mainly transmitted to devices that act as actuators and provides them with information to operate according to the values defined in haptic effects. The IETF is registering haptics as a primary media type akin to audio and video <xref target="I-D.ietf-mediaman-haptics"/>.</t>
      <t>The MPEG Haptics Coding standard <xref target="ISO.IEC.23090-31"/> defines the data formats, metadata, and codec architecture to encode, decode, synthesize and transmit haptic signals. It defines the "MIHS unit" as a unit of packetization suitable for streaming, and similar in essence to the NAL unit defined in some video specifications. This document describes how haptic data (MIHS units) can be transmitted using the RTP protocol. This document followed recommendations in <xref target="RFC8088"/> and <xref target="RFC2736"/> for RTP payload format writers.</t>
    </section>
    <section anchor="conventions">
      <name>Conventions</name>
      <t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t>
    </section>
    <section anchor="definition">
      <name>Definition</name>
      <t>This document uses the definitions of the MPEG Haptics Coding standard <xref target="ISO.IEC.23090-31"/>. Some of these terms are provided here for convenience.</t>
      <t>Actuator: component of a device for rendering haptic sensations.</t>
      <t>Avatar: body (or part of body) representation.</t>
      <t>Band: component in a channel for containing effects for a specific range of frequencies.</t>
      <t>Channel: component in a perception containing one or more bands rendered on a device at a specific body location.</t>
      <t>Device: physical system having one or more actuators configured to render a haptic sensation corresponding with a given signal.</t>
      <t>Effect: component of a band for defining a signal, consisting of a haptic waveform or one or more haptic keyframes.</t>
      <t>Experience: top level haptic component containing perceptions and metadata.</t>
      <t>Haptics: tactile sensations.</t>
      <t>Keyframe: component of an effect mapping a position in time or space to an effect parameter such as amplitude or frequency.</t>
      <t>Metadata: global information about an experience, perception, channel, or band.</t>
      <t>MIHS unit: unit of packetization of the MPEG-I Haptic Stream format, which is used as unit of payload in the format described in this memo. See <xref target="haptic-format-dsecription"/> for details.</t>
      <t>Modality: type of haptics, such as vibration, force, pressure, position, velocity, or temperature.</t>
      <t>Perception: haptic perception containing channels of a specific modality.</t>
      <t>Signal: representation of the haptics associated with a specific modality to be rendered on a device.</t>
      <t>Hmpg format: hmpg is a binary compressed format for haptics data. Information is stored in a binary form and data compression is applied on data at the band level. The haptics/hmpg media subtype is registered in <xref target="I-D.ietf-mediaman-haptics"/> and updated by this memo.</t>
      <t>Independent unit: a MIHS unit is independent if it can be decoded independently from earlier units. Independent units contain timing information and are also called "sync units" in <xref target="ISO.IEC.23090-31"/>.</t>
      <t>Dependent unit: a MIHS unit is dependent if it requires earlier units for decoding. Dependent units do not contain timing information and are also called "non-sync units" in <xref target="ISO.IEC.23090-31"/>.</t>
      <t>Time-independent effect: a haptic effect that occurs regardless of time. The tactile feedback of a texture is a representative example. Time-independent effects are encoded in spatial MIHS units, defined in <xref target="MIHS-format"/>.</t>
      <t>Time-dependent effect: a haptic effect that varies over time. For example, tactile feedback for vibration and force  are time-dependent effects, and are encoded in temporal MIHS units, defined in <xref target="MIHS-format"/>.</t>
    </section>
    <section anchor="haptic-format-dsecription">
      <name>Haptic Format Description</name>
      <section anchor="overview-of-haptic-coding">
        <name>Overview of Haptic Coding</name>
        <t>The MPEG Haptics Coding standard specifies methods for efficient transmission and rendering of haptic signals, to enable immersive experiences. It supports multiple types of perceptions, including the most common vibrotactile (sense of touch that perceives vibrations) and kinaesthetic perceptions (tactile resistance or force), but also other, less common perceptions, including for example the sense of temperature or texture. It also supports two approaches for encoding haptic signals: a "quantized" approach based on samples of measured data, and a "descriptive" approach where the signal is synthesized using a combination of functions. Both quantized and descriptive data can be encoded in a human-readable exchange format based on JSON (.hjif), or in a binary packetized format for distribution and streaming (.hmpg). This last format is referred to as the MPEG-I Haptic Stream (MIHS) format and is a base for the RTP payload format described in this document.</t>
      </section>
      <section anchor="MIHS-format">
        <name>MPEG-I Haptic Stream (MIHS) format</name>
        <t>MIHS is a stream format used to transport haptic data. Haptic data including haptic effects is packetized according to the MIHS format, and delivered to actuators, which operate according to the provided effects. The MIHS format has two level packetization, MIHS units and MIHS packets.</t>
        <t>MIHS units are composed of a MIHS unit header and zero or more MIHS packets. Four types of MIHS units are defined. An initialization MIHS unit contains MIHS packets carrying metadata necessary to reset and initialize a haptic decoder, including a timestamp. A temporal MIHS unit contains one or more MIHS packets defining time-dependent effects and providing modalities such as pressure, velocity, and acceleration. The duration of a temporal unit is a positive number. A spatial MIHS unit contains one or more MIHS packets providing time-independent effects, such as vibrotactile texture, stiffness, and friction. The duration of a spatial unit is always zero.
A silent MIHS unit indicates that there is no effect during a time interval and its duration is a positive number.</t>
        <t>A MIHS unit can be marked as independent or dependent. When a decoder processes an independent unit, it resets the previous effects and therefore provides a haptic experience independent from any previous MIHS unit.  A dependent unit is the continuation of previous MIHS units and cannot be independently decoded and rendered without having decoded previous MIHS unit(s). Initialization and spatial MIHS units are always independent units. Temporal and silent MIHS units can be dependent or independent units.</t>
        <t><xref target="_figure-stream"/> illustrates a succession of MIHS units in a MIHS stream.</t>
        <figure anchor="_figure-stream">
          <name>Example of MIHS stream</name>
          <artwork><![CDATA[
+--------+ +-------+ +------------+ +-------------+ +-----------+
|Initial*| |Spatial| |  Temporal  | |Temporal Unit| |Silent Unit|
| Unit   |-| Unit  |-|Unit(indep.)|-| (dependent) |-| (indep.)  |
+--------+ +-------+ +------------+ +-------------+ +-----------+
*Initialization 
]]></artwork>
        </figure>
      </section>
    </section>
    <section anchor="payload-format-for-haptics">
      <name>Payload format for haptics</name>
      <section anchor="rtp-header-usage">
        <name>RTP header Usage</name>
        <t>The RTP header is defined in <xref target="RFC3550"/> and represented in <xref target="_figure-rtpheader"/>. Some of the header field values are interpreted as follows.</t>
        <figure anchor="_figure-rtpheader">
          <name>RTP header for Haptic.</name>
          <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X|  CC   |M|     PT      |       sequence number         |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           timestamp                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           synchronization source (SSRC) identifier            |
+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+=+
|            contributing source (CSRC) identifiers             |
|                             ....                              |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
        </figure>
        <t>Payload type (PT): 7 bits. The assignment of a payload type MUST be performed either through the profile used or in a dynamic way.</t>
        <t>Time Stamp (TS): 32 bits. A timestamp representing the sampling time of the first sample of the MIHS unit in the RTP payload. The clock frequency MUST be set to the sample rate of the encoded haptic data and is conveyed out-of-band (e.g., as an SDP parameter).</t>
        <t>Marker bit (M): 1 bit. The marker bit SHOULD be set to one in the first non-silent RTP packet after a period of haptic silence. This enables jitter buffer adaptation and haptics device washout (i.e., reset to a neutral position) prior to the beginning of the burst with minimal impact on the quality of experience for the end user. The marker bit in all other packets MUST be set to zero.</t>
      </section>
      <section anchor="payload-header">
        <name>Payload Header</name>
        <t>The RTP Payload Header follows the RTP header. <xref target="_figure-payloadheader"/> describes RTP Payload Header.</t>
        <figure anchor="_figure-payloadheader">
          <name>RTP payload header for Haptic.</name>
          <artwork><![CDATA[
+---------------+
|0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+
|D| UT  |   L   |
+-+-----+-------+
]]></artwork>
        </figure>
        <t>D (Dependency, 1 bit): this field is used to indicate whether the MIHS unit included in the RTP payload is, when its value is one, dependent or, when its value is zero, independent.</t>
        <t>UT (Unit Type, 3 bits): this field indicates the type of the MIHS unit included in the RTP payload. UT field values are listed in <xref target="_figure-transmission-type"/>.</t>
        <t>L (MIHS Layer, 4 bits): this field is an integer value which indicates the priority order of the MIHS unit included in the RTP payload, as determined by the haptic sender (e.g., by the haptic codec), based on application-specific needs. For example, the sender may use the MIHS layer to prioritize perceptions with the largest impact on the end-user experience. Zero corresponds to the highest priority. The semantic of individual MIHS layers is not specified and left for the application to assign.</t>
      </section>
      <section anchor="payload-structures">
        <name>Payload Structures</name>
        <t>Two different types of RTP packet payload structures are specified. The single unit payload structure contains a single MIHS unit. The fragmented unit payload structure contains a subset of a MIHS unit. The unit type (UT) field of the RTP payload header <xref target="_figure-transmission-type"/> identifies both the payload structure and, in the case of a single unit structure, also identifies the type of MIHS unit present in the payload.</t>
        <t>Editor's Note:  consider if it would be useful to add the ability to aggregate multiple MIHS units in a single RTP payload - for instance, to aggregate multiple MIHS units with different layer values into a single RTP payload .</t>
        <figure anchor="_figure-transmission-type">
          <name>Payload structure type for haptic</name>
          <artwork><![CDATA[
Unit     Payload   Name
Type     Structure
----------------------------------------
0        N/A       Reserved
1        Single    Initialization MIHS Unit
2        Single    Temporal MIHS Unit
3        Single    Spatial MIHS Unit
4        Single    Silent MIHS Unit
7        Frag      Fragmented Packet
]]></artwork>
        </figure>
        <t>The payload structures are represented in <xref target="_figure-transmission-type"/>. The single unit payload structure is specified in <xref target="single"/>. The fragmented unit payload structure is specified in <xref target="fragmented"/>.</t>
        <figure anchor="_figure-transmission-style">
          <name>RTP Transmission mode</name>
          <artwork><![CDATA[
                         +-------------------+
                         |     RTP Header    |
+-------------------+    +-------------------+
|     RTP Header    |    | RTP payload Header|
+-------------------+    |   (UT = Frag)     |
| RTP payload Header|    +-------------------+
+-------------------+    |     FU Header     |
|    RTP payload    |    +-------------------+
| (Single MIHS unit)|    |    RTP Payload    |
+-------------------+    +-------------------+
 (a) single unit RTP     (b) fragmented unit RTP
]]></artwork>
        </figure>
        <section anchor="single">
          <name>Single Unit Payload Structure</name>
          <t>In a single unit payload structure, as described in <xref target="_figure-transmission-style"/>, the RTP packet contains the RTP header, followed by the payload header and one single MIHS unit. The payload header follows the structure described in <xref target="payload-header"/>. The  payload contains a MIHS unit as defined in <xref target="ISO.IEC.23090-31"/>.</t>
          <figure anchor="_figure-transmission-single">
            <name>Single unit payload structure</name>
            <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          RTP Header                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|payload Header |                                               |
+---------------+                                               |
|                        MIHS unit data                         |
|                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               :...OPTIONAL RTP padding        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
        </section>
        <section anchor="fragmented">
          <name>Fragmented Unit Payload Structure</name>
          <t>In a fragmented unit payload structure, as described in <xref target="_figure-fragment-structure"/>, the RTP packet contains the RTP header, followed by the payload header, a Fragmented Unit (FU) header, and a MIHS unit fragment. The payload header follows the structure described in <xref target="payload-header"/>. The value of the UT field of the payload header is 7. The FU header follows the structure described in <xref target="_figure-fragment-header"/>.</t>
          <figure anchor="_figure-fragment-structure">
            <name>Fragmentation unit header</name>
            <artwork><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                          RTP Header                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Payload Header | FU Header     |                               |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+                               |
|                     MIHS Unit Fragment                        |
|                               +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                               :...OPTIONAL RTP padding        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
]]></artwork>
          </figure>
          <t>FU headers are used to enable fragmenting a single MIHS unit into multiple RTP packets. Fragments of the same MIHS unit MUST be sent in consecutive order with ascending RTP sequence numbers (with no other RTP packets within the same RTP stream being sent between the first and last fragment). FUs MUST NOT be nested, i.e., an FU MUST NOT contain a subset of another FU.</t>
          <t><xref target="_figure-fragment-header"/> describes a FU header, including the following fields:</t>
          <figure anchor="_figure-fragment-header">
            <name>Fragmentation unit header</name>
            <artwork><![CDATA[
+-------------------------------+
|0  | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
+---+---+---+---+---+---+---+---+
|FUS|FUE|   RSV     |     UT    |
+---+---+-----------+-----------+
]]></artwork>
          </figure>
          <t>FUS (Fragmented Unit Start, 1 bit): this field MUST be set to 1 for the first fragment, and 0 for the other fragments.</t>
          <t>FUE (Fragmented Unit End, 1 bit): this field MUST be set to 1 for the last fragment, and 0 for the other fragments.</t>
          <t>RSV (Reserved, 3 bits): these bits MUST be set to 0 by the sender and ignored by the receiver.</t>
          <t>UT (Unit Type, 3 bits): this field indicates the type of the MIHS unit this fragment belongs to, using values defined in <xref target="_figure-transmission-type"/>.</t>
          <t>The use of MIHS unit fragmentation in RTP means that a media receiver can receive some fragments, but not other fragments. The missing fragments will typically not be retransmitted by RTP. This results in partially received MIHS units, which can be either dropped or used by the decoding application, based on implementation.</t>
        </section>
      </section>
      <section anchor="mihs-trans">
        <name>MIHS Units Transmission Considerations</name>
        <t>The following considerations apply for the streaming of MIHS units over RTP:</t>
        <t>The MIHS format enables variable duration units and uses initialization MIHS units to declare the duration of subsequent non-zero duration MIHS units, as well as the variation of this duration. A sender SHOULD set constant or low-variability (e.g., lower than the playout buffer) durations in initialization MIHS units, for RTP streaming. This enables the receiver to determine early (e.g., using a timer) when a unit has been lost and make the decoder more robust to RTP packet loss. If a sender sends MIHS units with high duration variations, the receiver may need to wait for a long period of time (e.g., the upper bound of the duration variation), to determine if a MIHS unit was lost in transmission. Whether this behavior is acceptable or not is application dependent.</t>
        <t>The MIHS format uses silent MIHS units to signal haptic silence. A sender MAY decide not to send silent units, to save network resources. Since, from a receiver standpoint, a missed MIHS unit may originate from a not-sent silent unit, or a lost packet, a sender MAY send one, or a few, MIHS silent units at the beginning of a haptic silence. If a media receiver receives a MIHS silent unit, the receiver SHOULD assume that silence is intended until the reception of a non-silent MIHS unit. This can reduce the number of false detection of lost RTP packets by the decoder.</t>
      </section>
    </section>
    <section anchor="format-param">
      <name>Payload Format Parameters</name>
      <t>This memo updates the 'hmpg' haptic subtype defined in section 4.3.3 of <xref target="I-D.ietf-mediaman-haptics"/> for use with the MPEG-I haptics streamable binary coding format described in ISO/IEC DIS 23090-31: Haptics coding <xref target="ISO.IEC.23090-31"/>. This memo especially defines optional parameters for this type in <xref target="optional-param"/>.  A mapping of the parameters into the Session Description Protocol (SDP) <xref target="RFC8866"/> is also provided for applications that use SDP. Equivalent parameters could be defined elsewhere for use with control protocols that do not use SDP.
The receiver MUST ignore any parameter unspecified in this memo.</t>
      <section anchor="media-type-registration-update">
        <name>Media Type Registration Update</name>
        <t>The following entries identify the media type being updated:</t>
        <t>Type name: haptics</t>
        <t>Subtype name: hmpg</t>
        <t>The following entries are replaced by this memo:</t>
        <t>Optional parameters: see section 6.2 of RFC XXX (note to RFC editor: replace with this RFC's number).</t>
        <t>Person &amp; email address to contact for further information: Yeshwant Muthusamy (yeshwant@yeshvik.com) and Hyunsik Yang (hyunsik.yang@interdigital.com)</t>
      </section>
      <section anchor="optional-param">
        <name>Optional Parameters Definition</name>
        <t><em>hmpg-ver</em>
provides the year of the edition and amendment of ISO/IEC 23090-31 that this file conforms to, as defined in <xref target="ISO.IEC.23090-31"/>. MPEG_haptics object.version is a string which may hold values such as XXXX or XXXX-Y where XXXX is the year of publication and Y is the amendment number, if any. For the initial release of the specifications, the value is "2023".</t>
        <t><em>hmpg-profile</em>
indicates the profile used to generate the encoded stream as defined in <xref target="ISO.IEC.23090-31"/>: MPEG_haptics object.profile is a string which may in the initial release of the specifications hold the values "simple-parametric" or "main".</t>
        <t><em>hmpg-lvl</em>
indicates the level used to generate the encoded stream as defined in <xref target="ISO.IEC.23090-31"/>: MPEG_haptics object.level is an integer which may in the initial release of the specifications hold the value 1 or 2.</t>
        <t><em>hmpg-maxlod</em>
indicates the maximum level of details to use for the avatar(s). The avatar level of detail (LOD) is defined in <xref target="ISO.IEC.23090-31"/>: MPEG_haptics.avatar object.lod is an integer which may in the initial release of the specifications hold 0 or a positive integer.</t>
        <t><em>hmpg-avtypes</em> 
indicates, using a coma-separated list, types of haptic perception represented by the avatar(s). The avatar type is defined in <xref target="ISO.IEC.23090-31"/>: MPEG_haptics.avatar object.type is an integer which may in the initial release of the specifications hold values among "Vibration", "Pressure", "Temperature", "Custom".</t>
        <t><em>hmpg-modalities</em>
indicates, using a coma-separated list, haptic perception modalities (e.g., pressure, acceleration, velocity, position, temperature, etc.). The perception modality is defined in <xref target="ISO.IEC.23090-31"/>: MPEG_haptics.perception object.perception_modality is a string which may in the initial release of the specifications hold values among "Pressure", "Acceleration", "Velocity", "Position", "Temperature", "Vibrotactile", "Water", "Wind", "Force", "Electrotactile", "Vibrotactile Texture", "Stiffness", "Friction", "Humidity", "User-defined Temporal", "User-defined Spatial", "Other".</t>
        <t><em>hmpg-bodypartmask</em>
indicates, using a bitmask, the location of the devices or actuators on the body. The body part mask is defined in <xref target="ISO.IEC.23090-31"/>: MPEG_haptics.reference_device object.body_part_mask is a 32-bit integer which may in the initial release of the specifications hold a bit mask using bit positions defined in table 7 of <xref target="ISO.IEC.23090-31"/>.</t>
        <t><em>hmpg-maxfreq</em>
indicates the maximum frequency of haptic data for vibrotactile perceptions (Hz). Maximum frequency is defined in <xref target="ISO.IEC.23090-31"/>: MPEG_haptics.reference_device object.maximum_frequency is defined as an integer or floating-point number in the initial release of the specifications.</t>
        <t><em>hmpg-minfreq</em>
indicates the minimum frequency of haptic data for vibrotactile perceptions (Hz). Minimum frequency is defined in <xref target="ISO.IEC.23090-31"/>: MPEG_haptics.reference_device object.minimum_frequency is defined as an integer or floating-point number in the initial release of the specifications.</t>
        <t><em>hmpg-dvctypes</em>
indicates, using a coma-separated list, the types of actuators. The device type is defined in <xref target="ISO.IEC.23090-31"/>: MPEG_haptics.reference_device object.type is a string which may in the initial release of the specifications hold values among "LRA", "VCA", "ERM", "Piezo" or "Unknown".</t>
        <t><em>hmpg-silencesupp</em>
indicates whether silence suppression should be used (1) or not (0). The default value shall be 1.</t>
      </section>
    </section>
    <section anchor="sdp-considerations">
      <name>SDP Considerations</name>
      <t>The mapping of above defined payload format media type to the corresponding fields in the Session Description Protocol (SDP) is done according to <xref target="RFC8866"/>.</t>
      <t>The media name in the "m=" line of SDP MUST be haptics.</t>
      <t>The encoding name in the "a=rtpmap" line of SDP MUST be hmpg</t>
      <t>The clock rate in the "a=rtpmap" line may be any sampling rate, typically 8000.</t>
      <t>The OPTIONAL parameters (defined in <xref target="optional-param"/>), when present, MUST be included in the "a=fmtp" line of SDP. This is expressed as a media type string, in the form of a semicolon-separated list of parameter=value pairs.</t>
      <t>An example of media representation corresponding to the hmpg RTP payload in SDP is as follows:</t>
      <artwork><![CDATA[
m=haptics 43291 UDP/TLS/RTP/SAVPF 115
a=rtpmap:115 hmpg/8000
a=fmtp:115 hmpg-profile=1;hmpg-lvl=1;hmpg-ver=2023
]]></artwork>
      <section anchor="sdp-offeranswer-considerations">
        <name>SDP Offer/Answer Considerations</name>
        <t>When using the offer/answer procedure described in <xref target="RFC3264"/> to negotiate the use of haptic, the following considerations apply:</t>
        <t>The haptic signal can be sampled at different rates. The MPEG Haptics Coding standard does not mandate a specific frequency. A typical sample rate is 8000Hz.</t>
        <t>The parameter 'hmpg-ver' indicates the version of the haptic standard specification. If it is not specified, the initial version of the MPEG Haptic Coding specification SHOULD be assumed, although the sender and receiver MAY use a specific value based on an out-of-band agreement. The parameter 'hmpg-profile' is used to restrict the number of tools used (e.g., the simple-parametric profile fits enable simpler implementations than the main profile). If it is not specified, the most general profile "main" SHOULD be assumed, although the sender and receiver MAY use a specific value based on an out-of-band agreement. The parameter 'hmpg-lvl' is used to further characterize implementations within a given profile, e.g., according to the maximum supported number of channels, bands, and perceptions. If it is not specified, the most general level "2" SHOULD be assumed, although the sender and receiver MAY use a specific version based on an out-of-band agreement.</t>
        <t>Other parameters can be used to indicate bitstream properties as well as receiver capabilities. The parameters 'hmpg-maxlod', 'hmpg-avtypes', 'hmpg-bodypartmask', 'hmpg-maxfreq', 'hmpg-minfreq', 'hmpg-dvctypes', and 'hmpg-modalities' can be sent by a sender to reflect the characteristics of bitstreams and can be set by a receiver to reflect the nature and capabilities of local actuator devices, or a preferred set of bitstream properties. For example, different receivers may have different sets of local actuators, in which case these parameters can be used to select a stream adapted to the receiver. In some other cases, some receivers may indicate a preference for a set of bitstream properties such as perceptions, min/max frequency, or body-part-mask, which contribute the most to the user experience for a given application, in which case these parameters can be used to select a stream which include and possibly prioritizes those properties.</t>
        <t>The parameter 'hmpg-silencesupp' can be used to indicate sender and receiver capabilities or preferences. This parameter indicates whether silence suppression should be used, as described in <xref target="mihs-trans"/>.</t>
      </section>
      <section anchor="declarative-sdp-considerations">
        <name>Declarative SDP considerations</name>
        <t>When haptic content over RTP is offered with SDP in a declarative style, the parameters capable of indicating both bitstream properties as well as receiver capabilities are used to indicate only bitstream properties.  For example, in this case, the parameters hmpg-maxlod, hmpg-bodypartmask, hmpg-maxfreq, hmpg-minfreq, hmpg-dvctypes, and hmpg-modalities declare the values used by the bitstream, not the capabilities for receiving bitstreams. A receiver of the SDP is required to support all parameters and values of the parameters provided; otherwise, the receiver MUST reject or not participate in the session.  It falls on the creator of the session to use values that are expected to be supported by the receiving application.</t>
      </section>
    </section>
    <section anchor="congestion-control-consideration">
      <name>Congestion control consideration</name>
      <t>The general congestion control considerations for transporting RTP data apply to HMPG haptics over RTP as well <xref target="RFC3550"/>.</t>
      <t>It is possible to adapt network bandwidth by adjusting either the encoder bit rate or by adjusting the stream content (e.g., level of detail, body parts, actuator frequency range, target device types, modalities).</t>
      <t>In case of congestion, a receiver or intermediate node MAY prioritize independent packets over dependent ones, since the non reception of an independent MIHS unit can prevent the decoding of multiple subsequent dependent MIHS units. In case of congestion, a receiver or intermediate node MAY prioritize initialization MIHS units over other units, since initialization MIHS units contain metadata used to re-initialize the decoder, and MAY drop silent MIHS units before other types of MIHS units, since a receiver may interpret a missing MIHS unit as a silence. It is also possible, using the layer field of the RTP payload header, to allocate MIHS units to different layers based on their content, to prioritize haptic data contributing the most to the user experience. In case of congestion, intermediate nodes and receivers SHOULD use the MIHS layer value to determine the relative importance of haptic RTP packets.</t>
    </section>
    <section anchor="security-considerations">
      <name>Security Considerations</name>
      <t>TBD</t>
    </section>
    <section anchor="iana-considerations">
      <name>IANA Considerations</name>
      <t>This memo updates the media type registration of haptics/hmpg with IANA, in <xref target="format-param"/>.</t>
    </section>
  </middle>
  <back>
    <references>
      <name>References</name>
      <references anchor="sec-normative-references">
        <name>Normative References</name>
        <reference anchor="ISO.IEC.23090-31" target="https://www.iso.org/standard/86122.html">
          <front>
            <title>ISO/IEC DIS 23090-31,Information technology - Coded representation of immersive media - Part 31: Haptics coding</title>
            <author>
              <organization>ISO/IEC</organization>
            </author>
            <date year="2023"/>
          </front>
          <seriesInfo name="ISO/IEC" value="23090-31"/>
        </reference>
      </references>
      <references anchor="sec-informative-references">
        <name>Informative References</name>
        <reference anchor="RFC2119">
          <front>
            <title>Key words for use in RFCs to Indicate Requirement Levels</title>
            <author fullname="S. Bradner" initials="S." surname="Bradner"/>
            <date month="March" year="1997"/>
            <abstract>
              <t>In many standards track documents several words are used to signify the requirements in the specification. These words are often capitalized. This document defines these words as they should be interpreted in IETF documents. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="2119"/>
          <seriesInfo name="DOI" value="10.17487/RFC2119"/>
        </reference>
        <reference anchor="RFC3550">
          <front>
            <title>RTP: A Transport Protocol for Real-Time Applications</title>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <author fullname="S. Casner" initials="S." surname="Casner"/>
            <author fullname="R. Frederick" initials="R." surname="Frederick"/>
            <author fullname="V. Jacobson" initials="V." surname="Jacobson"/>
            <date month="July" year="2003"/>
            <abstract>
              <t>This memorandum describes RTP, the real-time transport protocol. RTP provides end-to-end network transport functions suitable for applications transmitting real-time data, such as audio, video or simulation data, over multicast or unicast network services. RTP does not address resource reservation and does not guarantee quality-of- service for real-time services. The data transport is augmented by a control protocol (RTCP) to allow monitoring of the data delivery in a manner scalable to large multicast networks, and to provide minimal control and identification functionality. RTP and RTCP are designed to be independent of the underlying transport and network layers. The protocol supports the use of RTP-level translators and mixers. Most of the text in this memorandum is identical to RFC 1889 which it obsoletes. There are no changes in the packet formats on the wire, only changes to the rules and algorithms governing how the protocol is used. The biggest change is an enhancement to the scalable timer algorithm for calculating when to send RTCP packets in order to minimize transmission in excess of the intended rate when many participants join a session simultaneously. [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="STD" value="64"/>
          <seriesInfo name="RFC" value="3550"/>
          <seriesInfo name="DOI" value="10.17487/RFC3550"/>
        </reference>
        <reference anchor="RFC2736">
          <front>
            <title>Guidelines for Writers of RTP Payload Format Specifications</title>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <author fullname="C. Perkins" initials="C." surname="Perkins"/>
            <date month="December" year="1999"/>
            <abstract>
              <t>This document provides general guidelines aimed at assisting the authors of RTP Payload Format specifications in deciding on good formats. This document specifies an Internet Best Current Practices for the Internet Community, and requests discussion and suggestions for improvements.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="36"/>
          <seriesInfo name="RFC" value="2736"/>
          <seriesInfo name="DOI" value="10.17487/RFC2736"/>
        </reference>
        <reference anchor="RFC8088">
          <front>
            <title>How to Write an RTP Payload Format</title>
            <author fullname="M. Westerlund" initials="M." surname="Westerlund"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>This document contains information on how best to write an RTP payload format specification. It provides reading tips, design practices, and practical tips on how to produce an RTP payload format specification quickly and with good results. A template is also included with instructions.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8088"/>
          <seriesInfo name="DOI" value="10.17487/RFC8088"/>
        </reference>
        <reference anchor="RFC8866">
          <front>
            <title>SDP: Session Description Protocol</title>
            <author fullname="A. Begen" initials="A." surname="Begen"/>
            <author fullname="P. Kyzivat" initials="P." surname="Kyzivat"/>
            <author fullname="C. Perkins" initials="C." surname="Perkins"/>
            <author fullname="M. Handley" initials="M." surname="Handley"/>
            <date month="January" year="2021"/>
            <abstract>
              <t>This memo defines the Session Description Protocol (SDP). SDP is intended for describing multimedia sessions for the purposes of session announcement, session invitation, and other forms of multimedia session initiation. This document obsoletes RFC 4566.</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="8866"/>
          <seriesInfo name="DOI" value="10.17487/RFC8866"/>
        </reference>
        <reference anchor="RFC3264">
          <front>
            <title>An Offer/Answer Model with Session Description Protocol (SDP)</title>
            <author fullname="J. Rosenberg" initials="J." surname="Rosenberg"/>
            <author fullname="H. Schulzrinne" initials="H." surname="Schulzrinne"/>
            <date month="June" year="2002"/>
            <abstract>
              <t>This document defines a mechanism by which two entities can make use of the Session Description Protocol (SDP) to arrive at a common view of a multimedia session between them. In the model, one participant offers the other a description of the desired session from their perspective, and the other participant answers with the desired session from their perspective. This offer/answer model is most useful in unicast sessions where information from both participants is needed for the complete view of the session. The offer/answer model is used by protocols like the Session Initiation Protocol (SIP). [STANDARDS-TRACK]</t>
            </abstract>
          </front>
          <seriesInfo name="RFC" value="3264"/>
          <seriesInfo name="DOI" value="10.17487/RFC3264"/>
        </reference>
        <reference anchor="RFC8174">
          <front>
            <title>Ambiguity of Uppercase vs Lowercase in RFC 2119 Key Words</title>
            <author fullname="B. Leiba" initials="B." surname="Leiba"/>
            <date month="May" year="2017"/>
            <abstract>
              <t>RFC 2119 specifies common key words that may be used in protocol specifications. This document aims to reduce the ambiguity by clarifying that only UPPERCASE usage of the key words have the defined special meanings.</t>
            </abstract>
          </front>
          <seriesInfo name="BCP" value="14"/>
          <seriesInfo name="RFC" value="8174"/>
          <seriesInfo name="DOI" value="10.17487/RFC8174"/>
        </reference>
        <reference anchor="I-D.ietf-mediaman-haptics">
          <front>
            <title>The 'haptics' Top-level Media Type</title>
            <author fullname="Yeshwant K Muthusamy" initials="Y. K." surname="Muthusamy">
         </author>
            <author fullname="Chris Ullrich" initials="C." surname="Ullrich">
         </author>
            <date day="27" month="July" year="2023"/>
            <abstract>
              <t>   This memo serves to register and document the 'haptics' top-level
   media type, under which subtypes for representation formats for
   haptics may be registered.  This document also serves as a
   registration for a set of subtypes, which are representative of some
   existing subtypes already in use.

              </t>
            </abstract>
          </front>
          <seriesInfo name="Internet-Draft" value="draft-ietf-mediaman-haptics-05"/>
        </reference>
      </references>
    </references>
  </back>
  <!-- ##markdown-source:
H4sIAAAAAAAAA+09aW8bR5bfBeg/FGRgLSYkrcOxHQ4MjEaSx971obWkTLKD
QdBkF8mO+2C6uqUwlve377vqapKyHGuwB1aBI7K7jlevXr2r3nsaDAbbW03W
5Hqkdt5fnKmzZJlXSaqmVa1eJosmm5id7a1kPK711UhBi4G0GPDb7a20mpRJ
Af3TOpk2g7lZJuVskFw1k6rWg7pZDOY8zmBvH1onDTT9eHJ0cfppe8s0tU6K
kXp1evFie2sC72ZVvRwp06TbW9miHqmmbk1zsLf3/d4BgAGtR+qiTkqzqOpm
e+u6qj/M6qpdjJRMuL2FoyZl+nOSVyVMtdRme2uRjdTfm2rSVwb61Xpq4NOy
4A+wgCJZLLJy9g/snbTNvKpH21tKDfB/SmWlGamX50P1E6yMH/GKXy7b0mQf
gudVPYPVlI2uT7JZ1iQ5P9ZFkuUjNef2Q8TQnzNslXKr4aQquOWkassGUXB5
ftQF4cehSrV6US1DGH5MrjJdRy9uB+I36jBM9bRafg6I46RM0oQf4s/2VlnV
RdJkV5oQ9Or83fDV6fHw4BA2aHC4P+KmlqDg9SN4rU5enSvbpP+qnPIYVaka
PZmXVV7NlmqgjqtUp6rWi1obXTbcopqqrCh0bWBKVeg0S6DlWVI3CmazFAoA
p7B9Ozx7sIEOGxYUacJUeLB3cMjfja4zbTKAzHWTDiMHuCwtqWe6ga1smoUZ
PXp0fX09zEw1hFkeEd0ldfro2ZP9g4PhvClyJKjMLpiQhsO8f3F8sL///Ug+
H3733Z79fPD08In9/Gzv2TP3+dkT9/zw4Mlj93z/KX+m7RicDDPdTAeEqCIp
7dGjeQeDgUrGcOSSSYPfL+aZAZQWFRCPmdTZWBuVlHjG1cJzAQCcmEEz1+rN
2elfB68UD4pITIbqyH7lzeETrTLck2JRGdhR2MI3r16eq7bMGgOUPMlb3C2V
0ONdGZS3Up1T/56i1mqukxSIG9Cqftd1BXupCjjkPN4imXzQjRmqCwAthFp6
CfBJnlfXhtbAPbLfHWklHjIAzK8em7nhEqOudZ7j72mdzIqQNuMBmkoVbd5k
i1wHA5mhxX6RpWlOLOoBns+6StsJjoRPLCkv6uoqgw1RLRAlzJw1cyA6aAZj
6ulUTwiHKknTjI9QBQSfZhUhCXtWfV4yohg2rcAW+rcFUng50UDqJfDApT1V
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

-->

</rfc>
