<?xml version="1.0" encoding="utf-8"?>
<!-- name="GENERATOR" content="github.com/mmarkdown/mmark Mmark Markdown Processor - mmark.miek.nl" --> version='1.0' encoding='utf-8'?>
<!DOCTYPE rfc SYSTEM "rfc2629-xhtml.ent">

<rfc number="8759" xmlns:xi="http://www.w3.org/2001/XInclude" version="3" ipr="trust200902"
     docName="draft-ietf-payload-rtp-ttml-06" submissionType="IETF"
     category="std" xml:lang="en" xmlns:xi="http://www.w3.org/2001/XInclude" consensus="true"> consensus="true" obsoletes=""
     updates="" sortRefs="true" symRefs="true" tocInclude="true">

<front>

<title abbrev="RTP Payload for TTML Timed Text">RTP Payload for TTML Timed Text</title><seriesInfo value="draft-ietf-payload-rtp-ttml-06" stream="IETF" status="standard" name="Internet-Draft"></seriesInfo> Text Markup Language (TTML)</title>
<seriesInfo name="RFC" value="8759"/>

<author initials="J." surname="Sandford" fullname="James Sandford"><organization>British Sandford">
<organization>British Broadcasting Corporation</organization><address><postal><street>Dock Corporation</organization>
<address>
<postal>
<street>Dock House, MediaCityUK</street>
<city>Salford</city>
<country>United Kingdom</country>
</postal><phone>+44
</postal>
<phone>+44 30304 09549</phone>
<email>james.sandford@bbc.co.uk</email>
</address></author>
</address>
</author>
<date year="2019" month="November" day="19"></date> month="March" year="2020"/>
<area>Internet</area>
<workgroup>A/V Transport Payloads Workgroup</workgroup>
<keyword>subtitles</keyword>
<keyword>captions</keyword>
<keyword>imsc</keyword>
<keyword>media</keyword>
<keyword>streaming</keyword>
<keyword>sdp</keyword>
<keyword>xml</keyword>

<abstract>
<t>This memo describes a Real-time Transport Protocol (RTP) payload format for TTML,
Timed Text Markup Language (TTML), an XML based XML-based timed text format for live and file based workflows from
W3C. This payload format is specifically targeted at live streaming workflows using
TTML.</t>
</abstract>
</front>

<middle>
<section anchor="introduction"><name>Introduction</name> anchor="introduction">
<name>Introduction</name>
<t>TTML (Timed Text Markup Language)<xref target="TTML2"></xref> Language) <xref target="TTML2"/> is a media type for
describing timed text text, such as closed captions and subtitles in television
workflows or broadcasts broadcasts, as XML. This document specifies how TTML should be
mapped into an RTP stream in live workflows including, but streaming workflows, including (but not restricted to,
to) those described in the television broadcast oriented EBU-TT television-broadcast-oriented European Broadcasting
Union Timed Text (EBU-TT) Part 3<xref target="TECH3370"></xref> 3 <xref
target="TECH3370"/> specification. This document does not define a media type
for TTML but makes use of the existing application/ttml+xml media type <xref target="TTML-MTPR"></xref>.</t>
target="TTML-MTPR"/>.</t>
</section>

<section anchor="conventions-definitions-and-abbreviations"><name>Conventions, Definitions, anchor="conventions-definitions-and-abbreviations">
<name>Conventions and Abbreviations</name> Definitions</name>
<t>Unless otherwise stated, the term &quot;document&quot; "document" refers to the TTML document
being transmitted in the payload of the RTP packet(s).</t>
<t>The term &quot;word&quot; "word" refers to a data word aligned to a specified number of bits
in a computing sense and not to refer to linguistic words that might appear in
the transported text.</t>
<t>The

        <t>
    The key words &quot;<bcp14>MUST</bcp14>&quot;, &quot;<bcp14>MUST NOT</bcp14>&quot;, &quot;<bcp14>REQUIRED</bcp14>&quot;, &quot;<bcp14>SHALL</bcp14>&quot;, &quot;<bcp14>SHALL NOT</bcp14>&quot;, &quot;<bcp14>SHOULD</bcp14>&quot;, &quot;<bcp14>SHOULD NOT</bcp14>&quot;, &quot;<bcp14>RECOMMENDED</bcp14>&quot;, &quot;<bcp14>NOT RECOMMENDED</bcp14>&quot;, &quot;<bcp14>MAY</bcp14>&quot;, "<bcp14>MUST</bcp14>", "<bcp14>MUST NOT</bcp14>",
    "<bcp14>REQUIRED</bcp14>", "<bcp14>SHALL</bcp14>", "<bcp14>SHALL
    NOT</bcp14>", "<bcp14>SHOULD</bcp14>", "<bcp14>SHOULD NOT</bcp14>",
    "<bcp14>RECOMMENDED</bcp14>", "<bcp14>NOT RECOMMENDED</bcp14>",
    "<bcp14>MAY</bcp14>", and &quot;<bcp14>OPTIONAL</bcp14>&quot; "<bcp14>OPTIONAL</bcp14>" in this document are
    to be interpreted as
    described in BCP14 BCP&nbsp;14 <xref target="RFC2119"></xref> target="RFC2119"/> <xref target="RFC8174"></xref> target="RFC8174"/>
    when, and only when, they appear in all capitals, as shown here.</t> here.
        </t>
</section>

