Self-Adaptive Video Encoder Comparison of Multiple Adaptation Strategies Made Simple


This paper introduces the case study of an adaptive video encoder, that can be used to compare the behavior of different adaptation strategies that can use multiple actuators to steer the behavior of the software towards a global goal, composed of multiple conflicting objectives. A video camera is producing frames, that the encoder manipulates, with the objective of matching some space requirement, to properly fit a given communication channel. Another objective of the encoder is to maintain a given similarity index between the manipulated frames and the original ones. To achieve the given goal, the software can change three parameters: the quality of the encoding, the noise reduction filter radius and the sharpening filter radius. It is very likely that the two objectives conflict, since a larger frame would have a higher similarity index to its original counterpart. This makes the problem difficult from the control perspective and makes the case study appealing to compare different adaptation strategies.

Authors: Martina Maggio, Alessandro Vittorio Papadopoulos, Antonio Filieri, and Henry Hoffmann

Paper in pdf

Supplementary material

Run natively

To run the benchmark natively on Ubuntu and generate the reports:

  1. Install the dependencies
    sudo apt-get install mplayer
    sudo apt-get install imagemagick
    sudo apt-get install python-imaging
    sudo apt-get install python-numpy
    sudo apt-get install python-scipy
    sudo apt-get install python-matplotlib
    sudo apt-get install python-cvxopt
    sudo apt-get install texlive-base
    sudo apt-get install texlive-pictures
    sudo apt-get install texlive-latex-extra
  2. Clone the repository
    git clone
  3. Execute the tests
    cd save
    ./ <controller> <goal_ssim> <goal_framesize>

    where controller is random, bangbang, or mpc; goal_ssim is a decimal number between 0 and 1; goal_framesize is a positive integer. For example:

./ mpc 0.7 8000

You can add any additional mp4 video in the folder mp4.



Download the VM, decompress, and start it. cd Desktop/save and follow the instructions above to execute the tests.