Skip to content


Repository files navigation


GitHub Workflow Status Maintenance

Low-latency foveated video encoding prototype.



fvideo has only been tested on Ubuntu 18.04/20.04. First, you must have the following system dependencies:

sudo apt install libx264-dev ffmpeg libavutil-dev libavformat-dev libavfilter-dev libavdevice-dev llvm-dev libudev-dev mpv

Note that fvideo requires FFmpeg 4.3.x, so if running on Ubuntu 18.04, you'll need to install it yourself or use the unofficial PPA:

sudo add-apt-repository ppa:jonathonf/ffmpeg-4

Next, you must install Eyelink's libraries.

sudo add-apt-repository universe
sudo apt update
sudo apt install ca-certificates
sudo apt-key adv --fetch-keys
sudo add-apt-repository 'deb [arch=amd64] SRResearch main'
sudo apt update
sudo apt install eyelink-display-software

Then, you can use cargo to build the binaries:

cargo build --release


User Study

Note that the user study binary currently expect videos to be in specific directories with specific names. This will be changed in the future.

user_study 0.1.0
The user study experiment interface.

    user_study [OPTIONS] <SOURCE> --name <name>

    -h, --help
            Prints help information

    -V, --version
            Prints version information

    -n, --name <name>
            The full name of the participant

    -o, --output <output>
            Where to save the foveated h264 bitstream and tracefile.

            No output is saved unless this is specified.

            Source for gaze data [possible values: PierSeaside, Barscene, SquareTimelapse,
            Rollercoaster, ToddlerFountain]

Once in the user study, the interface is:

key action
Esc/Ctrl+C quit
0-9 video qualities 0-9
p pause
c calibrate
b play baseline
r resume (video qual 0)
Enter accept current video quality
n none of the qualities are good enough

All data is logged to data/user_study.csv.