<section anchor="media-format-description"><name>Media anchor="media-format-description">
<name>Media Format Description</name>
<section anchor="relation-to-other-text-payload-types"><name>Relation anchor="relation-to-other-text-payload-types">
<name>Relation to Other Text Payload Types</name>
<t>Prior payload types for text are not suited to the carriage of closed
captions in Television Workflows. RFC 4103 television workflows. "RTP Payload for Text Conversation Conversation" <xref target="RFC4103"></xref>
target="RFC4103"/> is intended for low data rate conversation with its own
session management and minimal formatting capabilities. RFC 4734 "Definition of Events for
Modem, Fax, and Text Telephony Signals Signals" <xref target="RFC4734"></xref> target="RFC4734"/> deals in large
parts with the control signalling of facsimile and other systems. RFC 4396 "RTP Payload Format for
3rd Generation Partnership Project (3GPP) Timed Text Text" <xref target="RFC4396"></xref>
target="RFC4396"/>
describes the carriage of a timed text format with much more restricted
formatting capabilities than TTML. The lack of an existing format for TTML or
generic XML has necessitated the creation of this payload format.</t>
</section>
<section anchor="ttml2"><name>TTML2</name> anchor="ttml2">
<name>TTML2</name>
<t>TTML2 (Timed Text Markup Language, Version 2)<xref target="TTML2"></xref> 2) <xref target="TTML2"/> is an
XML-based markup language for describing textual information with associated
timing metadata. One of its primary use cases is the description of subtitles
and closed captions. A number of profiles exist that adapt TTML2 for use in
specific contexts <xref target="TTML-MTPR"></xref>. target="TTML-MTPR"/>. These include both file based file-based
and streaming workflows.</t>
</section>
</section>

<section anchor="payload-format"><name>Payload anchor="payload-format">
<name>Payload Format</name>
<t>In addition to the required RTP headers, the payload contains a section for
the TTML document being transmitted (User Data Words), Words) and a field for the Length
length of that data. Each RTP payload contains one or part of one TTML
document.</t>
<t>A representation of the payload format for TTML is <xref target="FigRTPFormat"></xref>.</t> target="FigRTPFormat"/>.</t>

<figure anchor="FigRTPFormat"><name>RTP anchor="FigRTPFormat">
<name>RTP Payload Format for TTML </name>
<sourcecode type="ascii-art">
<artwork name="" type="" align="left" alt=""><![CDATA[
 0                   1                   2                   3
 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|V=2|P|X| CC    |M|    PT       |        Sequence Number        |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                           Timestamp                           |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Synchronization Source (SSRC) Identifier            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|           Reserved            |             Length            |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|                       User Data Words...
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
</sourcecode>
]]></artwork>
</figure>

<section anchor="rtpHeaderUsage"><name>RTP anchor="rtpHeaderUsage">
<name>RTP Header Usage</name>
<t>RTP packet header fields SHALL <bcp14>SHALL</bcp14> be interpreted interpreted, as per RFC 3550 <xref target="RFC3550"></xref>,
target="RFC3550"/>, with the following specifics:</t>

<dl newline="true"> newline="true" spacing="normal">
<dt>Marker Bit (M): 1 bit</dt>
<dd><t>The Marker Bit
<dd>The marker bit is set to &quot;1&quot; "1" to indicate the last packet of a
document. Otherwise Otherwise, set to &quot;0&quot;. "0". Note: The first packet might also be the last.</t>
</dd>
last.</dd>
<dt>Timestamp: 32 bits</dt>
<dd><t>The
<dd>The RTP Timestamp encodes the epoch of the TTML document in User Data
Words. Further detail on its usage may be found in <xref target="payloadProc"></xref>.
target="payloadProc"/>. The clock frequency used is dependent on the
application and is specified in the media type rate parameter parameter, as per <xref target="rate"></xref>.
target="rate"/>. Documents spread across multiple packets MUST <bcp14>MUST</bcp14>
use the same timestamp but different consecutive Sequence Numbers. Sequential
documents MUST NOT <bcp14>MUST NOT</bcp14> use the same timestamp.  Because packets do
not represent any constant duration, the timestamp cannot be used to directly
infer packet loss.</t>
</dd> loss.</dd>
<dt>Reserved: 16 bits</dt>
<dd><t>These

<dd>These bits are reserved for future use and MUST <bcp14>MUST</bcp14> be set to
0x0 and ignored at receive.</t>
</dd> upon reception.</dd>
<dt>Length: 16 bits</dt>
<dd><t>The
<dd>The length of User Data Words in bytes.</t>
</dd> bytes.</dd>
<dt>User Data Words: The length of User Data Words MUST <bcp14>MUST</bcp14> match
the value specified in the Length field</dt>
<dd><t>User
<dd>The User Data Words section contains the text of the whole document being transmitted
or a part of the document being transmitted. Documents using character
encodings where characters are not represented by a single byte MUST
<bcp14>MUST</bcp14> be serialized serialised in big endian big-endian order, a.k.a. a.k.a., network byte
order. Where a document will not fit within the Path MTU, it may be fragmented
across multiple packets. Further detail on fragmentation may be found in <xref target="fragmentation"></xref>.</t>
</dd>
target="fragmentation"/>.</dd>
</dl>
</section>

