The Synchronous Blog

A blog about reactive programming languages.

Multimedia (Digital TV) Languages

with 2 comments

I’m currently working at the Telemídia Laboratory [1], which is responsible for the development of the middleware Ginga [2] for the Brazilian Standard for Digital TV (SBTVD).

A DTV middleware is a common layer above specific platforms responsible for harmonizing them, providing an unified way to create interactive applications. For instance, the DTV middleware provides the languages in which interactive applications must be authored.
Most early digital TV standards around the world followed the Web standards and chose to use HTML + JavaScript + Java as their authoring languages for broadcasted interactive applications.


SMIL (Synchronized Multimedia Integration Language) [3] and NCL (Nested Context Language) [4] are XML based languages that supports multimedia synchronization.

Here’s an application written in SMIL:

<smil>
<body>
<par>
      <video src="goals.mpg"/>
      <img src="pele.jpg" begin="10s" end="15s"/>
      <img src="zico.jpg" begin="30s" end="40s"/>
   </par>
</body>
</smil>

Now, the same application in NCL:

<ncl>
<body>
  <media id="videoGoals" src="goals.mpg">
      <area id="aPele" begin="10s" end="15s"/>
      <area id="aZico" begin="30s" end="40s"/>
  </media>
  <media id="imgPele" src="pele.jpg"/>
  <media id="imgZico" src="zico.jpg"/>
	<link xconnector="onBeginStart">
      <bind role="onBegin" component="videoGoals" interface="aPele"/>
      <bind role="start"   component="imgPele"/>
  </link>
	<link xconnector="onEndStop">
      <bind role="onEnd" component="videoGoals" interface="aPele"/>
      <bind role="stop"  component="imgPele"/>
  </link>
	<link xconnector="onBeginStart">
      <bind role="onBegin" component="videoGoals" interface="aZico"/>
      <bind role="start"   component="imgZico"/>
  </link>
	<link xconnector="onEndStop">
      <bind role="onEnd" component="videoGoals" interface="aZico"/>
      <bind role="stop"  component="imgZico"/>
  </link>
</body>
</ncl>

Look, NCL has a reactive behavior through its link primitive (which LuaGravity borrowed).
When the area “aPele” begins, the image “imgPele” is started and so on.


Well, there’s much more to tell about them as well as how much they differ.
You can look at the references below if it is the case.

Both are designed to synchronize timed medias like audio and video.
HTML, on the other hand, was specified with text and image in mind and doesn’t seem to be a clever option for TV applications.

Probably the biggest difference among SMIL and NCL, as seen in the above examples, is that SMIL does not separate the definitions for media content and synchronism, while NCL does.

Very simple applications are usually straightforward when written in SMIL (like the one above).
On the other hand, since reuse is one of NCL’s main concerns, growing applications scale better with NCL than with its SMIL counterparts.

Both SMIL and NCL are XML based, keeping this tradition in the world of multimedia application authoring.

The middleware Ginga chose to use NCL with Lua as its scripting language.
SMIL is the W3C standard for describing multimedia presentations.

[1] http://www.telemidia.puc-rio.br/
[2] http://www.ginga.org.br/
[3] http://www.w3.org/AudioVideo/
[4] http://www.ncl.org.br/

Advertisements

Written by francisco

September 10, 2008 at 1:19 am

2 Responses

Subscribe to comments with RSS.

  1. SMIL also doesn’t support live editing, which is supported by NCL and a “must-have” for Digital TV environment :)

    bidu

    September 22, 2008 at 8:38 am

  2. Good point, I forgot to mention it.

    francisco

    September 22, 2008 at 5:59 pm


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

%d bloggers like this: