Skip to content

v1.2.0

Compare
Choose a tag to compare
@Venti- Venti- released this 17 Nov 13:51
· 992 commits to master since this release

We are happy to release Kvazaar version 1.2. Since the last version, Kvazaar has obtained significant speedups at all presets and the compression efficiency has improved for the fastest presets. Please find the complete list of changes below.

Features

  • Intra prediction mode encryption with --crypto=intra_pred_modes (2b8ce5e)
  • Adaptive QP for 360° video with --erp-aqp (26adef4)
  • New selection algorithm for --owf=auto and --threads=auto (8c4a347)
  • Added an option to set the encryption key using --key (2e13091)
  • Added an option to limit SAO to band offset or edge offset only with --sao=band and --sao=edge (8674c0f)

Optimization

  • Reduced number of intra modes checked when using --rd=2 (2cad317)
  • Reduced inter-frame CTU dependencies caused by SAO (050e90d)
  • Changed to a faster calculation for coefficient costs when using --rd=0 (1ead9c0)

Fixes

  • Fixed long motion vectors not getting clipped (#158, 85e2a40)
  • Fixed order of pictures in reconstruction debug output when --gop=8 is used (#101, aae141f)
  • Fixed a use-after-free when encoding very few frames with --gop=8 (#161, 2991962)
  • Fixed a crash when video size is not a multiple of the smallest CU size (2f2405d)
  • Fixed invalid bitstream when QP is too large (382636d)
  • Fixed a race condition causing a deadlock (5f8e17d)
  • Fixed a memory leak in encryption (8654b48)
  • Fixed I-frames not being IRAP frames when using GOP (00c9f52, 841597e)
  • Fixed computing inter and intra costs with different metrics (afc13f1)
  • Fixed reliance on undefined behavior (b41f0fa, 924cf85)
  • Fixed --mv-constraint=frametilemargin constraining motion vectors too much (409d211)
  • Fixed using --bipred with --tmvp (#160, 9974380)

User Interface

  • Changed type of kvz_config.roi.dqps from uint8_t* to int8_t. Delta QP values for --roi may now be negative. (79cb3a2)
  • Changed PSNR display format (20d6444)

Building

  • Default to no -Werror. Run configure with --enable-werror to enable it. (033bc6b)
  • make check now runs valgrind tests that used to only run on Travis. Programs ffmpeg, valgrind and TAppDecoderStatic should be found from $PATH (6bbe5e1)

Refactoring

  • Removed duplicate code in inter MVP and merge candidate selection (4fb0783)
  • Removed duplicate code in intra reconstruction for luma and chroma (e944416)
  • Changed functions for writing the CU tree bitstream to use luma pixel coordinates (610c91b, f5eef7f)
  • Removed duplicate code in functions for writing intra CU bitstream with and without encryption (525a518)
  • Removed duplicate code in helper functions in search.c (2c73476)
  • Gathered function parameters for inter search functions into a single struct (2fa3d82)

BD-Bitrate

Average BD-Bitrate compared with v1.1:

Class 0-uf 1-sf 2-vf 3-fr 4-f 5-m 6-s 7-sr 8-vs
hevc-A -15.71 % -6.68 % -4.66 % -0.89 % -1.11 % -0.54 % +0.04 % -0.02 % +0.32 %
hevc-B -19.04 % -8.15 % -6.92 % -1.26 % -1.48 % -0.65 % -0.33 % -0.33 % -0.07 %
hevc-C -20.39 % -8.54 % -5.01 % -0.55 % -0.72 % -0.44 % +0.03 % -0.00 % +0.23 %
hevc-D -13.24 % -5.15 % -2.54 % -0.33 % -0.51 % -0.32 % -0.10 % -0.04 % +0.13 %
hevc-E -4.37 % -3.31 % -1.90 % -0.52 % -1.10 % -0.68 % -0.74 % -0.86 % -0.78 %
hevc-F -12.42 % -6.15 % -5.25 % +0.04 % +0.24 % +0.25 % +0.32 % +0.70 % +0.90 %
Total -14.80 % -6.59 % -4.68 % -0.60 % -0.78 % -0.39 % -0.13 % -0.08 % +0.14 %

Speedup

Average speedup compared with v1.1 on an Intel Core i7-4770 machine:

Class 0-uf 1-sf 2-vf 3-fr 4-f 5-m 6-s 7-sr 8-vs
hevc-A x1.07 x1.06 x1.10 x1.10 x1.09 x1.11 x1.10 x1.11 x1.10
hevc-B x1.06 x1.07 x1.09 x1.11 x1.09 x1.13 x1.12 x1.13 x1.14
hevc-C x1.22 x1.27 x1.32 x1.35 x1.33 x1.37 x1.39 x1.42 x1.41
hevc-D x1.34 x1.58 x1.64 x1.60 x1.58 x1.54 x1.55 x1.57 x1.54
hevc-E x1.20 x1.17 x1.16 x1.18 x1.16 x1.17 x1.16 x1.20 x1.19
hevc-F x1.25 x1.20 x1.20 x1.23 x1.20 x1.24 x1.24 x1.27 x1.27
Total x1.19 x1.22 x1.24 x1.26 x1.24 x1.26 x1.26 x1.28 x1.28