annotate DOCS/tech/snow.txt @ 34264:8ddad79e3c91

configure: add HAVE_OS2THREADS to config.h for libavformat
author diego
date Wed, 16 Nov 2011 11:14:23 +0000
parents 32725ca88fed
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
15117
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
1 HOW TO TEST SNOW
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
2 ----------------
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
3
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
4 Snow is an experimental wavelet-based codec made by the FFmpeg developers,
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
5 and while it is still in heavy development, it is already giving very good
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
6 results.
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
7 Be very careful though, as the format of the bitstream produced might
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
8 change, do not rely on it to store videos that you value.
15386
3eb54388bdc5 update vstrict description
reimar
parents: 15239
diff changeset
9 For this reason, MEncoder will not encode without 'vstrict=-2' on the
15117
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
10 command line.
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
11
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
12
15122
4d25185dedaa Fixes suggested by The Wanderer.
gpoirier
parents: 15117
diff changeset
13 OPTIONS RECOGNIZED BY SNOW
15117
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
14
18569
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
15 * vqscale=<0.0-255.0>
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
16 Encoding quality, sane range 1-10. 0 is lossless.
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
17 May be fractional.
15117
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
18 A given quality in snow needs a somewhat lower qscale than the same
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
19 quality in MPEG-4.
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
20
15206
7c4b86745b98 Snow supports 3-pass mode and 9/7 wavelet doesn't work lossless mode.
gpoirier
parents: 15197
diff changeset
21 * vpass=<1-3>
7c4b86745b98 Snow supports 3-pass mode and 9/7 wavelet doesn't work lossless mode.
gpoirier
parents: 15197
diff changeset
22 Activates internal two (or more) pass mode.
15189
e743f75cdcc4 Snow 1.55 (and up) allows 2pass ratecontrol.
gpoirier
parents: 15122
diff changeset
23
e743f75cdcc4 Snow 1.55 (and up) allows 2pass ratecontrol.
gpoirier
parents: 15122
diff changeset
24 * vbitrate=<value>
18569
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
25 Specify bitrate of 1pass CBR or 2pass ABR. default: 800 kbit/s.
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
26 This is not very accurate for short videos.
15189
e743f75cdcc4 Snow 1.55 (and up) allows 2pass ratecontrol.
gpoirier
parents: 15122
diff changeset
27
15239
3e1bdfd60e60 mention vrc_eq, vrc_override. remove duplicate warning about 9/7 in lossless.
lorenm
parents: 15214
diff changeset
28 * lmin, lmax, vqcomp, vratetol, vrc_eq, vrc_override
15214
47027be213b2 mention the generic ratecontrol options (lmin,lmax,vqcomp,vratetol)
lorenm
parents: 15206
diff changeset
29 Generic multipass ratecontrol options, subject to the same suggestions
47027be213b2 mention the generic ratecontrol options (lmin,lmax,vqcomp,vratetol)
lorenm
parents: 15206
diff changeset
30 as in other codecs.
47027be213b2 mention the generic ratecontrol options (lmin,lmax,vqcomp,vratetol)
lorenm
parents: 15206
diff changeset
31 lmin=1 can be useful for medium to high bitrates (see vqscale).
47027be213b2 mention the generic ratecontrol options (lmin,lmax,vqcomp,vratetol)
lorenm
parents: 15206
diff changeset
32
15117
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
33 * cmp, subcmp, mbcmp
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
34 Set the comparison function, default: 0 (SAD).
29263
0f1b5b68af32 whitespace cosmetics: Remove all trailing whitespace.
diego
parents: 18571
diff changeset
35 useful values = 0 (SAD), 1 (SSD), 2 (SATD),
18569
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
36 11 (5/3 wavelet), 12 (9/7 wavelet).
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
37 SAD is fastest and lowest quality.
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
38 SSD is the only function that makes correct decisions about intra vs
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
39 inter (mbcmp) when using fast motion estimation, but is not the best for
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
40 the actual search (cmp, subcmp).
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
41 The wavelet functions (use the one that matches pred) are best quality,
18571
25c95219c33d A couple typos: whith --> with, Defult --> Default
corey
parents: 18569
diff changeset
42 especially with vme=8, but are very slow.
18569
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
43 SATD is a good balance.
15117
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
44 You can add 256 to any of the options to enable chroma motion
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
45 estimation for that comparison (e.g. mbcmp=257 for SSD with chroma),
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
46 but it doesn't seem to help much for the moment.
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
47
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
48 * pred=<0-2>
18569
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
49 Wavelet type.
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
50 0 = 9/7 wavelet, default.
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
51 1 = 5/3 wavelet.
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
52 2 = 13/7 wavelet.
15117
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
53 9/7 is probably better for for lossy coding, and 5/3 for lossless.
15206
7c4b86745b98 Snow supports 3-pass mode and 9/7 wavelet doesn't work lossless mode.
gpoirier
parents: 15197
diff changeset
54 NOTE: 9/7 wavelet doesn't work with lossless mode.
15117
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
55
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
56 * qpel
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
57 Refines motion estimation, default: off.
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
58 This setting always helps compressibility, but costs some CPU time
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
59 both while encoding and decoding.
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
60
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
61 * v4mv
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
62 Allows smaller motion partitions, default: off.
18569
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
63 v4mv is theoretically good, but in practice isn't really working yet.
15117
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
64 The current MB decision algorithm doesn't make very good use of this:
15122
4d25185dedaa Fixes suggested by The Wanderer.
gpoirier
parents: 15117
diff changeset
65 It improves quality, but also increases bitrate. (You could get
15117
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
66 more quality per bitrate by reducing quantizer instead.)
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
67
17729
9c3c78d21643 snow supports vme=8
lorenm
parents: 15386
diff changeset
68 * vme=<4|8>
9c3c78d21643 snow supports vme=8
lorenm
parents: 15386
diff changeset
69 The default EPZS (4) is the same as in other formats.
9c3c78d21643 snow supports vme=8
lorenm
parents: 15386
diff changeset
70 Snow also supports iterative motion estimation (8), which jointly
9c3c78d21643 snow supports vme=8
lorenm
parents: 15386
diff changeset
71 optimizes adjacent blocks to make the most of OBMC. This significantly
9c3c78d21643 snow supports vme=8
lorenm
parents: 15386
diff changeset
72 improves compression, but is very slow.
9c3c78d21643 snow supports vme=8
lorenm
parents: 15386
diff changeset
73 Iterative ME currently does not perform scenecut detection, so should
9c3c78d21643 snow supports vme=8
lorenm
parents: 15386
diff changeset
74 be used only in the second pass of a two pass encode.
15117
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
75
18569
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
76 * refs=<1-8>
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
77 Allows each block to choose which of several reference frames to
18571
25c95219c33d A couple typos: whith --> with, Defult --> Default
corey
parents: 18569
diff changeset
78 motion compensate from. Default: 1. Larger values always improve
18569
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
79 compression, but cost lots of CPU-time when encoding and extra
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
80 memory when decoding.
15117
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
81
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
82 In short:
81ab69124505 Initial commit.
gpoirier
parents:
diff changeset
83 The best options in almost all cases are
18569
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
84 vcodec=snow:vstrict=-2:vpass=1:vbitrate=$B:pred=0:cmp=2:subcmp=2:mbcmp=1:qpel
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
85 vcodec=snow:vstrict=-2:vpass=2:vbitrate=$B:pred=0:cmp=12:subcmp=12:mbcmp=1:qpel:vme=8:refs=8
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
86
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
87 Decent, fast options are
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
88 vcodec=snow:vstrict=-2:vpass=1:vbitrate=$B:pred=0:cmp=1:subcmp=1:mbcmp=1
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
89 vcodec=snow:vstrict=-2:vpass=2:vbitrate=$B:pred=0:cmp=2:subcmp=2:mbcmp=1:refs=2