<?xml version='1.0' encoding='utf-8'?> <!DOCTYPE rfc [ <!ENTITY nbsp " "> <!ENTITY zwsp "​"> <!ENTITY nbhy "‑"> <!ENTITY wj "⁠"> ]> <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> <!-- generated by https://github.com/cabo/kramdown-rfc version1.7.301.7.35 (Ruby 2.5.9) --><?rfc docmapping="yes"?><rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft-ietf-avtcore-rtp-haptics-latest" category="std" consensus="true" submissionType="IETF" xml:lang="en" number="9993" updates="9695" tocInclude="true" sortRefs="true" symRefs="true" version="3"> <!-- xml2rfc v2v3 conversion3.31.03.33.0 --> <link href="https://datatracker.ietf.org/doc/draft-ietf-avtcore-rtp-haptics-latest" rel="prev"/> <front> <titleabbrev="RTP-Payload-Haptic">RTPabbrev="RTP Payload Format for Haptics">RTP Payload Format for Haptics</title> <seriesInfoname="Internet-Draft" value="draft-ietf-avtcore-rtp-haptics-latest"/>name="RFC" value="9993"/> <author initials="" surname="HS Yang" fullname="Hyunsik Yang"> <organization>InterDigital</organization> <address> <postal><country>USA</country><country>United States of America</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><date year="2026" month="May"/> <area>WIT</area> <workgroup>avtcore</workgroup> <abstract> <?line61?>66?> <!--[rfced] FYI: We updated the short title that spans the header of the PDF file as shown below (full title fits the space). Original: RTP-Payload-Haptic Current: RTP Payload Format for Haptics --> <!-- [rfced] Please insert any keywords (beyond those that appear in the title) for use on https://www.rfc-editor.org/search. --> <t>This memo specifies an RTP payload format fortheMPEG-I haptic data. A haptic media stream is composed ofMIHSMPEG-I Haptic Stream (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. The original subtype registration forhaptics/hmpg, registered with IANA in RFC9695,'haptics/hmpg' (RFC 9695) did not include any required or optional parameters. This memo updatesRFC9695RFC 9695 and thehaptics/hmpg'haptics/hmpg' registration to add optional parameters. It also providesSDPSession Description Protocol (SDP) usage information for thehaptics'haptics' media type.</t> </abstract> </front> <middle> <?line65?>85?> <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 asactuators and providesactuators, providing them with information to operate according to the values defined in haptic effects. The IETF registeredhaptics'haptics' as a primary mediatypetype, akin toaudio'audio' andvideo'video' <xref target="RFC9695"/>.</t> <t>The MPEG Haptics Coding standard <xref target="ISO.IEC.23090-31"/> defines the data formats, metadata, and codec architecture to encode, decode,synthesizesynthesize, and transmit haptic signals. Within this MPEG standard, a haptic media stream is composed of MIHS units including a MIHS unit header and zero or more MIHS packets. The MIHS unit is a unit of packetization suitable forstreaming,streaming and is similar in essence to theNAL (NetworkNetwork AbstractionLayer)Layer (NAL) unit defined in some video specifications. This document specifies how haptic data (MIHS units) can be transmitted using the RTP protocol. This document follows recommendations in <xref target="RFC8088"/> and <xref target="RFC2736"/> for RTP payload format writers. This document does not specify synchronization (lip sync) mechanisms between haptics and audio/video components. In addition, this document specifies the associated SDP parameters and SDPOffer/Answeroffer/answer considerations for thehaptics'haptics' media type.</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","<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>", "<bcp14>MAY</bcp14>", and"OPTIONAL""<bcp14>OPTIONAL</bcp14>" in this document are to be interpreted as described inBCP 14BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, as shown here.</t> <?line -18?> </section> <sectionanchor="definition"> <name>Definition</name>anchor="definitions"> <name>Definitions</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<dl> <dt>Actuator:</dt> <dd> <t>Component of a device for rendering haptic sensations.</t><t>Avatar: body</dd> <dt>Avatar:</dt> <dd> <t>Body (or part of body) representation.</t><t>Band: component</dd> <dt>Band:</dt> <dd> <t>Component in a channel for containing effects for a specific range of frequencies.</t><t>Channel: component</dd> <dt>Channel:</dt> <dd> <t>Component in a perception containing one or more bands rendered on a device at a specific body location.</t><t>Device: physical</dd> <dt>Device:</dt> <dd> <t>Physical system having one or more actuators configured to render a haptic sensation corresponding with a given signal.</t><t>Effect: component</dd> <dt>Effect:</dt> <dd> <t>Component of a band for defining a signal, consisting of a haptic waveform or one or more haptic keyframes.</t><t>Experience: top level</dd> <dt>Experience:</dt> <dd> <t>Top-level haptic component containing perceptions and metadata.</t><t>Haptics: tactile</dd> <dt>Haptics:</dt> <dd> <t>Tactile sensations.</t><t>Keyframe: component</dd> <dt>Keyframe:</dt> <dd> <t>Component of an effect mapping a position in time or space to an effect parameter such as amplitude or frequency.</t><t>Metadata: global</dd> <dt>Metadata:</dt> <dd> <t>Global information about an experience, perception, channel, or band.</t><t>MIHS unit: unit</dd> <dt>MIHS unit:</dt> <dd> <t>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-description"/> for details.</t><t>Modality: type</dd> <dt>Modality:</dt> <dd> <t>Type of haptics, such as vibration, force, pressure, position, velocity, or temperature.</t><t>Perception: haptic</dd> <dt>Perception:</dt> <dd> <t>Haptic perception containing channels of a specific modality.</t><t>Signal: representation</dd> <dt>Signal:</dt> <dd> <t>Representation of the haptics associated with a specific modality to be rendered on a device.</t><t>Hmpg format: hmpg is a</dd> <dt>Hmpg format:</dt> <dd> <t>A binary compressed format for haptics data. Information is stored in a binaryformform, and data compression is applied on data at the band level. Thehaptics/hmpg'haptics/hmpg' media subtype is registered in <xref target="RFC9695"/> and updated by this memo.</t><t>Independent unit: a</dd> <dt>Independent unit:</dt> <dd> <t>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</dd> <dt>Dependent unit:</dt> <dd> <t>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</dd> <dt>Time-independent effect:</dt> <dd> <t>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, as defined in <xref target="MIHS-format"/>.</t><t>Time-dependent effect: a</dd> <dt>Time-dependent effect:</dt> <dd> <t>A haptic effect that varies over time. For example, tactile feedback for vibration and force are time-dependenteffects,effects and are encoded in temporal MIHS units, as defined in <xref target="MIHS-format"/>.</t> </dd> </dl> </section> <section anchor="haptic-format-description"> <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 the 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 kinesthetic perceptions (tactile resistance or force),butand alsoother,other less common perceptions,including for examplesuch as the sense of temperature ortexture.texture, for example. It also supports two approaches for encoding haptic signals: a "quantized" approach based on samples of measureddata,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 text-based exchange format based on JSON(.hjif),(.hjif) or in a binary packetized format for distribution and streaming (.hmpg). This last format is referred to as the MIHS format and is a base for the RTP payload format described in this document.</t> </section> <section anchor="MIHS-format"> <name>MIHSformat</name>Format</name> <t>MIHS is a stream format used to transport haptic data. Hapticdatadata, including hapticeffectseffects, is packetized according to the MIHSformat,format and delivered to actuators, which operate according to the provided effects. The MIHS format has two levels ofpacketization,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 andprovidingprovides 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 timeintervalinterval, 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 a 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> <!--[rfced] FYI: In Figure 1, we adjusted the spacing of the middle box to include "Temporal Unit" on one line. Please let us know of any objections. --> <t><xref target="_figure-stream"/> illustrates a succession of MIHS units in a MIHS stream.</t> <figure anchor="_figure-stream"> <name>Example of MIHSstream</name>Stream</name> <artset> <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="112"width="528"width="536" viewBox="0 0528536 112" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round"> <path d="M 8,32 L 8,80" fill="none" stroke="black"/> <path d="M 80,32 L 80,80" fill="none" stroke="black"/> <path d="M 96,32 L 96,80" fill="none" stroke="black"/> <path d="M 160,32 L 160,80" fill="none" stroke="black"/> <path d="M 176,32 L 176,80" fill="none" stroke="black"/> <path d="M280,32288,32 L280,80"288,80" fill="none" stroke="black"/> <path d="M296,32304,32 L296,80"304,80" fill="none" stroke="black"/> <path d="M408,32416,32 L408,80"416,80" fill="none" stroke="black"/> <path d="M424,32432,32 L424,80"432,80" fill="none" stroke="black"/> <path d="M520,32528,32 L520,80"528,80" fill="none" stroke="black"/> <path d="M 8,32 L 80,32" fill="none" stroke="black"/> <path d="M 96,32 L 160,32" fill="none" stroke="black"/> <path d="M 176,32 L280,32"288,32" fill="none" stroke="black"/> <path d="M296,32304,32 L408,32"416,32" fill="none" stroke="black"/> <path d="M424,32432,32 L520,32"528,32" fill="none" stroke="black"/> <path d="M 8,80 L 80,80" fill="none" stroke="black"/> <path d="M 96,80 L 160,80" fill="none" stroke="black"/> <path d="M 176,80 L280,80"288,80" fill="none" stroke="black"/> <path d="M296,80304,80 L408,80"416,80" fill="none" stroke="black"/> <path d="M424,80432,80 L520,80"528,80" fill="none" stroke="black"/> <g class="text"> <text x="44" y="52">Initial*</text> <text x="128" y="52">Spatial</text> <textx="228"x="212" y="52">Temporal</text> <textx="332"x="268" y="52">Unit</text> <text x="340" y="52">Temporal</text> <textx="388"x="396" y="52">Unit</text> <textx="452"x="460" y="52">Silent</text> <textx="500"x="508" y="52">Unit</text> <text x="36" y="68">Unit</text> <text x="88" y="68">-</text> <text x="124" y="68">Unit</text> <text x="168" y="68">-</text> <textx="228" y="68">Unit(indep.)</text>x="236" y="68">(indep.)</text> <textx="288"x="296" y="68">-</text> <textx="352"x="360" y="68">(dependent)</text> <textx="416"x="424" y="68">-</text> <textx="468"x="476" y="68">(indep.)</text> <text x="72" y="100">*Initialization</text> </g> </svg> </artwork> <artwork type="ascii-art"><![CDATA[ +--------+ +-------++------------++-------------+ +-------------+ +-----------+ |Initial*| |Spatial|| Temporal ||Temporal Unit| |Temporal Unit| |Silent Unit| | Unit |-| Unit|-|Unit(indep.)|-||-| (indep.) |-| (dependent) |-| (indep.) | +--------+ +-------++------------++-------------+ +-------------+ +-----------+ *Initialization ]]></artwork> </artset> </figure> </section> </section> <section anchor="payload-format-for-haptics"> <name>Payload FormatForfor Haptics</name> <section anchor="rtp-usage"> <name>RTP Header Usage</name> <t>The RTP header is defined in <xref target="RFC3550"/> and represented in <xref target="_figure-rtpheader"/>. Unless contextualized below, the meaning of the fields depicted in <xref target="_figure-rtpheader"/> is the same as in <xreftarget="rtp-usage"/> of <xrefsection="5.1" sectionFormat="of" target="RFC3550"/>.</t> <!--[rfced] In Figure 2, should "(TS)" be added after "Timestamp" to correspond with the entry for timestamp and for consistency with the two terms that appear below it in the figure? Original: Timestamp Perhaps: Timestamp (TS) --> <figure anchor="_figure-rtpheader"> <name>RTPheaderHeader forHaptic.</name>Haptic</name> <artset> <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="224" width="528" viewBox="0 0 528 224" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round"> <path d="M 8,64 L 8,208" fill="none" stroke="black"/> <path d="M 40,64 L 40,96" fill="none" stroke="black"/> <path d="M 56,64 L 56,96" fill="none" stroke="black"/> <path d="M 72,64 L 72,96" fill="none" stroke="black"/> <path d="M 136,64 L 136,96" fill="none" stroke="black"/> <path d="M 152,64 L 152,96" fill="none" stroke="black"/> <path d="M 264,64 L 264,96" fill="none" stroke="black"/> <path d="M 520,64 L 520,208" fill="none" stroke="black"/> <path d="M 8,64 L 520,64" fill="none" stroke="black"/> <path d="M 8,96 L 520,96" fill="none" stroke="black"/> <path d="M 8,128 L 520,128" fill="none" stroke="black"/> <path d="M 8,160 L 520,160" fill="none" stroke="black"/> <path d="M 8,208 L 520,208" fill="none" stroke="black"/> <g class="text"> <text x="16" y="36">0</text> <text x="176" y="36">1</text> <text x="336" y="36">2</text> <text x="496" y="36">3</text> <text x="16" y="52">0</text> <text x="32" y="52">1</text> <text x="48" y="52">2</text> <text x="64" y="52">3</text> <text x="80" y="52">4</text> <text x="96" y="52">5</text> <text x="112" y="52">6</text> <text x="128" y="52">7</text> <text x="144" y="52">8</text> <text x="160" y="52">9</text> <text x="176" y="52">0</text> <text x="192" y="52">1</text> <text x="208" y="52">2</text> <text x="224" y="52">3</text> <text x="240" y="52">4</text> <text x="256" y="52">5</text> <text x="272" y="52">6</text> <text x="288" y="52">7</text> <text x="304" y="52">8</text> <text x="320" y="52">9</text> <text x="336" y="52">0</text> <text x="352" y="52">1</text> <text x="368" y="52">2</text> <text x="384" y="52">3</text> <text x="400" y="52">4</text> <text x="416" y="52">5</text> <text x="432" y="52">6</text> <text x="448" y="52">7</text> <text x="464" y="52">8</text> <text x="480" y="52">9</text> <text x="496" y="52">0</text> <text x="512" y="52">1</text> <text x="24" y="84">V=2</text> <text x="48" y="84">P</text> <text x="64" y="84">X</text> <text x="100" y="84">CC</text> <text x="144" y="84">M</text> <text x="204" y="84">PT</text> <text x="356" y="84">Sequence</text> <text x="420" y="84">Number</text> <text x="264" y="116">Timestamp</text> <text x="160" y="148">Synchronization</text> <text x="252" y="148">Source</text> <text x="308" y="148">(SSRC)</text> <text x="380" y="148">Identifier</text> <text x="156" y="180">Contributing</text> <text x="236" y="180">Source</text> <text x="292" y="180">(CSRC)</text> <text x="368" y="180">Identifiers</text> <text x="260" y="196">....</text> </g> </svg> </artwork> <artwork type="ascii-art"><![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> </artset> </figure><t>Marker<!--[rfced] We note different list styles in Sections 5.1, 5.2, and 5.3.2. May we make these lists consistent by using the format shown below? (See the text for more examples.) Original: (Section 5.1) Marker bit (M): 1 bit. The marker bitSHOULD... Timestamp (TS): 32 bits. A timestamp ... (Section 5.2) D (Dependency, 1 bit): This field indicates ... UT (Unit Type, 3 bits): This field indicates ... Perhaps: (Section 5.1) M (Marker bit): 1 bit. The marker bit ... TS (Timestamp): 32 bits. A timestamp ... (Section 5.2) D (Dependency): 1 bit. This field indicates ... UT (Unit Type): 3 bits. This field indicates ... --> <dl> <dt>Marker bit (M):</dt> <dd> <t>1 bit. The marker bit <bcp14>SHOULD</bcp14> 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 packetsMUST<bcp14>MUST</bcp14> be set to zero.</t><t>Timestamp (TS): 32</dd> <dt>Timestamp (TS):</dt> <dd> <t>32 bits. A timestamp representing the sampling time of the first sample of the MIHS unit in the RTP payload. The clock frequencyMUST<bcp14>MUST</bcp14> be set to the sample rate of the encoded haptic data and is conveyedout-of-bandout of band (e.g., as an SDP parameter).</t> </dd> </dl> </section> <section anchor="payload-header"> <name>Payload Header</name> <!--[rfced] We note two uppercase forms of "Haptic" in Sections 5.2 and 5.4. Are these correct as is, or should they be made lowercase for consistency? Current: The RTP payload header follows the RTP header. Figure 3 describes the RTP payload header for Haptic. In some multimedia conference scenarios using an RTP video mixer (e.g., when adding or selecting a new source), it is recommended to use Full Intra Request (FIR) feedback messages [RFC5104] with Haptics. --> <t>The RTP payload header follows the RTP header. <xref target="_figure-payloadheader"/> describes the RTP payload header for Haptic.</t> <figure anchor="_figure-payloadheader"> <name>RTP Payload Header forHaptic.</name>Haptic</name> <artset> <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="112" width="144" viewBox="0 0 144 112" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round"> <path d="M 8,32 L 8,96" fill="none" stroke="black"/> <path d="M 24,32 L 24,96" fill="none" stroke="black"/> <path d="M 40,32 L 40,64" fill="none" stroke="black"/> <path d="M 56,32 L 56,64" fill="none" stroke="black"/> <path d="M 72,32 L 72,96" fill="none" stroke="black"/> <path d="M 88,32 L 88,64" fill="none" stroke="black"/> <path d="M 104,32 L 104,64" fill="none" stroke="black"/> <path d="M 120,32 L 120,64" fill="none" stroke="black"/> <path d="M 136,32 L 136,96" fill="none" stroke="black"/> <path d="M 8,32 L 136,32" fill="none" stroke="black"/> <path d="M 8,64 L 136,64" fill="none" stroke="black"/> <path d="M 8,96 L 136,96" fill="none" stroke="black"/> <g class="text"> <text x="16" y="52">0</text> <text x="32" y="52">1</text> <text x="48" y="52">2</text> <text x="64" y="52">3</text> <text x="80" y="52">4</text> <text x="96" y="52">5</text> <text x="112" y="52">6</text> <text x="128" y="52">7</text> <text x="16" y="84">D</text> <text x="44" y="84">UT</text> <text x="104" y="84">L</text> </g> </svg> </artwork> <artwork type="ascii-art"><![CDATA[ +-+-+-+-+-+-+-+-+ |0|1|2|3|4|5|6|7| +-+-+-+-+-+-+-+-+ |D| UT | L | +-+-----+-------+ ]]></artwork> </artset> </figure><t>D<dl> <dt>D (Dependency, 1bit): thisbit):</dt> <dd> <t>This fieldis used to indicateindicates whether the MIHS unit included in the RTP payloadis, whenis dependent (when its value isone, dependent or, whenone) or independent (when its value iszero, independent.</t> <t>UTzero).</t> </dd> <dt>UT (Unit Type, 3bits): thisbits):</dt> <dd> <t>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</dd> <dt>L (MIHS Layer, 4bits): thisbits):</dt> <dd> <t>This field is an integer valuewhichthat 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 are not specified and are left for the application to assign. In cases where the sender does not use the L field to indicate the priority order of the MIHS unit, the L value is '0'.</t> </dd> </dl> </section> <section anchor="payload-structures"> <name>Payload Structures</name> <t>Three different types of RTP packet payload structures are specified. A single unit packet contains a single MIHS unit in the payload. A fragmentation unit contains a subset of a MIHS unit. An aggregation packet contains multiple MIHS units in the payload. The unit type (UT) field of the RTP payload header, as shown in <xref target="_figure-transmission-type"/>, identifies both the payload structure and, in the case of a single-unit structure,also identifiesthe type of MIHS unit present in the payload.</t><figure<table anchor="_figure-transmission-type"> <name>Payloadstructure type for haptic</name> <artset> <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="456" viewBox="0 0 456 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round"> <path d="M 8,64 L 440,64" fill="none" stroke="black"/> <g class="text"> <text x="20" y="36">Unit</text> <text x="104" y="36">Payload</text> <text x="180" y="36">Packet</text> <text x="228" y="36">Type</text> <text x="268" y="36">Name</text> <text x="20" y="52">Type</text> <text x="112" y="52">Structure</text> <text x="8" y="84">0</text> <text x="88" y="84">N/A</text> <text x="196" y="84">Unassigned</text> <text x="8" y="100">1</text> <text x="100" y="100">Single</text> <text x="212" y="100">Initialization</text> <text x="292" y="100">MIHS</text> <text x="332" y="100">Unit</text> <text x="8" y="116">2</text> <text x="100" y="116">Single</text> <text x="188" y="116">Temporal</text> <text x="244" y="116">MIHS</text> <text x="284" y="116">Unit</text> <text x="8" y="132">3</text> <text x="100" y="132">Single</text> <text x="184" y="132">Spatial</text> <text x="236" y="132">MIHS</text> <text x="276" y="132">Unit</text> <text x="8" y="148">4</text> <text x="100" y="148">Single</text> <text x="180" y="148">Silent</text> <text x="228" y="148">MIHS</text> <text x="268" y="148">Unit</text> <text x="8" y="164">5</text> <text x="92" y="164">Aggr</text> <text x="200" y="164">Single-Time</text> <text x="296" y="164">Aggregation</text> <text x="372" y="164">Packet</text> <text x="428" y="164">(STAP)</text> <text x="8" y="180">6</text> <text x="92" y="180">Aggr</text> <text x="196" y="180">Multi-Time</text> <text x="288" y="180">Aggregation</text> <text x="364" y="180">Packet</text> <text x="420" y="180">(MTAP)</text> <text x="8" y="196">7</text> <text x="92" y="196">Frag</text> <text x="208" y="196">Fragmentation</text> <text x="284" y="196">Unit</text> </g> </svg> </artwork> <artwork type="ascii-art"><![CDATA[ Unit Payload PacketStructure TypeNamefor Haptic</name> <thead> <tr> <th align="center">Unit Type</th> <th align="left">Payload Structure</th> <th align="left">Packet TypeStructure ------------------------------------------------------- 0 N/A Unassigned 1 Single Initialization MIHS Unit 2 Single Temporal MIHS Unit 3 Single Spatial MIHS Unit 4 Single Silent MIHS Unit 5 Aggr Single-TimeName</th> </tr> </thead> <tbody> <tr> <td align="center">0</td> <td align="left">N/A</td> <td align="left">Unassigned</td> </tr> <tr> <td align="center">1</td> <td align="left">Single</td> <td align="left">Initialization MIHS Unit</td> </tr> <tr> <td align="center">2</td> <td align="left">Single</td> <td align="left">Temporal MIHS Unit</td> </tr> <tr> <td align="center">3</td> <td align="left">Single</td> <td align="left">Spatial MIHS Unit</td> </tr> <tr> <td align="center">4</td> <td align="left">Single</td> <td align="left">Silent MIHS Unit</td> </tr> <tr> <td align="center">5</td> <td align="left">Aggr</td> <td align="left">Single-Time Aggregation Packet(STAP) 6 Aggr Multi-Time(STAP)</td> </tr> <tr> <td align="center">6</td> <td align="left">Aggr</td> <td align="left">Multi-Time Aggregation Packet(MTAP) 7 Frag Fragmentation Unit ]]></artwork> </artset> </figure>(MTAP)</td> </tr> <tr> <td align="center">7</td> <td align="left">Frag</td> <td align="left">Fragmentation Unit</td> </tr> </tbody> </table> <t>The payload structures are represented in <xref target="_figure-transmission-style"/>. The single unit payload structure is specified in <xref target="single"/>. The fragmented unit payload structure is specified in <xref target="fragmented"/>. The aggregation packet payload structure is specified in <xref target="aggregated"/>. The padding in the figures of thesesectionsections refers to the RTP padding defined in <xref target="RFC3550"/>.</t> <figure anchor="_figure-transmission-style"> <name>RTP Transmissionmodes</name>Modes</name> <artset> <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="304" width="528" viewBox="0 0 528 304" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round"> <path d="M 8,128 L 8,240" fill="none" stroke="black"/> <path d="M 168,128 L 168,240" fill="none" stroke="black"/> <path d="M 184,96 L 184,240" fill="none" stroke="black"/> <path d="M 344,96 L 344,240" fill="none" stroke="black"/> <path d="M 360,32 L 360,240" fill="none" stroke="black"/> <path d="M 520,32 L 520,240" fill="none" stroke="black"/> <path d="M 360,32 L 520,32" fill="none" stroke="black"/> <path d="M 360,64 L 520,64" fill="none" stroke="black"/> <path d="M 184,96 L 344,96" fill="none" stroke="black"/> <path d="M 360,112 L 520,112" fill="none" stroke="black"/> <path d="M 8,128 L 168,128" fill="none" stroke="black"/> <path d="M 184,128 L 344,128" fill="none" stroke="black"/> <path d="M 360,144 L 520,144" fill="none" stroke="black"/> <path d="M 8,160 L 168,160" fill="none" stroke="black"/> <path d="M 184,176 L 344,176" fill="none" stroke="black"/> <path d="M 360,176 L 520,176" fill="none" stroke="black"/> <path d="M 8,192 L 168,192" fill="none" stroke="black"/> <path d="M 184,208 L 344,208" fill="none" stroke="black"/> <path d="M 360,208 L 520,208" fill="none" stroke="black"/> <path d="M 8,240 L 168,240" fill="none" stroke="black"/> <path d="M 184,240 L 344,240" fill="none" stroke="black"/> <path d="M 360,240 L 520,240" fill="none" stroke="black"/> <g class="text"> <text x="416" y="52">RTP</text> <text x="460" y="52">Header</text> <text x="384" y="84">RTP</text> <text x="432" y="84">Payload</text> <text x="492" y="84">Header</text> <text x="400" y="100">(UT</text> <text x="424" y="100">=</text> <text x="456" y="100">Aggr)</text> <text x="240" y="116">RTP</text> <text x="284" y="116">Header</text> <text x="396" y="132">MIHS</text> <text x="436"y="132">unit</text>y="132">Unit</text> <text x="464" y="132">1</text> <text x="492" y="132">Size</text> <text x="64" y="148">RTP</text> <text x="108" y="148">Header</text> <text x="208" y="148">RTP</text> <text x="256" y="148">Payload</text> <text x="316" y="148">Header</text> <text x="224" y="164">(UT</text> <text x="248" y="164">=</text> <text x="280" y="164">Frag)</text> <text x="412" y="164">MIHS</text> <text x="452" y="164">Unit</text> <text x="480" y="164">1</text> <text x="32" y="180">RTP</text> <text x="80" y="180">Payload</text> <text x="140" y="180">Header</text> <text x="236" y="196">FU</text> <text x="276" y="196">Header</text> <text x="396" y="196">MIHS</text> <text x="436"y="196">unit</text>y="196">Unit</text> <text x="464" y="196">2</text> <text x="492" y="196">Size</text> <text x="56" y="212">RTP</text> <text x="104" y="212">Payload</text> <text x="48" y="228">(Single</text> <text x="100" y="228">MIHS</text> <text x="144" y="228">unit)</text> <text x="232" y="228">RTP</text> <text x="280" y="228">Payload</text> <text x="432" y="228">...</text> <text x="16" y="276">(a)</text> <text x="60" y="276">single</text> <text x="108" y="276">unit</text> <text x="236" y="276">(b)fragmentation</text> <text x="324" y="276">unit</text> <text x="360" y="276">(c)</text> <text x="424" y="276">aggregation</text> <text x="500" y="276">packet</text> </g> </svg> </artwork> <artwork type="ascii-art"><![CDATA[ +-------------------+ | RTP Header | +-------------------+ | RTP Payload Header| +-------------------+ | (UT = Aggr) | | RTP Header | +-------------------+ +-------------------+ +-------------------+ | MIHSunitUnit 1 Size | | RTP Header | | RTP Payload Header| +-------------------+ +-------------------+ | (UT = Frag) | | MIHS Unit 1 | | RTP Payload Header| +-------------------+ +-------------------+ +-------------------+ | FU Header | | MIHSunitUnit 2 Size | | RTP Payload | +-------------------+ +-------------------+ | (Single MIHS unit)| | RTP Payload | | ... | +-------------------+ +-------------------+ +-------------------+ (a) single unit (b)fragmentation unit (c) aggregation packet ]]></artwork> </artset> </figure> <section anchor="single"> <name>Single Unit Payload Structure</name> <t>In a single unit payload structure, as described in <xref target="_figure-transmission-single"/>, 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> <artset> <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round"> <path d="M 8,64 L 8,192" fill="none" stroke="black"/> <path d="M 136,96 L 136,128" fill="none" stroke="black"/> <path d="M 264,160 L 264,192" fill="none" stroke="black"/> <path d="M 520,64 L 520,192" fill="none" stroke="black"/> <path d="M 8,64 L 520,64" fill="none" stroke="black"/> <path d="M 8,96 L 520,96" fill="none" stroke="black"/> <path d="M 8,128 L 136,128" fill="none" stroke="black"/> <path d="M 264,160 L 520,160" fill="none" stroke="black"/> <path d="M 8,192 L 520,192" fill="none" stroke="black"/> <g class="text"> <text x="16" y="36">0</text> <text x="176" y="36">1</text> <text x="336" y="36">2</text> <text x="496" y="36">3</text> <text x="16" y="52">0</text> <text x="32" y="52">1</text> <text x="48" y="52">2</text> <text x="64" y="52">3</text> <text x="80" y="52">4</text> <text x="96" y="52">5</text> <text x="112" y="52">6</text> <text x="128" y="52">7</text> <text x="144" y="52">8</text> <text x="160" y="52">9</text> <text x="176" y="52">0</text> <text x="192" y="52">1</text> <text x="208" y="52">2</text> <text x="224" y="52">3</text> <text x="240" y="52">4</text> <text x="256" y="52">5</text> <text x="272" y="52">6</text> <text x="288" y="52">7</text> <text x="304" y="52">8</text> <text x="320" y="52">9</text> <text x="336" y="52">0</text> <text x="352" y="52">1</text> <text x="368" y="52">2</text> <text x="384" y="52">3</text> <text x="400" y="52">4</text> <text x="416" y="52">5</text> <text x="432" y="52">6</text> <text x="448" y="52">7</text> <text x="464" y="52">8</text> <text x="480" y="52">9</text> <text x="496" y="52">0</text> <text x="512" y="52">1</text> <text x="232" y="84">RTP</text> <text x="276" y="84">Header</text> <text x="40" y="116">Payload</text> <text x="100" y="116">Header</text> <text x="220" y="148">MIHS</text> <text x="260" y="148">Unit</text> <text x="300" y="148">Data</text> <text x="312" y="180">...OPTIONAL</text> <text x="376" y="180">RTP</text> <text x="424"y="180">padding</text>y="180">Padding</text> </g> </svg> </artwork> <artwork type="ascii-art"><![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 RTPpaddingPadding | +-------------------------------+-------------------------------+ ]]></artwork> </artset> </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"/>. In the case of fragmentation, all RTP payload header fieldsMUST<bcp14>MUST</bcp14> remain unchanged across all fragments.</t> <figure anchor="_figure-fragment-structure"> <name>Fragmentation Unit Payload Structure</name> <artset> <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round"> <path d="M 8,64 L 8,192" fill="none" stroke="black"/> <path d="M 136,96 L 136,128" fill="none" stroke="black"/> <path d="M 264,96 L 264,128" fill="none" stroke="black"/> <path d="M 264,160 L 264,192" fill="none" stroke="black"/> <path d="M 520,64 L 520,192" fill="none" stroke="black"/> <path d="M 8,64 L 520,64" fill="none" stroke="black"/> <path d="M 8,96 L 520,96" fill="none" stroke="black"/> <path d="M 8,128 L 264,128" fill="none" stroke="black"/> <path d="M 264,160 L 520,160" fill="none" stroke="black"/> <path d="M 8,192 L 520,192" fill="none" stroke="black"/> <g class="text"> <text x="16" y="36">0</text> <text x="176" y="36">1</text> <text x="336" y="36">2</text> <text x="496" y="36">3</text> <text x="16" y="52">0</text> <text x="32" y="52">1</text> <text x="48" y="52">2</text> <text x="64" y="52">3</text> <text x="80" y="52">4</text> <text x="96" y="52">5</text> <text x="112" y="52">6</text> <text x="128" y="52">7</text> <text x="144" y="52">8</text> <text x="160" y="52">9</text> <text x="176" y="52">0</text> <text x="192" y="52">1</text> <text x="208" y="52">2</text> <text x="224" y="52">3</text> <text x="240" y="52">4</text> <text x="256" y="52">5</text> <text x="272" y="52">6</text> <text x="288" y="52">7</text> <text x="304" y="52">8</text> <text x="320" y="52">9</text> <text x="336" y="52">0</text> <text x="352" y="52">1</text> <text x="368" y="52">2</text> <text x="384" y="52">3</text> <text x="400" y="52">4</text> <text x="416" y="52">5</text> <text x="432" y="52">6</text> <text x="448" y="52">7</text> <text x="464" y="52">8</text> <text x="480" y="52">9</text> <text x="496" y="52">0</text> <text x="512" y="52">1</text> <text x="232" y="84">RTP</text> <text x="276" y="84">Header</text> <text x="40" y="116">Payload</text> <text x="100" y="116">Header</text> <text x="156" y="116">FU</text> <text x="196" y="116">Header</text> <text x="196" y="148">MIHS</text> <text x="236" y="148">Unit</text> <text x="292" y="148">Fragment</text> <text x="312" y="180">...OPTIONAL</text> <text x="376" y="180">RTP</text> <text x="424" y="180">Padding</text> </g> </svg> </artwork> <artwork type="ascii-art"><![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> </artset> </figure> <t>FU headers are used to enable fragmenting a single MIHS unit into multiple RTP packets. Fragments of the same MIHS unitMUST<bcp14>MUST</bcp14> be sent in consecutive order with ascending RTP sequence numbers (with no other RTP packets within the same RTP stream being sent between the first and last fragment). FUsMUST NOT<bcp14>MUST NOT</bcp14> be nested, i.e., an FUMUST NOT<bcp14>MUST NOT</bcp14> contain a subset of another FU.</t> <t><xref target="_figure-fragment-header"/> describesaan FU header, including the following fields:</t> <figure anchor="_figure-fragment-header"> <name>Fragmentationunit header</name>Unit Header</name> <artset> <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="112" width="272" viewBox="0 0 272 112" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round"> <path d="M 8,32 L 8,96" fill="none" stroke="black"/> <path d="M 40,32 L 40,96" fill="none" stroke="black"/> <path d="M 72,32 L 72,96" fill="none" stroke="black"/> <path d="M 104,32 L 104,64" fill="none" stroke="black"/> <path d="M 136,32 L 136,64" fill="none" stroke="black"/> <path d="M 168,32 L 168,96" fill="none" stroke="black"/> <path d="M 200,32 L 200,64" fill="none" stroke="black"/> <path d="M 232,32 L 232,64" fill="none" stroke="black"/> <path d="M 264,32 L 264,96" fill="none" stroke="black"/> <path d="M 8,32 L 264,32" fill="none" stroke="black"/> <path d="M 8,64 L 264,64" fill="none" stroke="black"/> <path d="M 8,96 L 264,96" fill="none" stroke="black"/> <g class="text"> <text x="24" y="52">0</text> <text x="56" y="52">1</text> <text x="88" y="52">2</text> <text x="120" y="52">3</text> <text x="152" y="52">4</text> <text x="184" y="52">5</text> <text x="216" y="52">6</text> <text x="248" y="52">7</text> <text x="24" y="84">FUS</text> <text x="56" y="84">FUE</text> <text x="112" y="84">RSV</text> <text x="220" y="84">UT</text> </g> </svg> </artwork> <artwork type="ascii-art"><![CDATA[ +---+---+---+---+---+---+---+---+ | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | +---+---+---+---+---+---+---+---+ |FUS|FUE| RSV | UT | +---+---+-----------+-----------+ ]]></artwork> </artset> </figure><t>FUS<dl> <dt>FUS (Fragmented Unit Start, 1bit): thisbit):</dt> <dd> <t>This fieldMUST<bcp14>MUST</bcp14> be set to 1 for the firstfragment,fragment and 0 for the other fragments.</t><t>FUE</dd> <dt>FUE (Fragmented Unit End, 1bit): thisbit):</dt> <dd> <t>This fieldMUST<bcp14>MUST</bcp14> be set to 1 for the lastfragment,fragment and 0 for the other fragments.</t> </dd> </dl> <t>The combination FUS=1 and FUE=1MUST NOT<bcp14>MUST NOT</bcp14> occur; such packets are invalid.</t><t>RSV<dl> <dt>RSV (Reserved, 3bits): thesebits):</dt> <dd> <t>These bitsMUST<bcp14>MUST</bcp14> be set to 0 by the sender and ignored by the receiver.</t><t>UT</dd> <dt>UT (Unit Type, 3bits): thisbits):</dt> <dd> <t>This field indicates the type of the MIHS unit this fragment belongs to, using values defined in <xref target="_figure-transmission-type"/>.</t> </dd> </dl> <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. In cases where consecutive fragments with FUE and FUS are lost, the receiver mayin some casesbe able to detect that surrounding fragments belong to a different partially received MIHS unit (e.g., if the UT field holds a different value).</t> </section> <section anchor="aggregated"> <name>Aggregation Packet Payload Structure</name> <t>In an aggregation packet, as described in <xref target="_figure-aggre-structure"/>, the RTP packet contains an RTP header, followed by a payload header,and, forand (for each aggregated MIHSUnit,unit) a MIHS unit size followed by the MIHS unit. The payload header follows the structure described in <xref target="payload-header"/>.</t> <figure anchor="_figure-aggre-structure"> <name>Single-Time Aggregation Packet</name> <artset> <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="336" width="528" viewBox="0 0 528 336" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round"> <path d="M 8,64 L 8,160" fill="none" stroke="black"/> <path d="M 8,192 L 8,304" fill="none" stroke="black"/> <path d="M 248,192 L 248,224" fill="none" stroke="black"/> <path d="M 264,96 L 264,128" fill="none" stroke="black"/> <path d="M 264,272 L 264,304" fill="none" stroke="black"/> <path d="M 520,64 L 520,160" fill="none" stroke="black"/> <path d="M 520,192 L 520,304" fill="none" stroke="black"/> <path d="M 8,64 L 520,64" fill="none" stroke="black"/> <path d="M 8,96 L 520,96" fill="none" stroke="black"/> <path d="M 8,128 L 520,128" fill="none" stroke="black"/> <path d="M 8,192 L 520,192" fill="none" stroke="black"/> <path d="M 8,224 L 248,224" fill="none" stroke="black"/> <path d="M 264,272 L 520,272" fill="none" stroke="black"/> <path d="M 8,304 L 520,304" fill="none" stroke="black"/> <g class="text"> <text x="16" y="36">0</text> <text x="176" y="36">1</text> <text x="336" y="36">2</text> <text x="496" y="36">3</text> <text x="16" y="52">0</text> <text x="32" y="52">1</text> <text x="48" y="52">2</text> <text x="64" y="52">3</text> <text x="80" y="52">4</text> <text x="96" y="52">5</text> <text x="112" y="52">6</text> <text x="128" y="52">7</text> <text x="144" y="52">8</text> <text x="160" y="52">9</text> <text x="176" y="52">0</text> <text x="192" y="52">1</text> <text x="208" y="52">2</text> <text x="224" y="52">3</text> <text x="240" y="52">4</text> <text x="256" y="52">5</text> <text x="272" y="52">6</text> <text x="288" y="52">7</text> <text x="304" y="52">8</text> <text x="320" y="52">9</text> <text x="336" y="52">0</text> <text x="352" y="52">1</text> <text x="368" y="52">2</text> <text x="384" y="52">3</text> <text x="400" y="52">4</text> <text x="416" y="52">5</text> <text x="432" y="52">6</text> <text x="448" y="52">7</text> <text x="464" y="52">8</text> <text x="480" y="52">9</text> <text x="496" y="52">0</text> <text x="512" y="52">1</text> <text x="232" y="84">RTP</text> <text x="276" y="84">Header</text> <text x="88" y="116">RTP</text> <text x="136" y="116">Payload</text> <text x="196" y="116">Header</text> <text x="340" y="116">MIHS</text> <text x="380" y="116">Unit</text> <text x="408" y="116">1</text> <text x="436" y="116">Size</text> <text x="244" y="148">MIHS</text> <text x="284" y="148">Unit</text> <text x="312" y="148">1</text> <text x="8" y="180">:</text> <text x="520" y="180">:</text> <text x="92" y="212">MIHS</text> <text x="132" y="212">Unit</text> <text x="160" y="212">2</text> <text x="188" y="212">Size</text> <text x="244" y="244">MIHS</text> <text x="284" y="244">Unit</text> <text x="312" y="244">2</text> <text x="312" y="292">...OPTIONAL</text> <text x="376" y="292">RTP</text> <text x="424"y="292">padding</text>y="292">Padding</text> </g> </svg> </artwork> <artwork type="ascii-art"><![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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RTP Payload Header | MIHS Unit 1 Size | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MIHS Unit 1 | | | : : +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MIHS Unit 2 Size | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | MIHS Unit 2 | | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |...OPTIONAL RTPpaddingPadding | +-------------------------------+-------------------------------+ ]]></artwork> </artset> </figure> <t><xref target="_figure-aggre-structure"/> shows a Single-Time Aggregation Packet (STAP), which can be used to transmit multiple MIHS units that correspond to the same timestamp. For example, if two frequencies are used for the same content, they can be transmitted at once in a STAP. Multiple spatial units can also be sent together in a STAP, since this type of haptics data is time independent. The MIHS unit length field (16 bits) holds the length of the MIHS unit following it, in bytes. The value of the UT field of the payload header is 5.</t> <!--[rfced] FYI: In Figure 9, we moved the bit ruler over one space to the right to get the correct alignment (this is consistent with the other figures that contain bit rulers). Please let us know of any objections. --> <figure anchor="_figure-aggremtap-structure"><name>Multiple-time aggregation packet</name><name>Multiple-Time Aggregation Packet</name> <artset> <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" height="368" width="528" viewBox="0 0 528 368" class="diagram" text-anchor="middle" font-family="monospace" font-size="13px" stroke-linecap="round"> <path d="M 8,64 L 8,336" fill="none" stroke="black"/> <path d="M 136,240 L 136,272" fill="none" stroke="black"/> <path d="M 264,96 L 264,128" fill="none" stroke="black"/> <path d="M 264,208 L 264,240" fill="none" stroke="black"/> <path d="M 264,304 L 264,336" fill="none" stroke="black"/> <path d="M 392,128 L 392,160" fill="none" stroke="black"/> <path d="M 520,64 L 520,336" fill="none" stroke="black"/> <path d="M 8,64 L 520,64" fill="none" stroke="black"/> <path d="M 8,96 L 520,96" fill="none" stroke="black"/> <path d="M 8,128 L 520,128" fill="none" stroke="black"/> <path d="M 8,160 L 392,160" fill="none" stroke="black"/> <path d="M 8,208 L 520,208" fill="none" stroke="black"/> <path d="M 8,240 L 520,240" fill="none" stroke="black"/> <path d="M 16,272 L 136,272" fill="none" stroke="black"/> <path d="M 264,304 L 520,304" fill="none" stroke="black"/> <path d="M 8,336 L 520,336" fill="none" stroke="black"/> <g class="text"> <textx="8"x="16" y="36">0</text> <textx="168"x="176" y="36">1</text> <textx="328"x="336" y="36">2</text> <textx="488"x="496" y="36">3</text> <textx="8"x="16" y="52">0</text> <textx="24"x="32" y="52">1</text> <textx="40"x="48" y="52">2</text> <textx="56"x="64" y="52">3</text> <textx="72"x="80" y="52">4</text> <textx="88"x="96" y="52">5</text> <textx="104"x="112" y="52">6</text> <textx="120"x="128" y="52">7</text> <textx="136"x="144" y="52">8</text> <textx="152"x="160" y="52">9</text> <textx="168"x="176" y="52">0</text> <textx="184"x="192" y="52">1</text> <textx="200"x="208" y="52">2</text> <textx="216"x="224" y="52">3</text> <textx="232"x="240" y="52">4</text> <textx="248"x="256" y="52">5</text> <textx="264"x="272" y="52">6</text> <textx="280"x="288" y="52">7</text> <textx="296"x="304" y="52">8</text> <textx="312"x="320" y="52">9</text> <textx="328"x="336" y="52">0</text> <textx="344"x="352" y="52">1</text> <textx="360"x="368" y="52">2</text> <textx="376"x="384" y="52">3</text> <textx="392"x="400" y="52">4</text> <textx="408"x="416" y="52">5</text> <textx="424"x="432" y="52">6</text> <textx="440"x="448" y="52">7</text> <textx="456"x="464" y="52">8</text> <textx="472"x="480" y="52">9</text> <textx="488"x="496" y="52">0</text> <textx="504"x="512" y="52">1</text> <text x="232" y="84">RTP</text> <text x="276" y="84">Header</text> <text x="88" y="116">RTP</text> <text x="136" y="116">Payload</text> <text x="196" y="116">Header</text> <text x="340" y="116">MIHS</text> <text x="380" y="116">Unit</text> <text x="408" y="116">1</text> <text x="436" y="116">Size</text> <text x="236" y="148">TS</text> <text x="276" y="148">Offset</text> <text x="244" y="180">MIHS</text> <text x="284" y="180">Unit</text> <text x="312" y="180">1</text> <text x="84" y="228">MIHS</text> <text x="124" y="228">Unit</text> <text x="152" y="228">2</text> <text x="180" y="228">Size</text> <text x="372" y="228">TS</text> <text x="412" y="228">Offset</text> <text x="44" y="260">TS</text> <text x="84"y="260">offset</text>y="260">Offset</text> <text x="236" y="292">MIHS</text> <text x="276" y="292">Unit</text> <text x="304" y="292">2</text> <text x="312" y="324">...OPTIONAL</text> <text x="376" y="324">RTP</text> <text x="424"y="324">padding</text>y="324">Padding</text> </g> </svg> </artwork> <artwork type="ascii-art"><![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 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | RTP Payload Header | MIHS Unit 1 Size | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TS Offset | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | | MIHS Unit 1 | | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | MIHS Unit 2 Size | TS Offset | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TSoffsetOffset | | |-+-+-+-+-+-+-+-+ | | MIHS Unit 2 | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | |...OPTIONAL RTPpaddingPadding | +-------------------------------+-------------------------------+ ]]></artwork> </artset> </figure> <t><xref target="_figure-aggremtap-structure"/> shows amulti-time aggregation packet.Multi-Time Aggregation Packet (MTAP). It is used to transmit multiple MIHS units with different timestamps, in one RTP packet. Multi-time aggregation can help reduce the number ofpackets,packets in environments where some delay is acceptable. The value of the UT field of thePayload Headerpayload header is 6. The MIHS unit length field (16 bits) holds the length of the MIHS unit following it, in bytes. The timestamp offset field (TS offset, 16 bits) is present in the MTAPcase,case andMUST<bcp14>MUST</bcp14> be set to the value of (time of the MIHS unit - RTP timestamp of the packet). The timestamp offset of the earliest aggregation unitMUST<bcp14>MUST</bcp14> always be zero. Therefore, the RTP timestamp of the MTAP is identical to the earliest MIHS unit time.</t> </section> </section> <section anchor="mihs-trans"> <name>MIHS Units Transmission and Reception Considerations</name> <t>The following considerations apply for the streaming of MIHS units overRTP:</t>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 maximum variation of this duration. A senderSHOULD<bcp14>SHOULD</bcp14> 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 to make the decoder more robust to RTP packet loss. If a sender sends MIHS units with high duration variations, the receiverMAY<bcp14>MAY</bcp14> need to wait for a long period of time (e.g., the upper bound of the durationvariation),variation) to determine if a MIHS unit was lost in transmission. Whether this behavior is acceptable or not is application dependent, and the application can configure the encoder to generate MIHS unit of lengths with the appropriate variation.</t> <t>The MIHS format uses silent MIHS units to signal haptic silence. A senderMAY<bcp14>MAY</bcp14> 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 silentunit,unit or a lost packet, a senderMAY<bcp14>MAY</bcp14> 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 receiverSHOULD<bcp14>SHOULD</bcp14> assume that silence is intended until the reception of a non-silent MIHS unit. This can reduce the number of false detections of lost RTP packets by the decoder.</t> <t>In some multimedia conference scenarios using an RTP video mixer (e.g., when adding or selecting a new source), it is recommended to use Full Intra Request (FIR) feedback messageswith Haptics<xreftarget="RFC5104"/>.target="RFC5104"/> with Haptics. The purpose of the FIR message is to cause an encoder to send a decoder refresh point at the earliest opportunity. In the context of haptics, an appropriate decoder refresh point is an initialization MIHS unit. The initialization MIHS unit point enables a decoder to be reset to a known state andbe ableto decode all MIHS units following it.</t> </section> </section> <section anchor="payload-format-parameters"> <name>Payload Format Parameters</name> <t>This section describes payload format parameters. <xref target="optional-param"/> specifies new optionalparametersparameters, and <xref target="sdp-registration"/> further registers a new token in the mediasub-registrysubregistry of theSession"Session DescriptionProtocolsProtocol (SDP)Parameters registry.</t>Parameters" registry group.</t> <section anchor="optional-param"> <name>Optional Parameters Definition</name> <t>It is optional to include the SDP parameters in this section. Some parameters have a default valuewhich MUSTthat <bcp14>MUST</bcp14> be inferred if the parameter is not present in the SDP, unless an out-of-band agreement indicates a different value, as described in <xref target="sdp-cons"/>. The values of the SDP parameters indicated in this section are based on the current version of the MPEG Haptics Coding standard (ISO/IEC 23090-31:2025) and may be different in future versions of <xref target="ISO.IEC.23090-31"/>.</t> <!--[rfced] In the list in section 6.1, please clarify "may hold values among" (3 instances). Does this mean "may contain the values"? Also, is "or" (before "Custom") correct, or should it be "and/or"? One example Original: The avatar type is defined in [ISO.IEC.23090-31]: MPEG_haptics.avatar object.type is a string which may hold values among "Vibration", "Pressure", "Temperature", "Custom". Perhaps: The avatar type is defined in [ISO.IEC.23090-31]: MPEG_haptics.avatar object.type is a string that may contain the values "Vibration", "Pressure", "Temperature", or "Custom". --> <t>ver:</t> <t>This parameter 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 stringwhichthat 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 (and current) version of the MPEG Haptics Coding standard (ISO/IEC23090-31:2025) ,23090-31:2025), the value is "2025". When ver is not present, a default value of "2025"SHOULD<bcp14>SHOULD</bcp14> be inferred.</t><t>profile:</t><dl> <dt>profile:</dt> <dd> <t>This parameter indicates the profile used to generate the encodedstreamstream, as defined in <xref target="ISO.IEC.23090-31"/>: MPEG_haptics object.profile is a stringwhichthat may hold the values "simple-parametric" or "main". When profile is not present, the default value "main"SHOULD<bcp14>SHOULD</bcp14> be inferred.</t><t>lvl:</t></dd> <dt>lvl:</dt> <dd> <t>This parameter indicates the level used to generate the encodedstreamstream, as defined in <xref target="ISO.IEC.23090-31"/>: MPEG_haptics object.level is an integerwhichthat may hold the values 1 or 2. When lvl is not present, the default value 2SHOULD<bcp14>SHOULD</bcp14> be inferred.</t><t>maxlod:</t></dd> <dt>maxlod:</dt> <dd> <t>This parameter indicates the maximum level of details (LODs) to use for the avatar(s). The avatarlevel of detail (LOD)LOD is defined in <xref target="ISO.IEC.23090-31"/>: MPEG_haptics.avatar object.lod is an integerwhichthat may hold the value 0 or a positive integer.</t><t>avtypes:</t></dd> <dt>avtypes:</dt> <dd> <t>This parameter indicates, using a comma-separated list, the 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 a stringwhichthat may hold values among "Vibration", "Pressure", "Temperature", or "Custom".</t><t>modalities:</t></dd> <dt>modalities:</dt> <dd> <t>This parameter indicates, using a comma-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 stringwhichthat may hold values among "Pressure", "Acceleration", "Velocity", "Position", "Temperature", "Vibrotactile", "Water", "Wind", "Force", "Electrotactile", "Vibrotactile Texture", "Stiffness", "Friction", "Humidity", "User-defined Temporal", "User-defined Spatial", or "Other".</t><t>bodypartmask:</t></dd> <dt>bodypartmask:</dt> <dd> <t>This parameter is an integerwhichthat 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 integerwhichthat may hold a bit mask using bit positions defined intableTable 7 of <xref target="ISO.IEC.23090-31"/>.</t><t>maxfreq:</t></dd> <dt>maxfreq:</dt> <dd> <t>This parameter is an integerwhichthat 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.</t><t>minfreq:</t></dd> <dt>minfreq:</dt> <dd> <t>This parameter is an integerwhichthat 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.</t><t>dvctypes:</t></dd> <dt>dvctypes:</dt> <dd> <t>This parameter is an integer that indicates, using a comma-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 stringwhichthat may hold values among "LRA", "VCA", "ERM","Piezo""Piezo", or "Unknown".</t><t>silencesupp:</t></dd> <dt>silencesupp:</dt> <dd> <t>This parameter is an integerwhichthat indicates whether silence suppression should be used(1)(value 1) or not(0).(value 0). When silencesupp is not present, the default value 0SHOULD<bcp14>SHOULD</bcp14> be inferred.</t> </dd> </dl> </section> <section anchor="sdp-registration"> <name>SDP Parameter Registration</name> <t>This memo registers a 'haptics' token in the mediasub-registrysubregistry of theSession"Session DescriptionProtocolsProtocol (SDP)Parameters registry.Parameters" registry group. This registration contains the required information elements outlined in the SDP registration procedure defined insection 8.2 of<xref section="8.2" sectionFormat="of" target="RFC8866"/>.</t><t>(1)<!--[rfced] Please note that we updated the registration template in Section 6.2 as follows. Please let us know of any objections. Original: (1) ContactInformation:</t> <artwork><![CDATA[Information: Name: Hyunsik Yang Email: hyunsik.yang@interdigital.com]]></artwork> <t>(2)(2) Name being registered (as it will appear in SDP):haptics</t> <t>(3)haptics (3) Long-form name in English:haptics</t> <t>(4)haptics (4) Type of name ('media', 'proto', 'fmt', 'bwtype', 'nettype', or 'addrtype'):media</t> <t>(5)media (5) Purpose of the registeredname:</t> <artwork><![CDATA[name: The 'haptics' media type for the Session Description Protocol is used to describe a media stream whose content can be rendered as touch-related sensations. The media subtype further describes the specific format of the haptics stream. The 'haptics' media type for SDP is used to establish haptics media streams.]]></artwork> <t>(6)(6) Specification for the registered name: RFCXXXX</t> <t>RFC Editor Note: Replace RFCXXXXwithCurrent: Contact name: Hyunsik Yang Contact email address: hyunsik.yang@interdigital.com Name being defined (as it will appear in SDP): haptics Type of name: media Description: The 'haptics' media type for the Session Description Protocol is used to describe a media stream whose content can be rendered as touch-related sensations. The media subtype further describes thepublishedspecific format of the haptics stream. The 'haptics' media type for SDP is used to establish haptics media streams. Reference: RFCnumber.</t>9993 --> <dl> <dt>Contact name:</dt> <dd> <t>Hyunsik Yang</t> </dd> <dt>Contact email address:</dt> <dd> <t>hyunsik.yang@interdigital.com</t> </dd> <dt>Name being defined (as it will appear in SDP):</dt> <dd> <t>haptics</t> </dd> <dt>Type of name:</dt> <dd> <t>media</t> </dd> <dt>Description:</dt> <dd> <t>The 'haptics' media type for the Session Description Protocol is used to describe a media stream whose content can be rendered as touch-related sensations. The media subtype further describes the specific format of the haptics stream. The 'haptics' media type for SDP is used to establish haptics media streams.</t> </dd> <dt>Reference:</dt> <dd> <t>RFC 9993</t> </dd> </dl> </section> </section> <section anchor="sdp-considerations"> <name>SDP Considerations</name> <t>The mapping ofabove definedthe above-defined payload format media type to the corresponding fields inthe Session Description Protocol (SDP)SDP is done according to <xref target="RFC8866"/>.</t> <t>The media name in the "m=" line of SDPMUST<bcp14>MUST</bcp14> be haptics.</t> <t>The encoding name in the "a=rtpmap" line of SDPMUST<bcp14>MUST</bcp14> behmpg</t>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<bcp14>MUST</bcp14> 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. Parameter values, including string values,MUST<bcp14>MUST</bcp14> be written without quotation marks ("") in SDP. Parameter valueswhichthat are strings are not case sensitive andSHOULD<bcp14>SHOULD</bcp14> be written in lowercase.</t> <t>An example of media representation corresponding to the hmpg RTP payload in SDP is as follows:</t> <!--[rfced] The figure in Section 7 is marked as artwork. Please confirm if this is correct or if it should be marked as sourcecode instead. If it is marked as sourcecode, please consider whether the "type" attribute should be set. The current list of preferred values for "type" is available at https://www.rfc-editor.org/materials/sourcecode-types.txt. If the current list does not contain an applicable type, feel free to suggest additions for consideration. Note that it is also acceptable to leave the "type" attribute not set. --> <artwork><![CDATA[ m=haptics 43291 UDP/TLS/RTP/SAVPF 115 a=rtpmap:115 hmpg/8000 a=fmtp:115 profile=main;lvl=1;ver=2025 ]]></artwork> <section anchor="sdp-cons"> <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>When used for a unidirectional stream, the SDP parameters represent the properties of the sender (on the sending side) and of the receiver (on the receiving side). When used for a sendrecv stream, the SDP parameters represent the properties of the receiver.</t> <t>The receiver properties expressed using the SDP parameters 'ver','profile''profile', and 'lvl' correspond to implementation capabilities. The ver, profile, and lvl parametersMUST<bcp14>MUST</bcp14> be used symmetrically in SDP offer and answer. That is, their values in the answerMUST<bcp14>MUST</bcp14> match those in the offer, either explicitly signaled or implicitly inferred. In the same session, ver, profile, and lvlMUST NOT<bcp14>MUST NOT</bcp14> be changed in subsequent offers or answers.</t> <t>The properties expressed using SDP parameters other than 'ver','profile''profile', and 'lvl' are provided as recommendations for efficient data transmission and are not binding, meaning that a sender is encouraged but not required to conform to the parameters specified by the receiver. These propertiesMAY<bcp14>MAY</bcp14> be set to different values in offers and answers. These propertiesMAY<bcp14>MAY</bcp14> be updated in subsequent offers or answers.</t> <t>Any receiver compliant with <xref target="ISO.IEC.23090-31"/>MUST<bcp14>MUST</bcp14> be capable of decoding any stream with a compatible version, profile, and level. A receiver supporting a more general profile will accept a stream corresponding toathe same or a less general profile (e.g., "main" is more general than "simple-parametric"). A receiver supporting a given level will accept a stream corresponding toathe same or a lower level. A receiver supporting a given version will accept a stream corresponding to the same version andMAY<bcp14>MAY</bcp14> accept other versions. A receiverMAY<bcp14>MAY</bcp14> ignore any part of a received stream, e.g., that it does not have support for rendering.</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<!--[rfced] May we remove the second sentence below? It appears to be duplicate information from the first sentence. Original: The parameter 'ver' indicates the version of the haptic standard specification. If it is not specified, the The parameter 'ver' indicates the version of the haptic standard specification. If it is not specified, the value "2025" indicating the MPEG Haptics Coding standard ISO/IEC 23090-31:2025<xref target="ISO.IEC.23090-31"/>[ISO.IEC.23090-31] SHOULD be inferred, although the sender and receiver MAY use a specific value based on an out-of-band agreement. Perhaps: The parameter 'ver' indicates the version of the haptic standard specification. If it is not specified, the value "2025" indicating the MPEG Haptics Coding standard ISO/IEC 23090-31:2025 [ISO.IEC.23090-31] SHOULD be inferred, although the sender and receiver MAY use a specific value based on an out-of-band agreement. --> <t>The parameter 'ver' indicates the version of the haptic standard specification. If it is not specified, the parameter 'ver' indicates the version of the haptic standard specification. If it is not specified, the value "2025" indicating the MPEG Haptics Coding standard ISO/IEC 23090-31:2025 <xref target="ISO.IEC.23090-31"/> <bcp14>SHOULD</bcp14> be inferred, although the sender and receiver <bcp14>MAY</bcp14> use a specific value based on an out-of-band agreement. The parameter 'profile' is used to restrict the number of tools used (e.g., the simple-parametric profilefits enableenables simpler implementations than the main profile). If it is not specified, the most general profile "main"SHOULD<bcp14>SHOULD</bcp14> be inferred, although the sender and receiverMAY<bcp14>MAY</bcp14> use a specific value based on an out-of-band agreement. The parameter '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<bcp14>SHOULD</bcp14> be inferred, although the sender and receiverMAY<bcp14>MAY</bcp14> use a specific version based on an out-of-band agreement.</t> <!--[rfced] We note "body-part-mask" as well as "body part mask" (as defined in [ISO.IEC.23090-31]). Should the hyphenated form be updated as shown below for consistency? Original: 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 ... Perhaps: 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 ... --> <t>Other parameters can be used to indicate bitstream properties as well as receiver capabilities. The parameters 'maxlod', 'avtypes', 'bodypartmask', 'maxfreq', 'minfreq', 'dvctypes', and '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 actuatordevices,devices or a preferred set of bitstream properties. For example, different receiversMAY<bcp14>MAY</bcp14> 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 receiversMAY<bcp14>MAY</bcp14> 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 streamwhich includethat includes and possibly prioritizes those properties. For example, if the haptic stream server provides more information than the body mask specified by the receiver, the additional information can be either integrated into a single effect or ignored by the receiver.</t> <t>The parameter '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"/>. If it is not specified, the value "0", indicating no silence suppression,SHOULD<bcp14>SHOULD</bcp14> be inferred, although the sender and receiverMAY<bcp14>MAY</bcp14> use silence suppression based on an out-of-band agreement.</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 parametersmaxlod, bodypartmask, maxfreq, minfreq, dvctypes,'maxlod', 'bodypartmask', 'maxfreq', 'minfreq', 'dvctypes', andmodalities'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 receiverMUST<bcp14>MUST</bcp14> 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-considerations"> <name>Congestion Control Considerations</name> <!--[rfced] We note only one instance of "HMPG" - is this correct, or should it be lowercase? If it should remain as uppercase, how may we expand it? Original: The general congestion control considerations for transporting RTP data apply to HMPG haptics over RTP as well [RFC3550] --> <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 usage by adjusting either the encoder bit rate orby adjustingthe stream content (e.g.,level of detail,the LOD, body parts, actuator frequency range, target device types, and modalities). The considerations in this section are applicable to best-effort networks and controlled environments.</t><t>In<!--[rfced] May we revise this text to be two sentences to improve readability? Original: 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. Perhaps: In case of congestion, a receiver or intermediate node MAY prioritize initialization MIHS units over other units, as these contain metadata that is used to reinitialize the decoder. Additionally, a receiver or intermediate node MAY drop silent units before other types, as a receiver MAY interpret a missing unit as silence. --> <t>In case of congestion, a receiver or intermediate node <bcp14>MAY</bcp14> 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 nodeMAY<bcp14>MAY</bcp14> prioritize initialization MIHS units over other units, since initialization MIHS units contain metadata used tore-initializereinitialize the decoder, andMAY<bcp14>MAY</bcp14> drop silent MIHS units before other types of MIHS units, since a receiverMAY<bcp14>MAY</bcp14> 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 theircontent,content to prioritize haptic datacontributingthat contributes the most to the user experience. In case of congestion, intermediate nodes and receiversSHOULD<bcp14>SHOULD</bcp14> use the MIHS layer value to determine the relative importance of haptic RTP packets.</t> <t>Receivers should monitor timestamps and treat gaps as loss of the corresponding MIHS units. MIHS units, as defined in <xref target="ISO.IEC.23090-31"/>, should be checked for structural integrity according to their type. When CRC16 or CRC32 information is present in MIHS units, receivers must validate data integrity, and units failingCRC checksCyclic Redundancy Checks (CRCs) should be treated as lost. Receivers should further monitor indicators of service degradation such as unexpected silent gaps, repeated decoder reinitializations, or decoding failures. Receivers should report packet loss to the sender using RTCP Receiver Reports <xref target="RFC3550"/> and, when available, may report detailed loss and jitter metrics using mechanisms described in <xref target="RFC4585"/>.</t> </section> <section anchor="security-considerations"> <name>Security Considerations</name><t>This<t>The RTP payload format is subject to security threats commonly associated with RTP payload formats, as well as threats specific to the interaction of haptic devices with the physicalworld,world and threats associated with the use of compression by the codec. Securityconsiderationconsiderations for threats commonly associated with RTP payload formats are outlined in <xref target="RFC3550"/>, as well as in RTP profiles such as RTP/AVP <xreftarget="RFC3551"/>),target="RFC3551"/>, RTP/AVPF <xref target="RFC4585"/>, RTP/SAVP <xref target="RFC3711"/>,orand RTP/SAVPF <xref target="RFC5124"/>.</t> <t>Haptic sensors and actuators operate within the physical environment. This introduces the potential for information leakage throughsensors,sensors or damage to actuators due to data tampering. Additionally, misusing the functionalities of actuators (such as force, position, temperature, vibration,electro-tactile,electrotactile, etc.) may pose a risk of harm to the user, forexampleexample, by setting keyframe parameters (e.g., amplitude, position, and frequency) or channel gain to a value that surpasses a permissible range. While individual devices can implement security measures to reduce or eliminate those risks on a per-device basis, in somecasescases, harm can be inflicted by setting valueswhichthat are permissible for the individual device. For example, causing contact with the physical environment or triggering unexpected force feedback can potentially harm the user. Each haptic system should therefore implement system-dependent security measures, which are more error prone. To limit the risk that attackers exploit weaknesses in haptic systems, it is important that haptic transmissionshouldbe protected against malicious traffic injection or tampering.</t> <t>However, as "Securing the RTP Framework: Why RTP Does Not Mandate a Single Media Security Solution" <xref target="RFC7202"/> discusses, it is not an RTP payload format's responsibility to discuss or mandate what solutions are used to meet the basic security goals like confidentiality, integrity, and source authenticity for RTP in general. The responsibility for implementing security mechanisms lies with the application developer. They can find guidance on available security mechanisms and important considerations in "Options for Securing RTP Sessions" <xref target="RFC7201"/>, although <xref target="RFC7201"/> is now considered dated and several mechanisms described therein have since evolved.</t> <t>ApplicationsSHOULD<bcp14>SHOULD</bcp14> use appropriate and current strong security mechanisms. For modern best practices, applications can consider the following options:</t> <!--[rfced] BCP 195 contains RFCs 8996 and 9325. Should there be a reference to BCP 195 in this sentence (with a corresponding entry under the Informative References section), or is the reference to [RFC9325] sufficient? Current: (D)TLS-based protection: For guidance on using TLS 1.3 and DTLS, applications should refer to BCP 195, including [RFC9325], which provides up-to-date recommendations. --> <ul spacing="normal"> <li> <t>(D)TLS-based protection: For guidance on using TLS 1.3 and DTLS, applications should refer to BCP 195, including <xref target="RFC9325"/>, which provides up-to-date recommendations.</t> </li> <li> <t>IPsec-based protection: Relevant and current protocol specifications include <xref target="RFC4303"/>(ESP)("IP Encapsulating Security Payload (ESP)") and <xref target="RFC7296"/>(IKEv2).</t>("Internet Key Exchange Protocol Version 2 (IKEv2)").</t> </li> </ul> <t>This document does not mandate a specific security mechanism. Instead, applications are responsible for selecting mechanisms that follow current best practices for confidentiality, integrity, and sourceauthentication,authentication and that reflect the evolving security landscape beyond what is covered in <xref target="RFC7201"/>.</t> <t>The haptic codec used with this payload format uses a compression algorithm (seesectionsSections 8.2.8.5 and 8.3.3.2 in <xref target="ISO.IEC.23090-31"/>). An attacker may inject pathological datagrams into the streamwhichthat are complex to decode and cause the receiver to be overloaded, similarly to <xref target="RFC3551"/>.</t> <t>End-to-end security with authentication, integrity, or confidentiality protection will prevent a Media-Aware Network Element (MANE) from performing media-aware operations other than discarding complete packets. In the case of confidentiality protection, it will even be prevented from discarding packets in a media-aware way. To be allowed to perform such operations, a MANE is required to be a trusted entity that is included in the security context establishment.</t> </section> <section anchor="iana-considerations"> <name>IANA Considerations</name> <section anchor="media-type-registration-update"> <name>Media Type Registration Update</name> <t>This memo updates the 'hmpg' haptic subtype defined in <xref target="RFC9695"/> for use with the MPEG-I haptics streamable binary coding format described in ISO/IEC 23090-31: Haptics coding <xref target="ISO.IEC.23090-31"/>. This memoespeciallydefines optional parameters for this type in <xref target="optional-param"/>. The original subtype registration forhaptics/hmpg,'haptics/hmpg', registered with IANA in <xref target="RFC9695"/>, did not include any required or optional parameters. This document introduces optional parameters to enable extended functionality while maintaining backward compatibility.</t> <t>A mapping of the parameters intothe Session Description Protocol (SDP)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 receiverMUST<bcp14>MUST</bcp14> ignore any parameter unspecified in this memo.</t><t>This document requests an SDP parameters<t>IANA has updated the registration forthe haptic media type, as'haptics', described in <xreftarget="sdp-registration"/>.</t>target="sdp-registration"/>, in the "haptics" registry within the "Media Types" registry group and listed document as an additional reference.</t> <t>The following entries identify themedia type being updated:</t> <t>Type name: haptics</t> <t>Subtype name: hmpg</t>updates to the 'media/haptics' registration:</t> <dl> <dt>Type name:</dt> <dd> <t>haptics</t> </dd> <dt>Subtype name:</dt> <dd> <t>hmpg</t> </dd> </dl> <t>The following entries are replaced by this memo:</t><t>Optional parameters: see section 6.2<dl> <dt>Optional parameters:</dt> <dd> <t>See <xref target="sdp-registration"/> of RFCXXX (note to RFC editor: replace with this RFC's number).</t> <t>Person9993</t> </dd> <dt>Person & email address to contact for furtherinformation: Yeshwant Muthusamyinformation:</dt> <dd> <t><contact fullname="Yeshwant Muthusamy"/> (yeshwant@yeshvik.com) andHyunsik Yang<contact fullname="Hyunsik Yang"/> (hyunsik.yang@interdigital.com)</t></section></dd> </dl> <!-- [rfced] We had trouble matching up the text in the IANA Considerations with the IANA registrations. We have attempted to make the text more clear. This includes adding a section 10.2 to specify the new SDP parameters media registration. Please review carefully and let us know if any updates are needed. --> </section> <sectionanchor="acknowledgments"> <name>Acknowledgments</name> <t>Thanks to Philippe Guillotel, Quentin Galvane, Jonathan Lennox, Marius Kleidl and Stephan Wenger foranchor="new-sdp-parameters-media-registration"> <name>New SDP Parameters Media Registration</name> <t>IANA has registered thecomments and discussions about this draft.</t>following in the "media" registry within the "Session Description Protocol (SDP) Parameters" registration group.</t> <table> <thead> <tr> <th align="center">Type</th> <th align="left">SDP Name</th> <th align="left">Reference</th> </tr> </thead> <tbody> <tr> <td align="center">media</td> <td align="left">haptics</td> <td align="left">RFC 9993</td> </tr> </tbody> </table> </section> </section> </middle> <back> <references anchor="sec-combined-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>Information technology - Coded representation of immersivemedia</title>media - Part 31: Haptics coding</title> <author> <organization>ISO/IEC</organization> </author> <date year="2025"/> </front> <seriesInfo name="ISO/IEC" value="23090-31:2025"/> </reference> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3550.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9695.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8866.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3264.xml"/> </references> <references anchor="sec-informative-references"> <name>Informative References</name> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2736.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8088.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7201.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7202.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7296.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4303.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9325.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5124.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3711.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3551.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4585.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5104.xml"/> </references> </references> <?line 825?> <section numbered="false" anchor="acknowledgments"> <name>Acknowledgments</name> <t>Thanks to <contact fullname="Philippe Guillotel"/>, <contact fullname="Quentin Galvane"/>, <contact fullname="Jonathan Lennox"/>, <contact fullname="Marius Kleidl"/>, and <contact fullname="Stephan Wenger"/> for the comments and discussions about this document.</t> <!--[rfced] FYI: We have added an expansion for the following abbreviation per Section 3.6 of RFC 7322 ("RFC Style Guide"). Please review this as well as each expansion in the document carefully to ensure correctness. Cyclic Redundancy Checks (CRCs) --> <!--[rfced] Please review the "Inclusive Language" portion of the online Style Guide <https://www.rfc-editor.org/styleguide/part2/#inclusive_language> and let us know if any changes are needed. Updates of this nature typically result in more precise language, which is helpful for readers. Note that our script did not flag any words in particular, but this should still be reviewed as a best practice. --> </section> </back> <!-- ##markdown-source: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 h1Gy/F+wLbk5vrIAAA==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 1QAA --> </rfc>