<section anchor="payload-data"><name>Payload anchor="payload-data">
<name>Payload Data</name>
<t>TTML documents define a series of changes to text over time. TTML documents
carried in User Data Words are encoded in accordance with one or more of the
defined TTML profiles specified in the TTML registry <xref target="TTML-MTPR"></xref>.
target="TTML-MTPR"/>. These profiles specify the document structure used,
systems models, timing, and other considerations. TTML profiles may restrict
the complexity of the changes changes, and operational requirements may limit the
maximum duration of TTML documents by a deployment configuration. Both of
these cases are out of scope of this document.</t>
<t>Documents carried over RTP MUST <bcp14>MUST</bcp14> conform to the following profile
profile, in addition to any others used.</t>
</section>
</section>

<section anchor="payload-content-restrictions"><name>Payload content restrictions</name> anchor="payload-content-restrictions">
<name>Payload Content Restrictions</name>
<t>This section defines constraints on the content of TTML documents carried
over RTP.</t>
<t>Multiple TTML subtitle streams MUST NOT <bcp14>MUST NOT</bcp14> be interleaved in a
single RTP stream.</t>
<t>The TTML document instance's root <tt>tt</tt> element in the
<tt>http://www.w3.org/ns/ttml</tt> namespace MUST <bcp14>MUST</bcp14> include a
<tt>timeBase</tt> attribute in the
<tt>http://www.w3.org/ns/ttml#parameter</tt> namespace containing the value
<tt>media</tt>.</t>
<t>This is equivalent to the TTML2 content profile definition document in
<xref target="FigContProf"></xref>.</t> target="FigContProf"/>.</t>
<figure anchor="FigContProf"><name>TTML2 anchor="FigContProf">
<name>TTML2 Content Profile Definition for Documents Carried Over over RTP </name>
<sourcecode type="xml">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;profile xmlns=&quot;http://www.w3.org/ns/ttml#parameter&quot;
    xmlns:ttm=&quot;http://www.w3.org/ns/ttml#metadata&quot;
    xmlns:tt=&quot;http://www.w3.org/ns/ttml&quot;
    type=&quot;content&quot;
    designator=&quot;urn:ietf:rfc:XXXX#content&quot;
    combine=&quot;mostRestrictive&quot;&gt;
    &lt;features xml:base=&quot;http://www.w3.org/ns/ttml/feature/&quot;&gt;
        &lt;tt:metadata&gt;
            &lt;ttm:desc&gt; type="xml">
<![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<profile xmlns="http://www.w3.org/ns/ttml#parameter"
    xmlns:ttm="http://www.w3.org/ns/ttml#metadata"
    xmlns:tt="http://www.w3.org/ns/ttml"
    type="content"
    designator="urn:ietf:rfc:8759#content"
    combine="mostRestrictive">
    <features xml:base="http://www.w3.org/ns/ttml/feature/">
        <tt:metadata>
            <ttm:desc>
                This document is a minimal TTML2 content profile
                definition document intended to express the
                minimal requirements to apply when carrying TTML
                over RTP.
            &lt;/ttm:desc&gt;
        &lt;/tt:metadata&gt;
        &lt;feature value=&quot;required&quot;&gt;#timeBase-media&lt;/feature&gt;
        &lt;feature value=&quot;prohibited&quot;&gt;#timeBase-smpte&lt;/feature&gt;
        &lt;feature value=&quot;prohibited&quot;&gt;#timeBase-clock&lt;/feature&gt;
    &lt;/features&gt;
&lt;/profile&gt;
            </ttm:desc>
        </tt:metadata>
        <feature value="required">#timeBase-media</feature>
        <feature value="prohibited">#timeBase-smpte</feature>
        <feature value="prohibited">#timeBase-clock</feature>
    </features>
</profile>
]]>
</sourcecode>
</figure>
</section>

<section anchor="payloadProc"><name>Payload processing requirements</name> anchor="payloadProc">
<name>Payload Processing Requirements</name>
<t>This section defines constraints on the processing of the TTML documents carried over RTP.</t>
<t>If a TTML document is assessed to be invalid invalid, then it MUST <bcp14>MUST</bcp14> be
discarded. This includes empty documents, i.e. i.e., those of zero length. When
processing a valid document, the following requirements apply.</t>
<t>Each TTML document becomes active at its epoch E. E MUST <bcp14>MUST</bcp14> be
set to the RTP Timestamp in the header of the RTP packet carrying the TTML
document. Computed TTML media times are offset relative to E E, in accordance
with Section I.2 of <xref target="TTML2"></xref>.</t> target="TTML2"/>.</t>
<t>When processing a sequence of TTML documents documents, where each is delivered in
the same RTP stream, exactly zero or one document SHALL <bcp14>SHALL</bcp14> be
considered active at each moment in the RTP time line.
In the event that a document
D<sub>n-1</sub> with E<sub>n-1</sub> is active, and document D<sub>n</sub> is
delivered with E<sub>n</sub> where E<sub>n-1</sub> &lt; E<sub>n</sub>,
processing of D<sub>n-1</sub> MUST <bcp14>MUST</bcp14> be stopped at E<sub>n</sub>
and processing of D<sub>n</sub> MUST <bcp14>MUST</bcp14> begin.</t>
<t>When all defined content within a document has ended ended, then processing of the
document MAY <bcp14>MAY</bcp14> be stopped. This can be tested by constructing the
intermediate synchronic document sequence from the document, as defined by
<xref target="TTML2"></xref>. target="TTML2"/>. If the last intermediate synchronic document in the
sequence is both active and contains no region elements, then all defined
content within the document has ended.</t>
<t>As described above, the RTP Timestamp does not specify the exact timing of
the media in this payload format. Additionally, documents may be fragmented
across multiple packets. This renders the RTCP jitter calculation
unusable.</t>

