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
To run the benchmark natively on Ubuntu and generate the reports:
- 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
- Clone the repository
git clone https://github.com/martinamaggio/save.git
- Execute the tests
cd save ./run.sh <controller> <goal_ssim> <goal_framesize>
where controller is
goal_ssimis a decimal number between 0 and 1;
goal_framesizeis a positive integer. For example:
./run.sh mpc 0.7 8000
You can add any additional mp4 video in the folder
Download the VM, decompress, and start it.
cd Desktop/save and follow the instructions above to execute the tests.