• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
12024-05-21 v1.14.1 "Venetian Duck"
2  This release includes enhancements and bug fixes.
3
4  - Upgrading:
5    This release is ABI compatible with the previous release.
6
7  - Enhancement:
8    Improved the detection of compiler support for AArch64 extensions,
9    particularly SVE.
10
11    Added vpx_codec_get_global_headers() support for VP9.
12
13  - Bug fixes:
14    Added buffer bounds checks to vpx_writer and vpx_write_bit_buffer.
15    Fix to GetSegmentationData() crash in aq_mode=0 for RTC rate control.
16    Fix to alloc for row_base_thresh_freq_fac.
17    Free row mt memory before freeing cpi->tile_data.
18    Fix to buffer alloc for vp9_bitstream_worker_data.
19    Fix to VP8 race issue for multi-thread with pnsr_calc.
20    Fix to uv width/height in vp9_scale_and_extend_frame_ssse3.
21    Fix to integer division by zero and overflow in calc_pframe_target_size().
22    Fix to integer overflow in vpx_img_alloc() & vpx_img_wrap()(CVE-2024-5197).
23    Fix to UBSan error in vp9_rc_update_framerate().
24    Fix to UBSan errors in vp8_new_framerate().
25    Fix to integer overflow in vp8 encodeframe.c.
26    Handle EINTR from sem_wait().
27
282024-01-02 v1.14.0 "Venetian Duck"
29  This release drops support for old C compilers, such as Visual Studio 2012
30  and older, that disallow mixing variable declarations and statements (a C99
31  feature). It adds support for run-time CPU feature detection for Arm
32  platforms, as well as support for darwin23 (macOS 14).
33
34  - Upgrading:
35    This release is ABI incompatible with the previous release.
36
37    Various new features for rate control library for real-time: SVC parallel
38    encoding, loopfilter level, support for frame dropping, and screen content.
39
40    New callback function send_tpl_gop_stats for vp9 external rate control
41    library, which can be used to transmit TPL stats for a group of pictures. A
42    public header vpx_tpl.h is added for the definition of TPL stats used in
43    this callback.
44
45    libwebm is upgraded to libwebm-1.0.0.29-9-g1930e3c.
46
47  - Enhancement:
48    Improvements on Neon optimizations: VoD: 12-35% speed up for bitdepth 8,
49    68%-151% speed up for high bitdepth.
50
51    Improvements on AVX2 and SSE optimizations.
52    Improvements on LSX optimizations for LoongArch.
53    42-49% speedup on speed 0 VoD encoding.
54    Android API level predicates.
55
56  - Bug fixes:
57    Fix to missing prototypes from the rtcd header.
58    Fix to segfault when total size is enlarged but width is smaller.
59    Fix to the build for arm64ec using MSVC.
60    Fix to copy BLOCK_8X8's mi to PICK_MODE_CONTEXT::mic.
61    Fix to -Wshadow warnings.
62    Fix to heap overflow in vpx_get4x4sse_cs_neon.
63    Fix to buffer overrun in highbd Neon subpel variance filters.
64    Added bitexact encode test script.
65    Fix to -Wl,-z,defs with Clang's sanitizers.
66    Fix to decoder stability after error & continued decoding.
67    Fix to mismatch of VP9 encode with NEON intrinsics with C only version.
68    Fix to Arm64 MSVC compile vpx_highbd_fdct4x4_neon.
69    Fix to fragments count before use.
70    Fix to a case where target bandwidth is 0 for SVC.
71    Fix mask in vp9_quantize_avx2,highbd_get_max_lane_eob.
72    Fix to int overflow in vp9_calc_pframe_target_size_one_pass_cbr.
73    Fix to integer overflow in vp8,ratectrl.c.
74    Fix to integer overflow in vp9 svc.
75    Fix to avg_frame_bandwidth overflow.
76    Fix to per frame qp for temporal layers.
77    Fix to unsigned integer overflow in sse computation.
78    Fix to uninitialized mesh feature for BEST mode.
79    Fix to overflow in highbd temporal_filter.
80    Fix to unaligned loads w/w==4 in vpx_convolve_copy_neon.
81    Skip arm64_neon.h workaround w/VS >= 2019.
82    Fix to c vs avx mismatch of diamond_search_sad().
83    Fix to c vs intrinsic mismatch of vpx_hadamard_32x32() function.
84    Fix to a bug in vpx_hadamard_32x32_neon().
85    Fix to Clang -Wunreachable-code-aggressive warnings.
86    Fix to a bug in vpx_highbd_hadamard_32x32_neon().
87    Fix to -Wunreachable-code in mfqe_partition.
88    Force mode search on 64x64 if no mode is selected.
89    Fix to ubsan failure caused by left shift of negative.
90    Fix to integer overflow in calc_pframe_target_size.
91    Fix to float-cast-overflow in vp8_change_config().
92    Fix to a null ptr before use.
93    Conditionally skip using inter frames in speed features.
94    Remove invalid reference frames.
95    Disable intra mode search speed features conditionally.
96    Set nonrd keyframe under dynamic change of deadline for rtc.
97    Fix to scaled reference offsets.
98    Set skip_recode=0 in nonrd_pick_sb_modes.
99    Fix to an edge case when downsizing to one.
100    Fix to a bug in frame scaling.
101    Fix to pred buffer stride.
102    Fix to a bug in simple motion search.
103    Update frame size in actual encoding.
104
1052023-09-29 v1.13.1 "Ugly Duckling"
106  This release contains two security related fixes. One each for VP8 and VP9.
107
108  - Upgrading:
109    This release is ABI compatible with the previous release.
110
111  - Bug fixes:
112    https://crbug.com/1486441 (CVE-2023-5217)
113    Fix to a crash related to VP9 encoding (#1642)
114
1152023-01-31 v1.13.0 "Ugly Duckling"
116  This release includes more Neon and AVX2 optimizations, adds a new codec
117  control to set per frame QP, upgrades GoogleTest to v1.12.1, and includes
118  numerous bug fixes.
119
120  - Upgrading:
121    This release is ABI incompatible with the previous release.
122
123    New codec control VP9E_SET_QUANTIZER_ONE_PASS to set per frame QP.
124
125    GoogleTest is upgraded to v1.12.1.
126
127    .clang-format is upgraded to clang-format-11.
128
129    VPX_EXT_RATECTRL_ABI_VERSION was bumped due to incompatible changes to the
130    feature of using external rate control models for vp9.
131
132  - Enhancement:
133    Numerous improvements on Neon optimizations.
134    Numerous improvements on AVX2 optimizations.
135    Additional ARM targets added for Visual Studio.
136
137  - Bug fixes:
138    Fix to calculating internal stats when frame dropped.
139    Fix to segfault for external resize test in vp9.
140    Fix to build system with replacing egrep with grep -E.
141    Fix to a few bugs with external RTC rate control library.
142    Fix to make SVC work with VBR.
143    Fix to key frame setting in VP9 external RC.
144    Fix to -Wimplicit-int (Clang 16).
145    Fix to VP8 external RC for buffer levels.
146    Fix to VP8 external RC for dynamic update of layers.
147    Fix to VP9 auto level.
148    Fix to off-by-one error of max w/h in validate_config.
149    Fix to make SVC work for Profile 1.
150
1512022-06-17 v1.12.0 "Torrent Duck"
152  This release adds optimizations for Loongarch, adds support for vp8 in the
153  real-time rate control library, upgrades GoogleTest to v1.11.0, updates
154  libwebm to libwebm-1.0.0.28-20-g206d268, and includes numerous bug fixes.
155
156  - Upgrading:
157    This release is ABI compatible with the previous release.
158
159    vp8 support in the real-time rate control library.
160    New codec control VP8E_SET_RTC_EXTERNAL_RATECTRL is added.
161
162    Configure support for darwin21 is added.
163
164    GoogleTest is upgraded to v1.11.0.
165
166    libwebm is updated to libwebm-1.0.0.28-20-g206d268.
167
168    Allow SimpleEncode environment to take target level as input to match
169    the level conformance in vp9.
170
171  - Enhancement:
172    Numerous improvements on checking memory allocations.
173    Optimizations for Loongarch.
174    Code clean-up.
175
176  - Bug fixes:
177    Fix to a crash related to {vp8/vp9}_set_roi_map.
178    Fix to compiling failure with -Wformat-nonliteral.
179    Fix to integer overflow with vp9 with high resolution content.
180    Fix to AddNoiseTest failure with ARMv7.
181    Fix to libvpx Null-dereference READ in vp8.
182
1832021-09-27 v1.11.0 "Smew Duck"
184  This maintenance release adds support for VBR mode in VP9 rate control
185  interface, new codec controls to get quantization parameters and loop filter
186  levels, and includes several improvements to NEON and numerous bug fixes.
187
188  - Upgrading:
189    This release is ABI incompatible with the previous release.
190    New codec control is added to get quantization parameters and loop filter
191    levels.
192
193    VBR mode is supported in VP9 rate control library.
194
195  - Enhancement:
196    Numerous improvements for Neon optimizations.
197    Code clean-up and refactoring.
198    Calculation of rd multiplier is changed with BDRATE gains.
199
200  - Bug fixes:
201    Fix to overflow on duration.
202    Fix to several instances of -Wunused-but-set-variable.
203    Fix to avoid chroma resampling for 420mpeg2 input.
204    Fix to overflow in calc_iframe_target_size.
205    Fix to disallow skipping transform and quantization.
206    Fix some -Wsign-compare warnings in simple_encode.
207    Fix input file path in simple_encode_test.
208    Fix valid range for under/over_shoot pct.
209
2102021-03-09 v1.10.0 "Ruddy Duck"
211  This maintenance release adds support for darwin20 and new codec controls, as
212  well as numerous bug fixes.
213
214  - Upgrading:
215    This release is ABI incompatible with the previous release.
216    New codec control is added to disable loopfilter for VP9.
217
218    New encoder control is added to disable feature to increase Q on overshoot
219    detection for CBR.
220
221    Configure support for darwin20 is added.
222
223    New codec control is added for VP9 rate control. The control ID of this
224    interface is VP9E_SET_EXTERNAL_RATE_CONTROL. To make VP9 use a customized
225    external rate control model, users will have to implement each callback
226    function in vpx_rc_funcs_t and register them using libvpx API
227    vpx_codec_control_() with the control ID.
228
229  - Enhancement:
230    Use -std=gnu++11 instead of -std=c++11 for c++ files.
231
232  - Bug fixes:
233    Override assembler with --as option of configure for MSVS.
234    Fix several compilation issues with gcc 4.8.5.
235    Fix to resetting rate control for temporal layers.
236    Fix to the rate control stats of SVC example encoder when number of spatial
237    layers is 1.
238    Fix to reusing motion vectors from the base spatial layer in SVC.
239    2 pass related flags removed from SVC example encoder.
240
2412020-07-29 v1.9.0 "Quacking Duck"
242  This release adds support for NV12, a separate library for rate control, as
243  well as incremental improvements.
244
245  - Upgrading:
246    This release is ABI compatible with the previous release.
247    NV12 support is added to this release.
248    A new interface is added for VP9 rate control. The new library libvp9rc.a
249    must be linked by applications.
250    Googletest is updated to v1.10.0.
251    simple_encode.cc is compiled into a new library libsimple_encode.a with
252    CONFIG_RATE_CTRL.
253
254  - Enhancement:
255    Various changes to improve VP9 SVC, rate control, quality and speed to real
256    time encoding.
257
258  - Bug fixes:
259    Fix key frame update refresh simulcast flexible svc.
260    Fix to disable_16x16part speed feature for real time encoding.
261    Fix some signed integer overflows for VP9 rate control.
262    Fix initialization of delta_q_uv.
263    Fix condition in regulate_q for cyclic refresh.
264    Various fixes to dynamic resizing for VP9 SVC.
265
2662019-12-09 v1.8.2 "Pekin Duck"
267  This release collects incremental improvements to many aspects of the library.
268
269  - Upgrading:
270    This release is ABI compatible with the previous release.
271    ARCH_* defines have been removed in favor of VPX_ARCH_*.
272
2732019-07-15 v1.8.1 "Orpington Duck"
274  This release collects incremental improvements to many aspects of the library.
275
276  - Upgrading:
277    This release is ABI incompatible with the previous release.
278    VP8E_SET_CPUUSED now accepts values up to 9 for vp9.
279    VPX_CTRL_VP9E_SET_MAX_INTER_BITRATE_PCT had a spelling fix (was VP8E).
280    The --sdk-path option has been removed. If you were using it to build for
281      Android please read build/make/Android.mk for alternatives.
282    All PPC optimizations have been disabled:
283      https://bugs.chromium.org/p/webm/issues/detail?id=1522.
284
285  - Enhancements:
286    Various changes to improve encoder rate control, quality and speed
287      for practically every use case.
288
289  - Bug fixes:
290    vp9-rtc: Fix color artifacts for speed >= 8.
291
2922019-01-31 v1.8.0 "Northern Shoveler Duck"
293  This release focused on encoding performance for realtime and VOD use cases.
294
295  - Upgrading:
296    This release is ABI incompatible with the previous release. This adds and
297    improves several vp9 controls. Most are related to SVC:
298      VP9E_SET_SVC_FRAME_DROP_LAYER:
299        - Frame dropping in SVC.
300      VP9E_SET_SVC_INTER_LAYER_PRED:
301        - Inter-layer prediction in SVC.
302      VP9E_SET_SVC_GF_TEMPORAL_REF:
303        - Enable long term temporal reference in SVC.
304      VP9E_SET_SVC_REF_FRAME_CONFIG/VP9E_GET_SVC_REF_FRAME_CONFIG:
305        - Extend and improve this control for better flexibility in setting SVC
306          pattern dynamically.
307      VP9E_SET_POSTENCODE_DROP:
308        - Allow for post-encode frame dropping (applies to non-SVC too).
309      VP9E_SET_SVC_SPATIAL_LAYER_SYNC:
310        - Enable spatial layer sync frames.
311      VP9E_SET_SVC_LAYER_ID:
312        - Extend api to specify temporal id for each spatial layers.
313      VP9E_SET_ROI_MAP:
314        - Extend Region of Interest functionality to VP9.
315
316  - Enhancements:
317    2 pass vp9 encoding has improved substantially. When using --auto-alt-ref=6,
318    we see approximately 8% for VBR and 10% for CQ. When using --auto-alt-ref=1,
319    the gains are approximately 4% for VBR and 5% for CQ.
320
321    For real-time encoding, speed 7 has improved by ~5-10%. Encodes targeted at
322    screen sharing have improved when the content changes significantly (slide
323    sharing) or scrolls. There is a new speed 9 setting for mobile devices which
324    is about 10-20% faster than speed 8.
325
326  - Bug fixes:
327    VP9 denoiser issue.
328    VP9 partition issue for 1080p.
329    VP9 rate control improvments.
330    Postprocessing Multi Frame Quality Enhancement (MFQE) issue.
331    VP8 multithread decoder issues.
332    A variety of fuzzing issues.
333
3342018-01-04 v1.7.0 "Mandarin Duck"
335  This release focused on high bit depth performance (10/12 bit) and vp9
336  encoding improvements.
337
338  - Upgrading:
339    This release is ABI incompatible due to new vp9 encoder features.
340
341    Frame parallel decoding for vp9 has been removed.
342
343  - Enhancements:
344    vp9 encoding supports additional threads with --row-mt. This can be greater
345    than the number of tiles.
346
347    Two new vp9 encoder options have been added:
348      --corpus-complexity
349      --tune-content=film
350
351    Additional tooling for respecting the vp9 "level" profiles has been added.
352
353  - Bug fixes:
354    A variety of fuzzing issues.
355    vp8 threading fix for ARM.
356    Codec control VP9_SET_SKIP_LOOP_FILTER fixed.
357    Reject invalid multi resolution configurations.
358
3592017-01-09 v1.6.1 "Long Tailed Duck"
360  This release improves upon the VP9 encoder and speeds up the encoding and
361  decoding processes.
362
363  - Upgrading:
364    This release is ABI compatible with 1.6.0.
365
366  - Enhancements:
367    Faster VP9 encoding and decoding.
368    High bit depth builds now provide similar speed for 8 bit encode and decode
369    for x86 targets. Other platforms and higher bit depth improvements are in
370    progress.
371
372  - Bug Fixes:
373    A variety of fuzzing issues.
374
3752016-07-20 v1.6.0 "Khaki Campbell Duck"
376  This release improves upon the VP9 encoder and speeds up the encoding and
377  decoding processes.
378
379  - Upgrading:
380    This release is ABI incompatible with 1.5.0 due to a new 'color_range' enum
381    in vpx_image and some minor changes to the VP8_COMP structure.
382
383    The default key frame interval for VP9 has changed from 128 to 9999.
384
385  - Enhancement:
386    A core focus has been performance for low end Intel processors. SSSE3
387    instructions such as 'pshufb' have been avoided and instructions have been
388    reordered to better accommodate the more constrained pipelines.
389
390    As a result, devices based on Celeron processors have seen substantial
391    decoding improvements. From Indian Runner Duck to Javan Whistling Duck,
392    decoding speed improved between 10 and 30%. Between Javan Whistling Duck
393    and Khaki Campbell Duck, it improved another 10 to 15%.
394
395    While Celeron benefited most, Core-i5 also improved 5% and 10% between the
396    respective releases.
397
398    Realtime performance for WebRTC for both speed and quality has received a
399    lot of attention.
400
401  - Bug Fixes:
402    A number of fuzzing issues, found variously by Mozilla, Chromium and others,
403    have been fixed and we strongly recommend updating.
404
4052015-11-09 v1.5.0 "Javan Whistling Duck"
406  This release improves upon the VP9 encoder and speeds up the encoding and
407  decoding processes.
408
409  - Upgrading:
410    This release is ABI incompatible with 1.4.0. It drops deprecated VP8
411    controls and adds a variety of VP9 controls for testing.
412
413    The vpxenc utility now prefers VP9 by default.
414
415  - Enhancements:
416    Faster VP9 encoding and decoding
417    Smaller library size by combining functions used by VP8 and VP9
418
419  - Bug Fixes:
420    A variety of fuzzing issues
421
4222015-04-03 v1.4.0 "Indian Runner Duck"
423  This release includes significant improvements to the VP9 codec.
424
425  - Upgrading:
426    This release is ABI incompatible with 1.3.0. It drops the compatibility
427    layer, requiring VPX_IMG_FMT_* instead of IMG_FMT_*, and adds several codec
428    controls for VP9.
429
430  - Enhancements:
431    Faster VP9 encoding and decoding
432    Multithreaded VP9 decoding (tile and frame-based)
433    Multithreaded VP9 encoding - on by default
434    YUV 4:2:2 and 4:4:4 support in VP9
435    10 and 12bit support in VP9
436    64bit ARM support by replacing ARM assembly with intrinsics
437
438  - Bug Fixes:
439    Fixes a VP9 bitstream issue in Profile 1. This only affected non-YUV 4:2:0
440    files.
441
442  - Known Issues:
443    Frame Parallel decoding fails for segmented and non-420 files.
444
4452013-11-15 v1.3.0 "Forest"
446  This release introduces the VP9 codec in a backward-compatible way.
447  All existing users of VP8 can continue to use the library without
448  modification. However, some VP8 options do not map to VP9 in the same manner.
449
450  The VP9 encoder in this release is not feature complete. Users interested in
451  the encoder are advised to use the git master branch and discuss issues on
452  libvpx mailing lists.
453
454  - Upgrading:
455    This release is ABI and API compatible with Duclair (v1.0.0). Users
456    of older releases should refer to the Upgrading notes in this document
457    for that release.
458
459  - Enhancements:
460      Get rid of bashisms in the main build scripts
461      Added usage info on command line options
462      Add lossless compression mode
463      Dll build of libvpx
464      Add additional Mac OS X targets: 10.7, 10.8 and 10.9 (darwin11-13)
465      Add option to disable documentation
466      configure: add --enable-external-build support
467      make: support V=1 as short form of verbose=yes
468      configure: support mingw-w64
469      configure: support hardfloat armv7 CHOSTS
470      configure: add support for android x86
471      Add estimated completion time to vpxenc
472      Don't exit on decode errors in vpxenc
473      vpxenc: support scaling prior to encoding
474      vpxdec: support scaling output
475      vpxenc: improve progress indicators with --skip
476      msvs: Don't link to winmm.lib
477      Add a new script for producing vcxproj files
478      Produce Visual Studio 10 and 11 project files
479      Produce Windows Phone project files
480      msvs-build: use msbuild for vs >= 2005
481      configure: default configure log to config.log
482      Add encoding option --static-thresh
483
484  - Speed:
485      Miscellaneous speed optimizations for VP8 and VP9.
486
487  - Quality:
488      In general, quality is consistent with the Eider release.
489
490  - Bug Fixes:
491      This release represents approximately a year of engineering effort,
492      and contains multiple bug fixes. Please refer to git history for details.
493
494
4952012-12-21 v1.2.0
496  This release acts as a checkpoint for a large amount of internal refactoring
497  and testing. It also contains a number of small bugfixes, so all users are
498  encouraged to upgrade.
499
500  - Upgrading:
501    This release is ABI and API compatible with Duclair (v1.0.0). Users
502    of older releases should refer to the Upgrading notes in this
503    document for that release.
504
505  - Enhancements:
506      VP8 optimizations for MIPS dspr2
507      vpxenc: add -quiet option
508
509  - Speed:
510      Encoder and decoder speed is consistent with the Eider release.
511
512  - Quality:
513      In general, quality is consistent with the Eider release.
514
515      Minor tweaks to ARNR filtering
516      Minor improvements to real time encoding with multiple temporal layers
517
518  - Bug Fixes:
519      Fixes multithreaded encoder race condition in loopfilter
520      Fixes multi-resolution threaded encoding
521      Fix potential encoder dead-lock after picture resize
522
523
5242012-05-09 v1.1.0 "Eider"
525  This introduces a number of enhancements, mostly focused on real-time
526  encoding. In addition, it fixes a decoder bug (first introduced in
527  Duclair) so all users of that release are encouraged to upgrade.
528
529  - Upgrading:
530    This release is ABI and API compatible with Duclair (v1.0.0). Users
531    of older releases should refer to the Upgrading notes in this
532    document for that release.
533
534    This release introduces a new temporal denoiser, controlled by the
535    VP8E_SET_NOISE_SENSITIVITY control. The temporal denoiser does not
536    currently take a strength parameter, so the control is effectively
537    a boolean - zero (off) or non-zero (on). For compatibility with
538    existing applications, the values accepted are the same as those
539    for the spatial denoiser (0-6). The temporal denoiser is enabled
540    by default, and the older spatial denoiser may be restored by
541    configuring with --disable-temporal-denoising. The temporal denoiser
542    is more computationally intensive than the spatial one.
543
544    This release removes support for a legacy, decode only API that was
545    supported, but deprecated, at the initial release of libvpx
546    (v0.9.0). This is not expected to have any impact. If you are
547    impacted, you can apply a reversion to commit 2bf8fb58 locally.
548    Please update to the latest libvpx API if you are affected.
549
550  - Enhancements:
551      Adds a motion compensated temporal denoiser to the encoder, which
552      gives higher quality than the older spatial denoiser. (See above
553      for notes on upgrading).
554
555      In addition, support for new compilers and platforms were added,
556      including:
557        improved support for XCode
558        Android x86 NDK build
559        OS/2 support
560        SunCC support
561
562      Changing resolution with vpx_codec_enc_config_set() is now
563      supported. Previously, reinitializing the codec was required to
564      change the input resolution.
565
566      The vpxenc application has initial support for producing multiple
567      encodes from the same input in one call. Resizing is not yet
568      supported, but varying other codec parameters is. Use -- to
569      delineate output streams. Options persist from one stream to the
570      next.
571
572      Also, the vpxenc application will now use a keyframe interval of
573      5 seconds by default. Use the --kf-max-dist option to override.
574
575  - Speed:
576      Decoder performance improved 2.5% versus Duclair. Encoder speed is
577      consistent with Duclair for most material. Two pass encoding of
578      slideshow-like material will see significant improvements.
579
580      Large realtime encoding speed gains at a small quality expense are
581      possible by configuring the on-the-fly bitpacking experiment with
582      --enable-onthefly-bitpacking. Realtime encoder can be up to 13%
583      faster (ARM) depending on the number of threads and bitrate
584      settings. This technique sees constant gain over the 5-16 speed
585      range. For VC style input the loss seen is up to 0.2dB. See commit
586      52cf4dca for further details.
587
588  - Quality:
589      On the whole, quality is consistent with the Duclair release. Some
590      tweaks:
591
592        Reduced blockiness in easy sections by applying a penalty to
593        intra modes.
594
595        Improved quality of static sections (like slideshows) with
596        two pass encoding.
597
598        Improved keyframe sizing with multiple temporal layers
599
600  - Bug Fixes:
601      Corrected alt-ref contribution to frame rate for visible updates
602      to the alt-ref buffer. This affected applications making manual
603      usage of the frame reference flags, or temporal layers.
604
605      Additional constraints were added to disable multi-frame quality
606      enhancement (MFQE) in sections of the frame where there is motion.
607      (#392)
608
609      Fixed corruption issues when vpx_codec_enc_config_set() was called
610      with spatial resampling enabled.
611
612      Fixed a decoder error introduced in Duclair where the segmentation
613      map was not being reinitialized on keyframes (#378)
614
615
6162012-01-27 v1.0.0 "Duclair"
617  Our fourth named release, focused on performance and features related to
618  real-time encoding. It also fixes a decoder crash bug introduced in
619  v0.9.7, so all users of that release are encouraged to upgrade.
620
621  - Upgrading:
622      This release is ABI incompatible with prior releases of libvpx, so the
623      "major" version number has been bumped to 1. You must recompile your
624      applications against the latest version of the libvpx headers. The
625      API remains compatible, and this should not require code changes in most
626      applications.
627
628  - Enhancements:
629      This release introduces several substantial new features to the encoder,
630      of particular interest to real time streaming applications.
631
632      Temporal scalability allows the encoder to produce a stream that can
633      be decimated to different frame rates, with independent rate targeting
634      for each substream.
635
636      Multiframe quality enhancement postprocessing can make visual quality
637      more consistent in the presence of frames that are substantially
638      different quality than the surrounding frames, as in the temporal
639      scalability case and in some forced keyframe scenarios.
640
641      Multiple-resolution encoding support allows the encoding of the
642      same content at different resolutions faster than encoding them
643      separately.
644
645  - Speed:
646      Optimization targets for this release included the decoder and the real-
647      time modes of the encoder. Decoder speed on x86 has improved 10.5% with
648      this release. Encoder improvements followed a curve where speeds 1-3
649      improved 4.0%-1.5%, speeds 4-8 improved <1%, and speeds 9-16 improved
650      1.5% to 10.5%, respectively. "Best" mode speed is consistent with the
651      Cayuga release.
652
653  - Quality:
654      Encoder quality in the single stream case is consistent with the Cayuga
655      release.
656
657  - Bug Fixes:
658      This release fixes an OOB read decoder crash bug present in v0.9.7
659      related to the clamping of motion vectors in SPLITMV blocks. This
660      behavior could be triggered by corrupt input or by starting
661      decoding from a P-frame.
662
663
6642011-08-15 v0.9.7-p1 "Cayuga" patch 1
665  This is an incremental bugfix release against Cayuga. All users of that
666  release are strongly encouraged to upgrade.
667
668    - Fix potential OOB reads (cdae03a)
669
670          An unbounded out of bounds read was discovered when the
671          decoder was requested to perform error concealment (new in
672          Cayuga) given a frame with corrupt partition sizes.
673
674          A bounded out of bounds read was discovered affecting all
675          versions of libvpx. Given an multipartition input frame that
676          is truncated between the mode/mv partition and the first
677          residiual paritition (in the block of partition offsets), up
678          to 3 extra bytes could have been read from the source buffer.
679          The code will not take any action regardless of the contents
680          of these undefined bytes, as the truncated buffer is detected
681          immediately following the read based on the calculated
682          starting position of the coefficient partition.
683
684    - Fix potential error concealment crash when the very first frame
685      is missing or corrupt (a609be5)
686
687    - Fix significant artifacts in error concealment (a4c2211, 99d870a)
688
689    - Revert 1-pass CBR rate control changes (e961317)
690      Further testing showed this change produced undesirable visual
691      artifacts, rolling back for now.
692
693
6942011-08-02 v0.9.7 "Cayuga"
695  Our third named release, focused on a faster, higher quality, encoder.
696
697  - Upgrading:
698    This release is backwards compatible with Aylesbury (v0.9.5) and
699    Bali (v0.9.6). Users of older releases should refer to the Upgrading
700    notes in this document for that release.
701
702  - Enhancements:
703          Stereo 3D format support for vpxenc
704          Runtime detection of available processor cores.
705          Allow specifying --end-usage by enum name
706          vpxdec: test for frame corruption
707          vpxenc: add quantizer histogram display
708          vpxenc: add rate histogram display
709          Set VPX_FRAME_IS_DROPPABLE
710          update configure for ios sdk 4.3
711          Avoid text relocations in ARM vp8 decoder
712          Generate a vpx.pc file for pkg-config.
713          New ways of passing encoded data between encoder and decoder.
714
715  - Speed:
716      This release includes across-the-board speed improvements to the
717      encoder. On x86, these measure at approximately 11.5% in Best mode,
718      21.5% in Good mode (speed 0), and 22.5% in Realtime mode (speed 6).
719      On ARM Cortex A9 with Neon extensions, real-time encoding of video
720      telephony content is 35% faster than Bali on single core and 48%
721      faster on multi-core. On the NVidia Tegra2 platform, real time
722      encoding is 40% faster than Bali.
723
724      Decoder speed was not a priority for this release, but improved
725      approximately 8.4% on x86.
726
727          Reduce motion vector search on alt-ref frame.
728          Encoder loopfilter running in its own thread
729          Reworked loopfilter to precalculate more parameters
730          SSE2/SSSE3 optimizations for build_predictors_mbuv{,_s}().
731          Make hor UV predict ~2x faster (73 vs 132 cycles) using SSSE3.
732          Removed redundant checks
733          Reduced structure sizes
734          utilize preload in ARMv6 MC/LPF/Copy routines
735          ARM optimized quantization, dfct, variance, subtract
736          Increase chrow row alignment to 16 bytes.
737          disable trellis optimization for first pass
738          Write SSSE3 sub-pixel filter function
739          Improve SSE2 half-pixel filter funtions
740          Add vp8_sub_pixel_variance16x8_ssse3 function
741          Reduce unnecessary distortion computation
742          Use diamond search to replace full search
743          Preload reference area in sub-pixel motion search (real-time mode)
744
745  - Quality:
746      This release focused primarily on one-pass use cases, including
747      video conferencing. Low latency data rate control was significantly
748      improved, improving streamability over bandwidth constrained links.
749      Added support for error concealment, allowing frames to maintain
750      visual quality in the presence of substantial packet loss.
751
752          Add rc_max_intra_bitrate_pct control
753          Limit size of initial keyframe in one-pass.
754          Improve framerate adaptation
755          Improved 1-pass CBR rate control
756          Improved KF insertion after fades to still.
757          Improved key frame detection.
758          Improved activity masking (lower PSNR impact for same SSIM boost)
759          Improved interaction between GF and ARFs
760          Adding error-concealment to the decoder.
761          Adding support for independent partitions
762          Adjusted rate-distortion constants
763
764
765  - Bug Fixes:
766          Removed firstpass motion map
767          Fix parallel make install
768          Fix multithreaded encoding for 1 MB wide frame
769          Fixed iwalsh_neon build problems with RVDS4.1
770          Fix semaphore emulation, spin-wait intrinsics on Windows
771          Fix build with xcode4 and simplify GLOBAL.
772          Mark ARM asm objects as allowing a non-executable stack.
773          Fix vpxenc encoding incorrect webm file header on big endian
774
775
7762011-03-07 v0.9.6 "Bali"
777  Our second named release, focused on a faster, higher quality, encoder.
778
779  - Upgrading:
780    This release is backwards compatible with Aylesbury (v0.9.5). Users
781    of older releases should refer to the Upgrading notes in this
782    document for that release.
783
784  - Enhancements:
785      vpxenc --psnr shows a summary when encode completes
786      --tune=ssim option to enable activity masking
787      improved postproc visualizations for development
788      updated support for Apple iOS to SDK 4.2
789      query decoder to determine which reference frames were updated
790      implemented error tracking in the decoder
791      fix pipe support on windows
792
793  - Speed:
794      Primary focus was on good quality mode, speed 0. Average improvement
795      on x86 about 40%, up to 100% on user-generated content at that speed.
796      Best quality mode speed improved 35%, and realtime speed 10-20%. This
797      release also saw significant improvement in realtime encoding speed
798      on ARM platforms.
799
800        Improved encoder threading
801        Dont pick encoder filter level when loopfilter is disabled.
802        Avoid double copying of key frames into alt and golden buffer
803        FDCT optimizations.
804        x86 sse2 temporal filter
805        SSSE3 version of fast quantizer
806        vp8_rd_pick_best_mbsegmentation code restructure
807        Adjusted breakout RD for SPLITMV
808        Changed segmentation check order
809        Improved rd_pick_intra4x4block
810        Adds armv6 optimized variance calculation
811        ARMv6 optimized sad16x16
812        ARMv6 optimized half pixel variance calculations
813        Full search SAD function optimization in SSE4.1
814        Improve MV prediction accuracy to achieve performance gain
815        Improve MV prediction in vp8_pick_inter_mode() for speed>3
816
817  - Quality:
818      Best quality mode improved PSNR 6.3%, and SSIM 6.1%. This release
819      also includes support for "activity masking," which greatly improves
820      SSIM at the expense of PSNR. For now, this feature is available with
821      the --tune=ssim option. Further experimentation in this area
822      is ongoing. This release also introduces a new rate control mode
823      called "CQ," which changes the allocation of bits within a clip to
824      the sections where they will have the most visual impact.
825
826        Tuning for the more exact quantizer.
827        Relax rate control for last few frames
828        CQ Mode
829        Limit key frame quantizer for forced key frames.
830        KF/GF Pulsing
831        Add simple version of activity masking.
832        make rdmult adaptive for intra in quantizer RDO
833        cap the best quantizer for 2nd order DC
834        change the threshold of DC check for encode breakout
835
836  - Bug Fixes:
837      Fix crash on Sparc Solaris.
838      Fix counter of fixed keyframe distance
839      ARNR filter pointer update bug fix
840      Fixed use of motion percentage in KF/GF group calc
841      Changed condition for using RD in Intra Mode
842      Fix encoder real-time only configuration.
843      Fix ARM encoder crash with multiple token partitions
844      Fixed bug first cluster timecode of webm file is wrong.
845      Fixed various encoder bugs with odd-sized images
846      vp8e_get_preview fixed when spatial resampling enabled
847      quantizer: fix assertion in fast quantizer path
848      Allocate source buffers to be multiples of 16
849      Fix for manual Golden frame frequency
850      Fix drastic undershoot in long form content
851
852
8532010-10-28 v0.9.5 "Aylesbury"
854  Our first named release, focused on a faster decoder, and a better encoder.
855
856  - Upgrading:
857    This release incorporates backwards-incompatible changes to the
858    ivfenc and ivfdec tools. These tools are now called vpxenc and vpxdec.
859
860    vpxdec
861      * the -q (quiet) option has been removed, and replaced with
862        -v (verbose). the output is quiet by default. Use -v to see
863        the version number of the binary.
864
865      * The default behavior is now to write output to a single file
866        instead of individual frames. The -y option has been removed.
867        Y4M output is the default.
868
869      * For raw I420/YV12 output instead of Y4M, the --i420 or --yv12
870        options must be specified.
871
872          $ ivfdec -o OUTPUT INPUT
873          $ vpxdec --i420 -o OUTPUT INPUT
874
875      * If an output file is not specified, the default is to write
876        Y4M to stdout. This makes piping more natural.
877
878          $ ivfdec -y -o - INPUT | ...
879          $ vpxdec INPUT | ...
880
881      * The output file has additional flexibility for formatting the
882        filename. It supports escape characters for constructing a
883        filename from the width, height, and sequence number. This
884        replaces the -p option. To get the equivalent:
885
886          $ ivfdec -p frame INPUT
887          $ vpxdec --i420 -o frame-%wx%h-%4.i420 INPUT
888
889    vpxenc
890      * The output file must be specified with -o, rather than as the
891        last argument.
892
893          $ ivfenc <options> INPUT OUTPUT
894          $ vpxenc <options> -o OUTPUT INPUT
895
896      * The output defaults to webm. To get IVF output, use the --ivf
897        option.
898
899          $ ivfenc <options> INPUT OUTPUT.ivf
900          $ vpxenc <options> -o OUTPUT.ivf --ivf INPUT
901
902
903  - Enhancements:
904      ivfenc and ivfdec have been renamed to vpxenc, vpxdec.
905      vpxdec supports .webm input
906      vpxdec writes .y4m by default
907      vpxenc writes .webm output by default
908      vpxenc --psnr now shows the average/overall PSNR at the end
909      ARM platforms now support runtime cpu detection
910      vpxdec visualizations added for motion vectors, block modes, references
911      vpxdec now silent by default
912      vpxdec --progress shows frame-by-frame timing information
913      vpxenc supports the distinction between --fps and --timebase
914      NASM is now a supported assembler
915      configure: enable PIC for shared libs by default
916      configure: add --enable-small
917      configure: support for ppc32-linux-gcc
918      configure: support for sparc-solaris-gcc
919
920  - Bugs:
921      Improve handling of invalid frames
922      Fix valgrind errors in the NEON loop filters.
923      Fix loopfilter delta zero transitions
924      Fix valgrind errors in vp8_sixtap_predict8x4_armv6().
925      Build fixes for darwin-icc
926
927  - Speed:
928      20-40% (average 28%) improvement in libvpx decoder speed,
929      including:
930        Rewrite vp8_short_walsh4x4_sse2()
931        Optimizations on the loopfilters.
932        Miscellaneous improvements for Atom
933        Add 4-tap version of 2nd-pass ARMv6 MC filter.
934        Improved multithread utilization
935        Better instruction choices on x86
936        reorder data to use wider instructions
937        Update NEON wide idcts
938        Make block access to frame buffer sequential
939        Improved subset block search
940        Bilinear subpixel optimizations for ssse3.
941        Decrease memory footprint
942
943      Encoder speed improvements (percentage gain not measured):
944        Skip unnecessary search of identical frames
945        Add SSE2 subtract functions
946        Improve bounds checking in vp8_diamond_search_sadx4()
947        Added vp8_fast_quantize_b_sse2
948
949  - Quality:
950      Over 7% overall PSNR improvement (6.3% SSIM) in "best" quality
951      encoding mode, and up to 60% improvement on very noisy, still
952      or slow moving source video
953
954        Motion compensated temporal filter for Alt-Ref Noise Reduction
955        Improved use of trellis quantization on 2nd order Y blocks
956        Tune effect of motion on KF/GF boost in two pass
957        Allow coefficient optimization for good quality speed 0.
958        Improved control of active min quantizer for two pass.
959        Enable ARFs for non-lagged compress
960
9612010-09-02 v0.9.2
962  - Enhancements:
963      Disable frame dropping by default
964      Improved multithreaded performance
965      Improved Force Key Frame Behaviour
966      Increased rate control buffer level precision
967      Fix bug in 1st pass motion compensation
968      ivfenc: correct fixed kf interval, --disable-kf
969  - Speed:
970      Changed above and left context data layout
971      Rework idct calling structure.
972      Removed unnecessary MB_MODE_INFO copies
973      x86: SSSE3 sixtap prediction
974      Reworked IDCT to include reconstruction (add) step
975      Swap alt/gold/new/last frame buffer ptrs instead of copying.
976      Improve SSE2 loopfilter functions
977      Change bitreader to use a larger window.
978      Avoid loopfilter reinitialization when possible
979  - Quality:
980      Normalize quantizer's zero bin and rounding factors
981      Add trellis quantization.
982      Make the quantizer exact.
983      Updates to ARNR filtering algorithm
984      Fix breakout thresh computation for golden & AltRef frames
985      Redo the forward 4x4 dct
986      Improve the accuracy of forward walsh-hadamard transform
987      Further adjustment of RD behaviour with Q and Zbin.
988  - Build System:
989      Allow linking of libs built with MinGW to MSVC
990      Fix target auto-detection on mingw32
991      Allow --cpu= to work for x86.
992      configure: pass original arguments through to make dist
993      Fix builds without runtime CPU detection
994      msvs: fix install of codec sources
995      msvs: Change devenv.com command line for better msys support
996      msvs: Add vs9 targets.
997      Add x86_64-linux-icc target
998  - Bugs:
999      Potential crashes on older MinGW builds
1000      Fix two-pass framrate for Y4M input.
1001      Fixed simple loop filter, other crashes on ARM v6
1002      arm: fix missing dependency with --enable-shared
1003      configure: support directories containing .o
1004      Replace pinsrw (SSE) with MMX instructions
1005      apple: include proper mach primatives
1006      Fixed rate control bug with long key frame interval.
1007      Fix DSO link errors on x86-64 when not using a version script
1008      Fixed buffer selection for UV in AltRef filtering
1009
1010
10112010-06-17 v0.9.1
1012  - Enhancements:
1013      * ivfenc/ivfdec now support YUV4MPEG2 input and pipe I/O
1014      * Speed optimizations
1015  - Bugfixes:
1016      * Rate control
1017      * Prevent out-of-bounds accesses on invalid data
1018  - Build system updates:
1019      * Detect toolchain to be used automatically for native builds
1020      * Support building shared libraries
1021      * Better autotools emulation (--prefix, --libdir, DESTDIR)
1022  - Updated LICENSE
1023      * http://webmproject.blogspot.com/2010/06/changes-to-webm-open-source-license.html
1024
1025
10262010-05-18 v0.9.0
1027  - Initial open source release. Welcome to WebM and VP8!
1028
1029