<section anchor="ttml-processor-profile"><name>TTML anchor="ttml-processor-profile">
<name>TTML Processor profile</name> Profile</name>

<section anchor="feature-extension-designation"><name>Feature extension designation</name> anchor="feature-extension-designation">
<name>Feature Extension Designation</name>
<t>This specification defines the following TTML feature extension designation:</t>

<ul>
<li><t>urn:ietf:rfc:XXXX#rtp-relative-media-time</t>
</li>
<ul empty="true">
<li><tt>urn:ietf:rfc:8759#rtp-relative-media-time</tt></li>
</ul>

<t>The namespace <tt>urn:ietf:rfc:XXXX</tt> <tt>urn:ietf:rfc:8759</tt> is as defined by <xref target="RFC2648"></xref>.</t> target="RFC2648"/>.</t>
<t>A TTML content processor supports the <tt>#rtp-relative-media-time</tt>
feature extension if it processes media times in accordance with the payload
processing requirements specified in this document, i.e. i.e., that the epoch E is
set to the time equivalent to the RTP Timestamp Timestamp, as detailed above in <xref target="payloadProc"></xref>.</t>
target="payloadProc"/>.</t>
</section>

<section anchor="processor-profile-document"><name>Processor profile document</name> anchor="processor-profile-document">
<name>Processor Profile Document</name>
<t>The required syntax and semantics declared in the minimal TTML2 processor
profile in <xref target="FigProcProf"></xref> MUST target="FigProcProf"/> <bcp14>MUST</bcp14> be supported by
the receiver,
as signified by those <tt>feature</tt> or <tt>extension</tt> elements whose
<tt>value</tt> attribute is set to <tt>required</tt>.</t>
<figure anchor="FigProcProf"><name>TTML2 anchor="FigProcProf">
<name>TTML2 Processor Profile Definition for Processing Documents Carried Over over
RTP </name>
<sourcecode type="xml">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;profile xmlns=&quot;http://www.w3.org/ns/ttml#parameter&quot;
    xmlns:ttm=&quot;http://www.w3.org/ns/ttml#metadata&quot;
    xmlns:tt=&quot;http://www.w3.org/ns/ttml&quot;
    type=&quot;processor&quot;
    designator=&quot;urn:ietf:rfc:XXXX#processor&quot;
    combine=&quot;mostRestrictive&quot;&gt;
    &lt;features xml:base=&quot;http://www.w3.org/ns/ttml/feature/&quot;&gt;
        &lt;tt:metadata&gt;
            &lt;ttm:desc&gt; type="xml">
<![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<profile xmlns="http://www.w3.org/ns/ttml#parameter"
    xmlns:ttm="http://www.w3.org/ns/ttml#metadata"
    xmlns:tt="http://www.w3.org/ns/ttml"
    type="processor"
    designator="urn:ietf:rfc:8759#processor"
    combine="mostRestrictive">
    <features xml:base="http://www.w3.org/ns/ttml/feature/">
        <tt:metadata>
            <ttm:desc>
                This document is a minimal TTML2 processor profile
                definition document intended to express the
                minimal requirements of a TTML processor able to
                process TTML delivered over RTP according to
                RFC XXXX.
            &lt;/ttm:desc&gt;
        &lt;/tt:metadata&gt;
        &lt;feature value=&quot;required&quot;&gt;#timeBase-media&lt;/feature&gt;
        &lt;feature value=&quot;optional&quot;&gt; 8759.
            </ttm:desc>
        </tt:metadata>
        <feature value="required">#timeBase-media</feature>
        <feature value="optional">
            #profile-full-version-2
        &lt;/feature&gt;
    &lt;/features&gt;
    &lt;extensions xml:base=&quot;urn:ietf:rfc:XXXX&quot;&gt;
        &lt;extension restricts=&quot;#timeBase-media&quot; value=&quot;required&quot;&gt;
        </feature>
    </features>
    <extensions xml:base="urn:ietf:rfc:8759">
        <extension restricts="#timeBase-media" value="required">
            #rtp-relative-media-time
        &lt;/extension&gt;
    &lt;/extensions&gt;
&lt;/profile&gt;
        </extension>
    </extensions>
</profile>
]]>
</sourcecode>
</figure>
<t>Note that this requirement does not imply that the receiver needs to
support either TTML1 or TTML2 profile processing, i.e. i.e., the TTML2
<tt>#profile-full-version-2</tt> feature or any of
its dependent features.</t>
</section>

