Difference between revisions of "Daala Quickstart"

From XiphWiki
Jump to: navigation, search
(Installation Procedure: The ssh host string only supports people with commit access. Better to start with a read-only https url.)
(Installation Procedure: Mention our git is slow.)
Line 25: Line 25:
Note that the git clone can take several minutes to complete.
And optionally
And optionally

Revision as of 16:16, 2 June 2014

Getting Started

This is a simple guide to getting the code and encoding a simple video.



  • Standard build tools (autoconf, automake v1.11 or later, libtool, and a C compiler)
  • git
  • libogg (v1.3 or later)
  • libpng
  • libjpeg
  • libcheck (v0.9.8 or later, can be skipped if you pass --disable-unit-tests to ./configure)
  • libsdl (can by skipped if you pass --disable-player to ./configure)

Instructions for installing these packages are OS-specific (feel free to contribute some here, especially if you tried installing these somewhere and ran into difficulties; you will likely save other people some pain). If you have a package manager that has separate -dev versions with the public headers, make sure you install those in addition to the actual libraries.

Installation Procedure

Just run these commands:

   git clone https://git.xiph.org/daala.git
   cd daala

Note that the git clone can take several minutes to complete.

And optionally

   make tools

Make sure you run the git clone operation on the same machine where you intend to use the code. Checking out a copy on Windows and then trying to use it on Linux will not work, as executable permissions and line-endings will not be set properly.

Encoding a Video

If you do not have one, get a sample video or two in .y4m format from media.xiph.org. We also maintain a set of still-image collections in .y4m format:

  • Subset 1 (50 images, small training set)
  • Subset 2 (1000 images, large training set)
  • Subset 3 (50 images, small testing set)
  • Subset 4 (1000 images, large testing set)

Encode the video:

   ./examples/encoder_example -v 30 -k 256 video.y4m -o video.ogv


  • video.y4m is the input video you want to encode,
  • video.ogv is the name of the encoded video file to output,
  • -v specifies the quality (currently from 0 to 511, where 0 is lossless), and
  • -k specifies the maximum keyframe interval (this is currently 1 by default, which makes every frame a keyframe).

Decoding a Video

Play the video:

   ./examples/player_example -p video.ogv

The -p option starts the player paused. Run

   ./examples/player_example --help

for information on the controls available while playing.

If you want to use a different player, you can decode the video back to .y4m with

   ./examples/dump_video video.ogv -o decoded_video.y4m

Many other players can play back these .y4m files, and other tools can convert them to various other formats.

Using PNG Images

To encode a series of images:

   make tools
   ./tools/png2y4m video%05d.png -o video.y4m

where %05d means your input images are named video00000.png, video00001.png, etc. You can leave out the %05d tag if you only want to convert a single image (which does not need to be numbered).

To convert a y4m back to PNGs:

   ./tools/y4m2png video.y4m -o video%05d.png

If you are converting a .y4m file that only contains a single frame (e.g., from one of the still-image subsets linked above), you can leave out the %05d tag. Conversion from PNG to Y4M uses the Rec 709 matrix with video levels, a box filter for chroma subsampling, and a triangular dither. Conversion back from Y4M to PNG uses the same matrix, levels, and box filter, but does not dither.