Potential Changes to CMML

At FOMS 2008 we discussed how to improve the CMML standard.

Here is a list of potential changes:

  • remove the "track" attribute of clips and enforce one CMML file to just create one text track in Ogg; multiple parallel tracks are then created through multiple CMML files; thus, different translations will be in different CMML files; we will accept the overhead created through duplicating e.g. hyperlinks etc in a similar fashion that Web site duplication for multi-lingual Web sites accept it
  • remove the "desc" tag and use the "caption" tag as a generic "body" tag (type attribute should now be an attribute of the complete track)
  • enable an arbitrary number of "text" tags inside a clip (this is done through different tracks)
  • add "img" tag to "head" tag to gain a representative image for the complete timed text stream
  • add to the "cmml" element a "role" attribute with values in {caption, subtitle, transcript, annotation, ticker, notes} (may be incomplete)
  • check RSS header attributes as to what may possibly be added to the CMML "head" element (concrete tags such as author, description etc are more useful than the generic meta tags and Dublin Core)

In general: CMML is now a format that describes timed text streams. It is not meant to author multi-track Ogg files any longer. For this we have started defining OMDL (http://wiki.annodex.net/wiki/MovieDescriptionLanguage).

Check the latest specification as described here: http://lists.xiph.org/pipermail/annodex-dev/2008-February/000227.html

Here is an example of how OMDL and CMML could work together:

CMML file 1:

<cmml role=caption>
  <head>
    <title>random 1</title>
  </head>
  <clip start=t1 end=t2>
    <meta ..../>
    <a ..../>
    <img .../>
    <body>
      <p><span>rillian:</span>FOMS rocks</p>
    </body>
  </clip>
  <clip ... </clip>
</cmml>

CMML file 2:

<cmml role=ticker>
  <head>
    <title>random 2</title>
  </head>
  <clip start=t1 end=t2>
    <body>
      <p>The US stock market is down like usual.</p>
    </body>
  </clip>
  <clip ... </clip>
</cmml>

OMDL file with an alternate html representation:

<OMDL>
  <head>
    <link rel=alternate type=text/html href=http://example.com/complete_video.html />
  </head>
  <par>
    <video id=v0 src=http://example.com/video.ogv content-type=video/ogg />
    <video id=v1 src=http://example.com/theora.ogv?track=v1 content-type=video/theora />
    <audio id=a1 src=http://example.com/theora.ogv?track=a1 content-type=audio/vorbis />
    <text id=t1 src=http://example.com/cmml1.cmml content-type=text/cmml />
    <text id=t2 src=http://example.com/cmml2.cmml content-type=text/cmml />
  </par>
</OMDL>

If a single XML file is requested to have all the textual information available about the OMDL inside an OMDL, this should be possible like this:

<OMDL>
  <head>
    <link rel=alternate type=text/html href=http://example.com/complete_video.html />
  </head>
  <par>
    <video id=v0 src=http://example.com/video.ogv content-type=video/ogg />
    <video id=v1 src=http://example.com/theora.ogv?track=v1 content-type=video/theora />
    <audio id=a1 src=http://example.com/theora.ogv?track=a1 content-type=audio/vorbis />
    <text id=t1 src=http://example.com/cmml1.cmml content-type=text/cmml >
      <cmml role=caption>
        <head>
          <title>random 1</title>
        </head>
        <clip start=t1 end=t2>
          <meta ..../>
          <a ..../>
          <img .../>
          <body>
            <p><span>rillian:</span>FOMS rocks</p>
          </body>
        </clip>
        <clip ... </clip>
      </cmml>
    </text>
    <text id=t2 src=http://example.com/cmml2.cmml content-type=text/cmml >
      <cmml role=ticker>
        <head>
          <title>random 2</title>
        </head>
        <clip start=t1 end=t2>
          <body>
            <p>The US stock market is down like usual.</p>
          </body>
        </clip>
        <clip ... </clip>
      </cmml>
    </text>
  </par>
</OMDL>