TTML, DFXP and SMPTE-TT

TTML is a new way to put text (caption and/or subtitle) in Web video. The standard is published by W3C (http://www.w3.org/TR/ttaf1-dfxp/).

It’s a lengthy standard – it could be difficult to answer even simple questions like these.

What does it specify? What is DFXP? What is SMPTE-TT?

We need to realize there are three parties in the field. First, there are Web video player developers like Microsoft (Silverlight), and Google (HTML5). They use TTML to display captions on the video player. Second, there are movie producers who author captions. Third, there are traditional broadcasters like CNN. They have large video assets with closed captions and want to convert them to TTML for over-the-top delivery.

It’s not good idea to write huge standard to cover all these parties. Better way is to separate the base standard (=features) and the implementation requirement (=profiles).

The base standard defines various features needed for captioning. For example, there is a feature called #timing. To claim the support, the implementation must understand the timing information associated with the text. There is another a feature called #direction. To claim the support, the implementation must support right-to-left text rendering like Arabic language.

It’s tedious to claim the support of each feature.¬†Profile is a group of features needed for a typical use case. For example, “DFXP Presentation” profile contains a set of features needed for caption rendering. If your implementation (=Web video player) supports all the features in the profile, you can claim the support of the profile.

Base and Profile Specification

It’s a clever way to design a standard. A profile usually contains just a few features, thus the implementation is easy and simple. There are (and will be) many profiles. They have good compatibility because they share the features defined in the base standard.

The TTML recommendation specifies followings.

  • Syntax and semantic of each feature. (This is what the base standard for)
  • The way to claim a given TTML document follows a certain profile.
  • Three profiles: DFXP Presentation, DFXP transform, and DFXP full.

DFXP profiles are defined in TTML recommendation because the base standard itself is useless without some profiles. DFXP stands for “Distribution¬†Format Exchange Profile”. DFXP Presentation profile is used by video players which support TTML captions. DFXP Transform profile is used for video editing stations where they need to convert from/to various other caption format. DFXP Full profile includes all the features defined in the base standard.

So far, so good. Let’s move on.

SMPTE is a standard organization for TV and film industry. SMPTE found TTML useful but the feature set is not sufficient.

  • No bitmap images. The feature is needed because a caption format in Europe (=DVB subtitle) uses a sequence of bitmaps and SMPTE wants to render them in TTML enabled players.
  • No binary data pass-through. SMPTE wants to carry CEA-708 bit stream data from source to destination in TTML format.
  • No information about how the caption is designed. SMPTE wants to use TTML in two different ways. One is keeping look & feel of the legacy caption (=preserve mode). The other is to use the maximum presentation features of TTML to make the caption nicer (= enhance mode). SMPTE needs a feature to tell which mode is in use.

SMPTE decided to extend the TTML to meet their requirement. First, SMPTE defines three new features. (They are called “extensions” because they are not the part of official W3C TTML recommendations)

  • #image: Feature to use bitmap image as a caption text
  • #data: Feature to carry binary data.
  • #information: Feature to declare which translation mode (preserve or enhanced) is in use.

SMPTE also added a new profile called SMPTE-TT. To claim the support of SMPTE-TT profile, the implementation must support DFXP Full profile with the three new features added by SMPTE.

 

About these ads

About Moto

Engineer who likes coding
This entry was posted in Video and tagged , , , . Bookmark the permalink.

10 Responses to TTML, DFXP and SMPTE-TT

  1. sym39 says:

    Hi,
    Do you know if they are are smooth streaming client that support smpte-tt ?
    I left a message here http://codeplex.codeplex.com/discussions/267561, but without success.
    Thanks,
    sym39

    • Moto says:

      I’m not aware of any players which support SMPTE-TT, in particular #image, yet. Looking at the top of the trunk of Microsoft Media Platform Player Framework, it doesn’t see SMPTE-TT namespace in the timed text document either.

  2. Pingback: Closed Caption Support – What You Need to Know to Comply with the 21st Century Communications and Video Accessibility Act « Zencoder Cloud Encoding Blog

  3. Pingback: Closed Captioning for web, mobile, and connected TV « Zencoder Cloud Encoding Blog

  4. mgvideo says:

    Hello,

    I am also looking at srt, scc, and WebVTT caption/subtitle formats.
    WebVTT is based on the SubRip format. WebVTT is supported in iOS6 so I imagine there will be a lot of people looking to translate scc/srt to WebVTT. Are you aware of any caption maker/translators that handle all these different formats? Thanks.

  5. cconcolato says:

    It seems a bit weird to use TTML to carry images, why not add an image stream. The MP4 file format can store image streams fine and players could support it easily.
    The GPAC project (http://gpac.wp.mines-telecom.fr/) will add support in some way for generating and playback of MP4 files with WebVTT and TTML streams. You can send us requests if your interested.

  6. Pingback: Timed Text (TT) | xellos35's Karmographe

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s