Remote Applications Development
What are remote applications?
Remote applications are applications running on external devices, making use of TV capabilities to render GFX and media.
External devices can be any computing device including iPod/iPhone, game consoles, PDA, lighweight PC, PC servers, MAC...
Remote applications can be used to extend TV functionality with customizable features, integrated together with "standard" TV applications.
Remote applications are using the IP network (wired or wireless) to communicate with the TV.
Remote applications are making use of DirectFB/VooDoo technologies and follow (joint)SPACE architecture rules.
Two kind of remote applications are currently supported:
- Applications to control the TV remotely (inject events like keys over the network)
- Rendering application making use of the TV resources to render GFX and media content
What is required to develop remote applications?
First of all you need a Philips TV with networking capabilities:
- 2k9 models (8000-9000 range)
- 2K10 models(7000-9000 range)
Those includes all NetTV capable Philips TVs
Remote applications are developped and running on remote systems, therefore you need:
- the SDK toolchain to compile executables for your system
- the DirectFB/VooDoo client package for your system
Running pre-compiled remote applications on well known systems
Examples of pre-compiled applications can be downloaded on the jointSPACE development page.
Currently supported systems are WindowsXP (cygwin), Linux, MACOS, Iphone/IPod, Nintendo DS.
Compile and execute your first remote application
This section assume that your development system supports a Unix like environment as GNU cygwin on Windows for e.g.
a) Download the DirectFB client package for your system
- Create a working directory <remapps>
- Download the archive "DirectFB_Voodoo.tar.gz" appropriate to your system
- extract it into the working directory
b) Testing the building environment
- start a shell on your system and go to the working directory
- check compiler environment variables
echo $CC echo $LD
c) Compile the sample application
cd helloworld DIRECTFB_VOODOO=../DirectFB_Voodoo make
d) Execute the sample application
Building a remote application in 10 steps
step 1: Setting up the building framework
step 2: Discover TVs devices on the network
step 3: Initialize the application for rendering
step 4: Create a window on the TV
- Control destination window
step 5: Using DirectFB drawing primitives
step 6: Using non DirectFB drawing primitives
step 7: Handling keys and events
step 8: Handling animations
step 9: Rendering media
step 10: Inject remote events to the system
- Put back remote application in focus
TV system limitations
Application execution on the TV
- one rendering remote application at a time
- multiple control applications at a time
Graphical windows, layers and associated memory
- Windows can only be created in MIDDLE and LOWER window stacks
- window and surfaces are created in system memory
- total window/surface/font memory pool is limited
- max 1280x720x16bits (32bits supported but at low resolution only)
CPU usage and Network usage
- Applications are running on the remote device but...
- Drawing primitives are executed on the TV (font rendering, other DirectFB drawing primitives, Write, Flip,...)
- Frame rate is limited
- depends on TV selected usecase and load
- usually defined by the GFX window size/format of the application
- GFX data is copied over the network: GFX data is RLE compressed but the BW of the network defines the limit for e.g. 25FPS at 320X200x16Bits => up to 3 MBytes/s (24Mbits/s)
Tricks to circumvent TV system limitations
Porting Remote Applications to new systems
- Porting DirectFB client package