Note: some of these warnings are enabled by a combination of -Wunused
(added earlier) and -Wextra.
Change-Id: I322a1366bd4fd6c0dec9e758c2d5e88e003b1cbf
There are lots of potential ways to speed up symbol lookup, but this is
faster than what is checked in, and matches what was used in the
benchmark.
Longterm the empty symbol should still be removed.
Change-Id: I2fb9347be578a07ea6f0615c19f50ddd5aace140
Cherry-pick Daala 211c2a41: Clean up EC tell() and tell_frac() functions.
Add a const qualifier to the od_ec_enc and od_ec_dec parameters of
the od_ec_enc_tell(), od_ec_enc_tell_frac(), od_ec_dec_tell(), and
od_ec_dec_tell_frac() functions.
Add an OD_WARN_UNUSED_RESULT to od_ec_enc_tell_frac().
Change-Id: Ia50e2fd75e98d8a03d993449d658b695cf56e6fb
Also port SIMD optimization of weighted sad/variance functions to
av1.
Coding gain improvement: 0.339/0.413/0.328 (lowres/midres/hdres)
Current coding gain: 2.437/2.428/2.294
Encoding time overhead: 17% (soccer_cif), 30% (ped_1080p25), was
12% and 18% without motion search
Change-Id: I101d6ce729f769853756edc8ced6f3a2b8d8f824
SIMD optimization for 1d blending functions in obmc mode, and some
code refactoring and cleanup.
(ped_1080p25.y4m, 150 frame, 2000 tb)
Encoding time overhead: +18.8% -> +18.1%
Decoding time overhead: +21.3% -> +8.7%
Change-Id: I9d856c32136e7e0e6e24ab5520ef901d7b1ee9c8
Move the av1_indices_from_tree() function from av1/encoder/treewriter.c
to aom_dsp/prob.c so that it can be used by both the encoder and
the decoder.
Change-Id: Ie43c599f425c3503b1ff93f0c77b5033a05b1bb4
Without first including ./aom_config.h in aom_dsp/prob.c the memmove
function is implicitly defined and causes a compiler warning.
Change-Id: I339d0389f10324a1085aba7d6492b2159a14da92
For now this is in its own experiment for benchmarking purposes, but it
will eventually be folded into the main ANS experiment.
Change-Id: Icdb54b6ca3c0191ba717d6d10aaaffb11e2bebea
While we are at it:
- Rename some variables to more meaningful names
- Reuse some common consts from a header instead of redefining them.
Change-Id: I75c4248cb75aa54c52111686f139b096dc119328
there are sse2 equivalents for all remaining variance implementations
ported from:
eea8ea8 vpx_dsp: remove mmx variance implementations
Change-Id: I7bec89102d5e703e1235cff5007df1963c1f8aa7
Adds ext-tx transforms to enums.h and adds implementations
for idtx and flip functions for FLIPADST. Note that 32x32 transforms
are now included for ext-tx only.
Change-Id: I8bc98ee63f35688064a64e51eb0873c2a31f8cac
Added aom_write_tree_cdf() and aom_read_tree_cdf() function calls to
bitwriter.h and bitreader.h respectively.
These calls take a multisymbol CDF and an index and directly encode the
symbol using the enabled entropy coder.
Currently only the daala entropy encoder supports this (enabled with
--enable-daala_ec) and a compile error is thrown otherwise.
Change-Id: I2fa1e87af4352c94384e0cfdbfd170ac99cf3705
Up-sampled the reference frames to 8 times in each dimension using the
8-tap interpolation filter. In sub-pixel motion search, use the up-sampled
reference frames to find the best matching blocks to increase the motion
search precision. This is enabled as a speed feature for speed 0 and
speed 1, and this is encoder-only improvement.
Overall PSNR: -1.456%(lowres); -0.430(hdres)
SSIM: -1.687(lowres); -0.551(hdres)
Change-Id: I2085d87e41f6b91d0221dc11dc7ffd003075ba2e
Add the av1_tree_to_cdf() macro which takes a aom_tree_index tree and
associated aom_prob probabilities and constructs a daala uint16_t cdf.
The av1_tree_to_cdf_1D() and av1_tree_to_cdf_2D() apply av1_tree_to_cdf()
across 1D and 2D arrays respectively.
Change-Id: If79fa5ae034263f279d7d0842493570885272fb2
When building with --enable-daala_ec, calls to aom_write_tree() and
aom_read_tree() will convert a aom_tree_index structure with associated
aom_prob probabilities into a CDF on the fly for use with the
od_ec_encode_cdf_q15().
The number of symbols in the CDF is capped at 16, and trees that contain
more than 16 leaf nodes are handled by splitting the most likely, e.g.,
highest probability symbols, first and coding multiple symbols if
necessary.
ntt-short-1:
MEDIUM (%) HIGH (%)
PSNR 0.000227 0.000213
PSNRHVS 0.000215 0.000205
SSIM 0.000229 0.000209
FASTSSIM 0.000229 0.000214
subset1:
RATE (%) DSNR (dB)
PSNR -0.00026 0.00002
PSNRHVS -0.00026 0.00002
SSIM -0.00026 0.00001
FASTSSIM -0.00026 0.00001
Change-Id: Icb1a8cb854fd81fdd88fbe4bc6761c7eb4757dfe
When building with --enable-daala_ec, calls to aom_write() and aom_read()
use the daala entropy coder to write and read bits.
When the probability is exactly 0.5 (128), then raw bits are used.
ntt-short-1:
MEDIUM (%) HIGH (%)
PSNR -0.027556 -0.020114
PSNRHVS -0.027401 -0.020169
SSIM -0.027587 -0.020151
FASTSSIM -0.027592 -0.020102
subset1:
RATE (%) DSNR (dB)
PSNR 0.03296 -0.00210
PSNRHVS 0.03537 -0.00281
SSIM 0.03299 -0.00161
FASTSSIM 0.03458 -0.00111
Change-Id: I48ad8eb40fc895d62d6e241ea8abc02820d573f7
Rename av1_write_tree() to aom_write_tree() and move it into bitwriter.h
to match aom_read_tree() in bitreader.h.
Change-Id: I49a2e418a4bb8d724cb033b787b650da0bc28833
Move code for reading and writing literals and reading trees to use
just the aom_read_bit() and aom_write_bit() function calls.
Change-Id: Id2bced5f0125a5558030a813c51c3d79e5701873
Cherry-pick ad0646c Slow pshufb removal in 3 intra prediction functions.
Replaced aom_d45_predictor_4x4_ssse3(), aom_d45_predictor_8x8_ssse3()
and aom_d207_predictor_4x4_ssse3() with
created aom_d45_predictor_4x4_sse2(), aom_d45_predictor_8x8_sse2()
and aom_d207_predictor_4x4_sse2() respectively.
It's mostly neutral or slightly worse than ssse3 in good cases and
better than ssse3 in the bad cases (but still worse than using the mmx
regs).
Change-Id: I40ef101cd8b2f20eaa3f0648536bd227c7ae9722
Cherry-pick d0e687b remove mmx sad functions
there are sse2 equivalents which is a reasonable modern baseline
Change-Id: I9b67ff6dd16e36179e48898257b277fee003c8be
This commit adds asserts to clarify value ranges in sum computations,
also corrects type conversion used in related calculations.
Change-Id: Ib6d574ec23e5c28ccd994dac26f973eb3920430d
This commit clarifies integer value range for vairables used in
several variance functions, also change to use proper type
conversion to reflect the value ranges.
Ported from libvpx/master: #a564b18d7fe6d348068619d2d8099cc6bf438a83
Change-Id: I94bf12a8567766003ec667b4ebe9b820596d54ca
s/AV1_ADST8/AOM_ADST8/
The code in idct8x8_msa.c and inv_txfm_msa.h fell out of sync with:
80edfa0 Change "VP9" to "AV1"
and
ff00fc0 Change "VPX" to "AOM"
the other instance in av1/encoder/mips/msa/fdct_msa.h was renamed to
AOM_ADST8. these modules could use further harmonization regarding AV1_
vs AOM_
Change-Id: I5beb01c1dd9ee998ba9bdcfd86adacd4ffce55c8