When DAALA_EC is enabled, calls to aom_read_tree() and aom_write_tree()
would automatically convert the aom_tree_index and aom_prob into a CDF
and call the aom_read_cdf() or aom_write_cdf(), which causes an
error if DAALA_EC is enabled without EC_MULTISYMBOL.
This patch moves the conversion functions from daalaboolreader.h and
daalaboolwriter.h into bitreader.h and bitwriter.h respectively, and
only calls the conversion functions if EC_MULTISYMBOL is enabled.
This allows DAALA_EC to be enabled without EC_MULTISYMBOL and is a
bitstream change when both ANS and EC_MULTISYMBOL are enabled as calls
to read and write trees will automatically be converted into calls that
read and write cdfs.
Change-Id: Id2f9aa9b5113292998cadfe69e4ba547324643ac
MSVC only. Use the AVX/AVX2 flags only for AVX and AVX2. Ignore
the SSE flags since they're not needed with MSVC.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76
Change-Id: I0f3ac40ffb1f9c53a16272f0781df176317732f6
When global-motion is enabled, a considerable amount
of encoder time is spent in the functions in corner_match.c.
This patch optimizes those functions to be 3.5-4x as fast,
leading to an end-to-end encoder speed improvement
(on 20 frames of tempete_cif.y4m) of:
200kbps: ~26% faster
800kbps: ~19% faster
2800kbps: ~12% faster
Change-Id: I04d3f87484c36c41eb5a1e86e814f2accbe86297
Allows DomainTxfm filters to be turned off for experimentation.
Also expands the parameter set for the Self guided filters.
Change-Id: I68fdb8e079a2464d80b3a4a990005c49baaaf0b8
Wedges were wrongly indexed when cb4x4 was on.
Brings a bit of the gain back when ext-inter + cb4x4 are turned on
together.
Change-Id: Id2bd359e70546cf0ea9cf31656064711c9894177
strip the default eol from the config header line, then a '\r' if there
is one. this can occur if cmake used to output the header uses windows
eol, but the perl used expects newlines for instance.
Change-Id: I687415878b1a04fd94b12d7b3d3066f448630607
- Remove gtest files that aren't necessary in libaom.
- Correct the removals noted in README.libaom
Change-Id: Icb5dd6340334d5d0db0072ee0d101709cf785feb
This fixes a decoding failure issue of adaptive scan order in the
error resilient mode.
BUG=aomedia:353
Change-Id: I4b09f168cd0e0efc843a05f82d7e1c05173ee629
* Replace struct rans_sym parameter with values. It only had two entries.
* Document functions.
* Use longer variable names.
TODO: Refactor the unit tests.
Change-Id: Idad65117dab565786697015ef07070e1c308d963
This saves the cost of encoding one symbol per partition. Currently in
practice this is usually the last DCT token sign so it saves one bit.
Most of the time these gains aren't realized but occasionally it makes
the final state one byte smaller or saves one renormalization.
Change-Id: Ibe5dc5d3471f51f932164b32e3bf28fb7b914805
The reference frame handling in av1_find_mv_refs introduced
in https://aomedia-review.googlesource.com/c/6067/ broke the
compile when global-motion is enabled but ref-mv is not.
This patch adds the missing logic, allowing this case to compile
again.
Change-Id: I914887eb56d28a700b2917d086447bdbb314f35d
- Same googletest release (v1.8.0), new root in third_party.
- Update Android.mk and make build (include and file locations).
- Update cmake build (use googletest's cmake support).
- Update gtest include in all tests.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76
Change-Id: I5491a2ff3c8869263cd885872c815402236c20b1
The write_intra_mode() function is not called when compiling with
--enable-ans and --enable-ec_multisymbol.
Change-Id: I86f9cdf554586194ecc1fba7264ea0cac86338a9
This commit makes the adaptive scan order system support multi-
thread encoding. It fixes unit test failure issue associated with
AV1/AVxEncoderThreadTest.EncoderResultTest/0.
BUG=aomedia:353
Change-Id: I61cbf9531c8deab97fb3bb17428d0b2a63cf309a
Skip rectangular transform block size coding for intra coded block
in var-tx mode, when the rect-tx is disabled.
Change-Id: If3a091d25f19bf4a67485b5d235bb3d7d0c2cd03
The WienerInfo struct requires a 16-byte alignment on x86,
since it contains filter coefficients which are loaded using
SSE aligned load instructions. But on 32-bit x86, the default
alignment of aom_malloc/aom_realloc is only 8 bytes, leading
to occasional segfaults.
To fix this, rather than using aom_realloc to resize WienerInfo
structures, we always free and re-allocate them using aom_memalign
BUG=aomedia:345
Change-Id: Ib1b2a42d4a2fa215dcc81ea481c51271ab068a37
Noticed that some ALTREF_FRAMEs could have used compound modes for its
prediction but have been labeled as SINGLE_REFERENCE mode in the frame
header. This experiment is to remove the COMPOUND_REFERENCE mode from
the frame-level reference mode choices and only leave SINGLE_REFERENCE
and REFERENCE_MODE_SELECT the two choices in the frame header.
When turning on both ext-refs and ref-adapt, compared against ext-refs
itself, a small gain is achieved. In PSNR, the bitrate saving gains are
as follows:
lowres: Avg -0.120%; BDRate -0.128%
midres: Avg -0.155%; BDRate -0.128%
Change-Id: I2cfff8a6b7eaa65ef863dbdbc4dd086d3b586f8c
CLPF performance had degraded by about 0.5% over the past six months,
which isn't totally surprising since the codec is a moving target.
About half of that degradation comes from the improved 7 bit filter
coefficients. Therefore, CLPF needs to be retuned for the current
codec.
This patch makes two (normative) changes to the CLPF kernel:
* The clipping function was changed from clamp(x, -s, s) to
sign(x) * max(0, abs(x) - max(0, abs(x) - s +
(abs(x) >> (bitdepth - 3 - log2(s)))))
This adds a rampdown to 0 at -32 and 32 (for 8 bit, -128 & 128
for 10 bit, etc), so large differences are ignored.
* 8 taps instead of 6 taps:
1
4 3
13 31 -> 13 31
4 3
1
AWCY results: low delay high delay
PSNR: -0.40% -0.47%
PSNR HVS: 0.00% -0.11%
SSIM: -0.31% -0.39%
CIEDE 2000: -0.22% -0.31%
APSNR: -0.40% -0.48%
MS SSIM: 0.01% -0.12%
About 3/4 of the gains come from the new clipping function.
Change-Id: Idad9dc4004e71a9c7ec81ba62ebd12fb76fb044a
The only compound mode used with sub 8x8 blocks is COMPOUND_AVERAGE, so
we don't have to send anything in this case
Change-Id: I90d0162e5f7f1ad205e65094293cde2a48eb77b1