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/
SMIL also doesn't support live editing, which is supported by NCL and a "must-have" for Digital TV environment :)
ReplyDeleteGood point, I forgot to mention it.
ReplyDelete