homepage banner


In this demonstration, we use our framework to optimize a video streaming application running on a Compaq iPAQ. The system architecture assumed is similar to the one shown in the picture below. To simplify matters, we assume that the proxy is also the server streaming the video. The Dynamo middleware framework executes on both the proxy and the mobile device(iPAQ). The iPAQ runs power-aware operating system and which is capable of performing voltage/frequency scaling operations. The proxy (Linux desktop) has a streaming server that also doubles as a transcoder that can dynamically change the quality of the video stream. The transcoder also interfaces with the Dynamo middleware, through which the video quality can be changed on the fly.


As soon as the client requests the server for the video stream, the Dynamo middleware gathers system state information (residual battery, system load etc.) from the iPAQ and communicates it to the middleware on the proxy. Using this information, the proxy middleware dynamically determines at what quality video should be streamed to the device. This is calculated based on the instantaneous residual energy of the device, the profiled energy usage for the video for the iPAQ, the current load etc. The middleware on the proxy simultaneously sends stream related control information (e.g. new video quality, WCET, period etc. which have been profiled for the video) back to the iPAQ. The Dynamo middleware on the iPAQ now relays this information to the Power Aware OS, which dynamically adjusts the voltage/frequency parameters to work with the new video quality. For the demo, we use our own H.263 video player and transcoder (developed in house).

Whats Needed


Step 0: Download the Demo
Download the demo program. Then extract the files type "tar -zxvf demo.tgz". You will obtain a file structure similar to:

File Structure:

Step 1: Configuring the Make Process
Open Dynamo\config.mk

find and modify
LOCAL_PATH = /root/releases/dynamo_mw_1.0
to the path of the dynamo directory

find and modify
ARM_X11 = /usr/local/arm/X11R6
to the path of your local arm X11 libraries

find and modify if necessary
LINUXKERNELSRC = /usr/src/linux/kernel
to the /path/to/your/proxy/linuxdistro/src/ that is used by the proxy [this will probably not have to be change]

Step 2: Updating Header Files
There are 3 files that need to be modified to use the FORGE/Dynamo Middleware Framework. These are device.c [middleware on your client device] proxy.c [middleware on the proxy device] dyncommunication.c [shared information between proxy and device].

[all define's and structures can be modified in this header file]
#define MOBILEIP
defines the mobile device's IP address, configure this to the current mobile ip address

#define PROXYIP
defines the proxy's IP addressconfigure this to the current mobile ip address

Step 3: Compiling the Kernel [or download the zImage]
Compile Boot Image: in dynamo
run: make kernel

Step 4: Updating the Kernel
cd paapi/linux-ipaq-v0.6.1/arch/arm/boot/ Copy the zImage to the mobile device's boot sector and link the new zImage to the current zImage with ln -s /boot/zImage-paapi /boot/zImage

Step 5: Making The Middleware Demo
in dynamo
run: make

Step 6: Uploading Files
[located in dynamo/middleware]
upload the device file to your iPAQ
upload the proxy file & FOREMAN.H263 to the proxy machine

Step 7: Running the Demo
run ./proxy [on the proxy]
run ./device [on the device]