TVMiddleware is a media service platform which provides variety of
services including video/audio broadcast, interactive data transaction,
photo album and Java gaming. Because of its flexibility and
modulization, TVMiddleware is easy to add customized modules (services).
For instance, karaoke and video conference services can be plugged in
the Servicemanager. It won’t take lots of effort and time to change from
a music box to a electric photo album or IPTV.
 |
TVMiddleware is constructed based on open source, jamvm, GNU
classpath and directfb. There are three parts in TVMiddleware
majorly. From up to down, Application layer is about service
control/UI which directly interactive with users via input like
remote control or keyboard (directfb has touch-screen input
interface). There are two types of application
running on the stack: java-base application (ex. EPG.class,
gallery.class) and ASCII-format script (radio.xml) which feeds
into parsing engine. Logical data process resides in
Middleware stack. This layer is the core of TVMiddleware and
consisted in modules: ServiceManager, Utility, classLoader,
parsing engine, widget and other component modules etc.,
Parsing engine is used to parse UI scripts (XML) and link to
widget package(changButton, changPlayer, changGrid etc.,) to
position proper UI components on screen. This
functionality associates with Authoring tool.
|
|
Users can customize their load applications to create personal
channels/services. Abstraction layer is more related to OS
independent code. This layer defines API for upper stack and
implements lower event-driven codes/drivers. Most codes in
abstraction layer communicates with middleware stack via JNI. |
[ Sample code 1 | 2 | 3 ]
|
Authoring tool is
a development kit of loadable applications for TVMiddleware. It creates
a script (XML format) which includes components, attributes and
hierarchic structure according to users compose. Once the parsing
engine in TVMiddleware reads this script, it starts to parse the content
and set position and data of components on screen as described. Because
of XML format, the engine links widget package and establishes
hierarchic structure of widget elements. The design/parsing concept
comes from rhino JavaScript engine. Example:
<TVML backgroundimage="http://10.0.0.15/Images/bg.jpg">
<CHANGLIST left="0" top="75" width="520" height="560" items="6"
datasource="http://10.0.0.15/data/fun_main.xml"
normal_bgimage="http://10.0.0.15/Images/btn_up.png;false"
focused_bgimage="http://10.0.0.15/Images/btn_down.png;false"
alpha="0"
horizontal_padding="0" text_alignment="middle" focused_fontcolor="255,0,20">
</CHANGLIST>
<CHANGBOARD left="270" top="15" width="330" height="230"
start="true"
text_alignment="left" fontcolor="10,10,10">
FUN99 - Welcome to my personal channel.
Watch my art work and tell me what you think.
</CHANGBOARD>
<CHANGPLAYER left="250" top="275" width="360" height="260" src="rtp://172.168.0.256/Video/myart.mpg">
</CHANGPLAYER>
</TVML> |
[ Source code ] |