rfc9993.original.xml   rfc9993.xml 
<?xml version='1.0' encoding='utf-8'?> <?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc [ <!DOCTYPE rfc [
<!ENTITY nbsp "&#160;"> <!ENTITY nbsp "&#160;">
<!ENTITY zwsp "&#8203;"> <!ENTITY zwsp "&#8203;">
<!ENTITY nbhy "&#8209;"> <!ENTITY nbhy "&#8209;">
<!ENTITY wj "&#8288;"> <!ENTITY wj "&#8288;">
]> ]>
<?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?> <?xml-stylesheet type="text/xsl" href="rfc2629.xslt" ?>
<!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.30 (Ruby 2.5. <!-- generated by https://github.com/cabo/kramdown-rfc version 1.7.35 (Ruby 2.5.
9) --> 9) -->
<?rfc docmapping="yes"?> <rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft
<rfc xmlns:xi="http://www.w3.org/2001/XInclude" ipr="trust200902" docName="draft -ietf-avtcore-rtp-haptics-latest" category="std" consensus="true" submissionType
-ietf-avtcore-rtp-haptics-latest" category="std" consensus="true" submissionType ="IETF" xml:lang="en" number="9993" updates="9695" tocInclude="true" sortRefs="t
="IETF" updates="9695" tocInclude="true" sortRefs="true" symRefs="true" version= rue" symRefs="true" version="3">
"3"> <!-- xml2rfc v2v3 conversion 3.33.0 -->
<!-- xml2rfc v2v3 conversion 3.31.0 --> <link href="https://datatracker.ietf.org/doc/draft-ietf-avtcore-rtp-haptics-la
test" rel="prev"/>
<front> <front>
<title abbrev="RTP-Payload-Haptic">RTP Payload Format for Haptics</title> <title abbrev="RTP Payload Format for Haptics">RTP Payload Format for Haptic
<seriesInfo name="Internet-Draft" value="draft-ietf-avtcore-rtp-haptics-late s</title>
st"/> <seriesInfo name="RFC" value="9993"/>
<author initials="" surname="HS Yang" fullname="Hyunsik Yang"> <author initials="" surname="HS Yang" fullname="Hyunsik Yang">
<organization>InterDigital</organization> <organization>InterDigital</organization>
<address> <address>
<postal> <postal>
<country>USA</country> <country>United States of America</country>
</postal> </postal>
<email>hyunsik.yang@interdigital.com</email> <email>hyunsik.yang@interdigital.com</email>
</address> </address>
</author> </author>
<author initials="X." surname="de Foy" fullname="Xavier de Foy"> <author initials="X." surname="de Foy" fullname="Xavier de Foy">
<organization>InterDigital</organization> <organization>InterDigital</organization>
<address> <address>
<postal> <postal>
<country>Canada</country> <country>Canada</country>
</postal> </postal>
<email>xavier.defoy@interdigital.com</email> <email>xavier.defoy@interdigital.com</email>
</address> </address>
</author> </author>
<date/> <date year="2026" month="May"/>
<area>Transport</area> <area>WIT</area>
<workgroup>avtcore</workgroup> <workgroup>avtcore</workgroup>
<abstract> <abstract>
<?line 61?> <?line 66?>
<t>This memo specifies an RTP payload format for the MPEG-I haptic data. A hapti c 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 fragmentat ion of a MIHS unit into multiple RTP packets. The original subtype registration for haptics/hmpg, registered with IANA in RFC9695, did not include any required or optional parameters. This memo updates RFC9695 and the haptics/hmpg registrat ion to add optional parameters. It also provides SDP usage information for the h aptics media type.</t> <t>This memo specifies an RTP payload format for MPEG-I haptic data. A haptic me dia stream is composed of MPEG-I Haptic Stream (MIHS) units including a MIHS uni t 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 for 'haptics/hmpg' (RFC 9695) did not include any required or optional parameters. T his memo updates RFC 9695 and the 'haptics/hmpg' registration to add optional pa rameters. It also provides Session Description Protocol (SDP) usage information for the 'haptics' media type.</t>
</abstract> </abstract>
</front> </front>
<middle> <middle>
<?line 65?> <?line 70?>
<section anchor="introduction"> <section anchor="introduction">
<name>Introduction</name> <name>Introduction</name>
<t>Haptics provides users with tactile effects in addition to audio and vi <t>Haptics provides users with tactile effects in addition to audio and vi
deo, allowing them to experience sensory immersion. Haptic data is mainly transm deo, allowing them to experience sensory immersion. Haptic data is mainly transm
itted to devices that act as actuators and provides them with information to ope itted to devices that act as actuators, providing them with information to opera
rate according to the values defined in haptic effects. The IETF registered hapt te according to the values defined in haptic effects. The IETF registered 'hapti
ics as a primary media type akin to audio and video <xref target="RFC9695"/>.</t cs' as a primary media type, akin to 'audio' and 'video' <xref target="RFC9695"/
> >.</t>
<t>The MPEG Haptics Coding standard <xref target="ISO.IEC.23090-31"/> defi <t>The MPEG Haptics Coding standard <xref target="ISO.IEC.23090-31"/> defi
nes the data formats, metadata, and codec architecture to encode, decode, synthe nes the data formats, metadata, and codec architecture to encode, decode, synthe
size and transmit haptic signals. Within this MPEG standard, a haptic media stre size, and transmit haptic signals. Within this MPEG standard, a haptic media str
am is composed of MIHS units including a MIHS unit header and zero or more MIHS eam 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 for streaming, and si packets. The MIHS unit is a unit of packetization suitable for streaming and is
milar in essence to the NAL (Network Abstraction Layer) unit defined in some vid similar in essence to the Network Abstraction Layer (NAL) unit defined in some
eo specifications. This document specifies how haptic data (MIHS units) can be t video specifications. This document specifies how haptic data (MIHS units) can b
ransmitted using the RTP protocol. This document follows recommendations in <xre e transmitted using the RTP protocol. This document follows recommendations in <
f target="RFC8088"/> and <xref target="RFC2736"/> for RTP payload format writers xref target="RFC8088"/> and <xref target="RFC2736"/> for RTP payload format writ
. This document does not specify synchronization (lip sync) mechanisms between h ers. This document does not specify synchronization (lip sync) mechanisms betwee
aptics and audio/video components. In addition, this document specifies the ass n haptics and audio/video components. In addition, this document specifies the
ociated SDP parameters and SDP Offer/Answer considerations for the haptics media associated SDP parameters and SDP offer/answer considerations for the 'haptics'
type.</t> media type.</t>
</section> </section>
<section anchor="conventions"> <section anchor="conventions">
<name>Conventions</name> <name>Conventions</name>
<t>The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SH <t>The key words "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>", "<bcp14
OULD", "SHOULD NOT", "RECOMMENDED", "NOT RECOMMENDED", "MAY", and "OPTIONAL" in >REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
this document are to be interpreted as described in BCP 14 <xref target="RFC2119 NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>", "<bcp14>RECO
"/> <xref target="RFC8174"/> when, and only when, they appear in all capitals, a MMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
s shown here.</t> "<bcp14>MAY</bcp14>", and "<bcp14>OPTIONAL</bcp14>" in this document are to be i
</section> nterpreted as
<section anchor="definition"> described in BCP 14 <xref target="RFC2119"/> <xref target="RFC8174"/> when, and
<name>Definition</name> only when, they
appear in all capitals, as shown here.</t>
<?line -18?>
</section>
<section 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 con venience.</t> <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 con venience.</t>
<t>Actuator: component of a device for rendering haptic sensations.</t> <dl>
<t>Avatar: body (or part of body) representation.</t> <dt>Actuator:</dt>
<t>Band: component in a channel for containing effects for a specific rang <dd>
e of frequencies.</t> <t>Component of a device for rendering haptic sensations.</t>
<t>Channel: component in a perception containing one or more bands rendere </dd>
d on a device at a specific body location.</t> <dt>Avatar:</dt>
<t>Device: physical system having one or more actuators configured to rend <dd>
er a haptic sensation corresponding with a given signal.</t> <t>Body (or part of body) representation.</t>
<t>Effect: component of a band for defining a signal, consisting of a hapt </dd>
ic waveform or one or more haptic keyframes.</t> <dt>Band:</dt>
<t>Experience: top level haptic component containing perceptions and metad <dd>
ata.</t> <t>Component in a channel for containing effects for a specific range
<t>Haptics: tactile sensations.</t> of frequencies.</t>
<t>Keyframe: component of an effect mapping a position in time or space to </dd>
an effect parameter such as amplitude or frequency.</t> <dt>Channel:</dt>
<t>Metadata: global information about an experience, perception, channel, <dd>
or band.</t> <t>Component in a perception containing one or more bands rendered on
<t>MIHS unit: unit of packetization of the MPEG-I Haptic Stream format, wh a device at a specific body location.</t>
ich is used as unit of payload in the format described in this memo. See <xref t </dd>
arget="haptic-format-description"/> for details.</t> <dt>Device:</dt>
<t>Modality: type of haptics, such as vibration, force, pressure, position <dd>
, velocity, or temperature.</t> <t>Physical system having one or more actuators configured to render a
<t>Perception: haptic perception containing channels of a specific modalit haptic sensation corresponding with a given signal.</t>
y.</t> </dd>
<t>Signal: representation of the haptics associated with a specific modali <dt>Effect:</dt>
ty to be rendered on a device.</t> <dd>
<t>Hmpg format: hmpg is a binary compressed format for haptics data. Infor <t>Component of a band for defining a signal, consisting of a haptic w
mation is stored in a binary form and data compression is applied on data at the aveform or one or more haptic keyframes.</t>
band level. The haptics/hmpg media subtype is registered in <xref target="RFC96 </dd>
95"/> and updated by this memo.</t> <dt>Experience:</dt>
<t>Independent unit: a MIHS unit is independent if it can be decoded indep <dd>
endently from earlier units. Independent units contain timing information and ar <t>Top-level haptic component containing perceptions and metadata.</t>
e also called "sync units" in <xref target="ISO.IEC.23090-31"/>.</t> </dd>
<t>Dependent unit: a MIHS unit is dependent if it requires earlier units f <dt>Haptics:</dt>
or decoding. Dependent units do not contain timing information and are also call <dd>
ed "non-sync units" in <xref target="ISO.IEC.23090-31"/>.</t> <t>Tactile sensations.</t>
<t>Time-independent effect: a haptic effect that occurs regardless of time </dd>
. The tactile feedback of a texture is a representative example. Time-independen <dt>Keyframe:</dt>
t effects are encoded in spatial MIHS units, defined in <xref target="MIHS-forma <dd>
t"/>.</t> <t>Component of an effect mapping a position in time or space to an ef
<t>Time-dependent effect: a haptic effect that varies over time. For examp fect parameter such as amplitude or frequency.</t>
le, tactile feedback for vibration and force are time-dependent effects, and ar </dd>
e encoded in temporal MIHS units, defined in <xref target="MIHS-format"/>.</t> <dt>Metadata:</dt>
<dd>
<t>Global information about an experience, perception, channel, or ban
d.</t>
</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>
</dd>
<dt>Modality:</dt>
<dd>
<t>Type of haptics, such as vibration, force, pressure, position, velo
city, or temperature.</t>
</dd>
<dt>Perception:</dt>
<dd>
<t>Haptic perception containing channels of a specific modality.</t>
</dd>
<dt>Signal:</dt>
<dd>
<t>Representation of the haptics associated with a specific modality t
o be rendered on a device.</t>
</dd>
<dt>Hmpg format:</dt>
<dd>
<t>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="RFC9695"/> and upda
ted by this memo.</t>
</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>
</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>
</dd>
<dt>Time-independent effect:</dt>
<dd>
<t>A haptic effect that occurs regardless of time. The tactile feedbac
k of a texture is a representative example. Time-independent effects are encoded
in spatial MIHS units, as defined in <xref target="MIHS-format"/>.</t>
</dd>
<dt>Time-dependent effect:</dt>
<dd>
<t>A haptic effect that varies over time. For example, tactile feedbac
k for vibration and force are time-dependent effects and are encoded in temporal
MIHS units, as defined in <xref target="MIHS-format"/>.</t>
</dd>
</dl>
</section> </section>
<section anchor="haptic-format-description"> <section anchor="haptic-format-description">
<name>Haptic Format Description</name> <name>Haptic Format Description</name>
<section anchor="overview-of-haptic-coding"> <section anchor="overview-of-haptic-coding">
<name>Overview of Haptic Coding</name> <name>Overview of Haptic Coding</name>
<t>The MPEG Haptics Coding standard specifies methods for efficient tran smission and rendering of haptic signals, to enable immersive experiences. It su pports multiple types of perceptions, including the most common vibrotactile (se nse of touch that perceives vibrations) and kinesthetic perceptions (tactile res istance or force), but also other, less common perceptions, including for exampl e the sense of temperature or texture. It also supports two approaches for encod ing haptic signals: a "quantized" approach based on samples of measured data, an d a "descriptive" approach where the signal is synthesized using a combination o f functions. Both quantized and descriptive data can be encoded in a text-based exchange format based on JSON (.hjif), or in a binary packetized format for dist ribution and streaming (.hmpg). This last format is referred to as the MIHS form at and is a base for the RTP payload format described in this document.</t> <t>The MPEG Haptics Coding standard specifies methods for efficient tran smission and the rendering of haptic signals, to enable immersive experiences. I t supports multiple types of perceptions, including the most common vibrotactile (sense of touch that perceives vibrations) and kinesthetic perceptions (tactile resistance or force), and also other less common perceptions, such as the sense of temperature or texture, for example. It also supports two approaches for enc oding haptic signals: a "quantized" approach based on samples of measured data a nd 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) or in a binary packetized format for dist ribution and streaming (.hmpg). This last format is referred to as the MIHS form at and is a base for the RTP payload format described in this document.</t>
</section> </section>
<section anchor="MIHS-format"> <section anchor="MIHS-format">
<name>MIHS format</name> <name>MIHS Format</name>
<t>MIHS is a stream format used to transport haptic data. Haptic data in <t>MIHS is a stream format used to transport haptic data. Haptic data, i
cluding haptic effects is packetized according to the MIHS format, and delivered ncluding haptic effects, is packetized according to the MIHS format and delivere
to actuators, which operate according to the provided effects. The MIHS format d to actuators, which operate according to the provided effects. The MIHS format
has two levels of packetization, MIHS units and MIHS packets.</t> has two levels of packetization: MIHS units and MIHS packets.</t>
<t>MIHS units are composed of a MIHS unit header and zero or more MIHS p <t>MIHS units are composed of a MIHS unit header and zero or more MIHS p
ackets. Four types of MIHS units are defined. An initialization MIHS unit contai ackets. Four types of MIHS units are defined. An initialization MIHS unit contai
ns MIHS packets carrying metadata necessary to reset and initialize a haptic dec ns MIHS packets carrying metadata necessary to reset and initialize a haptic dec
oder, including a timestamp. A temporal MIHS unit contains one or more MIHS pack oder, including a timestamp. A temporal MIHS unit contains one or more MIHS pack
ets defining time-dependent effects and providing modalities such as pressure, v ets defining time-dependent effects and provides modalities such as pressure, ve
elocity, and acceleration. The duration of a temporal unit is a positive number. locity, and acceleration. The duration of a temporal unit is a positive number.
A spatial MIHS unit contains one or more MIHS packets providing time-independen A spatial MIHS unit contains one or more MIHS packets providing time-independent
t effects, such as vibrotactile texture, stiffness, and friction. The duration o effects, such as vibrotactile texture, stiffness, and friction. The duration of
f a spatial unit is always zero. a spatial unit is always zero.
A silent MIHS unit indicates that there is no effect during a time interval and A silent MIHS unit indicates that there is no effect during a time interval, and
its duration is a positive number.</t> its duration is a positive number.</t>
<t>A MIHS unit can be marked as independent or dependent. When a decoder <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 pro processes an independent unit, it resets the previous effects and therefore pro
vides a haptic experience independent from any previous MIHS unit. A dependent vides a haptic experience independent from any previous MIHS unit. A dependent
unit is the continuation of previous MIHS units and cannot be independently deco unit is the continuation of previous MIHS units and cannot be independently deco
ded and rendered without having decoded previous MIHS unit(s). Initialization an ded and rendered without having decoded a previous MIHS unit(s). Initialization
d spatial MIHS units are always independent units. Temporal and silent MIHS unit and spatial MIHS units are always independent units. Temporal and silent MIHS un
s can be dependent or independent units.</t> its can be dependent or independent units.</t>
<t><xref target="_figure-stream"/> illustrates a succession of MIHS unit s in a MIHS stream.</t> <t><xref target="_figure-stream"/> illustrates a succession of MIHS unit s in a MIHS stream.</t>
<figure anchor="_figure-stream"> <figure anchor="_figure-stream">
<name>Example of MIHS stream</name> <name>Example of MIHS Stream</name>
<artset> <artset>
<artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version= "1.1" height="112" width="528" viewBox="0 0 528 112" class="diagram" text-anchor ="middle" font-family="monospace" font-size="13px" stroke-linecap="round"> <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version= "1.1" height="112" width="536" viewBox="0 0 536 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 8,32 L 8,80" fill="none" stroke="black"/>
<path d="M 80,32 L 80,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 96,32 L 96,80" fill="none" stroke="black"/>
<path d="M 160,32 L 160,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="M 176,32 L 176,80" fill="none" stroke="black"/>
<path d="M 280,32 L 280,80" fill="none" stroke="black"/> <path d="M 288,32 L 288,80" fill="none" stroke="black"/>
<path d="M 296,32 L 296,80" fill="none" stroke="black"/> <path d="M 304,32 L 304,80" fill="none" stroke="black"/>
<path d="M 408,32 L 408,80" fill="none" stroke="black"/> <path d="M 416,32 L 416,80" fill="none" stroke="black"/>
<path d="M 424,32 L 424,80" fill="none" stroke="black"/> <path d="M 432,32 L 432,80" fill="none" stroke="black"/>
<path d="M 520,32 L 520,80" fill="none" stroke="black"/> <path d="M 528,32 L 528,80" fill="none" stroke="black"/>
<path d="M 8,32 L 80,32" 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 96,32 L 160,32" fill="none" stroke="black"/>
<path d="M 176,32 L 280,32" fill="none" stroke="black"/> <path d="M 176,32 L 288,32" fill="none" stroke="black"/>
<path d="M 296,32 L 408,32" fill="none" stroke="black"/> <path d="M 304,32 L 416,32" fill="none" stroke="black"/>
<path d="M 424,32 L 520,32" fill="none" stroke="black"/> <path d="M 432,32 L 528,32" fill="none" stroke="black"/>
<path d="M 8,80 L 80,80" 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 96,80 L 160,80" fill="none" stroke="black"/>
<path d="M 176,80 L 280,80" fill="none" stroke="black"/> <path d="M 176,80 L 288,80" fill="none" stroke="black"/>
<path d="M 296,80 L 408,80" fill="none" stroke="black"/> <path d="M 304,80 L 416,80" fill="none" stroke="black"/>
<path d="M 424,80 L 520,80" fill="none" stroke="black"/> <path d="M 432,80 L 528,80" fill="none" stroke="black"/>
<g class="text"> <g class="text">
<text x="44" y="52">Initial*</text> <text x="44" y="52">Initial*</text>
<text x="128" y="52">Spatial</text> <text x="128" y="52">Spatial</text>
<text x="228" y="52">Temporal</text> <text x="212" y="52">Temporal</text>
<text x="332" y="52">Temporal</text> <text x="268" y="52">Unit</text>
<text x="388" y="52">Unit</text> <text x="340" y="52">Temporal</text>
<text x="452" y="52">Silent</text> <text x="396" y="52">Unit</text>
<text x="500" y="52">Unit</text> <text x="460" y="52">Silent</text>
<text x="508" y="52">Unit</text>
<text x="36" y="68">Unit</text> <text x="36" y="68">Unit</text>
<text x="88" y="68">-</text> <text x="88" y="68">-</text>
<text x="124" y="68">Unit</text> <text x="124" y="68">Unit</text>
<text x="168" y="68">-</text> <text x="168" y="68">-</text>
<text x="228" y="68">Unit(indep.)</text> <text x="236" y="68">(indep.)</text>
<text x="288" y="68">-</text> <text x="296" y="68">-</text>
<text x="352" y="68">(dependent)</text> <text x="360" y="68">(dependent)</text>
<text x="416" y="68">-</text> <text x="424" y="68">-</text>
<text x="468" y="68">(indep.)</text> <text x="476" y="68">(indep.)</text>
<text x="72" y="100">*Initialization</text> <text x="72" y="100">*Initialization</text>
</g> </g>
</svg> </svg>
</artwork> </artwork>
<artwork type="ascii-art"><![CDATA[ <artwork type="ascii-art"><![CDATA[
+--------+ +-------+ +------------+ +-------------+ +-----------+ +--------+ +-------+ +-------------+ +-------------+ +-----------+
|Initial*| |Spatial| | Temporal | |Temporal Unit| |Silent Unit| |Initial*| |Spatial| |Temporal Unit| |Temporal Unit| |Silent Unit|
| Unit |-| Unit |-|Unit(indep.)|-| (dependent) |-| (indep.) | | Unit |-| Unit |-| (indep.) |-| (dependent) |-| (indep.) |
+--------+ +-------+ +------------+ +-------------+ +-----------+ +--------+ +-------+ +-------------+ +-------------+ +-----------+
*Initialization *Initialization
--------+ +-------+ <span class="insert">+-------------+</span> +-------------+ +-----------+
]]></artwork> ]]></artwork>
</artset> </artset>
</figure> </figure>
</section> </section>
</section> </section>
<section anchor="payload-format-for-haptics"> <section anchor="payload-format-for-haptics">
<name>Payload Format For Haptics</name> <name>Payload Format for Haptics</name>
<section anchor="rtp-usage"> <section anchor="rtp-usage">
<name>RTP Header Usage</name> <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 <xref target="rtp-usage"/> of <xref target="RFC3550"/>.</t> <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 <xref section="5.1" sectionFormat="of" target="RFC3550"/>.</t>
<figure anchor="_figure-rtpheader"> <figure anchor="_figure-rtpheader">
<name>RTP header for Haptic.</name> <name>RTP Header for Haptics</name>
<artset> <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"> <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 8,64 L 8,208" fill="none" stroke="black"/>
<path d="M 40,64 L 40,96" 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 56,64 L 56,96" fill="none" stroke="black"/>
<path d="M 72,64 L 72,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 136,64 L 136,96" fill="none" stroke="black"/>
<path d="M 152,64 L 152,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 264,64 L 264,96" fill="none" stroke="black"/>
<path d="M 312,96 L 312,104" fill="none" stroke="black"/>
<path d="M 520,64 L 520,208" 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,64 L 520,64" fill="none" stroke="black"/>
<path d="M 8,96 L 520,96" 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,128 L 520,128" fill="none" stroke="black"/>
<path d="M 8,160 L 520,160" 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"/> <path d="M 8,208 L 520,208" fill="none" stroke="black"/>
<g class="text"> <g class="text">
<text x="16" y="36">0</text> <text x="16" y="36">0</text>
<text x="176" y="36">1</text> <text x="176" y="36">1</text>
<text x="336" y="36">2</text> <text x="336" y="36">2</text>
skipping to change at line 214 skipping to change at line 281
<text x="496" y="52">0</text> <text x="496" y="52">0</text>
<text x="512" y="52">1</text> <text x="512" y="52">1</text>
<text x="24" y="84">V=2</text> <text x="24" y="84">V=2</text>
<text x="48" y="84">P</text> <text x="48" y="84">P</text>
<text x="64" y="84">X</text> <text x="64" y="84">X</text>
<text x="100" y="84">CC</text> <text x="100" y="84">CC</text>
<text x="144" y="84">M</text> <text x="144" y="84">M</text>
<text x="204" y="84">PT</text> <text x="204" y="84">PT</text>
<text x="356" y="84">Sequence</text> <text x="356" y="84">Sequence</text>
<text x="420" y="84">Number</text> <text x="420" y="84">Number</text>
<text x="264" y="116">Timestamp</text> <text x="240" y="116">Timestamp</text>
<text x="300" y="116">(TS)</text>
<text x="160" y="148">Synchronization</text> <text x="160" y="148">Synchronization</text>
<text x="252" y="148">Source</text> <text x="252" y="148">Source</text>
<text x="308" y="148">(SSRC)</text> <text x="308" y="148">(SSRC)</text>
<text x="380" y="148">Identifier</text> <text x="380" y="148">Identifier</text>
<text x="156" y="180">Contributing</text> <text x="156" y="180">Contributing</text>
<text x="236" y="180">Source</text> <text x="236" y="180">Source</text>
<text x="292" y="180">(CSRC)</text> <text x="292" y="180">(CSRC)</text>
<text x="368" y="180">Identifiers</text> <text x="368" y="180">Identifiers</text>
<text x="260" y="196">....</text> <text x="260" y="196">....</text>
</g> </g>
</svg> </svg>
</artwork> </artwork>
<artwork type="ascii-art"><![CDATA[ <artwork type="ascii-art"><![CDATA[
0 1 2 3 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 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 | |V=2|P|X| CC |M| PT | Sequence Number |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Timestamp | | Timestamp (TS) |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
| Synchronization Source (SSRC) Identifier | | Synchronization Source (SSRC) Identifier |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
| Contributing Source (CSRC) Identifiers | | Contributing Source (CSRC) Identifiers |
| .... | | .... |
+---------------------------------------------------------------+ +---------------------------------------------------------------+
]]></artwork> ]]></artwork>
</artset> </artset>
</figure> </figure>
<t>Marker bit (M): 1 bit. The marker bit SHOULD be set to one in the fir <dl>
st non-silent RTP packet after a period of haptic silence. This enables jitter b <dt>Marker bit (M):</dt>
uffer adaptation and haptics device washout (i.e., reset to a neutral position) <dd>
prior to the beginning of the burst with minimal impact on the quality of experi <t>1 bit. The marker bit <bcp14>SHOULD</bcp14> be set to one in the
ence for the end user. The marker bit in all other packets MUST be set to zero.< first non-silent RTP packet after a period of haptic silence. This enables jitte
/t> r buffer adaptation and haptics device washout (i.e., reset to a neutral positio
<t>Timestamp (TS): 32 bits. A timestamp representing the sampling time o n) prior to the beginning of the burst with minimal impact on the quality of exp
f the first sample of the MIHS unit in the RTP payload. The clock frequency MUST erience for the end user. The marker bit in all other packets <bcp14>MUST</bcp14
be set to the sample rate of the encoded haptic data and is conveyed out-of-ban > be set to zero.</t>
d (e.g., as an SDP parameter).</t> </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 frequency <bcp14>MUST</bcp
14> be set to the sample rate of the encoded haptic data and is conveyed out of
band (e.g., as an SDP parameter).</t>
</dd>
</dl>
</section> </section>
<section anchor="payload-header"> <section anchor="payload-header">
<name>Payload Header</name> <name>Payload Header</name>
<t>The RTP payload header follows the RTP header. <xref target="_figure- payloadheader"/> describes the RTP payload header for Haptic.</t> <t>The RTP payload header follows the RTP header. <xref target="_figure- payloadheader"/> describes the RTP payload header for haptics.</t>
<figure anchor="_figure-payloadheader"> <figure anchor="_figure-payloadheader">
<name>RTP Payload Header for Haptic.</name> <name>RTP Payload Header for Haptics</name>
<artset> <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"> <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 8,32 L 8,96" fill="none" stroke="black"/>
<path d="M 24,32 L 24,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 40,32 L 40,64" fill="none" stroke="black"/>
<path d="M 56,32 L 56,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 72,32 L 72,96" fill="none" stroke="black"/>
<path d="M 88,32 L 88,64" 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 104,32 L 104,64" fill="none" stroke="black"/>
<path d="M 120,32 L 120,64" fill="none" stroke="black"/> <path d="M 120,32 L 120,64" fill="none" stroke="black"/>
skipping to change at line 289 skipping to change at line 365
</artwork> </artwork>
<artwork type="ascii-art"><![CDATA[ <artwork type="ascii-art"><![CDATA[
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|0|1|2|3|4|5|6|7| |0|1|2|3|4|5|6|7|
+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+
|D| UT | L | |D| UT | L |
+-+-----+-------+ +-+-----+-------+
]]></artwork> ]]></artwork>
</artset> </artset>
</figure> </figure>
<t>D (Dependency, 1 bit): this field is used to indicate whether the MIH <dl>
S unit included in the RTP payload is, when its value is one, dependent or, when <dt>D (Dependency):</dt>
its value is zero, independent.</t> <dd>
<t>UT (Unit Type, 3 bits): this field indicates the type of the MIHS uni <t>1 bit. This field indicates whether the MIHS unit included in the
t included in the RTP payload. UT field values are listed in <xref target="_figu RTP payload is dependent (when its value is one) or independent (when its value
re-transmission-type"/>.</t> is zero).</t>
<t>L (MIHS Layer, 4 bits): this field is an integer value which indicate </dd>
s the priority order of the MIHS unit included in the RTP payload, as determined <dt>UT (Unit Type):</dt>
by the haptic sender (e.g., by the haptic codec), based on application-specific <dd>
needs. For example, the sender may use the MIHS layer to prioritize perceptions <t>3 bits. This field indicates the type of the MIHS unit included i
with the largest impact on the end-user experience. Zero corresponds to the hig n the RTP payload. UT field values are listed in <xref target="_figure-transmiss
hest priority. The semantic of individual MIHS layers are not specified and left ion-type"/>.</t>
for the application to assign. In cases where the sender does not use the L fie </dd>
ld to indicate the priority order of the MIHS unit, L value is '0'.</t> <dt>L (MIHS Layer):</dt>
<dd>
<t>4 bits. This field is an integer value that indicates the priorit
y order of the MIHS unit included in the RTP payload, as determined by the hapti
c sender (e.g., by the haptic codec), based on application-specific needs. For e
xample, the sender may use the MIHS layer to prioritize perceptions with the lar
gest 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 ind
icate the priority order of the MIHS unit, the L value is '0'.</t>
</dd>
</dl>
</section> </section>
<section anchor="payload-structures"> <section anchor="payload-structures">
<name>Payload Structures</name> <name>Payload Structures</name>
<t>Three different types of RTP packet payload structures are specified. <t>Three different types of RTP packet payload structures are specified.
A single unit packet contains a single MIHS unit in the payload. A fragmentati A single unit packet contains a single MIHS unit in the payload. A fragmentati
on unit contains a subset of a MIHS unit. An aggregation packet contains multipl on unit contains a subset of a MIHS unit. An aggregation packet contains multipl
e MIHS units in the payload. The unit type (UT) field of the RTP payload header, e 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 pa as shown in <xref target="_figure-transmission-type"/>, identifies both the pa
yload structure and, in the case of a single-unit structure, also identifies the yload structure and, in the case of a single-unit structure, the type of MIHS un
type of MIHS unit present in the payload.</t> it present in the payload.</t>
<figure anchor="_figure-transmission-type"> <table anchor="_figure-transmission-type">
<name>Payload structure type for haptic</name> <name>Payload Structure Type for Haptics</name>
<artset> <thead>
<artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" version= <tr>
"1.1" height="208" width="456" viewBox="0 0 456 208" class="diagram" text-anchor <th align="center">Unit Type</th>
="middle" font-family="monospace" font-size="13px" stroke-linecap="round"> <th align="left">Payload Structure</th>
<path d="M 8,64 L 440,64" fill="none" stroke="black"/> <th align="left">Packet Type Name</th>
<g class="text"> </tr>
<text x="20" y="36">Unit</text> </thead>
<text x="104" y="36">Payload</text> <tbody>
<text x="180" y="36">Packet</text> <tr>
<text x="228" y="36">Type</text> <td align="center">0</td>
<text x="268" y="36">Name</text> <td align="left">N/A</td>
<text x="20" y="52">Type</text> <td align="left">Unassigned</td>
<text x="112" y="52">Structure</text> </tr>
<text x="8" y="84">0</text> <tr>
<text x="88" y="84">N/A</text> <td align="center">1</td>
<text x="196" y="84">Unassigned</text> <td align="left">Single</td>
<text x="8" y="100">1</text> <td align="left">Initialization MIHS Unit</td>
<text x="100" y="100">Single</text> </tr>
<text x="212" y="100">Initialization</text> <tr>
<text x="292" y="100">MIHS</text> <td align="center">2</td>
<text x="332" y="100">Unit</text> <td align="left">Single</td>
<text x="8" y="116">2</text> <td align="left">Temporal MIHS Unit</td>
<text x="100" y="116">Single</text> </tr>
<text x="188" y="116">Temporal</text> <tr>
<text x="244" y="116">MIHS</text> <td align="center">3</td>
<text x="284" y="116">Unit</text> <td align="left">Single</td>
<text x="8" y="132">3</text> <td align="left">Spatial MIHS Unit</td>
<text x="100" y="132">Single</text> </tr>
<text x="184" y="132">Spatial</text> <tr>
<text x="236" y="132">MIHS</text> <td align="center">4</td>
<text x="276" y="132">Unit</text> <td align="left">Single</td>
<text x="8" y="148">4</text> <td align="left">Silent MIHS Unit</td>
<text x="100" y="148">Single</text> </tr>
<text x="180" y="148">Silent</text> <tr>
<text x="228" y="148">MIHS</text> <td align="center">5</td>
<text x="268" y="148">Unit</text> <td align="left">Aggr</td>
<text x="8" y="164">5</text> <td align="left">Single-Time Aggregation Packet (STAP)</td>
<text x="92" y="164">Aggr</text> </tr>
<text x="200" y="164">Single-Time</text> <tr>
<text x="296" y="164">Aggregation</text> <td align="center">6</td>
<text x="372" y="164">Packet</text> <td align="left">Aggr</td>
<text x="428" y="164">(STAP)</text> <td align="left">Multi-Time Aggregation Packet (MTAP)</td>
<text x="8" y="180">6</text> </tr>
<text x="92" y="180">Aggr</text> <tr>
<text x="196" y="180">Multi-Time</text> <td align="center">7</td>
<text x="288" y="180">Aggregation</text> <td align="left">Frag</td>
<text x="364" y="180">Packet</text> <td align="left">Fragmentation Unit</td>
<text x="420" y="180">(MTAP)</text> </tr>
<text x="8" y="196">7</text> </tbody>
<text x="92" y="196">Frag</text> </table>
<text x="208" y="196">Fragmentation</text> <t>The payload structures are represented in <xref target="_figure-trans
<text x="284" y="196">Unit</text> mission-style"/>. The single unit payload structure is specified in <xref targe
</g> t="single"/>. The fragmented unit payload structure is specified in <xref target
</svg> ="fragmented"/>. The aggregation packet payload structure is specified in <xref
</artwork> target="aggregated"/>. The padding in the figures of these sections refers to t
<artwork type="ascii-art"><![CDATA[ he RTP padding defined in <xref target="RFC3550"/>.</t>
Unit Payload Packet Type Name
Type Structure
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-Time Aggregation Packet (STAP)
6 Aggr Multi-Time Aggregation Packet (MTAP)
7 Frag Fragmentation Unit
]]></artwork>
</artset>
</figure>
<t>The payload structures are represented in <xref target="_figure-trans
mission-style"/>. The single unit payload structure is specified in <xref targe
t="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 these section refers to th
e RTP padding defined in <xref target="RFC3550"/>.</t>
<figure anchor="_figure-transmission-style"> <figure anchor="_figure-transmission-style">
<name>RTP Transmission modes</name> <name>RTP Transmission Modes</name>
<artset> <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"> <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 8,128 L 8,240" fill="none" stroke="black"/>
<path d="M 168,128 L 168,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 184,96 L 184,240" fill="none" stroke="black"/>
<path d="M 344,96 L 344,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 360,32 L 360,240" fill="none" stroke="black"/>
<path d="M 520,32 L 520,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,32 L 520,32" fill="none" stroke="black"/>
<path d="M 360,64 L 520,64" fill="none" stroke="black"/> <path d="M 360,64 L 520,64" fill="none" stroke="black"/>
skipping to change at line 405 skipping to change at line 474
<text x="460" y="52">Header</text> <text x="460" y="52">Header</text>
<text x="384" y="84">RTP</text> <text x="384" y="84">RTP</text>
<text x="432" y="84">Payload</text> <text x="432" y="84">Payload</text>
<text x="492" y="84">Header</text> <text x="492" y="84">Header</text>
<text x="400" y="100">(UT</text> <text x="400" y="100">(UT</text>
<text x="424" y="100">=</text> <text x="424" y="100">=</text>
<text x="456" y="100">Aggr)</text> <text x="456" y="100">Aggr)</text>
<text x="240" y="116">RTP</text> <text x="240" y="116">RTP</text>
<text x="284" y="116">Header</text> <text x="284" y="116">Header</text>
<text x="396" y="132">MIHS</text> <text x="396" y="132">MIHS</text>
<text x="436" y="132">unit</text> <text x="436" y="132">Unit</text>
<text x="464" y="132">1</text> <text x="464" y="132">1</text>
<text x="492" y="132">Size</text> <text x="492" y="132">Size</text>
<text x="64" y="148">RTP</text> <text x="64" y="148">RTP</text>
<text x="108" y="148">Header</text> <text x="108" y="148">Header</text>
<text x="208" y="148">RTP</text> <text x="208" y="148">RTP</text>
<text x="256" y="148">Payload</text> <text x="256" y="148">Payload</text>
<text x="316" y="148">Header</text> <text x="316" y="148">Header</text>
<text x="224" y="164">(UT</text> <text x="224" y="164">(UT</text>
<text x="248" y="164">=</text> <text x="248" y="164">=</text>
<text x="280" y="164">Frag)</text> <text x="280" y="164">Frag)</text>
<text x="412" y="164">MIHS</text> <text x="412" y="164">MIHS</text>
<text x="452" y="164">Unit</text> <text x="452" y="164">Unit</text>
<text x="480" y="164">1</text> <text x="480" y="164">1</text>
<text x="32" y="180">RTP</text> <text x="32" y="180">RTP</text>
<text x="80" y="180">Payload</text> <text x="80" y="180">Payload</text>
<text x="140" y="180">Header</text> <text x="140" y="180">Header</text>
<text x="236" y="196">FU</text> <text x="236" y="196">FU</text>
<text x="276" y="196">Header</text> <text x="276" y="196">Header</text>
<text x="396" y="196">MIHS</text> <text x="396" y="196">MIHS</text>
<text x="436" y="196">unit</text> <text x="436" y="196">Unit</text>
<text x="464" y="196">2</text> <text x="464" y="196">2</text>
<text x="492" y="196">Size</text> <text x="492" y="196">Size</text>
<text x="56" y="212">RTP</text> <text x="56" y="212">RTP</text>
<text x="104" y="212">Payload</text> <text x="104" y="212">Payload</text>
<text x="48" y="228">(Single</text> <text x="48" y="228">(Single</text>
<text x="100" y="228">MIHS</text> <text x="100" y="228">MIHS</text>
<text x="144" y="228">unit)</text> <text x="144" y="228">unit)</text>
<text x="232" y="228">RTP</text> <text x="232" y="228">RTP</text>
<text x="280" y="228">Payload</text> <text x="280" y="228">Payload</text>
<text x="432" y="228">...</text> <text x="432" y="228">...</text>
skipping to change at line 454 skipping to change at line 523
</g> </g>
</svg> </svg>
</artwork> </artwork>
<artwork type="ascii-art"><![CDATA[ <artwork type="ascii-art"><![CDATA[
+-------------------+ +-------------------+
| RTP Header | | RTP Header |
+-------------------+ +-------------------+
| RTP Payload Header| | RTP Payload Header|
+-------------------+ | (UT = Aggr) | +-------------------+ | (UT = Aggr) |
| RTP Header | +-------------------+ | RTP Header | +-------------------+
+-------------------+ +-------------------+ | MIHS unit 1 Size | +-------------------+ +-------------------+ | MIHS Unit 1 Size |
| RTP Header | | RTP Payload Header| +-------------------+ | RTP Header | | RTP Payload Header| +-------------------+
+-------------------+ | (UT = Frag) | | MIHS Unit 1 | +-------------------+ | (UT = Frag) | | MIHS Unit 1 |
| RTP Payload Header| +-------------------+ +-------------------+ | RTP Payload Header| +-------------------+ +-------------------+
+-------------------+ | FU Header | | MIHS unit 2 Size | +-------------------+ | FU Header | | MIHS Unit 2 Size |
| RTP Payload | +-------------------+ +-------------------+ | RTP Payload | +-------------------+ +-------------------+
| (Single MIHS unit)| | RTP Payload | | ... | | (Single MIHS unit)| | RTP Payload | | ... |
+-------------------+ +-------------------+ +-------------------+ +-------------------+ +-------------------+ +-------------------+
(a) single unit (b)fragmentation unit (c) aggregation packet (a) single unit (b)fragmentation unit (c) aggregation packet
]]></artwork> ]]></artwork>
</artset> </artset>
</figure> </figure>
<section anchor="single"> <section anchor="single">
skipping to change at line 530 skipping to change at line 599
<text x="512" y="52">1</text> <text x="512" y="52">1</text>
<text x="232" y="84">RTP</text> <text x="232" y="84">RTP</text>
<text x="276" y="84">Header</text> <text x="276" y="84">Header</text>
<text x="40" y="116">Payload</text> <text x="40" y="116">Payload</text>
<text x="100" y="116">Header</text> <text x="100" y="116">Header</text>
<text x="220" y="148">MIHS</text> <text x="220" y="148">MIHS</text>
<text x="260" y="148">Unit</text> <text x="260" y="148">Unit</text>
<text x="300" y="148">Data</text> <text x="300" y="148">Data</text>
<text x="312" y="180">...OPTIONAL</text> <text x="312" y="180">...OPTIONAL</text>
<text x="376" y="180">RTP</text> <text x="376" y="180">RTP</text>
<text x="424" y="180">padding</text> <text x="424" y="180">Padding</text>
</g> </g>
</svg> </svg>
</artwork> </artwork>
<artwork type="ascii-art"><![CDATA[ <artwork type="ascii-art"><![CDATA[
0 1 2 3 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 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 Header |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Payload Header | | |Payload Header | |
+---------------+ | +---------------+ |
| MIHS Unit Data | | MIHS Unit Data |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |...OPTIONAL RTP padding | | |...OPTIONAL RTP Padding |
+-------------------------------+-------------------------------+ +-------------------------------+-------------------------------+
]]></artwork> ]]></artwork>
</artset> </artset>
</figure> </figure>
</section> </section>
<section anchor="fragmented"> <section anchor="fragmented">
<name>Fragmented Unit Payload Structure</name> <name>Fragmented Unit Payload Structure</name>
<t>In a fragmented unit payload structure, as described in <xref targe t="_figure-fragment-structure"/>, the RTP packet contains the RTP header, follow ed by the payload header, a Fragmented Unit (FU) header, and a MIHS unit fragmen t. The payload header follows the structure described in <xref target="payload-h eader"/>. The value of the UT field of the payload header is 7. The FU header fo llows the structure described in <xref target="_figure-fragment-header"/>. In th e case of fragmentation, all RTP payload header fields MUST remain unchanged acr oss all fragments.</t> <t>In a fragmented unit payload structure, as described in <xref targe t="_figure-fragment-structure"/>, the RTP packet contains the RTP header, follow ed by the payload header, a Fragmented Unit (FU) header, and a MIHS unit fragmen t. The payload header follows the structure described in <xref target="payload-h eader"/>. The value of the UT field of the payload header is 7. The FU header fo llows the structure described in <xref target="_figure-fragment-header"/>. In th e case of fragmentation, all RTP payload header fields <bcp14>MUST</bcp14> remai n unchanged across all fragments.</t>
<figure anchor="_figure-fragment-structure"> <figure anchor="_figure-fragment-structure">
<name>Fragmentation Unit Payload Structure</name> <name>Fragmentation Unit Payload Structure</name>
<artset> <artset>
<artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" versio n="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anch or="middle" font-family="monospace" font-size="13px" stroke-linecap="round"> <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" versio n="1.1" height="208" width="528" viewBox="0 0 528 208" class="diagram" text-anch or="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 8,64 L 8,192" fill="none" stroke="black"/>
<path d="M 136,96 L 136,128" 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,96 L 264,128" fill="none" stroke="black"/>
<path d="M 264,160 L 264,192" 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 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,64 L 520,64" fill="none" stroke="black"/>
skipping to change at line 634 skipping to change at line 703
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|Payload Header | FU Header | | |Payload Header | FU Header | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| MIHS Unit Fragment | | MIHS Unit Fragment |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |...OPTIONAL RTP Padding | | |...OPTIONAL RTP Padding |
+-------------------------------+-------------------------------+ +-------------------------------+-------------------------------+
]]></artwork> ]]></artwork>
</artset> </artset>
</figure> </figure>
<t>FU headers are used to enable fragmenting a single MIHS unit into m <t>FU headers are used to enable fragmenting a single MIHS unit into m
ultiple RTP packets. Fragments of the same MIHS unit MUST be sent in consecutive ultiple RTP packets. Fragments of the same MIHS unit <bcp14>MUST</bcp14> be sent
order with ascending RTP sequence numbers (with no other RTP packets within the in consecutive order with ascending RTP sequence numbers (with no other RTP pac
same RTP stream being sent between the first and last fragment). FUs MUST NOT b kets within the same RTP stream being sent between the first and last fragment).
e nested, i.e., an FU MUST NOT contain a subset of another FU.</t> FUs <bcp14>MUST NOT</bcp14> be nested, i.e., an FU <bcp14>MUST NOT</bcp14> cont
<t><xref target="_figure-fragment-header"/> describes a FU header, inc ain a subset of another FU.</t>
luding the following fields:</t> <t><xref target="_figure-fragment-header"/> describes an FU header, in
cluding the following fields:</t>
<figure anchor="_figure-fragment-header"> <figure anchor="_figure-fragment-header">
<name>Fragmentation unit header</name> <name>Fragmentation Unit Header</name>
<artset> <artset>
<artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" versio n="1.1" height="112" width="272" viewBox="0 0 272 112" class="diagram" text-anch or="middle" font-family="monospace" font-size="13px" stroke-linecap="round"> <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" versio n="1.1" height="112" width="272" viewBox="0 0 272 112" class="diagram" text-anch or="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 8,32 L 8,96" fill="none" stroke="black"/>
<path d="M 40,32 L 40,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 72,32 L 72,96" fill="none" stroke="black"/>
<path d="M 104,32 L 104,64" 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 136,32 L 136,64" fill="none" stroke="black"/>
<path d="M 168,32 L 168,96" 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 200,32 L 200,64" fill="none" stroke="black"/>
<path d="M 232,32 L 232,64" fill="none" stroke="black"/> <path d="M 232,32 L 232,64" fill="none" stroke="black"/>
skipping to change at line 677 skipping to change at line 746
</artwork> </artwork>
<artwork type="ascii-art"><![CDATA[ <artwork type="ascii-art"><![CDATA[
+---+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
+---+---+---+---+---+---+---+---+ +---+---+---+---+---+---+---+---+
|FUS|FUE| RSV | UT | |FUS|FUE| RSV | UT |
+---+---+-----------+-----------+ +---+---+-----------+-----------+
]]></artwork> ]]></artwork>
</artset> </artset>
</figure> </figure>
<t>FUS (Fragmented Unit Start, 1 bit): this field MUST be set to 1 for <dl>
the first fragment, and 0 for the other fragments.</t> <dt>FUS (Fragmented Unit Start):</dt>
<t>FUE (Fragmented Unit End, 1 bit): this field MUST be set to 1 for t <dd>
he last fragment, and 0 for the other fragments.</t> <t>1 bit. This field <bcp14>MUST</bcp14> be set to 1 for the first
<t>The combination FUS=1 and FUE=1 MUST NOT occur; such packets are in fragment and 0 for the other fragments.</t>
valid.</t> </dd>
<t>RSV (Reserved, 3 bits): these bits MUST be set to 0 by the sender a <dt>FUE (Fragmented Unit End):</dt>
nd ignored by the receiver.</t> <dd>
<t>UT (Unit Type, 3 bits): this field indicates the type of the MIHS u <t>1 bit. This field <bcp14>MUST</bcp14> be set to 1 for the last
nit this fragment belongs to, using values defined in <xref target="_figure-tran fragment and 0 for the other fragments.</t>
smission-type"/>.</t> </dd>
<t>The use of MIHS unit fragmentation in RTP means that a media receiv </dl>
er can receive some fragments, but not other fragments. The missing fragments wi <t>The combination FUS=1 and FUE=1 <bcp14>MUST NOT</bcp14> occur; such
ll typically not be retransmitted by RTP. This results in partially received MIH packets are invalid.</t>
S units, which can be either dropped or used by the decoding application, based <dl>
on implementation. In cases where consecutive fragments with FUE and FUS are los <dt>RSV (Reserved):</dt>
t, the receiver may in some cases be able to detect that surrounding fragments b <dd>
elong to a different partially received MIHS unit (e.g., if the UT field holds a <t>3 bits. These bits <bcp14>MUST</bcp14> be set to 0 by the sende
different value).</t> r and ignored by the receiver.</t>
</dd>
<dt>UT (Unit Type):</dt>
<dd>
<t>3 bits. This field indicates the type of the MIHS unit this fra
gment belongs to, using values defined in <xref target="_figure-transmission-typ
e"/>.</t>
</dd>
</dl>
<t>The use of MIHS unit fragmentation in RTP means that a media receiv
er can receive some fragments, but not other fragments. The missing fragments wi
ll typically not be retransmitted by RTP. This results in partially received MIH
S 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 los
t, the receiver may be able to detect that surrounding fragments belong to a dif
ferent partially received MIHS unit (e.g., if the UT field holds a different val
ue).</t>
</section> </section>
<section anchor="aggregated"> <section anchor="aggregated">
<name>Aggregation Packet Payload Structure</name> <name>Aggregation Packet Payload Structure</name>
<t>In an aggregation packet, as described in <xref target="_figure-agg re-structure"/>, the RTP packet contains an RTP header, followed by a payload he ader, and, for each aggregated MIHS Unit, a MIHS unit size followed by the MIHS unit. The payload header follows the structure described in <xref target="payloa d-header"/>.</t> <t>In an aggregation packet, as described in <xref target="_figure-agg re-structure"/>, the RTP packet contains an RTP header, followed by a payload he ader, and (for each aggregated MIHS unit) a MIHS unit size followed by the MIHS unit. The payload header follows the structure described in <xref target="payloa d-header"/>.</t>
<figure anchor="_figure-aggre-structure"> <figure anchor="_figure-aggre-structure">
<name>Single-Time Aggregation Packet</name> <name>Single-Time Aggregation Packet</name>
<artset> <artset>
<artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" versio n="1.1" height="336" width="528" viewBox="0 0 528 336" class="diagram" text-anch or="middle" font-family="monospace" font-size="13px" stroke-linecap="round"> <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" versio n="1.1" height="336" width="528" viewBox="0 0 528 336" class="diagram" text-anch or="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,64 L 8,160" fill="none" stroke="black"/>
<path d="M 8,192 L 8,304" 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 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,96 L 264,128" fill="none" stroke="black"/>
<path d="M 264,272 L 264,304" 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,64 L 520,160" fill="none" stroke="black"/>
skipping to change at line 765 skipping to change at line 850
<text x="520" y="180">:</text> <text x="520" y="180">:</text>
<text x="92" y="212">MIHS</text> <text x="92" y="212">MIHS</text>
<text x="132" y="212">Unit</text> <text x="132" y="212">Unit</text>
<text x="160" y="212">2</text> <text x="160" y="212">2</text>
<text x="188" y="212">Size</text> <text x="188" y="212">Size</text>
<text x="244" y="244">MIHS</text> <text x="244" y="244">MIHS</text>
<text x="284" y="244">Unit</text> <text x="284" y="244">Unit</text>
<text x="312" y="244">2</text> <text x="312" y="244">2</text>
<text x="312" y="292">...OPTIONAL</text> <text x="312" y="292">...OPTIONAL</text>
<text x="376" y="292">RTP</text> <text x="376" y="292">RTP</text>
<text x="424" y="292">padding</text> <text x="424" y="292">Padding</text>
</g> </g>
</svg> </svg>
</artwork> </artwork>
<artwork type="ascii-art"><![CDATA[ <artwork type="ascii-art"><![CDATA[
0 1 2 3 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 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 Header |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RTP Payload Header | MIHS Unit 1 Size | | RTP Payload Header | MIHS Unit 1 Size |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MIHS Unit 1 | | MIHS Unit 1 |
| | | |
: : : :
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MIHS Unit 2 Size | | | MIHS Unit 2 Size | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| MIHS Unit 2 | | MIHS Unit 2 |
| | | |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |...OPTIONAL RTP padding | | |...OPTIONAL RTP Padding |
+-------------------------------+-------------------------------+ +-------------------------------+-------------------------------+
]]></artwork> ]]></artwork>
</artset> </artset>
</figure> </figure>
<t><xref target="_figure-aggre-structure"/> shows a Single-Time Aggreg ation Packet (STAP), which can be used to transmit multiple MIHS units that corr espond to the same timestamp. For example, if two frequencies are used for the s ame content, they can be transmitted at once in a STAP. Multiple spatial units c an also be sent together in a STAP, since this type of haptics data is time inde pendent. 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 > <t><xref target="_figure-aggre-structure"/> shows a Single-Time Aggreg ation Packet (STAP), which can be used to transmit multiple MIHS units that corr espond to the same timestamp. For example, if two frequencies are used for the s ame content, they can be transmitted at once in a STAP. Multiple spatial units c an also be sent together in a STAP, since this type of haptics data is time inde pendent. 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 >
<figure anchor="_figure-aggremtap-structure"> <figure anchor="_figure-aggremtap-structure">
<name>Multiple-time aggregation packet</name> <name>Multiple-Time Aggregation Packet</name>
<artset> <artset>
<artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" versio n="1.1" height="368" width="528" viewBox="0 0 528 368" class="diagram" text-anch or="middle" font-family="monospace" font-size="13px" stroke-linecap="round"> <artwork type="svg"><svg xmlns="http://www.w3.org/2000/svg" versio n="1.1" height="368" width="528" viewBox="0 0 528 368" class="diagram" text-anch or="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 8,64 L 8,336" fill="none" stroke="black"/>
<path d="M 136,240 L 136,272" 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,96 L 264,128" fill="none" stroke="black"/>
<path d="M 264,208 L 264,240" 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 264,304 L 264,336" fill="none" stroke="black"/>
<path d="M 392,128 L 392,160" 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 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,64 L 520,64" fill="none" stroke="black"/>
<path d="M 8,96 L 520,96" 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,128 L 520,128" fill="none" stroke="black"/>
<path d="M 8,160 L 392,160" 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,208 L 520,208" fill="none" stroke="black"/>
<path d="M 8,240 L 520,240" 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 16,272 L 136,272" fill="none" stroke="black"/>
<path d="M 264,304 L 520,304" 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"/> <path d="M 8,336 L 520,336" fill="none" stroke="black"/>
<g class="text"> <g class="text">
<text x="8" y="36">0</text> <text x="16" y="36">0</text>
<text x="168" y="36">1</text> <text x="176" y="36">1</text>
<text x="328" y="36">2</text> <text x="336" y="36">2</text>
<text x="488" y="36">3</text> <text x="496" y="36">3</text>
<text x="8" y="52">0</text> <text x="16" y="52">0</text>
<text x="24" y="52">1</text> <text x="32" y="52">1</text>
<text x="40" y="52">2</text> <text x="48" y="52">2</text>
<text x="56" y="52">3</text> <text x="64" y="52">3</text>
<text x="72" y="52">4</text> <text x="80" y="52">4</text>
<text x="88" y="52">5</text> <text x="96" y="52">5</text>
<text x="104" y="52">6</text> <text x="112" y="52">6</text>
<text x="120" y="52">7</text> <text x="128" y="52">7</text>
<text x="136" y="52">8</text> <text x="144" y="52">8</text>
<text x="152" y="52">9</text> <text x="160" y="52">9</text>
<text x="168" y="52">0</text> <text x="176" y="52">0</text>
<text x="184" y="52">1</text> <text x="192" y="52">1</text>
<text x="200" y="52">2</text> <text x="208" y="52">2</text>
<text x="216" y="52">3</text> <text x="224" y="52">3</text>
<text x="232" y="52">4</text> <text x="240" y="52">4</text>
<text x="248" y="52">5</text> <text x="256" y="52">5</text>
<text x="264" y="52">6</text> <text x="272" y="52">6</text>
<text x="280" y="52">7</text> <text x="288" y="52">7</text>
<text x="296" y="52">8</text> <text x="304" y="52">8</text>
<text x="312" y="52">9</text> <text x="320" y="52">9</text>
<text x="328" y="52">0</text> <text x="336" y="52">0</text>
<text x="344" y="52">1</text> <text x="352" y="52">1</text>
<text x="360" y="52">2</text> <text x="368" y="52">2</text>
<text x="376" y="52">3</text> <text x="384" y="52">3</text>
<text x="392" y="52">4</text> <text x="400" y="52">4</text>
<text x="408" y="52">5</text> <text x="416" y="52">5</text>
<text x="424" y="52">6</text> <text x="432" y="52">6</text>
<text x="440" y="52">7</text> <text x="448" y="52">7</text>
<text x="456" y="52">8</text> <text x="464" y="52">8</text>
<text x="472" y="52">9</text> <text x="480" y="52">9</text>
<text x="488" y="52">0</text> <text x="496" y="52">0</text>
<text x="504" y="52">1</text> <text x="512" y="52">1</text>
<text x="232" y="84">RTP</text> <text x="232" y="84">RTP</text>
<text x="276" y="84">Header</text> <text x="276" y="84">Header</text>
<text x="88" y="116">RTP</text> <text x="88" y="116">RTP</text>
<text x="136" y="116">Payload</text> <text x="136" y="116">Payload</text>
<text x="196" y="116">Header</text> <text x="196" y="116">Header</text>
<text x="340" y="116">MIHS</text> <text x="340" y="116">MIHS</text>
<text x="380" y="116">Unit</text> <text x="380" y="116">Unit</text>
<text x="408" y="116">1</text> <text x="408" y="116">1</text>
<text x="436" y="116">Size</text> <text x="436" y="116">Size</text>
<text x="236" y="148">TS</text> <text x="236" y="148">TS</text>
skipping to change at line 870 skipping to change at line 955
<text x="244" y="180">MIHS</text> <text x="244" y="180">MIHS</text>
<text x="284" y="180">Unit</text> <text x="284" y="180">Unit</text>
<text x="312" y="180">1</text> <text x="312" y="180">1</text>
<text x="84" y="228">MIHS</text> <text x="84" y="228">MIHS</text>
<text x="124" y="228">Unit</text> <text x="124" y="228">Unit</text>
<text x="152" y="228">2</text> <text x="152" y="228">2</text>
<text x="180" y="228">Size</text> <text x="180" y="228">Size</text>
<text x="372" y="228">TS</text> <text x="372" y="228">TS</text>
<text x="412" y="228">Offset</text> <text x="412" y="228">Offset</text>
<text x="44" y="260">TS</text> <text x="44" y="260">TS</text>
<text x="84" y="260">offset</text> <text x="84" y="260">Offset</text>
<text x="236" y="292">MIHS</text> <text x="236" y="292">MIHS</text>
<text x="276" y="292">Unit</text> <text x="276" y="292">Unit</text>
<text x="304" y="292">2</text> <text x="304" y="292">2</text>
<text x="312" y="324">...OPTIONAL</text> <text x="312" y="324">...OPTIONAL</text>
<text x="376" y="324">RTP</text> <text x="376" y="324">RTP</text>
<text x="424" y="324">padding</text> <text x="424" y="324">Padding</text>
</g> </g>
</svg> </svg>
</artwork> </artwork>
<artwork type="ascii-art"><![CDATA[ <artwork type="ascii-art"><![CDATA[
0 1 2 3 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 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 Header |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| RTP Payload Header | MIHS Unit 1 Size | | RTP Payload Header | MIHS Unit 1 Size |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TS Offset | | | TS Offset | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| MIHS Unit 1 | | MIHS Unit 1 |
| | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| MIHS Unit 2 Size | TS Offset | | MIHS Unit 2 Size | TS Offset |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| TS offset | | | TS Offset | |
|-+-+-+-+-+-+-+-+ | |-+-+-+-+-+-+-+-+ |
| MIHS Unit 2 | | MIHS Unit 2 |
| +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| |...OPTIONAL RTP padding | | |...OPTIONAL RTP Padding |
+-------------------------------+-------------------------------+ +-------------------------------+-------------------------------+
]]></artwork> ]]></artwork>
</artset> </artset>
</figure> </figure>
<t><xref target="_figure-aggremtap-structure"/> shows a multi-time agg regation packet. It is used to transmit multiple MIHS units with different times tamps, in one RTP packet. Multi-time aggregation can help reduce the number of p ackets, in environments where some delay is acceptable. The value of the UT fiel d of the Payload Header is 6. The MIHS unit length field (16 bits) holds the len gth of the MIHS unit following it, in bytes. The timestamp offset field (TS offs et, 16 bits) is present in the MTAP case, and MUST be set to the value of (time of the MIHS unit - RTP timestamp of the packet). The timestamp offset of the ea rliest aggregation unit MUST always be zero. Therefore, the RTP timestamp of the MTAP is identical to the earliest MIHS unit time.</t> <t><xref target="_figure-aggremtap-structure"/> shows a Multi-Time Agg regation Packet (MTAP). It is used to transmit multiple MIHS units with differen t timestamps, in one RTP packet. Multi-time aggregation can help reduce the numb er of packets in environments where some delay is acceptable. The value of the U T field of the payload header is 6. The MIHS unit length field (16 bits) holds t he length of the MIHS unit following it, in bytes. The timestamp offset field (T S offset, 16 bits) is present in the MTAP case and <bcp14>MUST</bcp14> be set to the value of (time of the MIHS unit - RTP timestamp of the packet). The timest amp offset of the earliest aggregation unit <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> </section>
<section anchor="mihs-trans"> <section anchor="mihs-trans">
<name>MIHS Units Transmission and Reception Considerations</name> <name>MIHS Units Transmission and Reception Considerations</name>
<t>The following considerations apply for the streaming of MIHS units ov <t>The following considerations apply for the streaming of MIHS units ov
er RTP:</t> er RTP.</t>
<t>The MIHS format enables variable duration units and uses initializati <t>The MIHS format enables variable duration units and uses initializati
on MIHS units to declare the duration of subsequent non-zero duration MIHS units on MIHS units to declare the duration of subsequent non-zero duration MIHS units
, as well as the maximum variation of this duration. A sender SHOULD set constan , as well as the maximum variation of this duration. A sender <bcp14>SHOULD</bcp
t or low-variability (e.g., lower than the playout buffer) durations in initiali 14> set constant or low-variability (e.g., lower than the playout buffer) durati
zation MIHS units, for RTP streaming. This enables the receiver to determine ear ons in initialization MIHS units, for RTP streaming. This enables the receiver t
ly (e.g., using a timer) when a unit has been lost and make the decoder more rob o determine early (e.g., using a timer) when a unit has been lost and to make th
ust to RTP packet loss. If a sender sends MIHS units with high duration variatio e decoder more robust to RTP packet loss. If a sender sends MIHS units with high
ns, the receiver MAY need to wait for a long period of time (e.g., the upper bou duration variations, the receiver <bcp14>MAY</bcp14> need to wait for a long pe
nd of the duration variation), to determine if a MIHS unit was lost in transmiss riod of time (e.g., the upper bound of the duration variation) to determine if a
ion. Whether this behavior is acceptable or not is application dependent, and th MIHS unit was lost in transmission. Whether this behavior is acceptable or not
e application can configure the encoder to generate MIHS unit of lengths with th is application dependent, and the application can configure the encoder to gener
e appropriate variation.</t> ate MIHS unit of lengths with the appropriate variation.</t>
<t>The MIHS format uses silent MIHS units to signal haptic silence. A se <t>The MIHS format uses silent MIHS units to signal haptic silence. A se
nder MAY decide not to send silent units, to save network resources. Since, from nder <bcp14>MAY</bcp14> decide not to send silent units, to save network resourc
a receiver standpoint, a missed MIHS unit may originate from a not-sent silent es. Since, from a receiver standpoint, a missed MIHS unit may originate from a n
unit, or a lost packet, a sender MAY send one, or a few, MIHS silent units at th ot-sent silent unit or a lost packet, a sender <bcp14>MAY</bcp14> send one, or a
e beginning of a haptic silence. If a media receiver receives a MIHS silent unit few, MIHS silent units at the beginning of a haptic silence. If a media receive
, the receiver SHOULD assume that silence is intended until the reception of a n r receives a MIHS silent unit, the receiver <bcp14>SHOULD</bcp14> assume that si
on-silent MIHS unit. This can reduce the number of false detections of lost RTP lence is intended until the reception of a non-silent MIHS unit. This can reduce
packets by the decoder.</t> 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 <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 R ., when adding or selecting a new source), it is recommended to use Full Intra R
equest (FIR) feedback messages with Haptics <xref target="RFC5104"/>. The purpos equest (FIR) feedback messages <xref target="RFC5104"/> with haptics. The purpos
e of the FIR message is to cause an encoder to send a decoder refresh point at t e of the FIR message is to cause an encoder to send a decoder refresh point at t
he earliest opportunity. In the context of haptics, an appropriate decoder refre he earliest opportunity. In the context of haptics, an appropriate decoder refre
sh point is an initialization MIHS unit. The initialization MIHS unit point enab sh point is an initialization MIHS unit. The initialization MIHS unit point enab
les a decoder to be reset to a known state and be able decode all MIHS units fol les a decoder to be reset to a known state and to decode all MIHS units followin
lowing it.</t> g it.</t>
</section> </section>
</section> </section>
<section anchor="payload-format-parameters"> <section anchor="payload-format-parameters">
<name>Payload Format Parameters</name> <name>Payload Format Parameters</name>
<t>This section describes payload format parameters. <xref target="optiona l-param"/> specifies new optional parameters and <xref target="sdp-registration" /> further registers a new token in the media sub-registry of the Session Descri ption Protocols (SDP) Parameters registry.</t> <t>This section describes payload format parameters. <xref target="optiona l-param"/> specifies new optional parameters, and <xref target="sdp-registration "/> further registers a new token in the media subregistry of the "Session Descr iption Protocol (SDP) Parameters" registry group.</t>
<section anchor="optional-param"> <section anchor="optional-param">
<name>Optional Parameters Definition</name> <name>Optional Parameters Definition</name>
<t>It is optional to include the SDP parameters in this section. Some pa rameters have a default value which MUST be inferred if the parameter is not pre sent 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 indica ted 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 <xre f target="ISO.IEC.23090-31"/>.</t> <t>It is optional to include the SDP parameters in this section. Some pa rameters have a default value that <bcp14>MUST</bcp14> be inferred if the parame ter is not present in the SDP, unless an out-of-band agreement indicates a diffe rent value, as described in <xref target="sdp-cons"/>. The values of the SDP par ameters indicated in this section are based on the current version of the MPEG H aptics Coding standard (ISO/IEC 23090-31:2025) and may be different in future ve rsions of <xref target="ISO.IEC.23090-31"/>.</t>
<t>ver:</t> <t>ver:</t>
<t>This parameter provides the year of the edition and amendment of ISO/ <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.230 IEC 23090-31 that this file conforms to, as defined in <xref target="ISO.IEC.230
90-31"/>: MPEG_haptics object.version is a string which may hold values such as 90-31"/>: MPEG_haptics object.version is a string that may contain values such a
XXXX or XXXX-Y where XXXX is the year of publication and Y is the amendment numb s XXXX or XXXX-Y where XXXX is the year of publication and Y is the amendment nu
er, if any. For the initial (and current) version of the MPEG Haptics Coding sta mber, if any. For the initial (and current) version of the MPEG Haptics Coding s
ndard (ISO/IEC 23090-31:2025) , the value is "2025". When ver is not present, a tandard (ISO/IEC 23090-31:2025), the value is "2025". When ver is not present, a
default value of "2025" SHOULD be inferred.</t> default value of "2025" <bcp14>SHOULD</bcp14> be inferred.</t>
<t>profile:</t> <dl>
<t>This parameter indicates the profile used to generate the encoded str <dt>profile:</dt>
eam as defined in <xref target="ISO.IEC.23090-31"/>: MPEG_haptics object.profile <dd>
is a string which may hold the values "simple-parametric" or "main". When profi <t>This parameter indicates the profile used to generate the encoded
le is not present, the default value "main" SHOULD be inferred.</t> stream, as defined in <xref target="ISO.IEC.23090-31"/>: MPEG_haptics object.pr
<t>lvl:</t> ofile is a string that may contain the value "simple-parametric" or "main". When
<t>This parameter indicates the level used to generate the encoded strea profile is not present, the default value "main" <bcp14>SHOULD</bcp14> be infer
m as defined in <xref target="ISO.IEC.23090-31"/>: MPEG_haptics object.level is red.</t>
an integer which may hold the values 1 or 2. When lvl is not present, the defaul </dd>
t value 2 SHOULD be inferred.</t> <dt>lvl:</dt>
<t>maxlod:</t> <dd>
<t>This parameter indicates the maximum level of details to use for the <t>This parameter indicates the level used to generate the encoded s
avatar(s). The avatar level of detail (LOD) is defined in <xref target="ISO.IEC. tream, as defined in <xref target="ISO.IEC.23090-31"/>: MPEG_haptics object.leve
23090-31"/>: MPEG_haptics.avatar object.lod is an integer which may hold the val l is an integer that may contain the value 1 or 2. When lvl is not present, the
ue 0 or a positive integer.</t> default value 2 <bcp14>SHOULD</bcp14> be inferred.</t>
<t>avtypes:</t> </dd>
<t>This parameter indicates, using a comma-separated list, types of hapt <dt>maxlod:</dt>
ic perception represented by the avatar(s). The avatar type is defined in <xref <dd>
target="ISO.IEC.23090-31"/>: MPEG_haptics.avatar object.type is a string which m <t>This parameter indicates the maximum level of details (LODs) to u
ay hold values among "Vibration", "Pressure", "Temperature", "Custom".</t> se for the avatar(s). The avatar LOD is defined in <xref target="ISO.IEC.23090-3
<t>modalities:</t> 1"/>: MPEG_haptics.avatar object.lod is an integer that may contain the value 0
<t>This parameter indicates, using a comma-separated list, haptic percep or a positive integer.</t>
tion modalities (e.g., pressure, acceleration, velocity, position, temperature, </dd>
etc.). The perception modality is defined in <xref target="ISO.IEC.23090-31"/>: <dt>avtypes:</dt>
MPEG_haptics.perception object.perception_modality is a string which may hold va <dd>
lues among "Pressure", "Acceleration", "Velocity", "Position", "Temperature", "V <t>This parameter indicates, using a comma-separated list, the types
ibrotactile", "Water", "Wind", "Force", "Electrotactile", "Vibrotactile Texture" of haptic perception represented by the avatar(s). The avatar type is defined i
, "Stiffness", "Friction", "Humidity", "User-defined Temporal", "User-defined Sp n <xref target="ISO.IEC.23090-31"/>: MPEG_haptics.avatar object.type is a string
atial", "Other".</t> that may contain the value "Vibration", "Pressure", "Temperature", or "Custom".
<t>bodypartmask:</t> </t>
<t>This parameter is an integer which indicates, using a bitmask, the lo </dd>
cation of the devices or actuators on the body. The body part mask is defined in <dt>modalities:</dt>
<xref target="ISO.IEC.23090-31"/>: MPEG_haptics.reference_device object.body_pa <dd>
rt_mask is a 32-bit integer which may hold a bit mask using bit positions define <t>This parameter indicates, using a comma-separated list, haptic pe
d in table 7 of <xref target="ISO.IEC.23090-31"/>.</t> rception modalities (e.g., pressure, acceleration, velocity, position, temperatu
<t>maxfreq:</t> re, etc.). The perception modality is defined in <xref target="ISO.IEC.23090-31"
<t>This parameter is an integer which indicates the maximum frequency of />: MPEG_haptics.perception object.perception_modality is a string that may cont
haptic data for vibrotactile perceptions (Hz). Maximum frequency is defined in ain the value "Pressure", "Acceleration", "Velocity", "Position", "Temperature",
<xref target="ISO.IEC.23090-31"/>: MPEG_haptics.reference_device object.maximum_ "Vibrotactile", "Water", "Wind", "Force", "Electrotactile", "Vibrotactile Textu
frequency.</t> re", "Stiffness", "Friction", "Humidity", "User-defined Temporal", "User-defined
<t>minfreq:</t> Spatial", or "Other".</t>
<t>This parameter is an integer which indicates the minimum frequency of </dd>
haptic data for vibrotactile perceptions (Hz). Minimum frequency is defined in <dt>bodypartmask:</dt>
<xref target="ISO.IEC.23090-31"/>: MPEG_haptics.reference_device object.minimum_ <dd>
frequency.</t> <t>This parameter is an integer that indicates, using a bitmask, the
<t>dvctypes:</t> location of the devices or actuators on the body. The body part mask is defined
<t>This parameter indicates, using a comma-separated list, the types of in <xref target="ISO.IEC.23090-31"/>: MPEG_haptics.reference_device object.body
actuators. The device type is defined in <xref target="ISO.IEC.23090-31"/>: MPEG _part_mask is a 32-bit integer that may hold a bit mask using bit positions defi
_haptics.reference_device object.type is a string which may hold values among "L ned in Table 7 of <xref target="ISO.IEC.23090-31"/>.</t>
RA", "VCA", "ERM", "Piezo" or "Unknown".</t> </dd>
<t>silencesupp:</t> <dt>maxfreq:</dt>
<t>This parameter is an integer which indicates whether silence suppress <dd>
ion should be used (1) or not (0). When silencesupp is not present, the default <t>This parameter is an integer that indicates the maximum frequency
value 0 SHOULD be inferred.</t> of haptic data for vibrotactile perceptions (Hz). Maximum frequency is defined
in <xref target="ISO.IEC.23090-31"/>: MPEG_haptics.reference_device object.maxim
um_frequency.</t>
</dd>
<dt>minfreq:</dt>
<dd>
<t>This parameter is an integer that 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.minim
um_frequency.</t>
</dd>
<dt>dvctypes:</dt>
<dd>
<t>This parameter is an integer that indicates, using a comma-separa
ted list, the types of actuators. The device type is defined in <xref target="IS
O.IEC.23090-31"/>: MPEG_haptics.reference_device object.type is a string that ma
y contain the value "LRA", "VCA", "ERM", "Piezo", or "Unknown".</t>
</dd>
<dt>silencesupp:</dt>
<dd>
<t>This parameter is an integer that indicates whether silence suppr
ession should be used (value 1) or not (value 0). When silencesupp is not presen
t, the default value 0 <bcp14>SHOULD</bcp14> be inferred.</t>
</dd>
</dl>
</section> </section>
<section anchor="sdp-registration"> <section anchor="sdp-registration">
<name>SDP Parameter Registration</name> <name>SDP Parameter Registration</name>
<t>This memo registers a 'haptics' token in the media sub-registry of th <t>This memo registers a 'haptics' token in the media subregistry of the
e Session Description Protocols (SDP) Parameters registry. This registration con "Session Description Protocol (SDP) Parameters" registry group. This registrati
tains the required information elements outlined in the SDP registration procedu on contains the required information elements outlined in the SDP registration p
re defined in section 8.2 of <xref target="RFC8866"/>.</t> rocedure defined in <xref section="8.2" sectionFormat="of" target="RFC8866"/>.</
<t>(1) Contact Information:</t> t>
<artwork><![CDATA[ <dl>
Name: Hyunsik Yang <dt>Contact name:</dt>
Email: hyunsik.yang@interdigital.com <dd>
]]></artwork> <t>Hyunsik Yang</t>
<t>(2) Name being registered (as it will appear in SDP): haptics</t> </dd>
<t>(3) Long-form name in English: haptics</t> <dt>Contact email address:</dt>
<t>(4) Type of name ('media', 'proto', 'fmt', 'bwtype', 'nettype', or <dd>
'addrtype'): media</t> <t>hyunsik.yang@interdigital.com</t>
<t>(5) Purpose of the registered name:</t> </dd>
<artwork><![CDATA[ <dt>Name being defined (as it will appear in SDP):</dt>
The 'haptics' media type for the Session Description Protocol <dd>
is used to describe a media stream whose content can be <t>haptics</t>
rendered as touch-related sensations. </dd>
The media subtype further describes the specific <dt>Type of name:</dt>
format of the haptics stream. The 'haptics' media type for <dd>
SDP is used to establish haptics media streams. <t>media</t>
]]></artwork> </dd>
<t>(6) Specification for the registered name: RFC XXXX</t> <dt>Description:</dt>
<t>RFC Editor Note: Replace RFC XXXX with the published RFC number.</t> <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> </section>
<section anchor="sdp-considerations"> <section anchor="sdp-considerations">
<name>SDP Considerations</name> <name>SDP Considerations</name>
<t>The mapping of above defined payload format media type to the correspon <t>The mapping of the above-defined payload format media type to the corre
ding fields in the Session Description Protocol (SDP) is done according to <xref sponding fields in SDP is done according to <xref target="RFC8866"/>.</t>
target="RFC8866"/>.</t> <t>The media name in the "m=" line of SDP <bcp14>MUST</bcp14> be haptics.<
<t>The media name in the "m=" line of SDP MUST be haptics.</t> /t>
<t>The encoding name in the "a=rtpmap" line of SDP MUST be hmpg</t> <t>The encoding name in the "a=rtpmap" line of SDP <bcp14>MUST</bcp14> be
hmpg.</t>
<t>The clock rate in the "a=rtpmap" line may be any sampling rate, typical ly 8000.</t> <t>The clock rate in the "a=rtpmap" line may be any sampling rate, typical ly 8000.</t>
<t>The optional parameters (defined in <xref target="optional-param"/>), w hen 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=valu e pairs. Parameter values, including string values, MUST be written without quot ation marks ("") in SDP. Parameter values which are strings are not case sensiti ve and SHOULD be written in lowercase.</t> <t>The optional parameters (defined in <xref target="optional-param"/>), w hen present, <bcp14>MUST</bcp14> be included in the "a=fmtp" line of SDP. This i s expressed as a media type string, in the form of a semicolon-separated list of parameter=value pairs. Parameter values, including string values, <bcp14>MUST</ bcp14> be written without quotation marks ("") in SDP. Parameter values that are strings are not case sensitive and <bcp14>SHOULD</bcp14> be written in lowercas e.</t>
<t>An example of media representation corresponding to the hmpg RTP payloa d in SDP is as follows:</t> <t>An example of media representation corresponding to the hmpg RTP payloa d in SDP is as follows:</t>
<artwork><![CDATA[ <sourcecode type="sdp"><![CDATA[
m=haptics 43291 UDP/TLS/RTP/SAVPF 115 m=haptics 43291 UDP/TLS/RTP/SAVPF 115
a=rtpmap:115 hmpg/8000 a=rtpmap:115 hmpg/8000
a=fmtp:115 profile=main;lvl=1;ver=2025 a=fmtp:115 profile=main;lvl=1;ver=2025
]]></artwork> ]]></sourcecode>
<section anchor="sdp-cons"> <section anchor="sdp-cons">
<name>SDP Offer/Answer Considerations</name> <name>SDP Offer/Answer Considerations</name>
<t>When using the offer/answer procedure described in <xref target="RFC3 264"/> to negotiate the use of haptic, the following considerations apply:</t> <t>When using the offer/answer procedure described in <xref target="RFC3 264"/> to negotiate the use of haptic, the following considerations apply:</t>
<t>When used for a unidirectional stream, the SDP parameters represent t he properties of the sender (on the sending side) and of the receiver (on the re ceiving side). When used for a sendrecv stream, the SDP parameters represent the properties of the receiver.</t> <t>When used for a unidirectional stream, the SDP parameters represent t he properties of the sender (on the sending side) and of the receiver (on the re ceiving 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', 'pr <t>The receiver properties expressed using the SDP parameters 'ver', 'pr
ofile' and 'lvl' correspond to implementation capabilities. The ver, profile, lv ofile', and 'lvl' correspond to implementation capabilities. The ver, profile, a
l parameters MUST be used symmetrically in SDP offer and answer. That is, their nd lvl parameters <bcp14>MUST</bcp14> be used symmetrically in SDP offer and ans
values in the answer MUST match those in the offer, either explicitly signaled o wer. That is, their values in the answer <bcp14>MUST</bcp14> match those in the
r implicitly inferred. In the same session, ver, profile, and lvl MUST NOT be ch offer, either explicitly signaled or implicitly inferred. In the same session, v
anged in subsequent offers or answers.</t> er, profile, and lvl <bcp14>MUST NOT</bcp14> be changed in subsequent offers or
<t>The properties expressed using SDP parameters other than 'ver', 'prof answers.</t>
ile' and 'lvl' are provided as recommendations for efficient data transmission a <t>The properties expressed using SDP parameters other than 'ver', 'prof
nd are not binding, meaning that a sender is encouraged but not required to conf ile', and 'lvl' are provided as recommendations for efficient data transmission
orm to the parameters specified by the receiver. These properties MAY be set to and are not binding, meaning that a sender is encouraged but not required to con
different values in offers and answers. These properties MAY be updated in subse form to the parameters specified by the receiver. These properties <bcp14>MAY</b
quent offers or answers.</t> cp14> be set to different values in offers and answers. These properties <bcp14>
<t>Any receiver compliant with <xref target="ISO.IEC.23090-31"/> MUST be MAY</bcp14> be updated in subsequent offers or answers.</t>
capable of decoding any stream with a compatible version, profile, and level. A <t>Any receiver compliant with <xref target="ISO.IEC.23090-31"/> <bcp14>
receiver supporting a more general profile will accept a stream corresponding t MUST</bcp14> be capable of decoding any stream with a compatible version, profil
o a same or less general profile (e.g., "main" is more general than "simple-para e, and level. A receiver supporting a more general profile will accept a stream
metric"). A receiver supporting a given level will accept a stream corresponding corresponding to the same or a less general profile (e.g., "main" is more genera
to a same or lower level. A receiver supporting a given version will accept a s l than "simple-parametric"). A receiver supporting a given level will accept a s
tream corresponding to the same version and MAY accept other versions. A receive tream corresponding to the same or a lower level. A receiver supporting a given
r MAY ignore any part of a received stream, e.g., that it does not have support version will accept a stream corresponding to the same version and <bcp14>MAY</b
for rendering.</t> cp14> accept other versions. A receiver <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 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 'ver' indicates the version of the haptic standard spec <t>The parameter 'ver' indicates the version of the haptic standard spec
ification. If it is not specified, the The parameter 'ver' indicates the version ification. If it is not specified, the value "2025" indicating the MPEG Haptics
of the haptic standard specification. If it is not specified, the value "2025" Coding standard ISO/IEC 23090-31:2025 <xref target="ISO.IEC.23090-31"/> <bcp14>
indicating the MPEG Haptics Coding standard ISO/IEC 23090-31:2025 <xref target=" SHOULD</bcp14> be inferred, although the sender and receiver <bcp14>MAY</bcp14>
ISO.IEC.23090-31"/> SHOULD be inferred, although the sender and receiver MAY us use a specific value based on an out-of-band agreement. The parameter 'profile'
e a specific value based on an out-of-band agreement. The parameter 'profile' is is used to restrict the number of tools used (e.g., the simple-parametric profil
used to restrict the number of tools used (e.g., the simple-parametric profile e enables simpler implementations than the main profile). If it is not specified
fits enable simpler implementations than the main profile). If it is not specifi , the most general profile "main" <bcp14>SHOULD</bcp14> be inferred, although th
ed, the most general profile "main" SHOULD be inferred, although the sender and e sender and receiver <bcp14>MAY</bcp14> use a specific value based on an out-of
receiver MAY use a specific value based on an out-of-band agreement. The paramet -band agreement. The parameter 'lvl' is used to further characterize implementat
er 'lvl' is used to further characterize implementations within a given profile, ions within a given profile, e.g., according to the maximum supported number of
e.g., according to the maximum supported number of channels, bands, and percept channels, bands, and perceptions. If it is not specified, the most general level
ions. If it is not specified, the most general level "2" SHOULD be inferred, alt "2" <bcp14>SHOULD</bcp14> be inferred, although the sender and receiver <bcp14>
hough the sender and receiver MAY use a specific version based on an out-of-band MAY</bcp14> use a specific version based on an out-of-band agreement.</t>
agreement.</t> <t>Other parameters can be used to indicate bitstream properties as well
<t>Other parameters can be used to indicate bitstream properties as well as receiver capabilities. The parameters 'maxlod', 'avtypes', 'bodypartmask', '
as receiver capabilities. The parameters 'maxlod', 'avtypes', 'bodypartmask', ' maxfreq', 'minfreq', 'dvctypes', and 'modalities' can be sent by a sender to ref
maxfreq', 'minfreq', 'dvctypes', and 'modalities' can be sent by a sender to ref lect the characteristics of bitstreams and can be set by a receiver to reflect t
lect the characteristics of bitstreams and can be set by a receiver to reflect t he nature and capabilities of local actuator devices or a preferred set of bitst
he nature and capabilities of local actuator devices, or a preferred set of bits ream properties. For example, different receivers <bcp14>MAY</bcp14> have differ
tream properties. For example, different receivers MAY have different sets of lo ent sets of local actuators, in which case these parameters can be used to selec
cal actuators, in which case these parameters can be used to select a stream ada t a stream adapted to the receiver. In some other cases, some receivers <bcp14>M
pted to the receiver. In some other cases, some receivers MAY indicate a prefere AY</bcp14> indicate a preference for a set of bitstream properties such as perce
nce for a set of bitstream properties such as perceptions, min/max frequency, or ptions, min/max frequency, or body part mask, which contribute the most to the u
body-part-mask, which contribute the most to the user experience for a given ap ser experience for a given application, in which case these parameters can be us
plication, in which case these parameters can be used to select a stream which i ed to select a stream that includes and possibly prioritizes those properties. F
nclude and possibly prioritizes those properties. For example, if the haptic str or example, if the haptic stream server provides more information than the body
eam server provides more information than the body mask specified by the receive mask specified by the receiver, the additional information can be either integra
r, the additional information can be either integrated into a single effect or i ted into a single effect or ignored by the receiver.</t>
gnored by the receiver.</t> <t>The parameter 'silencesupp' can be used to indicate sender and receiv
<t>The parameter 'silencesupp' can be used to indicate sender and receiv er capabilities or preferences. This parameter indicates whether silence suppres
er capabilities or preferences. This parameter indicates whether silence suppres sion should be used, as described in <xref target="mihs-trans"/>. If it is not s
sion should be used, as described in <xref target="mihs-trans"/>. If it is not s pecified, the value "0", indicating no silence suppression, <bcp14>SHOULD</bcp14
pecified, the value "0", indicating no silence suppression, SHOULD be inferred, > be inferred, although the sender and receiver <bcp14>MAY</bcp14> use silence s
although the sender and receiver MAY use silence suppression based on an out-of- uppression based on an out-of-band agreement.</t>
band agreement.</t>
</section> </section>
<section anchor="declarative-sdp-considerations"> <section anchor="declarative-sdp-considerations">
<name>Declarative SDP Considerations</name> <name>Declarative SDP Considerations</name>
<t>When haptic content over RTP is offered with SDP in a declarative sty le, the parameters capable of indicating both bitstream properties as well as re ceiver capabilities are used to indicate only bitstream properties. For example , in this case, the parameters maxlod, bodypartmask, maxfreq, minfreq, dvctypes, and modalities declare the values used by the bitstream, not the capabilities f or receiving bitstreams. A receiver of the SDP is required to support all parame ters 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 us e values that are expected to be supported by the receiving application.</t> <t>When haptic content over RTP is offered with SDP in a declarative sty le, the parameters capable of indicating both bitstream properties as well as re ceiver capabilities are used to indicate only bitstream properties. For example , in this case, the parameters 'maxlod', 'bodypartmask', 'maxfreq', 'minfreq', ' dvctypes', and 'modalities' declare the values used by the bitstream, not the ca pabilities for receiving bitstreams. A receiver of the SDP is required to suppor t all parameters and values of the parameters provided; otherwise, the receiver <bcp14>MUST</bcp14> reject or not participate in the session. It falls on the c reator of the session to use values that are expected to be supported by the rec eiving application.</t>
</section> </section>
</section> </section>
<section anchor="congestion-control-considerations"> <section anchor="congestion-control-considerations">
<name>Congestion Control Considerations</name> <name>Congestion Control Considerations</name>
<t>The general congestion control considerations for transporting RTP data <!--[rfced] We note only one instance of "HMPG" - is this correct, or
apply to HMPG haptics over RTP as well <xref target="RFC3550"/>.</t> should it be lowercase? If it should remain as uppercase, how may we
<t>It is possible to adapt network bandwidth usage by adjusting either the expand it?
encoder bit rate or by adjusting the stream content (e.g., level of detail, bod
y parts, actuator frequency range, target device types, modalities). The conside Original:
rations in this section are applicable to best-effort networks and controlled en The general congestion control considerations for transporting RTP
vironments.</t> data apply to HMPG haptics over RTP as well [RFC3550].
<t>In case of congestion, a receiver or intermediate node MAY prioritize i
ndependent packets over dependent ones, since the non-reception of an independen Action: AD approval needed:
t MIHS unit can prevent the decoding of multiple subsequent dependent MIHS units
. In case of congestion, a receiver or intermediate node MAY prioritize initiali Current:
zation MIHS units over other units, since initialization MIHS units contain meta The general congestion control
data used to re-initialize the decoder, and MAY drop silent MIHS units before ot considerations for transporting RTP data apply to MPEG-I haptic data
her types of MIHS units, since a receiver MAY interpret a missing MIHS unit as a over RTP as well [RFC3550].
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 <t>The general congestion control considerations for transporting RTP data apply
, intermediate nodes and receivers SHOULD use the MIHS layer value to determine to MPEG-I haptic data over RTP as well <xref target="RFC3550"/>.</t>
the relative importance of haptic RTP packets.</t> <t>It is possible to adapt network bandwidth usage by adjusting either the
<t>Receivers should monitor timestamps and treat gaps as loss of the corre encoder bit rate or the stream content (e.g., the LOD, body parts, actuator fre
sponding MIHS units. MIHS units, as defined in <xref target="ISO.IEC.23090-31"/> quency range, target device types, and modalities). The considerations in this s
, should be checked for structural integrity according to their type. When CRC16 ection are applicable to best-effort networks and controlled environments.</t>
or CRC32 information is present in MIHS units, receivers must validate data int <t>In case of congestion, a receiver or intermediate node <bcp14>MAY</bcp1
egrity, and units failing CRC checks should be treated as lost. Receivers should 4> prioritize independent packets over dependent ones, since the non-reception o
further monitor indicators of service degradation such as unexpected silent gap f an independent MIHS unit can prevent the decoding of multiple subsequent depen
s, repeated decoder reinitializations, or decoding failures. Receivers should re dent MIHS units. In case of congestion, a receiver or intermediate node <bcp14>M
port packet loss to the sender using RTCP Receiver Reports <xref target="RFC3550 AY</bcp14> prioritize initialization MIHS units over other units, as these conta
"/> and, when available, may report detailed loss and jitter metrics using mecha in metadata that is used to reinitialize the decoder. Additionally, a receiver o
nisms described in <xref target="RFC4585"/>.</t> r intermediate node <bcp14>MAY</bcp14> drop silent units before other types, as
a receiver <bcp14>MAY</bcp14> interpret a missing unit as silence. It is also po
ssible, using the layer field of the RTP payload header, to allocate MIHS units
to different layers based on their content to prioritize haptic data that contri
butes the most to the user experience. In case of congestion, intermediate nodes
and receivers <bcp14>SHOULD</bcp14> use the MIHS layer value to determine the r
elative importance of haptic RTP packets.</t>
<t>Receivers should monitor timestamps and treat gaps as loss of the corre
sponding 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 int
egrity, and units failing Cyclic Redundancy Checks (CRCs) should be treated as l
ost. 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 jitte
r metrics using mechanisms described in <xref target="RFC4585"/>.</t>
</section> </section>
<section anchor="security-considerations"> <section anchor="security-considerations">
<name>Security Considerations</name> <name>Security Considerations</name>
<t>This RTP payload format is subject to security threats commonly associa <t>The RTP payload format is subject to security threats commonly associat
ted with RTP payload formats, as well as threats specific to the interaction of ed with RTP payload formats, as well as threats specific to the interaction of h
haptic devices with the physical world, and threats associated with the use of c aptic devices with the physical world and threats associated with the use of com
ompression by the codec. pression by the codec.
Security consideration for threats commonly associated with RTP payload formats Security considerations for threats commonly associated with RTP payload formats
are outlined in <xref target="RFC3550"/>, as well as in RTP profiles such as RTP are outlined in <xref target="RFC3550"/>, as well as in RTP profiles such as RT
/AVP <xref target="RFC3551"/>), RTP/AVPF <xref target="RFC4585"/>, RTP/SAVP <xre P/AVP <xref target="RFC3551"/>, RTP/AVPF <xref target="RFC4585"/>, RTP/SAVP <xre
f target="RFC3711"/>, or RTP/SAVPF <xref target="RFC5124"/>.</t> f target="RFC3711"/>, and RTP/SAVPF <xref target="RFC5124"/>.</t>
<t>Haptic sensors and actuators operate within the physical environment. T <t>Haptic sensors and actuators operate within the physical environment. T
his introduces the potential for information leakage through sensors, or damage his introduces the potential for information leakage through sensors or damage t
to actuators due to data tampering. Additionally, misusing the functionalities o o actuators due to data tampering. Additionally, misusing the functionalities of
f actuators (such as force, position, temperature, vibration, electro-tactile, e actuators (such as force, position, temperature, vibration, electrotactile, etc
tc.) may pose a risk of harm to the user, for example by setting keyframe parame .) may pose a risk of harm to the user, for example, by setting keyframe paramet
ters (e.g., amplitude, position, frequency) or channel gain to a value that surp ers (e.g., amplitude, position, and frequency) or channel gain to a value that s
asses a permissible range. While individual devices can implement security measu urpasses a permissible range. While individual devices can implement security me
res to reduce or eliminate those risks on a per-device basis, in some cases harm asures to reduce or eliminate those risks on a per-device basis, in some cases,
can be inflicted by setting values which are permissible for the individual dev harm can be inflicted by setting values that are permissible for the individual
ice. For example, causing contact with the physical environment or triggering un device. For example, causing contact with the physical environment or triggering
expected force feedback can potentially harm the user. Each haptic system should unexpected force feedback can potentially harm the user. Each haptic system sho
therefore implement system-dependent security measures, which are more error pr uld therefore implement system-dependent security measures, which are more error
one. To limit the risk that attackers exploit weaknesses in haptic systems, it i prone. To limit the risk that attackers exploit weaknesses in haptic systems, i
s important that haptic transmission should be protected against malicious traff t is important that haptic transmission be protected against malicious traffic i
ic injection or tampering.</t> njection or tampering.</t>
<t>However, as "Securing the RTP Framework: Why RTP Does Not Mandate a Sin gle Media Security Solution" <xref target="RFC7202"/> discusses, it is not an RT P payload format's responsibility to discuss or mandate what solutions are used to meet the basic security goals like confidentiality, integrity, and source aut henticity for RTP in general. The responsibility for implementing security mecha nisms lies with the application developer. They can find guidance on available s ecurity mechanisms and important considerations in "Options for Securing RTP Ses sions" <xref target="RFC7201"/>, although <xref target="RFC7201"/> is now consid ered dated and several mechanisms described therein have since evolved.</t> <t>However, as "Securing the RTP Framework: Why RTP Does Not Mandate a Sin gle Media Security Solution" <xref target="RFC7202"/> discusses, it is not an RT P payload format's responsibility to discuss or mandate what solutions are used to meet the basic security goals like confidentiality, integrity, and source aut henticity for RTP in general. The responsibility for implementing security mecha nisms lies with the application developer. They can find guidance on available s ecurity mechanisms and important considerations in "Options for Securing RTP Ses sions" <xref target="RFC7201"/>, although <xref target="RFC7201"/> is now consid ered dated and several mechanisms described therein have since evolved.</t>
<t>Applications SHOULD use appropriate and current strong security mechani sms. For modern best practices, applications can consider the following options: </t> <t>Applications <bcp14>SHOULD</bcp14> use appropriate and current strong s ecurity mechanisms. For modern best practices, applications can consider the fol lowing options:</t>
<ul spacing="normal"> <ul spacing="normal">
<li> <li>
<t>(D)TLS-based protection: <t>(D)TLS-based protection:
For guidance on using TLS 1.3 and DTLS, applications should refer to BCP 195, For guidance on using TLS 1.3 and DTLS, applications should refer to <xref targe
including <xref target="RFC9325"/>, which provides up-to-date recommendations.</ t="BCP195"/>,
t> which provides up-to-date recommendations.</t>
</li> </li>
<li> <li>
<t>IPsec-based protection: <t>IPsec-based protection:
Relevant and current protocol specifications include <xref target="RFC4303"/> (E SP) and <xref target="RFC7296"/> (IKEv2).</t> Relevant and current protocol specifications include <xref target="RFC4303"/> (" IP Encapsulating Security Payload (ESP)") and <xref target="RFC7296"/> ("Interne t Key Exchange Protocol Version 2 (IKEv2)").</t>
</li> </li>
</ul> </ul>
<t>This document does not mandate a specific security mechanism. Instead, <t>This document does not mandate a specific security mechanism. Instead,
applications are responsible for selecting mechanisms that follow current best p applications are responsible for selecting mechanisms that follow current best p
ractices for confidentiality, integrity, and source authentication, and that ref ractices for confidentiality, integrity, and source authentication and that refl
lect the evolving security landscape beyond what is covered in <xref target="RFC ect the evolving security landscape beyond what is covered in <xref target="RFC7
7201"/>.</t> 201"/>.</t>
<t>The haptic codec used with this payload format uses a compression algor <t>The haptic codec used with this payload format uses a compression algor
ithm (see sections 8.2.8.5 and 8.3.3.2 in <xref target="ISO.IEC.23090-31"/>). An ithm (see Sections 8.2.8.5 and 8.3.3.2 in <xref target="ISO.IEC.23090-31"/>). An
attacker may inject pathological datagrams into the stream which are complex to attacker may inject pathological datagrams into the stream that are complex to
decode and cause the receiver to be overloaded, similarly to <xref target="RFC3 decode and cause the receiver to be overloaded, similarly to <xref target="RFC35
551"/>.</t> 51"/>.</t>
<t>End-to-end security with authentication, integrity, or confidentiality protection will prevent a Media-Aware Network Element (MANE) from performing med ia-aware operations other than discarding complete packets. In the case of confi dentiality protection, it will even be prevented from discarding packets in a me dia-aware way. To be allowed to perform such operations, a MANE is required to b e a trusted entity that is included in the security context establishment.</t> <t>End-to-end security with authentication, integrity, or confidentiality protection will prevent a Media-Aware Network Element (MANE) from performing med ia-aware operations other than discarding complete packets. In the case of confi dentiality protection, it will even be prevented from discarding packets in a me dia-aware way. To be allowed to perform such operations, a MANE is required to b e a trusted entity that is included in the security context establishment.</t>
</section> </section>
<section anchor="iana-considerations"> <section anchor="iana-considerations">
<name>IANA Considerations</name> <name>IANA Considerations</name>
<section anchor="media-type-registration-update"> <section anchor="media-type-registration-update">
<name>Media Type Registration Update</name> <name>Media Type Registration Update</name>
<t>This memo updates the 'hmpg' haptic subtype defined in <xref target=" <t>This memo updates the 'hmpg' haptic subtype defined in <xref target="
RFC9695"/> for use with the MPEG-I haptics streamable binary coding format descr RFC9695"/> for use with the MPEG-I haptics streamable binary coding format descr
ibed in ISO/IEC 23090-31: Haptics coding <xref target="ISO.IEC.23090-31"/>. This ibed in ISO/IEC 23090-31: Haptics coding <xref target="ISO.IEC.23090-31"/>. This
memo especially defines optional parameters for this type in <xref target="opti memo defines optional parameters for this type in <xref target="optional-param"
onal-param"/>. The original subtype registration for haptics/hmpg, registered wi />. The original subtype registration for 'haptics/hmpg', registered with IANA i
th IANA in <xref target="RFC9695"/>, did not include any required or optional pa n <xref target="RFC9695"/>, did not include any required or optional parameters.
rameters. This document introduces optional parameters to enable extended functi This document introduces optional parameters to enable extended functionality w
onality while maintaining backward compatibility.</t> hile maintaining backward compatibility.</t>
<t>A mapping of the parameters into the Session Description Protocol (SD <t>A mapping of the parameters into SDP <xref target="RFC8866"/> is also
P) <xref target="RFC8866"/> is also provided for applications that use SDP. Equi provided for applications that use SDP. Equivalent parameters could be defined
valent parameters could be defined elsewhere for use with control protocols that elsewhere for use with control protocols that do not use SDP. The receiver <bcp1
do not use SDP. 4>MUST</bcp14> ignore any parameter unspecified in this memo.</t>
The receiver MUST ignore any parameter unspecified in this memo.</t> <t>IANA has updated the registration for 'haptics', described in <xref t
<t>This document requests an SDP parameters registration for the haptic arget="sdp-registration"/>, in the "haptics" registry within the "Media Types" r
media type, as described in <xref target="sdp-registration"/>.</t> egistry group and listed document as an additional reference.</t>
<t>The following entries identify the media type being updated:</t> <t>The following entries identify the updates to the 'media/haptics' reg
<t>Type name: haptics</t> istration:</t>
<t>Subtype name: hmpg</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>The following entries are replaced by this memo:</t>
<t>Optional parameters: see section 6.2 of RFC XXX (note to RFC editor: <dl>
replace with this RFC's number).</t> <dt>Optional parameters:</dt>
<t>Person &amp; email address to contact for further information: Yeshwa <dd>
nt Muthusamy (yeshwant@yeshvik.com) and Hyunsik Yang (hyunsik.yang@interdigital. <t>See <xref target="sdp-registration"/> of RFC 9993</t>
com)</t> </dd>
<dt>Person &amp; email address to contact for further information:</dt
>
<dd>
<t><contact fullname="Yeshwant Muthusamy"/> (yeshwant@yeshvik.com) a
nd <contact fullname="Hyunsik Yang"/> (hyunsik.yang@interdigital.com)</t>
</dd>
</dl>
</section>
<section anchor="new-sdp-parameters-media-registration">
<name>New SDP Parameters Media Registration</name>
<t>IANA has registered the 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>
</section>
<section anchor="acknowledgments">
<name>Acknowledgments</name>
<t>Thanks to Philippe Guillotel, Quentin Galvane, Jonathan Lennox, Marius
Kleidl and Stephan Wenger for the comments and discussions about this draft.</t>
</section> </section>
</middle> </middle>
<back> <back>
<references anchor="sec-combined-references"> <references anchor="sec-combined-references">
<name>References</name> <name>References</name>
<references anchor="sec-normative-references"> <references anchor="sec-normative-references">
<name>Normative References</name> <name>Normative References</name>
<reference anchor="ISO.IEC.23090-31" target="https://www.iso.org/standar d/86122.html"> <reference anchor="ISO.IEC.23090-31" target="https://www.iso.org/standar d/86122.html">
<front> <front>
<title>Information technology - Coded representation of immersive me dia</title> <title>Information technology - Coded representation of immersive me dia - Part 31: Haptics coding</title>
<author> <author>
<organization>ISO/IEC</organization> <organization>ISO/IEC</organization>
</author> </author>
<date year="2025"/> <date year="2025"/>
</front> </front>
<seriesInfo name="ISO/IEC" value="23090-31:2025"/> <seriesInfo name="ISO/IEC" value="23090-31:2025"/>
</reference> </reference>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 119.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 119.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 174.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 174.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 550.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 550.xml"/>
skipping to change at line 1079 skipping to change at line 1243
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 264.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 264.xml"/>
</references> </references>
<references anchor="sec-informative-references"> <references anchor="sec-informative-references">
<name>Informative References</name> <name>Informative References</name>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 736.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.2 736.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 088.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.8 088.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 201.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 201.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 202.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 202.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 296.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.7 296.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 303.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 303.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.9 325.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 124.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 124.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 711.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 711.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 551.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.3 551.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 585.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.4 585.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 104.xml"/> <xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC.5 104.xml"/>
<referencegroup anchor="BCP195" target="https://www.rfc-editor.org/info/
bcp195">
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC
.8996.xml"/>
<xi:include href="https://bib.ietf.org/public/rfc/bibxml/reference.RFC
.9325.xml"/>
</referencegroup>
</references> </references>
</references> </references>
<?line 613?>
<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="Ma
rius Kleidl"/>, and <contact fullname="Stephan Wenger"/> for the comments and di
scussions about this document.</t>
</section>
</back> </back>
<!-- ##markdown-source: <!-- ##markdown-source:
H4sIAPCQc2kAA+19aW8bSZLodwP+DwkZWJPbRVqHTw0MrMaSx9qxbK0l90xv H4sIADP8DWoAA+19aXMbyZHod/yKWiriEbABiKRu2rKXQ1IjrkWJK1Iznudw
o9Eokkmy2sUqTmVRMtv2++0vrryqijradmPx3mrQY0qsyoyMjIw7IgeDwd07 TDSAAtGjRjfc1SCFIfV+y/st+8s2r7q6GzwkjeMdpmMsoNFVlZWVlVdlZg0G
dVbnel9tvTs/VafpOi/TiXpZVou0VtOyUq/SZZ2NzdbdO+loVOmLfQUPDuTB g06VVpneVe/PTtRJssqKZKJeFeU8qdS0KNXrZFGlY9NJRqNSX9z62qQY58kc
AX97986kHBfpAoaZVOm0HmS6ng7Si3pcVnpQ1cvBnEcZ5GmtTQ3Pw7/76tPh upuUybQapLqaDpKLalyUelBWi8GM3xtkSaVN1cmX85Eud9WLFy8edSbwbFft
wfnRl7t3TF3pdLGvjo/OX969M4bvZmW13lemnty9ky2rfVVXK1Pvbm8/294F bO08HWw96ZjlaJ4akxZ5tVrA86PDs1edMbxyXpSrXWWqSWdc5EbnZml2VVUu
QODpfXVepYVZlhWMdllWH2ZVuVruK5n07p3VEucw++rZ42ePcIq0mPya5mUB dSddlPTJVDtbWy+2djpJqZNd9ePRWeeyKD+el8VysasEnM5ygQNC2xdPXzzp
8661uXtnme2rn+tynCgDg1R6auDTesEfYD2LdLnMitkvd+/AjKt6Xlb7d+8o FCNTZBq/d2CWjzpZkp/vKp13Fumu+ltVjPvKFGVV6qmBT6s5fvh756NeQc+T
NcD/UyorYOhXZ0P1U1rM+E+MgFfrVWGyD8Hfy2oGSytqXR1ms6xOc/6zXqRZ 3U4nWVazotztKDWA/5RKc+j59elQ/QQd0RPGy+vVMjfpR/+4KGGco7zS5UF6
vq/m/PxwDc//R4ZPTfip4bhc8JPjclXUiI/3ZwdNEP45VBMN+7UOYfhnepHp nlZJRk/1PEmzXTXjt4crePvfU3xpwi8Nx8WcXhwXy7xChHzI00pP1GmFk1LF
KvriaiA+0gvDiZ6W6+uAeJEW6SRFrBREJdmFJsQcn70dHh+9GO7uwS4N9nb2 VO3NdZmOkxiivw7VRMPCrQKQ/ppcpLoMn98I0yd6fTjR02J1C0z7SZ5Mkk4n
+T1LXsfFlB8vC1Xr8bwo83K2VgP1opzoiar0stJGFzU/UU5VtljoysDoaqEn J0JJLzTi5+j03fDocH+48wjWaPBoe5faCBVuHOVTfrnIVaXHs7zIivOVGqj9
WbrFwwU74Za1BVM/gKnlEaat3e3dR/y70VWmTQbzu9fkBXjKAusfr9NqpmvY YgLTK/Wi1LDoFb8B00znME8Dfau5nqQJvHmSlJWCfi1RAjyTND/foHH8OrmJ
mLpemv0HDy4vL4eZKYcw1QOiorSaPHj6eGd3dzivFzkiQql3L1/s7uw825fP bgBEDwEifsFR4RP6agCJ2qQAlW0jb8M7dgLu5Sopz3UFy1ZVC7P78OHl5eUw
T3eePLSf9x492rafkRbdM08fP3bP7D7G5/F/mcWToBVHfrLnnny6/fSp/fxk NcUQhnloqiSfJOXk4fOn2zs7w1k1zzrQ6P2r/Z3t7Re7/PH59rPH8vHRkydb
d3sn+LzrPz9zzz/c295zs+/tutkf7ex6CJ/s7ATQus8PHz0Nnt9mCAeDgUpH 8hEJ1L7w/OlT+8LOU3i300ktxhi92OGzR/al51vPn8vHZztb2/7jjvv4wr77
cGLTcY2/n88zAzu0KJVZ6nE2BVSrtEAmoZbCTaaem9RzrU5Oj/42OFbMEnC3 +NHWI/n4ZHvHwfFse9uDZD8+fvL8iXt3i979bv9kG+HsDAYDlYxMVSbjqtM5
0qE6sL/SXitmCApGBvpblgYIBCji5PjVmVoVWW2A9sf5agLHU6X8556MygxJ m6UGlmZeKLPQ43QK2FRJTnxkIXxk6vnI8cnh94MjxWwC1yIZqj37lRcYOtbJ
ndEAfXpazXU6geMAW6d+11UJRKMWwCP4xWU6/qBrM1TnAFoItbwlwKd5Xl4a XKW4rvNFYYAqgAykIS857AJ6p3t89Pq0p5awNQzQ/zhbIiGoROFzeqxmOpkA
WgO/kf3uKDX1kAFgfvX4mBsuNepS5zn+O63S2SIk9XiAulSLVV5ny1wHAwmE 8cPaqF91WQBFqDlwB35jkYw/6soM1dlMRxBLKwE8ybLi0hD83CL91ZFnOFaa
ZQUHs0hzZVajer3UcHBmGe4GjYXgCat9MF8sZ4l8rSvA4GVWz9XxwZsDBFKI +5nja667xKhLnWX477RMzuchfccdVIWaL7MqXWQ66EggLErYiHmSKeCdyDRh
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
oTij7W7AowK4JKCoGUftyojMqqrKFQsMPw2TBWeM+FDZVaixMdOsoUvPS1RW uAKBW6u+Gi0rOl2qLyLHHSA8uJ0d07xMQcUB8DCJNVspCYQsdViBADAMEAny
w1GIwPpDa9t0BAC6zJvAC23Nm65I2BUGDT18M2tG2t10GTNp25RBRkWVK1hO Sm2AD9PpCqb9ptRMgJlESS4c+m1j+VOCZ1IWiwWXWyEJIItnM6XC07Tg0DHF
4uH0mlcS2TLUqaNpH30PV84VzvSvVf15jK9U/2+kUF6vcHrR2flzUzPge0DT I0WHocbhWsjSw5kBx8b9wmR6ykd3hZGDM4dMPJ0EAEkMUdGRymUMmWVZFksW
kXISfh+6o8kV/H2h6fhpOMSvws1tPUwbhtn/ymH2vw9uPCJ2/VZcv+Sb7dRN C75jJgOOIvHnaTchw56tpjUFeVagBhr2QgTVG7Kx0uK0b7NXAmcx2yttR2U3
h7nZTnWdyRsPc5OfGw7zDciPvr/eO8ezfS+bsCEXYufcpiA1q8ybZQtlS6Dc WCj08t3ME6nt02adJE3bBAM5KEcFM0c8lIHvLDJOMIOkYfD8Fn6YdQ7vr9Tl
u1GQvKFWRJVu2MqpK6uDpLdP8gnSEHVYJRUlIqFwvizDriPehLWaMg1AOe9F uYuv0+fvpCfeqkd66dj6d0e9/jeApSUMJfy94bv+LWFp+at5rW/Ay319Q+29
La1jOnoaYYU1l7LgGmENQw7qI5BhhRAXcVD+hjVd63LG6XLu3QTtZGxtgapY 7H5lL7u/BV4ajvPo11tmdMtId+zlbmvUtg3v2std/u7Wy9dTHf1+q2XHY/02
oxWD6ysmtUFB+c55pNfmupiBbsRaR2/nMavHon+QfcAPtBRibxpSlQ8sdV1r 1l1NAsQutXUHyKgIr5chFDaBsu1Oh9g1ZSHKYMNyVG3hHSShfcBPEH2ow/Sn
84f8g48k+WiT3P0GYvd/pe610PyPl7rnZ9jdCs3AABffCDfdw/zP0gG+MYo7 KCgJBfBlEZYQ8cao1X6pAwptz1lVWLVVZcKcaU5TwTnCHIZ83I5Ahrk/nJ5B
ZXcT2g6cf3toYJLSTvIHInL0zzUbetNhNj9xE03i/0sdYFGny7YeYMXagARQ aZzWCK2Kc46dc237aPFinQpUsKq4roKrkSZpP0Fqzlmkq2Y6PweNhzWL7vZT
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
owVzIieychsosFE2SXRdukskpXChC6+NotRA8Ag0rF+RVPNf0s1rrfm5OsVW AxEgwLCyQ8LF/0iXajWG5wwImzzJBcWNvmHBOVTQy1O6PkO77Emvx9lQRZaf
z3IneaOv2HFOBvWCnO5R0a581quONhmVBTf10Ej4LzGYjoTs6t39J+lVSPDX VG6hz09iMB0F2dm7ay+Sm5Dg74kL78oEcngI1OEFGV+dHZ1uuVxReyGL9ptO
CYZ3qwI9PADy8OKTr1sHAkLmWA842inLtZfzaH/uZBWNGwEEGuYMUTOSr8Od ZlErDi/QMFuIKkx8He7E707uGbkQrwA1fJStgsL2Rgyateuf1qQrdU3lUYJo
jaBwpiBxiRI0/1G+Dm4zMGJEbdz/rCFlaWjqoxPkqJHOGMYOHNOnAC5FTTfa JlLfQi+z4/iEHDpwW6uUM1fCcFExqMOO4vocdKRQioZNsYxSi0kuoUNra23d
AcyYMCFYLPhwoLiVCwWHKlHqWXPkFl5yVSFaeFf06Glw8iAkdH8j6+lifPGh lRoTD84ONtfynTaeF++4MqArW8GlLZLj7scebSFzQcrG5zvpMlsb/VCTyYu2
qwLKMuJe60rOuXkEqysdMqjO+XIjrWZ7Kwl1mqLsmjj5Os7ftZSbsX5yPx1S gftfx/TbpnIXro9OoANK6eDLmNv8veTPcLc8sDPc5plQxCQxHrkMnbxccg2g
8Q5f4N3tkCY/irvhg6MHtqqIcmKJ//DliOxdkysj3bjUiDhpGqWB1RbgiC5E 65UqxPbrpmFgPQXooYr4XyRjomphjmyKHDZZO3Ot7S6JacQN3oA1EFdfL6PC
+EOyJuo152inLOCsdfPYxiGTpFUuX2vAylIrUaGgSpSIKWJK/MGKKJZQQZZO HBqxbcMSNw7YPkf7z3Q8TTYfrNPJi63IYgkiOOlgytvq1grBAONghghlHP0Z
WCMllnTYCMkBmHA1x1zHS2OTxTq4vMiKrKQgLZcijd4zYC0fTBxvZGjHKb3B /GgdDX9gJn+ZWhR5QuTiiL/I1qfjP6xzM04Xga9c3CuA+qMKA+MzF6Ewhimg
l9at8Rfm75eZRYunQO6v+ZucegrnYv+jcbYMnPPizQF0H9dY95C7FJMxLAEF kHTeOKZhCaiq+3aRY49FGI10oJhFrKZWJojCpoG48Z4QScaqyiJr0Psf/20w
pPP8MfFKjpwAxk6Qiq8QH4scGulALYu4TKOZlKTDA1HjzTBScldXZb4h8GK1 +Fs5HevJ39WP5CARKuJLquz9zlO18fr45PsNNeAgSiQdNDnHFYqijjCSlKok
srF/YSwvNHyhFCyy9yzbXoJ8fxXV5QGUr05O/+aCUO7EWDJuNvXnBHMRDxTP OZ/yn4VhyK9STRIomtJnmPRmxSUdIlzqDsyTL+38MyhonIqR0ekYMlCrN479
IcHranfwAF9mEzgddAkiaSeT31aGJhfeXM99uRLmxvBVW1X8LOHa2uh8nG11 lMYypZr3lM7E7B2/UrkOe+HblSixDBCJs3EHRW6D2133NykD/3fkGntjPovb
XJx4mPjUHyRoq8/45I0KnW9AFHjvTh2mQqCcdrQvyWUN/HXliMvGyfJHsAED O+BIelgfShnSk91OZ5+DQ3c7NwPZuQOQNQjRABwchQELnZvgHAz+1LkFiLtg
ECpIuIIEUdF4R9AqD4tubYGM7RXr9zAJ9biSRVhFUYQaXW8gmZGZBtcLhVeo 6lYgmsiKi+ZzYLlIfDoEI13KZeogV75MJ8D36CJG0jcnvywNASDitpr51CSM
2moc2sDg6qmCtB3pyqGpCiguDIpvyI2v38UbY62X2bmsMLThOoR4Z1nHGMb1 lOE7s8JkQMebAzvxzbuDvleK0DqxyqiP3ijRjYmX2pfnugpjH8SY8ZxLwspq
QvvqhW6q66TlsmYnxWS81s1v2B6V7iZrb+gOgtur3ZJtF2OqZAO23FEHN+Kr KGuLBZddJ7MdAc4HoBYg15E5i47Ni4AejjCVltNfbI1Wv2j9UA0vWAUp6VCm
gsUX27592wKVNlxFuGxAcS0lbIjcqDl7GtSOyRXNpnRnLwn89nz51LWX/+Bp wm060SQOg5uCwguibKYNrVVwA2pO2qoU1dCU4RMn/cSX18Y34+JVrtZp7zyA
zSm9Tjfq+Lx6LjdFhYUQWRX0kYkuuAoTq8bhHZPXKLIbCaNFCiZSJ4xVQjqu eFLkCnx4z2NLH8YVKPvqia5L2aTpsmbuEzBZfbVxJ+4qadZSQ5dEcIu0myJd
3mJlJqrTZIabs3jPMLGxTnEjfEpY2LiVuj+6iUTPWpQFhdB9XT7XY6JQULN0 q+w0xGx1N2CxnFuc7zXiq33F3S30ZsLO2GiA3gDNlWSoIYJt/XOfFCYXJ5vC
SQIfK1kt3mOHYngWGrXE1yRhJYGmN57r8QeJENluBKT9oo6LeapNt0DGdCjR 7bJ+cArCl0jdeoMP7suMoup0PenV2VZy41OY65CWbufF91SFHEJK0Fg7xNxm
pRfvXuw8xoMGH/Z2I6U5Lo4PIfQoX2DpLjXIpIIzauNjZ+azIQVewIwRBJiF iKwljAZ2TaQQGqtGttyiJSkoYQImy8qMtbQUIxqdcBPowwqqnc57N4wIsHkB
ITbBEghhHH3ACsKhamHaekcsxkU3omTPKdkRyLcnqNVz3MJZXqvCSV05nLgx OEI25BLtOY0Jpbk6TxaktWF+qkV87JUNd0ItSfiWqKt+oKmPZ3r8UY7bbJUB
uIQlT+qL5GK+wNau42y4ALz/pgM4GAoZfFC57HzFrPTyWXx3/uLUvYwJF/CS sl3QQsHo1LpHJ2WCk6O6/ff720+RcuHDo53I5InT3UMIPcLnmJBLNSspmYxq
aV5abOsaL2C6lA4yZgLIDCzTMFhO7b8BuXJdKPvTbM3kQqNzJzOLlvYPUz18 8NiRmYNKBleSUizA/mqcIWL1ZJlPEuTA+wi/UV0Y3/SCeREW+XQHEwaHqoF+
9PSRiGtK4NDjFVFJlzIBBBByCsnYQIm3oiw/NhdlgHqOu2goAZE01tSYcpwR 6+2yyyBaL0V+Tsk0RGY+QUONz4WcMb3MnQ4luxJXC+e14EF9VlzMXEyfr/0W
jkmvbg/VrJvnAZwXSJBIxz4dW6Fk2Yok/vo8lfnakAMapGw+sZXRPGQTlCBq ZoezwutlWoCDrpDjB0nKzgvPlgzv0Pdn+yeuMXzARqZ+27BNZLyA4RLa3qgh
jCEVZ3Os5ZTCrgOGHG4iuS85NrdfLOkHYRJcsPURIqSNqnj3vBMBg/gHP566 yQgchI+xCFSJGzAuF3+yb9QmSc41OutSM2+YdDDU4yfPn5CwxqAXPV4S3bRF
93Yoh0P++jLcXv7rmX/4yQ5xDa75l0wAqWPdfSjk8MrdjmhKGxvzKdVLroEJ voScQwJcUPgtKcqPbX9pXc1w/QwFIJL+mBhTjFPCLtlKza7q+fHcgfPnCfqI
2kc7hAcajE0LQe0Ga4al5KhE+YCVVVM6u57F5Dr9gJog4JMsRZmcj166oK/K ByRjK6EsnxH3kstLXsxWhvz6IHCziaQ/c491SILjeDytchbkSvYsLPew49DS
AIyJcHGKQqaYIk+dCw6c1Z+v0ZQxXvpNV4WE9J1zyw/Xs6idYvr8xvqCC1s3 pjN9wVxJUwhD34I1j/AgdU7FTesdQhgZsffDiWtHbEEevgqXlZ+e+nefbdO7
kSjN6fUDSRCW2gM6pJQ0B2I8Mx+YTn0cEyWctA+VHBAgNaNrEocf9HqKJkuU VJzBhVdI+urOY6KD1+7KQ1PYI0cfVr3g3JegorPDdqDJ2GAb1HIwM1gyjQoU
uSMeXQwg1qtJBJpTXik9Vfy4wNUyvpPRyjrp+7oEyqRaySXKPdHMSetFAUAl FphLNaUt69lNppOPqAACNsnqt4Pjhkvm9EsRQDERdk4CJsEgeapOEAtnEJpe
Vf46SHuoUL9zvmd/xBc6NXQHGGlEVBOOS8qzBRfTsw8IEUAGEs05EJ0adIaM Ek6XuYRKOCel765r8TrFAPq1CQYXNnGir3QUYC+5B7QzKdMXRHlqPjKJ+sNh
/XhBu1rCkbhMgCxyvlI9wE0rGSdchU12ay2g4XvC8mtJBaEc0TbLCChYkVGU lHRcVcGZ3kBnRlek7n7UqymanVE4lPjl8WC2Wk4i0HBdnC5LwanikQd+lvI9
zWZEWqH4IBrxxeGkA1vCBg7A+y2bPVRH2CfWurvWBujJiova9mwJUUxPDLye i2HupVmWCyBNSo9coBAUnZyUYJQHlErlr3m0mwqVPXeK4Lf4XCeGLtcibYmS
3MJ5EiCB/GS6qshnBFo8nLpS4S6wNk4UyEZnXaNQqihVIC8xMRUOHNZ8cBg8 v3FeWTrnpHl26CEWyNClMQeiYoMOkbJTlnyl4jclTIkLDEgj42vQAwTVTeFw
gs/YWnmrDEnzYHkoCvp72Y25p4yfFEnQYKAQcyPKlcFXMHEAZvpNTCRErju2 Fjb2sTGBmiMRM60lyIZCPpssIyBisjLA9jwn8goFB9GJzwMnhdjSNrAAXnRZ
xHTKS30hd09uMcOVg4ss8CUeCLSa9oFWqZWzOsR45Buw009cPNJeiUU5VY5p 8aE6xNqu1ne5MkBTVlBUtipLiGJ6Y+CV5gbOrXcXkUBOT12W5AIElR42XqFw
n5X5iipamNE92d3exT7ymRmvDLl5vedLmgzE/Po+NYxeIuuXBiykCtPruA4b FVg1JzJkjFUViqOSojCyAsNTYc9h5gcHGETwGZsWbzUjKfYrL0XhFCPy21aM
D72kgyaTxR6chdbS/AGIf+z3dFaCsg4b9oGrabkxDxUVJU3tidsYqHQFw2D3 mARpz6ATGqNNiqXBdzEWA4b4RcwkxKrbs8Buikt9IfdIbjCnlT2LrO8V7gW0
Hnzdtm6BDRRjn83TBrjTMoiicWd/R1NOQcD+AlHXj6DJCNZdLSXBgvtDglI6 m3aBRKnGsjrA0923BVgT7nTXXjhFYWqOW58W2ZLSWZjBPdvZ2sGy7qkZLw2R
UbMVKHukKQd6Sufg1OzcEVPbet56u/SeCLf5uDTJ8zR+80h+OY9i8FfexEs3 nPdfShmBmE9vUiXnBfJ8qa9CGjE1x1nY0+VL2l8yWOyMm2stxR2A5sd+Kc8L
PKp0rE0i+pC44IB3qkR0EOkUXGixwvRFmV9Ijv6BR0ZkWoQdFoJCYVS+y24s 0NlhnT5y7ixX3KGEon5dh+JCBSpZQjdYlgeb28ossG5i4bOBWgN3WgTHoFxm
Mz/Cy8qqgnwCcGpQflBIJQ2nkdYttJBGIhunb3Kq30D1Dvvnr88GbInJGeSc 35GS0wiwgkBU0iOoIII5VwuJWOESj6CaTtT5Mp2wthwoJq2dkw/H0VDTft54
d/YJhpvE3A8eVzvDPQL5EH5pzOx02SkHiv4KyurOs0eJwhF9riUh/tneLikZ t/Ci1C0+Tk2imI1fPBZc1i8cPOVFvHTdow7H6iOiD4kL9nWrDkT7j4j/Qosp
zJGc+361HNTlgA5FI4loyEAfnwJyumB+B2L1AmkkxOfS5vVGoXjjQhGs7+xt rC+K7IJC8vc8KiLjIqygEKQEowJetOOYmdActcqcfAKwY1ByjMnyC4eRqiw0
7wEN9I7OTvvSroEo49lj/Ovx348udvtDp81OyvGK+O1VWQ3tDUSLFDgk3Ssd jVpcIAfDYuzkQHUPemdvTgdsjMnuQ7dUhz274fowv4O31fbwEcF7AF9qwzq9
4oyvCZVDJwLJ9yEJaI74KG+lW15MB/TubZmBvUKINN20joJ7RMnRqc8xzjtO dcrHfFdX3+2fbL8gBQL6ZHbjDlqWi0FVDIj0a7FXQwTu6ARQ0ALbexCaF4lU
l1i1sMbcvEtOk4NpL3QVqKR8roaNnBLSipm1Cb/IWg03VqxqhDp1ms/QITBf 0rdIW9hEgyhSwrgCBKzLPNp6BMvc3Tg6UYf5GNT1ZcY+c7fXbVGI7uHpSW+j
gLKl3aWhBus5hk+Hjwj4p8M9+N/uJmu3zxciiyyTrvdkfyxT4Ad5OSMhjkoh JxUaiERePOW2qDvmsB3/AqR8+ImD2Hyiww9yYryjukd/ObzYgU6GkmIxKcZL
2H8Lw0GdwEfoJSelZOmP0vKrnNjop3UZhKFSEG6IGFwfRjMMyNecWl/ZfHJW Ys03xZU0lx0tWWCmdLV0iGy+qlM2qsguX50koFNiuUwADl8x9VDb+zIQnwRP
wQlPR8UEaZ/aF1l8c85WY6+CHW1veHAoOCHJ+thSFm6Dg0tcxBtxpx6J8tA7 A4RHukT8EaPI8GwfMI4pDisMkbwUV8kY/SuB9spbcRiF9JD6zLxQGEzaKMax
OXhz1OdWRsCvcS+Y/vCVlF5h9Z2bSPisQJRmKbsGGDG1dg6P5rVVm0FNXMEL ZJUkVL6T7Bw9CbM5KGYa8xmkfMzz4c7w+fAJgf58+Aj+t7POSO7xbcgi80gx
Ass6AYGNOhPCFExjPZEUXwkBvEzXpMWMqDUMNc1HbxKvhi0gvwZqtQ9rbsYI YwEEwwMDyYpzEvaoQIKFODd8khe4FJ2WQVFx+lNYn4QOvK2bITwdB1GIWMHp
qGCkrlZ0Wz2CSmYpE3kzqd0Exh310XFFFy64dE8dH7w56LCMsTkeKRtUkBMV 4RmWATGcUSUsG8jPqjog6TCf4B6iWkYW1Rw0F61StJbNpQ62F0eCWa9cwqJw
br2nZMG4VosTCNkUuo+Z1ved4iUlJ82Lcp89fvYIu8zwXRNePmM20eC4UWhC sHeJU3gr3tZD0TC6x3tvD3tc1wi4Oy4EUx42SagJq/lcXMJHZaLsS9idwGip
4hfvN6lwMeys4OMYWf+tZCOXliQvdVaZKr8MTRySdF2G13QWHbBWnkmP587K tHOR1C+YWg9q3+XGILCsPxDYqFghTMEwQcnBJALwMlmRqjOiejFUDR99UDwb
A1ZXpAlX7rAQFYP5m5rNA8RZEta0EEJoc2KMYZ7BhDumuXj12pMIBmraEMsa tpP8HNBRh3OuHwhR4ktVLumqegSVbFem73pKgQlsQKqr41JM5EDxgTrae7vX
nWwIjNeu9flboIBquKFUaGOukdvknKaEvmQKdgHVX2LCl83fJAWNlYywUKYR sJyxQh6pJZTnEyV1faA4zTCPiyM32VjaxPj2TaeXSSJN/X7aF0+RSxMfQIp0
vnJs7AZVL0GBi3cG26xeygwIBRcdCqQsqn04AvSAoSWXf7jYptXwLXHq3Ghu cjzy1ds8GhLTeEFJidNgLwbvwsgt0Agoc6Fn0qg1GVX5aTCQpjXDgzX1VGo4
uxLRpQ0uLV0BIY0+KWkf7CSNVHOKu8XpkBLoXhXRzdS1Jb8OIV5x1y6q92wl t6Z5sC4jBbgyN/UoLwy7sflADwlTfZcFZ9kNrUeMKAwlmXC1NBEwCYXACk3g
wTdIKUg+8BUqm/oFxc2enCD0uphGb7a2LTWn7DYKKl+4LFASh7lIFf/MpVhB MVwTZpmaEwOBVds2Q39jE5AJV5QKrc8VitOMw9DQC01HmUDmlxjLZyNmSX9D
Yd+ZUL58EVQIteeSO8mxSksChoIZGv9tm1L3VSBw1WOun5T6LtWDzSFXCv5B HaSebxQVpYGR8JgzyBHy3mAbIE1xHaH4IQJHWqEskkOYORhWcjuHO6C2jjhL
UyXYvh0+kO/wLdhBnDXGetQpjAzD/ZvCSwlzzLdASS+522ReI7qtvzbw9eyr bjozmourRJRmz5KsFJfeJwWh2A1y1jgvjUNKJU5hmUdXPFeWnvBUBJdyRqeF
n7SZX6KWdwJCcWXSxVr11vK3/8APF9kHrLJkRS4s1FS9K8sy+8ytD8ZYJZzr rNox611DEEALLdV+4lJNLslnQxoFmY2Bc2PDb95G7iOHMKfEPRxxJJR2GgSS
Cd9vw6hMiw8E3SmcymwJuP7bCkQVLD5P1H+tyDJSf0tz0D6BHP4TUEiS8bUu uMCMYb3OpUanuLb1NqfscnIsgMXRJjG9hy7zLZzEroIecWdw6mCQVngqW8b9
ivJjAkZmlYEh+/dcZ5OcS31qvcQn/qELrC+2tMXqrvQbFSuRdcQR1h5x608w ABtk3ehyc3iWjO0psqAdNM13TfLG7k61bi9/xamYkkN3Am/DwvyPOK9SgubJ
h1Gy/F+wLbk5vrIAAA== +sY1s47cwBuEQ1xdXf2kzewS9cVjkIlLk8xXn1GRW8njf8cPF+lHTMS0+t5V
mOZJb9+Yv9kj9vxWX8apt0Y4dsSsAxoM+Eysort8PGy+hp6+LNuWYZCMW4Dl
msXJNQFOGajXPp2RrrvfvaH08e5155pTuq6dhMAOZOmwwnIHXiO2hIJtb4w5
15me8O0+natdDgPVk5cbVOSPL6ZP8o+GVZ2rE2Bx6QIg/H4Jgh4kf/YZtxz8
8p9LskXV90kGxoC2j/8DyIx0jDc6z4tP9vFxUqZLo/6S6XTCXchCn1Z6ga//
qEGLLz+LCGSf7Zxzi/FNsdZZ7x5hTl0VsvJh578BlUb63vu0AAA=
--> -->
</rfc> </rfc>
 End of changes. 79 change blocks. 
907 lines changed or deleted 1095 lines changed or added

This html diff was produced by rfcdiff 1.48.