Snow (codec)
From Wikipedia, the free encyclopedia
Snow is an experimental video codec developed by Michael Niedermayer for the FFmpeg package. It can compress video either lossily or losslessly. Snow implements wavelet-based compression, allowing for impressive image quality at very low bitrates. However, currently developers warn that caution is advised, as the format of the bitstream produced might change and therefore do not rely on it to store videos that you value.
Contents |
[edit] Comparison
Snow is similar to Ogg Tarkin, Dirac, and numerous other wavelet-using codecs.
[edit] Programs Using Snow
The following open-source video editing programs can encode to Snow format:
[edit] Options Recognized by Snow
- vqscale=<0.01-255>
- Encoding quality, sane range 1-10, default: 0 (lossless). May be fractional.
- A given quality in snow needs a somewhat lower qscale than the same quality in MPEG-4.
- Note that 0 may not be specified; if you want lossless encoding, you must leave out vqscale.
- vpass=<1-3>
- Activates internal two (or more) pass mode.
- vbitrate=<value>
- Specify bitrate of the 2nd pass.
- Don't use it for 1st pass as CBR isn't implemented yet, use vqscale instead, and set it to a quantizer near the target average quant of the final encode.
- lmin, lmax, vqcomp, vratetol, vrc_eq, vrc_override
- Generic multipass ratecontrol options, subject to the same suggestions as in other codecs.
- lmin=1 can be useful for medium to high bitrates (see vqscale).
- cmp, subcmp, mbcmp
- Set the comparison function, default: 0 (SAD).
- Useful values = 0 (SAD), 1 (SSD), 11 (5/3 wavelet), 12 (9/7 wavelet).
- Experience shows that SSD is the best most of the time, while SAD is slightly better the remainder of the time.
- You can add 256 to any of the options to enable chroma motion estimation for that comparison (e.g. mbcmp=257 for SSD with chroma), but it doesn't seem to help much for the moment.
- Set the comparison function, default: 0 (SAD).
- pred=<0-2>
- Wavelet type.
- 0 (9/7 wavelet)
- 1 (5/3 wavelet)
- 2 (13/7 wavelet)
- 9/7 is probably better for lossy coding, and 5/3 for lossless.
- NOTE: 9/7 wavelet doesn't work with lossless mode.
- Wavelet type.
- last_pred=<0-3>
- Tries a few extra predicted motion vectors before doing EPZS search, default: 0.
- This option has negligible effect on both speed and quality of snow, so just leave it off.
- qpel
- Refines motion estimation, default: off.
- This setting always helps compressibility, but costs some CPU time both while encoding and decoding.
- v4mv
- Allows smaller motion partitions, default: off.
- The current MB decision algorithm doesn't make very good use of this:
- It improves quality, but also increases bitrate. (You could get more quality per bitrate by reducing quantizer instead.)
v4mv and the wavelet compression functions are theoretically good, but in practice won't work well until the get OBMC-aware motion estimation is complete.
[edit] Best options in almost all cases
In short, the best options in almost all cases (according to developers and testers) are:
vcodec=snow:vstrict=-2:vqscale=$N:pred=0:cmp=1:subcmp=1:mbcmp=1:qpel