Selective Decoding and the Source Code

This is follow up post on Selective Decoding, my master thesis project. You can get the main idea of selective decoding at previous post. This post simply provides some resources related to the project.

I’ve upload two videos to YouTube demonstrating how selective decoding works.

Selective Decoding without Zoom
Selective Decoding with Zoom

The source code for the Android player is available at github. You can find it at Note that there are multiple branches, with the master branch containing the stable code and other branches having various experiments I did.

There is a research paper about selective decoding, available at If you want more detailed info, you can refer to my master thesis at

This project is part of the jiku project. There’re lots of other interesting stuff going on under the jiku project. We can refer to for more information. 

Selective Decoding–My Master Thesis Project

Finally, it’s done!

Work full-time and study part-time can be touch sometimes. But after 2 years of hard working, I’ve made it through. Smile

My thesis is about selective decoding. As the name suggests, decoding video selectively. Zoom interface has been available for photos, web pages and maps, but few players support zoomable video. When a video is zoomed in, only part of the scene is displayed but the entire frame is decoded. It’s a waste.

The idea of selective decoding is to decode what you can see. However, simply decode those parts won’t work because video codec introduces dependencies among macroblocks. So we need to analyze the dependencies among macroblocks and try to decode the minimum.

The benefits of selective decoding comes from two aspects, higher playback frame rate and lower energy consumption.

One can find the entire thesis here.

Enable Caching on Mobile Devices

I’ve been working on a project that enables caching on mobile devices. Two different approaches are studied, explored and implemented.

The first approach is to implement a transparent caching system. The caching system will behave like a transparent proxy, and the traffic for user specified apps will be intercepted and examined. If the content is cachable, the system will cache it for later usage.

The second approach is a caching library. It targets at apps with list view structure using JSON to communicate with server. The libarary contains a client side to be integrated with client mobile app and a server component needed at backend server side.

Near the end of this project, I did poster presentation at NUS SoC mingling session. Below is the poster. You can also view and download the PDF version here.


At the time of my presentation, the project is not finished yet. The evaluation is in progress. Later on, the evaluation proves that both request-response caching and object-level caching can help save energy, improve response time and reduce bandwidth consumption.

The project is completed and the research paper for this project is in editing mode.