Just-In-Time Adaptive Decoder Engine (Jade)

The Just-In-Time Adaptive Decoder Engine (Jade) is a new adaptive decoder based on the Low Level Virtual Machine (LLVM). This project has been initially designed to work as a Virtual Machine for MPEG RVC descriptions. It can be viewed as a universal decoder able to dynamically instantiate several Abstract Decoder Models coming from RVC. The input of this decoder is an encoded video, a network description of the corresponding decoder and a Video Tool Library generated with the LLVM backend of Orcc. Jade has been tested on several Operating Systems (Windows, Linux, Mac OS) and differents plateforms (x86/x64, Cell PPU, ARM).



First, you need to download Jade by cloning the project from Github:

git clone git@github.com:orcc/jade.git

Then, you need to compile it, knowning that Jade depends on:

  • CMake (at least 2.6)
  • SDL (at least 1.2)
  • LLVM (at least 3.2)

Use CMake to generate build files corresponding to your favorite environment. You must ensure SDL library and LLVM binary dir are reachable from command line (add it to your PATH environment variable) or use cmake-gui to manually set their location.

Finally, you can compile Jade. Here is an example for a build from Unix/Linux command line:

mkdir build && cd build
cmake ..
sudo make install


Generate your own Tool Library compatible with Jade

To use Jade, you need a library of available Fonctional Units (FU), that are basically actors. You can generate such a library from an Orcc project using the Jade backend.

To do so, you need at least on project set up in the workspace of Orcc. In case you have not write your own application yet, you can get existing applications.

Then, in Orcc, right-click on:

  • any XDF network and
  • choose Run As > Orcc Compilation

A wizard will ask you:

  • the output folder, choose the VTL folder of Jade,
  • the back-end to use, choose Jade.
  • Classification of actors is mandatory to use the merging capabilities of Jade.

Run the execution and wait for code generation to complete.

As the Jade backend may generate, classify, compile and optimize a full library of coding tools, the generation of the VTL can take a few minutes.


Run an application using Jade

Jade provides different interfaces for managing the execution of XDF networks. The console or scenario modes give the ability to test its reconfiguration ability by changing on-the-fly the network execution. Jade encompasses several options to tunes the performances depending on the executing platform. Use --help to get a full lists of options managed by Jade.

Jade can run on three differents modes.

Command line

This is the default mode, Jade is launched with a specified VTL, an XDF network and an input stimulus. It execute the given design and stop. Run Jade with the following options:

Console mode

In this interactive mode, you can control Jade runtime by directly sending commands. Run Jade with the following options:

  • -console: Start the console mode
  • -L <VTL_folder>: Full path of VTL folder your generated with Orcc

Once Jade run in console mode, you can type help to get a list of available commands. You can also see below

Scenario mode

Jade runs with a given list of actions to execute, and stop. Run Jade with the following options:

  • -scenario <scenario_file.jsc>: Start the scenario mode. Full path of scenario file must be specified (see below for an example)
  • -L <VTL_folder>: Full path of VTL folder your generated with Orcc

An example of a scenario is given below, which start the proprietary MPEG-4 Simple Profile of Ericsson and then reconfigure the decoder with the MPEG-C normalized MPEG-4 Simple Profile.

<?xml version="1.0" encoding="UTF-8"?>
    <Load id="1" xdf="/path/to/Top_E___.xdf"/>
    <Start input="/path/to/sequences/MPEG4/SIMPLE/P-VOP/hit001.m4v" id="1" threaded="1"/>
    <Stop id="1"/>
    <Set xdf="/path/to/Top_mpeg4_part2_SP_decoder.xdf" id="1"/>
    <Start input="/path/to/sequences/MPEG4/SIMPLE/P-VOP/hit001.m4v" id="1" threaded="1"/>
    <Stop id="1"/>

Console / scenario modes commands

Here is a list of commands you can use in both console and scenario mode.

  • Pause: Pause a given decoder.
  • Load: Load and store a given decoder.
  • Set: Reconfigure an existing decoder with a new network.
  • Wait: Put Jade in wait mode during a given period (in second).
  • Print: Print a decoder representation in a given file.
  • Remove: Remove a given decoder.
  • Verify: Verify the coherence of a given decoder.


Quick install

Install Orcc from the update site http://orcc.sf.net/eclipse/
More information


Whether you need (or want to offer) help or advice, or if you just want to discuss/chat about Orcc, feel free to contact us!

Most of the team is based in Europe, so you might expect people to be connected and answer mail during the day (GMT+1).

This website is hosted by Get Open RVC-CAL Compiler at SourceForge.net