<section anchor="codecs"><name>Processor profile signalling</name> anchor="codecs">
<name>Processor Profile Signalling</name>
<t>The <tt>codecs</tt> media type parameter MUST <bcp14>MUST</bcp14> specify at
least one processor profile. Short codes for TTML profiles are registered at
<xref target="TTML-MTPR"></xref>. target="TTML-MTPR"/>. The processor profiles specified in
<tt>codecs</tt> MUST <bcp14>MUST</bcp14> be compatible with the processor profile
specified in this document. Where multiple options exist in <tt>codecs</tt>
for possible processor profile combinations (i.e. (i.e., separated by <tt>|</tt>
operator), every permitted option MUST <bcp14>MUST</bcp14> be compatible with the
processor profile specified in this document. Where processor profiles other (other
than the one specified in this document document) are advertised in the <tt>codecs</tt>
parameter, the requirements of the processor profile specified in this
document MAY <bcp14>MAY</bcp14> be signalled signalled, additionally using the <tt>+</tt>
operator with its registered short code.</t>
<t>A processor profile (X) is compatible with the processor profile specified
here (P) if X includes all the features and extensions in P, identified P (identified by
their character content, content) and the <tt>value</tt> attribute of each is is, at least least,
as restrictive as the <tt>value</tt> attribute of the feature or extension in
P that has the same character content. The term &quot;restrictive&quot; "restrictive" here is as
defined in <xref target="TTML2"></xref> Section 6.</t> 6 of <xref target="TTML2"/>.</t>
</section>
</section>
</section>

<section anchor="payload-examples"><name>Payload anchor="payload-examples">
<name>Payload Examples</name>
<t><xref target="FigEGDoc"></xref> target="FigEGDoc"/> is an example of a valid TTML document that may
be carried using the payload format described in this document.</t>
<figure anchor="FigEGDoc"><name>Example anchor="FigEGDoc">
<name>Example TTML Document </name> Document</name>
<sourcecode type="xml">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;tt xml:lang=&quot;en&quot;
 xmlns=&quot;http://www.w3.org/ns/ttml&quot;
 xmlns:ttm=&quot;http://www.w3.org/ns/ttml#metadata&quot;
 xmlns:ttp=&quot;http://www.w3.org/ns/ttml#parameter&quot;
 xmlns:tts=&quot;http://www.w3.org/ns/ttml#styling&quot;
 ttp:timeBase=&quot;media&quot;
 &gt;
  &lt;head&gt;
    &lt;metadata&gt;
      &lt;ttm:title&gt;Timed type="xml">
<![CDATA[
<?xml version="1.0" encoding="UTF-8"?>
<tt xml:lang="en"
 xmlns="http://www.w3.org/ns/ttml"
 xmlns:ttm="http://www.w3.org/ns/ttml#metadata"
 xmlns:ttp="http://www.w3.org/ns/ttml#parameter"
 xmlns:tts="http://www.w3.org/ns/ttml#styling"
 ttp:timeBase="media"
 >
  <head>
    <metadata>
      <ttm:title>Timed Text TTML Example&lt;/ttm:title&gt;
      &lt;ttm:copyright&gt;The Example</ttm:title>
      <ttm:copyright>The Authors (c) 2006&lt;/ttm:copyright&gt;
    &lt;/metadata&gt;
    &lt;styling&gt;
      &lt;!-- 2006</ttm:copyright>
    </metadata>
    <styling>
      <!--
        s1 specifies default color, font, and text alignment
      --&gt;
      &lt;style xml:id=&quot;s1&quot;
        tts:color=&quot;white&quot;
        tts:fontFamily=&quot;proportionalSansSerif&quot;
        tts:fontSize=&quot;100%&quot;
        tts:textAlign=&quot;center&quot;
      /&gt;
    &lt;/styling&gt;
    &lt;layout&gt;
      &lt;region xml:id=&quot;subtitleArea&quot;
        style=&quot;s1&quot;
        tts:extent=&quot;78% 11%&quot;
        tts:padding=&quot;1% 5%&quot;
        tts:backgroundColor=&quot;black&quot;
        tts:displayAlign=&quot;after&quot;
      /&gt;
    &lt;/layout&gt;
  &lt;/head&gt;
  &lt;body region=&quot;subtitleArea&quot;&gt;
    &lt;div&gt;
      &lt;p xml:id=&quot;subtitle1&quot; dur=&quot;5.0s&quot; style=&quot;s1&quot;&gt;
      -->
      <style xml:id="s1"
        tts:color="white"
        tts:fontFamily="proportionalSansSerif"
        tts:fontSize="100%"
        tts:textAlign="center"
      />
    </styling>
    <layout>
      <region xml:id="subtitleArea"
        style="s1"
        tts:extent="78% 11%"
        tts:padding="1% 5%"
        tts:backgroundColor="black"
        tts:displayAlign="after"
      />
    </layout>
  </head>
  <body region="subtitleArea">
    <div>
      <p xml:id="subtitle1" dur="5.0s" style="s1">
        How truly delightful!
      &lt;/p&gt;
    &lt;/div&gt;
  &lt;/body&gt;
&lt;/tt&gt;
      </p>
    </div>
  </body>
</tt>
]]>
</sourcecode>
</figure>
</section>

<section anchor="fragmentation"><name>Fragmentation anchor="fragmentation">
<name>Fragmentation of TTML Documents</name>
<t>Many of the use cases for TTML are low bit-rate with RTP packets expected
to fit within the Path MTU. However, some documents may exceed the Path
MTU. In these cases, they may be split between multiple packets. Where
fragmentation is used, the following guidelines MUST <bcp14>MUST</bcp14> be
followed:</t>

<ul>
<li><t>It is RECOMMENDED <bcp14>RECOMMENDED</bcp14> that documents be fragmented as seldom
as possible, i.e., the least possible number of fragments is created out of a
document.</t>
</li>
<li><t>Text strings MUST <bcp14>MUST</bcp14> split at character boundaries. This
enables decoding of partial documents. As a consequence, document
fragmentation requires knowledge of the UTF-8/UTF-16 encoding formats to
determine character boundaries.</t>
</li>
<li><t>Document fragments SHOULD <bcp14>SHOULD</bcp14> be protected against packet
losses. More information can be found in <xref target="lossOfData"></xref></t> target="lossOfData"/>.</t>
</li>
</ul>
<t>When a document spans more than one RTP packet, the entire document is
obtained by concatenating User Data Words from each consecutive contributing
packet in ascending order of Sequence Number.</t>
<t>As described in <xref target="payloadProc"></xref>, target="payloadProc"/>, only zero or one TTML
document may be active at any point in time. As such, there MUST
<bcp14>MUST</bcp14> only be one document transmitted for a given RTP
Timestamp. Furthermore, as stated in <xref target="rtpHeaderUsage"></xref>, target="rtpHeaderUsage"/>, the Marker Bit MUST
marker bit <bcp14>MUST</bcp14> be set for a packet containing the last
fragment of a document. A packet following one where the Marker Bit marker bit is set
contains the first fragment of a new document. The first fragment might also
be the last.</t>
</section>

<section anchor="lossOfData"><name>Protection Against anchor="lossOfData">
<name>Protection against Loss of Data</name>
<t>Consideration must be devoted to keeping loss of documents due to packet
loss within acceptable limits. What is deemed acceptable limits is dependant dependent
on the TTML profile(s) used and use case case, among other things. As such, specific
limits are outside the scope of this document.</t>
<t>Documents MAY <bcp14>MAY</bcp14> be sent without additional protection if
end-to-end network conditions allow guarantee that document loss to will be within
acceptable limits in under all anticipated load conditions. Where such guarantees
cannot be provided, implementations MUST <bcp14>MUST</bcp14> use a mechanism to
protect against packet loss. Potential mechanisms include FEC Forward Error
Correction (FEC) <xref target="RFC5109"></xref>, target="RFC5109"/>, retransmission <xref target="RFC4588"></xref>,
target="RFC4588"/>, duplication <xref target="ST2022-7"></xref>, target="ST2022-7"/>, or an equivalent
technique.</t>
</section>

<section anchor="congestion-control-considerations"><name>Congestion anchor="congestion-control-considerations">
<name>Congestion Control Considerations</name>
<t>Congestion control for RTP SHALL <bcp14>SHALL</bcp14> be used in accordance with
<xref target="RFC3550"></xref>, target="RFC3550"/> and with any applicable RTP profile: profile, e.g., <xref target="RFC3551"></xref>.
target="RFC3551"/>. "Multimedia Congestion Control: Circuit Breakers for
Unicast RTP Sessions" <xref target="RFC8083"></xref> target="RFC8083"/> is an update to RTP
"RTP: A Transport Protocol for Real-time
Applications" <xref target="RFC3550"></xref> that target="RFC3550"/>, which defines criteria for when one is required to
stop sending RTP Packet Streams. packet streams. Applications implementing this standard MUST
<bcp14>MUST</bcp14> comply with <xref target="RFC8083"></xref> target="RFC8083"/>, with particular
attention paid to Section 4.4 <xref target="RFC8083" sectionFormat="bare" section="4.4"/>
on Media Usability. <xref target="RFC8085"></xref> target="RFC8085"/> provides additional information
on the best practices for applying congestion control to UDP streams.</t>
</section>

<section anchor="payload-format-parameters"><name>Payload anchor="payload-format-parameters">
<name>Payload Format Parameters</name>
<t>This RTP payload format is identified using the existing
application/ttml+xml media type as registered with IANA <xref target="IANA"></xref> target="IANA"/>
and defined in <xref target="TTML-MTPR"></xref>.</t> target="TTML-MTPR"/>.</t>

<section anchor="rate"><name>Clock anchor="rate">
<name>Clock Rate</name>
<t>The default clock rate for TTML over RTP is 1000Hz. 1000 Hz. The clock rate SHOULD
<bcp14>SHOULD</bcp14> be included in any advertisements of the RTP stream
where possible. This parameter has not been added to the media type definition
as it is not applicable to TTML usage other than within RTP streams. In other
contexts, timing is defined within the TTML document.</t>
<t>When choosing a clock rate, implementers should consider what other media
their TTML streams may be used in conjunction with (e.g. (e.g., video or audio). In
these situations, it is RECOMMENDED <bcp14>RECOMMENDED</bcp14> that streams use the same
clock source and clock rate as the related media. As TTML streams may be
aperiodic, implementers should also consider the frequency range over which
they expect packets to be sent and the temporal resolution required.</t>
</section>

<section anchor="sdp-considerations"><name>SDP anchor="sdp-considerations">
<name>Session Description Protocol (SDP) Considerations</name>
<t>The mapping of the application/ttml+xml media type and its parameters <xref target="TTML-MTPR"></xref> SHALL
target="TTML-MTPR"/> <bcp14>SHALL</bcp14> be done according to Section 3 of
<xref target="RFC4855"></xref>.</t> target="RFC4855" sectionFormat="of" section="3"/>.</t>

<ul>
<li><t>The type name &quot;application&quot; "application" goes in SDP &quot;m=&quot; "m=" as the media name.</t>
</li>
<li><t>The media subtype &quot;ttml+xml&quot; "ttml+xml" goes in SDP &quot;a=rtpmap&quot; "a=rtpmap" as the encoding name,</t> name.</t>
</li>
<li><t>The clock rate also goes in &quot;a=rtpmap&quot; "a=rtpmap" as the clock rate.</t>
</li>
</ul>
<t>Additional format specific parameters format-specific parameters, as described in the media type specification SHALL
specification, <bcp14>SHALL</bcp14> be included in the SDP file in &quot;a=fmtp&quot; "a=fmtp" as
a semicolon separated semicolon-separated list of &quot;parameter=value&quot; pairs "parameter=value" pairs, as described in <xref target="RFC4855"></xref>.
target="RFC4855"/>. The <tt>codecs</tt> parameter MUST <bcp14>MUST</bcp14> be
included in the <tt>a=fmtp</tt> line of the SDP file. Specific requirements
for the &quot;codecs&quot; "codecs" parameter are included in <xref target="codecs"></xref>.</t> target="codecs"/>.</t>

<section anchor="examples"><name>Examples</name> anchor="examples">
<name>Examples</name>
<t>A sample SDP mapping is presented in <xref target="FigSDP"></xref>.</t> target="FigSDP"/>.</t>
<figure anchor="FigSDP"><name>Example anchor="FigSDP">
<name>Example SDP mapping Mapping </name>
<sourcecode type="text">m=application type="sdp">
<![CDATA[
m=application 30000 RTP/AVP 112
a=rtpmap:112 ttml+xml/90000
a=fmtp:112 charset=utf-8;codecs=im1t charset=utf-8;codecs=im2t
]]>
</sourcecode>
</figure>
<t>In this example, a dynamic payload type 112 is used. The 90 kHz RTP
timestamp rate is specified in the &quot;a=rtpmap&quot; "a=rtpmap" line after the subtype.
The codecs parameter defined in the &quot;a=fmtp&quot; "a=fmtp" line indicates that the TTML data
conforms to IMSC 1 Internet Media and Captions (IMSC) 1.1 Text profile.</t> profile <xref
target="TTML-IMSC1.1"/>.</t>
</section>
</section>
</section>

<section anchor="iana-considerations"><name>IANA anchor="iana-considerations">
<name>IANA Considerations</name>
<t>No
<t>This document has no IANA action.</t> actions.</t>
</section>

<section anchor="security"><name>Security anchor="security">
<name>Security Considerations</name>
<t>RTP packets using the payload format defined in this specification are
subject to the security considerations discussed in the RTP specification
<xref target="RFC3550"></xref> , target="RFC3550"/> and in any applicable RTP profile profile, such as RTP/AVP
<xref target="RFC3551"></xref>, target="RFC3551"/>, RTP/AVPF <xref target="RFC4585"></xref>, target="RFC4585"/>, RTP/SAVP <xref target="RFC3711"></xref>,
target="RFC3711"/>, or RTP/SAVPF <xref target="RFC5124"></xref>. target="RFC5124"/>.

However, as &quot;Securing
"Securing the RTP Protocol Framework: Why RTP Does Not Mandate a Single Media
Security Solution&quot; Solution" <xref target="RFC7202"></xref> target="RFC7202"/> discusses, it is not an RTP
payload format's responsibility to discuss or mandate what solutions are used
to meet the basic security goals like (like confidentiality, integrity, and source authenticity
authenticity) for RTP in general. This responsibility lays on anyone using RTP
in an application. They can find guidance on available security mechanisms
and important considerations in &quot;Options "Options for Securing RTP Sessions&quot; Sessions" <xref target="RFC7201"></xref>.
target="RFC7201"/>. Applications SHOULD <bcp14>SHOULD</bcp14> use one or more
appropriate strong security mechanisms. The rest of this Security
Considerations section discusses the security impacting properties of the
payload format itself.</t>
<t>To avoid potential buffer overflow attacks, receivers should take care to
validate that the User Data Words in the RTP payload are of the appropriate
length (using the Length field).</t>
<t>This payload format places no specific restrictions on the size of TTML
documents that may be transmitted. As such, malicious implementations could be
used to perform denial-of-service (DoS) attacks. RFC 4732 <xref target="RFC4732"></xref>
target="RFC4732"/> provides more information on DoS attacks and describes some
mitigation strategies. Implementers should take into consideration that the
size and frequency of documents transmitted using this format may vary over
time. As such, sender implementations should avoid producing streams that
exhibit DoS-like behaviour behaviour, and receivers should avoid false identification of
a legitimate stream as malicious.</t>
<t>As with other XML types and as noted in RFC 7303 <xref target="RFC7303"></xref>, XML target="RFC7303"
section="10" sectionFormat="of">"XML Media Types, Section 10, Types"</xref>,
repeated expansion of maliciously constructed XML
entities can be used to consume large amounts of memory, which may cause XML
processors in constrained environments to fail.</t>
<t>In addition, because of the extensibility features for TTML and of XML in
general, it is possible that &quot;application/ttml+xml&quot; "application/ttml+xml" may describe content that
has security implications beyond those described here. However, TTML does not
provide for any sort of active or executable content, and if the processor
follows only the normative semantics of the published specification, this
content will be outside TTML namespaces and may be ignored. Only in the case
where the processor recognizes and processes the additional content, content or where
further processing of that content is dispatched to other processors, processors would
security issues potentially arise. And in that case, they would fall outside
the domain of this RTP payload format and the application/ttml+xml
registration document.</t>
<t>Although not prohibited, there are no expectations that XML signatures or
encryption would normally be employed.</t>
<t>Further information related to privacy and security at a document level can
be found in TTML 2 Appendix P <xref target="TTML2"></xref>.</t>
</section>

<section anchor="acknowledgements"><name>Acknowledgements</name>
<t>Thanks to Nigel Megitt, James Gruessing, Robert Wadge, Andrew Bonney, James Weaver, John Fletcher, Frans De jong, and Willem Vermost for their valuable feedback throughout the development of this document. Thanks to the W3C Timed Text Working Group and EBU Timed Text working group for their substantial efforts in developing the timed text formats this payload format is intended to carry.</t> <xref target="TTML2"/>.</t>
</section>
</middle>

<back>
<references><name>Normative
<references>
<name>Normative References</name>
<reference anchor="TECH3370" target="https://tech.ebu.ch/publications/tech3370">
  <front>
    <title>TECH 3370 - EBU-TT PART 3: LIVE CONTRIBUTION</title>
    <title>EBU-TT, Part 3, Live Subtitling Applications: System Model and
    Content Profile for Authoring and Contribution</title>
    <author>
      <organization>European Broadcasting Union</organization>
    </author>
    <date year="2017" month="May"></date> month="May"/>
  </front>
  <seriesInfo name="EBU-TT" value="Part 3"/>
  <seriesInfo name="Tech" value="3370"/>
</reference>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3550.xml"/>
<reference anchor="TTML2" target="https://www.w3.org/TR/ttml2/">
  <front>
    <title>Timed Text Markup Language 2 (TTML2)</title>
    <author>
      <organization>W3C - Timed Text Working Group</organization>
    <author initials="G." surname="Adams" fullname="Glenn Adams" role="editor">
      <organization/>
    </author>
    <author initials="C." surname="Concolato" fullname="Cyril Concolato" role="editor"/>
    <date year="2018" month="November"></date> month="November"/>
  </front>
  <seriesInfo name="W3C Recommendation" value="REC-ttml2-20181108"/>
</reference>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2119.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8083.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4855.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4103.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7303.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8085.xml"/>
<reference anchor="TTML-MTPR" target="https://www.w3.org/TR/ttml-profile-registry/">
  <front>
    <title>TTML Media Type Definition and Profile Registry</title>
    <author>
      <organization>W3C - Timed Text Working Group</organization>
    <author initials="G." surname="Adams" fullname="Glenn Adams" role="editor">
      <organization/>
    </author>
    <author initials="M." surname="Dolan" fullname="Mike Dolan" role="editor">
      <organization/>
    </author>
    <date year="2019" month="April"></date> month="April"/>
  </front>
<!--  <seriesInfo name="W3C Working Group Note"
	      value="NOTE-ttml-profile-registry-20190411"/>  -->
  <refcontent>W3C Working Group Note</refcontent>
</reference>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.8174.xml"/>
<reference anchor="IANA" target="https://www.iana.org/assignments/media-types/media-types.xhtml#application"> target="https://www.iana.org/assignments/media-types">
  <front>
    <title>IANA - Media Types - Application</title>
    <title>Media Types</title>
    <author>
      <organization>IANA</organization>
    </author>
    <date year="2019" month="February"></date>
  </front>
</reference>

</references>
<references><name>Informative
<references>
<name>Informative References</name>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4396.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7201.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.2648.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5124.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.5109.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4588.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4585.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.7202.xml"/>
<reference anchor="TTML-IMSC1.1" target="https://www.w3.org/TR/ttml-imsc1.1/">
  <front>
    <title>TTML Profiles for Internet Media Subtitles and Captions 1.1</title>
    <author initials="P." surname="Lemieux" fullname="Pierre Lemieux" role="editor"/>
    <date year="2018" month="November"/>
  </front>
  <seriesInfo name="W3C Recommendation" value="REC-ttml-imsc1.1-20181108"/>
</reference>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3551.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4732.xml"/>
<reference anchor="ST2022-7" target="https://ieeexplore.ieee.org/document/8716822">
  <front>
    <title>ST 2022-7:2019 - Seamless
    <title>Seamless Protection Switching of SMPTE ST 2022 IP RTP Datagrams</title>
    <author>
      <organization>SMPTE</organization>
    </author>
    <date year="2019" month="November"></date> month="May"/>
  </front>
  <seriesInfo name="ST" value="2022-7:2019"/>
  <seriesInfo name="DOI" value="10.5594/SMPTE.ST2022-7.2019"/>
</reference>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.3711.xml"/>
<xi:include href="https://xml2rfc.ietf.org/public/rfc/bibxml/reference.RFC.4734.xml"/>
</references>

<section anchor="rfc-editor-considerations"><name>RFC Editor Considerations</name>
<t>Note anchor="acknowledgements" numbered="false">
<name>Acknowledgements</name>
<t>Thanks to RFC Editor: This section may be removed after carrying out all <contact fullname="Nigel Megitt"/>, <contact fullname="James
Gruessing"/>, <contact fullname="Robert Wadge"/>, <contact fullname="Andrew
Bonney"/>, <contact fullname="James Weaver"/>, <contact fullname="John
Fletcher"/>, <contact fullname="Frans
de Jong"/>, and <contact fullname="Willem Vermost"/> for their valuable
feedback throughout the instructions
development of this section.</t>
<t>The namespace <tt>urn:ietf:rfc:XXXX</tt> is document. Thanks to be replaced with the namespace W3C Timed Text Working Group and
EBU Timed Text Working Group for this document once it has received an RFC number.</t>
<t><tt>RFC XXXX</tt> their substantial efforts in <xref target="FigProcProf"></xref> is to be replaced with developing the RFC number for
timed text format this document.</t> payload format is intended to carry.</t>
</section>
</back>

</rfc>