Skip to content

Purely functional video codec, used for ExCamera and Salsify

License

Notifications You must be signed in to change notification settings

excamera/alfalfa

Repository files navigation

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.