Merge "vp8_rd_pick_best_mbsegmentation code restructure"
[libvpx.git] / CHANGELOG
blobb8da8f8e358006936102b65e69ec8f25cd81a4db
1 2010-10-28 v0.9.5 "Aylesbury"
2   Our first named release, focused on a faster decoder, and a better encoder.
4   - Upgrading:
5     This release incorporates backwards-incompatible changes to the
6     ivfenc and ivfdec tools. These tools are now called vpxenc and vpxdec.
8     vpxdec
9       * the -q (quiet) option has been removed, and replaced with
10         -v (verbose). the output is quiet by default. Use -v to see
11         the version number of the binary.
13       * The default behavior is now to write output to a single file
14         instead of individual frames. The -y option has been removed.
15         Y4M output is the default.
17       * For raw I420/YV12 output instead of Y4M, the --i420 or --yv12
18         options must be specified.
20           $ ivfdec -o OUTPUT INPUT
21           $ vpxdec --i420 -o OUTPUT INPUT
23       * If an output file is not specified, the default is to write
24         Y4M to stdout. This makes piping more natural.
26           $ ivfdec -y -o - INPUT | ...
27           $ vpxdec INPUT | ...
29       * The output file has additional flexibility for formatting the
30         filename. It supports escape characters for constructing a
31         filename from the width, height, and sequence number. This
32         replaces the -p option. To get the equivalent:
34           $ ivfdec -p frame INPUT
35           $ vpxdec --i420 -o frame-%wx%h-%4.i420 INPUT
37     vpxenc
38       * The output file must be specified with -o, rather than as the
39         last argument.
41           $ ivfenc <options> INPUT OUTPUT
42           $ vpxenc <options> -o OUTPUT INPUT
44       * The output defaults to webm. To get IVF output, use the --ivf
45         option.
47           $ ivfenc <options> INPUT OUTPUT.ivf
48           $ vpxenc <options> -o OUTPUT.ivf --ivf INPUT
51   - Enhancements:
52       ivfenc and ivfdec have been renamed to vpxenc, vpxdec.
53       vpxdec supports .webm input
54       vpxdec writes .y4m by default
55       vpxenc writes .webm output by default
56       vpxenc --psnr now shows the average/overall PSNR at the end
57       ARM platforms now support runtime cpu detection
58       vpxdec visualizations added for motion vectors, block modes, references
59       vpxdec now silent by default
60       vpxdec --progress shows frame-by-frame timing information
61       vpxenc supports the distinction between --fps and --timebase
62       NASM is now a supported assembler
63       configure: enable PIC for shared libs by default
64       configure: add --enable-small
65       configure: support for ppc32-linux-gcc
66       configure: support for sparc-solaris-gcc
68   - Bugs:
69       Improve handling of invalid frames
70       Fix valgrind errors in the NEON loop filters.
71       Fix loopfilter delta zero transitions
72       Fix valgrind errors in vp8_sixtap_predict8x4_armv6().
73       Build fixes for darwin-icc
75   - Speed:
76       20-40% (average 28%) improvement in libvpx decoder speed,
77       including:
78         Rewrite vp8_short_walsh4x4_sse2()
79         Optimizations on the loopfilters.
80         Miscellaneous improvements for Atom
81         Add 4-tap version of 2nd-pass ARMv6 MC filter.
82         Improved multithread utilization
83         Better instruction choices on x86
84         reorder data to use wider instructions
85         Update NEON wide idcts
86         Make block access to frame buffer sequential
87         Improved subset block search
88         Bilinear subpixel optimizations for ssse3.
89         Decrease memory footprint
91       Encoder speed improvements (percentage gain not measured):
92         Skip unnecessary search of identical frames
93         Add SSE2 subtract functions
94         Improve bounds checking in vp8_diamond_search_sadx4()
95         Added vp8_fast_quantize_b_sse2
97   - Quality:
98       Over 7% overall PSNR improvement (6.3% SSIM) in "best" quality
99       encoding mode, and up to 60% improvement on very noisy, still
100       or slow moving source video
102         Motion compensated temporal filter for Alt-Ref Noise Reduction
103         Improved use of trellis quantization on 2nd order Y blocks
104         Tune effect of motion on KF/GF boost in two pass
105         Allow coefficient optimization for good quality speed 0.
106         Improved control of active min quantizer for two pass.
107         Enable ARFs for non-lagged compress
109 2010-09-02 v0.9.2
110   - Enhancements:
111       Disable frame dropping by default
112       Improved multithreaded performance
113       Improved Force Key Frame Behaviour
114       Increased rate control buffer level precision
115       Fix bug in 1st pass motion compensation
116       ivfenc: correct fixed kf interval, --disable-kf
117   - Speed:
118       Changed above and left context data layout
119       Rework idct calling structure.
120       Removed unnecessary MB_MODE_INFO copies
121       x86: SSSE3 sixtap prediction
122       Reworked IDCT to include reconstruction (add) step
123       Swap alt/gold/new/last frame buffer ptrs instead of copying.
124       Improve SSE2 loopfilter functions
125       Change bitreader to use a larger window.
126       Avoid loopfilter reinitialization when possible
127   - Quality:
128       Normalize quantizer's zero bin and rounding factors
129       Add trellis quantization.
130       Make the quantizer exact.
131       Updates to ARNR filtering algorithm
132       Fix breakout thresh computation for golden & AltRef frames
133       Redo the forward 4x4 dct
134       Improve the accuracy of forward walsh-hadamard transform
135       Further adjustment of RD behaviour with Q and Zbin.
136   - Build System:
137       Allow linking of libs built with MinGW to MSVC
138       Fix target auto-detection on mingw32
139       Allow --cpu= to work for x86.
140       configure: pass original arguments through to make dist
141       Fix builds without runtime CPU detection
142       msvs: fix install of codec sources
143       msvs: Change devenv.com command line for better msys support
144       msvs: Add vs9 targets.
145       Add x86_64-linux-icc target
146   - Bugs:
147       Potential crashes on older MinGW builds
148       Fix two-pass framrate for Y4M input.
149       Fixed simple loop filter, other crashes on ARM v6
150       arm: fix missing dependency with --enable-shared
151       configure: support directories containing .o
152       Replace pinsrw (SSE) with MMX instructions
153       apple: include proper mach primatives
154       Fixed rate control bug with long key frame interval.
155       Fix DSO link errors on x86-64 when not using a version script
156       Fixed buffer selection for UV in AltRef filtering
159 2010-06-17 v0.9.1
160   - Enhancements:
161       * ivfenc/ivfdec now support YUV4MPEG2 input and pipe I/O
162       * Speed optimizations
163   - Bugfixes:
164       * Rate control
165       * Prevent out-of-bounds accesses on invalid data
166   - Build system updates:
167       * Detect toolchain to be used automatically for native builds
168       * Support building shared libraries
169       * Better autotools emulation (--prefix, --libdir, DESTDIR)
170   - Updated LICENSE
171       * http://webmproject.blogspot.com/2010/06/changes-to-webm-open-source-license.html
174 2010-05-18 v0.9.0
175   - Initial open source release. Welcome to WebM and VP8!