/alfalfa

Purely functional video codec, used for ExCamera and Salsify

Primary LanguageC++GNU General Public License v2.0GPL-2.0

Alfalfa Build Status

Alfalfa is a VP8 encoder and decoder, implemented in explicit state-passing style and developed by the Systems and Networking Research group at Stanford University. It is the basis for the ExCamera and Salsify systems.

License

Almost all the source files are licensed under the BSD 2-clause license. Alfalfa links against x264 to compute the SSIM (quality) of frames. Because this library is distributed under the GNU GPL 2+, so is Alfalfa's ssim.cc file, and the overall Alfalfa package.

Build directions

To build the source, you'll need the following packages:

  • g++ >= 5.0
  • yasm
  • libxinerama-dev
  • libxcursor-dev
  • libglu1-mesa-dev
  • libboost-all-dev
  • libx264-dev
  • libxrandr-dev
  • libxi-dev
  • libglew-dev
  • libglfw3-dev

The rest should be straightforward:

$ ./autogen.sh
$ ./configure
$ make -j$(nproc)
$ sudo make install

Salsify

Source code for Salsify sender and reciever programs can be found at src/salsify.

First, run the receiver program:

salsify-receiver [PORT] 1280 720

Then, run the sender program:

salsify-sender --device [CAMERA, usually /dev/video0] [HOST] [PORT] 1337

The default pixel format is YUV420. Most webcams support raw YUV420, however the frame rate might be low.