An open-source HEVC encoder
Full Changelog: https://github.com/ultravideo/kvazaar/compare/v2.3.0...v2.3.1
--(no-)enable-logging
to enable/disable logging of normal encoder perfomance into stderr
, errors are still outputted to stderr
.The RD performance should be exactly the same as in v2.2.0 and configurations using RDOQ should be around 1-3% faster with the AVX2 optimizations
Full Changelog: https://github.com/ultravideo/kvazaar/compare/v2.2.0...v2.3.0
We now also have a VVC encoder called uvg266, which is available at github/uvg266. The majority of future development will go towards uvg266 but do not consider Kvazaar to be abandoned!
--rd 3
to its own option --(no-)intra-chroma-search
and fast bipred to --(no-)fast-bipred
--(no-)combine-intra-cus
for controlling whether the larger intra blocks are tried even when search at current depth is disabled--force-inter
for debugging purposes to force all PUs in inter slices to use best inter modeAverage BD-Bitrate compared with v2.1:
class | 0-uf | 1-sf | 2-vf | 3-fr | 4-f | 5-m | 6-s | 7-sr | 8-vs |
---|---|---|---|---|---|---|---|---|---|
hevc-A | 0.4 % | 0.7 % | 0.0 % | -0.1 % | 0.0 % | -1.1 % | -0.8 % | 0.2 % | -5.1 % |
hevc-B | 0.3 % | 0.4 % | -0.3 % | -0.6 % | -0.4 % | -1.7 % | -1.2 % | 0.1 % | -7.1 % |
hevc-C | 0.5 % | 1.1 % | 0.7 % | 0.5 % | 0.2 % | -0.8 % | -0.4 % | 0.4 % | -5.5 % |
hevc-D | 0.4 % | 1.5 % | 1.0 % | 0.6 % | 0.7 % | -0.3 % | -0.1 % | 0.4 % | -6.6 % |
hevc-E | -2.1 % | -1.7 % | -2.2 % | -2.5 % | -2.5 % | -1.4 % | -1.1 % | -1.1 % | -5.4 % |
hevc-F | -0.1 % | 0.2 % | -0.2 % | -0.2 % | -0.3 % | -0.6 % | -0.4 % | 0.1 % | -3.1 % |
total | 0.0 % | 0.4 % | -0.1 % | -0.3 % | -0.3 % | -1.0 % | -0.7 % | 0.0 % | -5.6 % |
Average speedup compared with v2.1 on an Intel Xeon W-2145 (8-core) machine:
class | 0-uf | 1-sf | 2-vf | 3-fr | 4-f | 5-m | 6-s | 7-sr | 8-vs |
---|---|---|---|---|---|---|---|---|---|
hevc-A | 1.09x | 1.10x | 1.12x | 1.14x | 1.15x | 1.08x | 1.04x | 1.10x | 0.68x |
hevc-B | 1.10x | 1.09x | 1.15x | 1.15x | 1.15x | 1.09x | 1.07x | 1.14x | 0.66x |
hevc-C | 1.11x | 1.06x | 1.11x | 1.14x | 1.14x | 1.07x | 1.08x | 1.03x | 0.75x |
hevc-D | 1.08x | 1.08x | 1.13x | 1.13x | 1.14x | 1.08x | 1.08x | 1.06x | 0.71x |
hevc-E | 1.07x | 1.08x | 1.11x | 1.14x | 1.14x | 1.08x | 1.10x | 1.12x | 0.62x |
hevc-F | 1.10x | 1.05x | 1.07x | 1.09x | 1.08x | 1.05x | 1.05x | 1.02x | 0.67x |
total | 1.09x | 1.08x | 1.12x | 1.13x | 1.13x | 1.08x | 1.07x | 1.08x | 0.68x |
Full Changelog: https://github.com/ultravideo/kvazaar/compare/v2.1.0...v2.2.0
Kvazaar 2.1 has been released!
With this release, the license was changed from LGPL2.1 to 3-Clause BSD, allowing more liberties in using Kvazaar.
--fast-coeff-table <file>
)--fast-rd-sampling
, --fastrd-accuracy-check
, --fastrd-outdir
), documented in rdcost-weight-tool/README.txt
--input-file-format=y4m
)--stats-file-prefix
)Kvazaar 2.0 has been released!
Since 1.3, the encoder has received such improvements and fixes that make this one of our most significant releases so far. It is only fitting to call this version 2.0.
Here are some of the more interesting changes in this release:
AVX2 optimizations are no longer enabled for MinGW GCC due to stack alignment issues. Use Clang for AVX2 support and therefore better performance.
--gop=16
--rc-algorithm oba
)--vaq
)--intra-qp-offset
, automatical by default)--zero-coeff-rdo
)--intra-bits
)--ml-pu-depth-intra
)...and several other improvements and fixes
Average BD-Bitrate compared with v1.3:
class | 0-uf | 1-sf | 2-vf | 3-fr | 4-f | 5-m | 6-s | 7-sr | 8-vs |
---|---|---|---|---|---|---|---|---|---|
hevc-A | -20.2 % | -21.4 % | -28.8 % | -24.8 % | -21.4 % | -23.5 % | -19.1 % | -11.3 % | -15.0 % |
hevc-B | -35.1 % | -34.5 % | -34.7 % | -31.8 % | -28.6 % | -29.5 % | -21.8 % | -11.4 % | -16.2 % |
hevc-C | -21.0 % | -23.6 % | -31.3 % | -27.7 % | -22.4 % | -23.5 % | -19.8 % | -12.9 % | -18.0 % |
hevc-D | -22.5 % | -26.6 % | -37.4 % | -33.2 % | -26.6 % | -25.3 % | -18.3 % | -10.8 % | -15.1 % |
hevc-E | -35.9 % | -34.9 % | -30.9 % | -29.8 % | -28.0 % | -30.4 % | -25.7 % | -19.0 % | -20.2 % |
hevc-F | -18.6 % | -17.7 % | -21.3 % | -19.9 % | -17.5 % | -15.2 % | -17.6 % | -26.8 % | -37.0 % |
Total | -26.0 % | -26.9 % | -31.1 % | -28.2 % | -24.4 % | -24.6 % | -20.3 % | -15.4 % | -20.6 % |
Average speedup compared with v1.3 on an AMD Ryzen 7 1700X machine:
class | 0-uf | 1-sf | 2-vf | 3-fr | 4-f | 5-m | 6-s | 7-sr | 8-vs |
---|---|---|---|---|---|---|---|---|---|
hevc-A | 0.90x | 0.75x | 0.80x | 0.78x | 0.93x | 1.11x | 1.21x | 1.23x | 0.95x |
hevc-B | 0.96x | 0.81x | 0.83x | 0.82x | 0.97x | 1.15x | 1.26x | 1.29x | 0.95x |
hevc-C | 0.94x | 0.78x | 0.73x | 0.70x | 0.83x | 1.12x | 1.22x | 1.26x | 0.86x |
hevc-D | 1.02x | 0.83x | 0.78x | 0.76x | 0.90x | 1.16x | 1.24x | 1.28x | 0.93x |
hevc-E | 0.95x | 0.84x | 0.91x | 0.89x | 1.06x | 1.45x | 1.56x | 1.42x | 1.16x |
hevc-F | 0.96x | 0.85x | 0.84x | 0.84x | 0.94x | 1.17x | 1.29x | 1.25x | 1.00x |
Total | 0.96x | 0.81x | 0.81x | 0.80x | 0.93x | 1.18x | 1.29x | 1.29x | 0.97x |
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:
--fast-residual-cost
to gain speedup with less accurate mode decisions--(no-)open-gop
to choose between open and closed GOP--set-qp-in-cu
to move QP signalling into CU level for very specific use cases--scaling-list
to enable choose enable and choose scaling lists--max-merge
to set the maximum amount of merge candidates--early-skip
to speed up coding at the cost of worse resultsThe old notes:
--rd=2
to use SSD metric for CU mode decision (662430d441c09a85d2de0106c3adbdd5c5f196f0)--bipred --gop=lp-g4d3t1
(7155dd0db72b0ecabe08ecd20db5ebaaefcaabc6)--intra-rdo-et
(4fb1c16c6198b2c1774743349c0a03a786314c4d)--me-steps
(39ed36830ef3411a50b56a06a73dad9a56e8390b)--me=dia
(4e13608b01ac18d543d500c582e2b5e72f9c92a1)--level
, --force-level
and --high-tier
for setting bitstream level and tier (bac07457ea078bcca582e9fefb327031a50574af)-Wextra
by default (ff17e0ba179fe06c9bd86795c709c1a513f1012b)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 % |
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 |
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.
--crypto=intra_pred_modes
(2b8ce5e47c2baa489466b31c0bc8aeab4ad07563)--erp-aqp
(26adef44929e5722a9dbec537b662a3d683d1f03)--owf=auto
and --threads=auto
(8c4a3473a85152d692d43eaa5e5f0b9fda73738e)--key
(2e130912cbdf8ce19b612c2f67bbcb551ec8a415)--sao=band
and --sao=edge
(8674c0f5eeee36f758e8838c898190e74c96d362)--rd=2
(2cad3173ecc7b8562bca5a138a560c45e1621a6f)--rd=0
(1ead9c0c39da6ec4868f2c034355378d932732c3)--gop=8
is used (#101, aae141f2d385dafe314b4143430158314ad74170)--gop=8
(#161, 2991962033900806b5ba8f59feabf6fe58a54d58)--mv-constraint=frametilemargin
constraining motion vectors too much (409d2114f0c92e7d174f83dc96cac1c14d94e528)--bipred
with --tmvp
(#160, 9974380cdd7398af885f4f0b599cc58cdd643b0e)kvz_config.roi.dqps
from uint8_t*
to int8_t
. Delta QP values for --roi
may now be negative. (79cb3a2fd32b56d5358c10dba8bd75b42c9d05fd)-Werror
. Run configure
with --enable-werror
to enable it. (033bc6bc45b0c6b200a4227208d2fa6263e09166)make check
now runs valgrind tests that used to only run on Travis. Programs ffmpeg
, valgrind
and TAppDecoderStatic
should be found from $PATH
(6bbe5e10cdaa71fdec4530852ef99c5203100520)search.c
(2c734760bc9f7f751775878c6250aa73ca2dde59)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 % |
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 |
I think there are enough new features to call this v1.1.0.
Average BD bitrate (QP 17, 22, 27, 32) v1.1.0 vs v1.0.0
Class | 0-uf | 1-sf | 2-vf | 3-fr | 4-f | 5-m | 6-s | 7-sr | 8-vs |
---|---|---|---|---|---|---|---|---|---|
A | -1.9% | -1.5% | -1.2% | -1.0% | -0.7% | -0.7% | -1.1% | -1.1% | -1.3% |
B | -2.2% | -1.3% | -1.4% | -0.8% | -0.5% | -0.6% | -0.9% | -0.8% | -1.0% |
C | -1.3% | -1.1% | -1.0% | -0.9% | -0.6% | -0.6% | -0.6% | -0.6% | -0.8% |
D | -1.1% | -0.9% | -0.7% | -0.7% | -0.6% | -0.5% | -0.1% | -0.2% | -0.4% |
E | -2.5% | -1.5% | -0.9% | -0.7% | -0.3% | -0.3% | -0.5% | -0.4% | -0.4% |
F | -1.6% | -0.7% | -0.9% | -0.8% | -0.5% | -0.4% | -0.7% | -0.7% | -0.7% |
All | -1.7% | -1.2% | -1.0% | -0.8% | -0.5% | -0.5% | -0.6% | -0.6% | -0.8% |
Average speedup (QP 17, 22, 27, 32) v1.1.0 vs v1.0.0
Class | 0-uf | 1-sf | 2-vf | 3-fr | 4-f | 5-m | 6-s | 7-sr | 8-vs |
---|---|---|---|---|---|---|---|---|---|
A | 1.03x | 1.02x | 1.01x | 1.01x | 1.01x | 1.02x | 1.07x | 1.09x | 1.16x |
B | 1.03x | 1.01x | 1.02x | 1.01x | 1.01x | 1.01x | 1.06x | 1.06x | 1.13x |
C | 1.03x | 1.02x | 1.01x | 1.01x | 1.01x | 1.01x | 1.07x | 1.07x | 1.16x |
D | 1.07x | 1.05x | 1.03x | 1.03x | 1.02x | 1.02x | 1.07x | 1.09x | 1.17x |
E | 0.99x | 0.97x | 0.98x | 0.99x | 0.99x | 0.99x | 1.00x | 1.02x | 1.05x |
F | 1.02x | 1.01x | 1.01x | 1.01x | 1.01x | 1.01x | 1.08x | 1.09x | 1.17x |
All | 1.03x | 1.02x | 1.01x | 1.01x | 1.01x | 1.01x | 1.06x | 1.07x | 1.14x |
Paramaters: --threads=4 --owf=1 -p64
It's been 9 months since last release. Now that the encoder just got 10x faster (on veryslow), and quite a bit faster and better on every other preset as well, I think it's time for a major verson bump.
Average BD bitrate (QP 17, 22, 27, 32) v1.0.0 vs v0.8.3
Class | 0-uf | 1-sf | 2-vf | 3-fr | 4-f | 5-m | 6-s | 7-sr | 8-vs |
---|---|---|---|---|---|---|---|---|---|
A | -16.4% | -26.9% | -27.5% | -31.0% | -11.2% | -11.9% | -11.3% | -6.7% | -4.8% |
B | -16.2% | -33.7% | -31.7% | -37.6% | -11.6% | -14.8% | -15.7% | -9.1% | -6.3% |
C | -7.0% | -17.6% | -28.0% | -31.2% | -8.3% | -9.0% | -11.3% | -7.1% | -8.1% |
D | -3.7% | -12.3% | -29.2% | -30.3% | -5.4% | -5.9% | -11.5% | -8.3% | -9.9% |
E | -28.4% | -42.6% | -33.5% | -39.4% | -22.6% | -28.5% | -20.3% | -7.0% | -0.7% |
F | -6.1% | -11.3% | -12.8% | -16.5% | -10.1% | -2.1% | 2.3% | 10.8% | 6.4% |
All | -13.0% | -24.1% | -27.1% | -31.0% | -11.5% | -12.0% | -11.3% | -4.6% | -3.9% |
Average speedup (QP 17, 22, 27, 32) v1.0.0 vs v0.8.3
Class | 0-uf | 1-sf | 2-vf | 3-fr | 4-f | 5-m | 6-s | 7-sr | 8-vs |
---|---|---|---|---|---|---|---|---|---|
A | 1.61x | 1.91x | 1.89x | 1.37x | 2.69x | 3.33x | 4.79x | 7.32x | 11.06x |
B | 1.65x | 1.98x | 1.96x | 1.46x | 2.67x | 3.36x | 4.79x | 8.15x | 13.89x |
C | 1.76x | 1.97x | 1.98x | 1.45x | 2.52x | 2.97x | 4.87x | 9.32x | 15.77x |
D | 2.09x | 1.87x | 1.81x | 1.32x | 1.97x | 2.36x | 5.13x | 8.78x | 12.65x |
E | 1.91x | 1.96x | 1.75x | 1.40x | 3.00x | 3.70x | 4.87x | 6.06x | 7.56x |
F | 1.84x | 1.83x | 1.74x | 1.41x | 2.86x | 2.98x | 4.60x | 8.18x | 13.58x |
All | 1.81x | 1.92x | 1.86x | 1.40x | 2.62x | 3.12x | 4.84x | 7.97x | 12.42x |
Paramaeters: --threads=4 --owf=1 --wpp -p64