Skip to content

v1.3.0

Compare
Choose a tag to compare
@Arizer Arizer released this 09 Jul 19:52
· 671 commits to master since this release

Time has finally come for the long overdue release v1.3 of Kvazaar!

Since it has been such a long time after our previous release, many many new features, fixes, and optimizations have been introduced and the coding efficiency is on a whole new level.

Binaries for Windows will be added starting from this release.

Pthreads is no longer needed to build and run Kvazaar on Windows. It has been replaced by our custom ThreadWrapper so Kvazaar is able to use the new c++ standard threads. ThreadWrapper is also separately available on repository https://github.com/ultravideo/ThreadWrapper and released under ISC lisence. It is not complete yet, so contributions are welcome.

Performance figures and more up-to-date release notes will be added in the following days.

Some CI tests are failing at the moment, but there should not be any critical issues.

Edit (2.5.2020):
Here are some of the previously missing missing release notes:

Features

  • Option --fast-residual-cost to gain speedup with less accurate mode decisions
  • Option --(no-)open-gop to choose between open and closed GOP
  • Option --set-qp-in-cu to move QP signalling into CU level for very specific use cases
  • Option --scaling-list to enable choose enable and choose scaling lists
  • Option --max-merge to set the maximum amount of merge candidates
  • Option --early-skip to speed up coding at the cost of worse results

Optimizations

  • Another version of interplation filters and fractional pixel motion estimation
  • AVX2 optimized sign bit hiding
  • AVX2/BMI2 optimized coefficient coding
  • AVX2 blending for biprediction
  • Improvements and AVX2 code for certain SAD functions

Building

  • ASM: marked stack non-executable

The old notes:

Features

  • Changed --rd=2 to use SSD metric for CU mode decision (662430d)
  • Changed inter search to check the cost of flushing residual to zero (75a8700)
  • Changed rectangular and asymmetric blocks to use a transform split (774c666)
  • Added diamond search ME algorithm (4e13608)
  • Enabled low delay B GOP structure with --bipred --gop=lp-g4d3t1 (7155dd0)
  • Added termination of intra search at zero residual with --intra-rdo-et (4fb1c16)

Optimization

  • Made TZ search faster and slightly better (c136044)
  • Optimized bi-prediction (69756e2)

Fixes

  • Fixed transform skip with rectangular inter blocks (fb462b2)
  • Fixed accidental inter search for 4x4 blocks (649113a)

User Interface

  • Changed options for all preset levels (f033ad0)
  • Added an option for limiting the number of steps in motion estimation with --me-steps (39ed368)
  • Added --me=dia (4e13608)
  • Added --level, --force-level and --high-tier for setting bitstream level and tier (bac0745)

Building

  • Fixed issue with struct timespec redefinition with Visual Studio 2015 and later (713e694)
  • Fixed building .asm files in Visual Studio 2017 (6be8195)
  • Fixed compatibility with crypto++ 6.0 (4b24cd0)
  • Added support for crypto++ with the name libcryptopp (411276d)
  • Dockerfile base image was updated to Ubuntu 18.04 (8380b6c)
  • Enabled -Wextra by default (ff17e0b)

Refactoring

BD-Bitrate

Average BD-Bitrate compared with v1.2:

Class 0-uf 1-sf 2-vf 3-fr 4-f 5-m 6-s 7-sr 8-vs
hevc-A -18.8 % -17.5 % -1.7 % -6.2 % -2.1 % -6.1 % -8.7 % -19.1 % -19.2 %
hevc-B -21.3 % -20.9 % -4.6 % -5.7 % -2.9 % -6.6 % -11.8 % -26.4 % -23.9 %
hevc-C -26.6 % -24.9 % -2.4 % -8.3 % -3.7 % -11.9 % -11.0 % -26.1 % -21.0 %
hevc-D -33.3 % -31.1 % -1.8 % -11.5 % -7.5 % -16.5 % -16.2 % -28.9 % -23.6 %
hevc-E -26.3 % -25.3 % -20.4 % -15.4 % -13.8 % -15.7 % -21.3 % -26.3 % -25.9 %
hevc-F -9.2 % -8.4 % -5.2 % -4.9 % -3.0 % -20.8 % -17.3 % 0.2 % 18.8 %
Total -22.7 % -21.5 % -5.7 % -8.4 % -5.3 % -13.2 % -14.4 % -21.3 % -15.4 %

Speedup

Average speedup compared with v1.2 on an Intel Xeon E5-2620 v4 machine:

class 0-uf 1-sf 2-vf 3-fr 4-f 5-m 6-s 7-sr 8-vs
hevc-A x0.88 x0.91 x1.02 x1.19 x1.37 x0.76 x0.93 x0.58 x0.36
hevc-B x0.90 x0.92 x1.08 x1.21 x1.40 x0.81 x0.99 x0.62 x0.38
hevc-C x0.87 x0.88 x0.96 x1.11 x1.24 x0.59 x0.72 x0.40 x0.26
hevc-D x0.92 x0.97 x1.03 x1.23 x1.34 x0.65 x0.74 x0.38 x0.27
hevc-E x0.97 x0.94 x1.08 x1.15 x1.34 x0.86 x1.05 x0.74 x0.54
hevc-F x0.81 x0.91 x1.01 x1.09 x1.30 x0.78 x0.88 x0.49 x0.35
Total x0.89 x0.92 x1.03 x1.17 x1.33 x0.74 x0.88 x0.53 x0.35