annotate DOCS/tech/snow.txt @ 20244:81a514f118d2

Implement bob (pseudo?) deinterlacing for xvmc. Patch from Tomas Janousek (tomi at nomi cz) with modifications by Carl Eugen Hoyos (cehoyos at ag or at) and me.
author reimar
date Sun, 15 Oct 2006 18:27:34 +0000
parents 25c95219c33d
children 0f1b5b68af32
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).
18569
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
35 useful values = 0 (SAD), 1 (SSD), 2 (SATD),
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
d8605d22bf62 document the recent changes in Snow.
lorenm
parents: 17729
diff changeset
90