Граф коммитов

74 Коммитов

Автор SHA1 Сообщение Дата
Urvang Joshi 4790a69faa Add compiler warning flag -Wextra and fix related warnings.
Note: some of these warnings are enabled by a combination of -Wunused
(added earlier) and -Wextra.

Change-Id: I322a1366bd4fd6c0dec9e758c2d5e88e003b1cbf
2016-08-22 23:32:56 +00:00
Nathan E. Egge a5c4469dd8 Create aom_cdf_prob type for 16-bit probabilities.
Change-Id: I33899eca44300037816c9f20c965aa8311a1ef52
2016-08-22 18:56:30 +00:00
Nathan E. Egge 4bdf520588 Rename daala_read_tree_cdf() to daala_read_symbol().
Change-Id: I35f85bad88c637cea62577c546cdd5ced0e21bd6
2016-08-22 18:55:07 +00:00
Jingning Han 6272db0e50 Add 2x2 directional intra predictors
Change-Id: I43769ef173a7b77e2e50bfccb2e778099882799b
2016-08-22 17:03:57 +00:00
Jingning Han db9499190b Add 2x2 intra predictors
Add 2x2 DC, V, H, TM intra predictors.

Change-Id: I66937dcbdfbb47b6bc8e6fe9b079a2d5ee4368a9
2016-08-22 17:03:42 +00:00
Alex Converse 25729f1cbf Skip the empty symbol in ANS symbol lookup.
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
2016-08-19 21:14:41 +00:00
Nathan E. Egge 9ac7a9dc8c Rename aom_read_tree_cdf() to aom_read_symbol().
Change-Id: Ifc065eb3eee0960be2e085e7e18478bf91bf56dd
2016-08-18 20:23:34 +00:00
Nathan E. Egge b6ec638169 Fix warning when discarding const qualifier.
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
2016-08-18 20:23:25 +00:00
clang-format 6885324b5c apply clang-format
post DerivePointerAlignment change

Change-Id: Ibdabea5710ea364f45d70fff018d260355124817
2016-08-16 01:21:43 +00:00
Brennan Shacklett 1b5b67f6ce Fix style error in dkboolreader.h
Change-Id: I2fac92e356ed1c78039d63e9f8757e7df3d88756
2016-08-15 11:18:40 -07:00
Michael Bebenita 4c462788be Add aom_reader_tell() support.
Change-Id: I59bd910f58c218c649a1de2a7b5fae0397e13cb1
2016-08-10 21:33:24 +00:00
Yue Chen 72d3ba8a4c Add weighted motion search for obmc predictor
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
2016-08-01 21:39:42 +00:00
Nathan E. Egge 1904379544 Rename aom_write_tree_cdf() to aom_write_symbol().
Change-Id: I7c088c55f1c461063976d5bd84ff2026c4f3bc69
2016-07-29 06:56:52 -04:00
Yue Chen 2478bed556 Port SIMD optimization for obmc blending functions to av1
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
2016-07-26 20:01:00 +00:00
Nathan E. Egge 42792f3508 Move av1_indices_from_tree() to common code space.
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
2016-07-20 13:12:45 -04:00
Nathan E. Egge e7640c36d6 Fix bug in av1_tree_to_cdf_2D() macro.
Change-Id: Ic04e180b09745fab2230d05985770c41deea4fad
2016-07-18 21:27:08 +00:00
Nathan E. Egge 3413f2d2a3 Add missing CONFIG_DAALA_EC declaration.
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
2016-07-18 20:42:44 +00:00
Alex Converse 362888b911 Use rANS to code constrained token set.
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
2016-07-18 11:49:58 -07:00
Urvang Joshi 09eea2193d Fix warnings reported by -Wshadow: Part1: aom_dsp directory
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
2016-07-15 09:39:58 -07:00
Urvang Joshi da35bc9380 Remove a self-include!
Change-Id: I42676bd99080b75e1a23b4378dcc3044d37d54c0
2016-07-13 12:12:55 -07:00
Yaowu Xu f627a31d84 Prevent divide by 0
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=34

Change-Id: Idbcc5cf52d55b69ab0bb933828cfc88b79d9d04e
2016-07-12 16:55:52 +00:00
Alex Converse 2805d27443 Use remove some magic numbers in aom_rans_merge_prob8_pdf.
Change-Id: I0cefae17642d7adf1b9bd637ecb81b437629aa0c
2016-06-28 16:08:38 -07:00
Alex Converse e7a1d05be8 Use divide by multiply in the ans writer.
Change-Id: Ide4e9b3a605571ec41c265347217e103df8d0821
2016-06-28 13:54:38 -07:00
James Zern 4a71b0b5ac aom_dsp: remove mmx variance implementations
there are sse2 equivalents for all remaining variance implementations

ported from:
eea8ea8 vpx_dsp: remove mmx variance implementations

Change-Id: I7bec89102d5e703e1235cff5007df1963c1f8aa7
2016-06-28 02:16:30 +00:00
Sarah Parker 61e7c57160 Add IDTX and FLIPADST tx functions for EXT_TX
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
2016-06-27 10:49:09 -07:00
Alex Converse 6b7ef9e9b1 Use uABS instead of duck bool in the ANS experiment.
Change-Id: I3ba5f7061f7a76a76e5c906132f33d4110a0dd87
2016-06-24 23:08:14 +00:00
Alex Converse 25aaf40bbc Add a buffered ans coder
Change-Id: Iba36fc5f7af62ebef9637da58b6b6400124ef646
2016-06-22 18:11:36 +00:00
Alex Converse 87073de569 Add uABS and rANS reader and writer.
Change-Id: Ia3592c726c3fdad1310d4be9ee8691d9998614ad
2016-06-22 18:11:05 +00:00
Nathan E. Egge 667551d3d9 Add API for writing trees using a CDF.
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
2016-06-21 19:03:46 +00:00
Yunqing Wang e02752b05c Do sub-pixel motion search in up-sampled reference frames
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
2016-06-21 11:44:54 -07:00
Nathan E. Egge e049002c87 Add macro to build a simple cdf table.
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
2016-06-21 13:12:15 -04:00
Nathan E. Egge 4ffaaa987b Use Daala entropy coder to code trees.
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
2016-06-21 13:11:32 -04:00
Nathan E. Egge 2c78e5cc06 Silence clang-format code review warning.
Change-Id: Ic76de4a4c0c39924bf04c3c2fa9214d33bcee9fb
2016-06-21 13:05:11 -04:00
Nathan E. Egge 1c921d63cb Use Daala entropy coder to code bits.
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
2016-06-21 06:42:32 -04:00
Jingning Han f4b2926d01 Clear existing format issue in the codebase
Fix the clang-format warnings on the existing codes.

Change-Id: I8e9e781b6f68f41a7fbd0a2116f6b35290d73dc8
2016-06-20 16:51:10 -07:00
Nathan E. Egge 59f7dd6494 Add Daala entropy coder.
Change-Id: I2849a50163268d58cc5d80aacfec1fd02299ca43
2016-06-20 15:21:19 -04:00
Nathan E. Egge 33a143fa7a Move tree writing code into bitwriter.h.
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
2016-06-20 13:51:43 -04:00
Yaowu Xu fe4eb134f4 Fix ubsan warnings: aom_dsp/variance.c
This commit ports a change from libvpx to fix ubsan warnings.

Change-Id: I74d03f595306d2f6e2356a80440ad19df41d3f73
2016-06-17 17:57:45 +00:00
Yaowu Xu ac25cf4ecb Fix ubsan warning: aom_dsp/variance_sse2.c
This ports a change from libvpx to fix ubsan warnings.

Change-Id: I864164db368f5048d44ea9e2c42e995b4ac74c7b
2016-06-17 17:57:16 +00:00
Yaowu Xu 9f857fed0a Fix ubsan warning: aom_dsp/variance_avx2.c
This ports a change from libvpx to fix ubsan warnings.

Change-Id: I43e8d52c3df7b4f7b4e59f13dc9d0a5a0176f419
2016-06-17 17:56:55 +00:00
Yaowu Xu a91b59bd5d Fix ubsan warnings: aom_dsp/x86/variance_sse2.c
This commit ports a change from libvpx to fix many ubsan warnings.

Change-Id: I03b93843f1bd70402517602b43af383b01c6760a
2016-06-17 17:55:09 +00:00
Nathan E. Egge bc1ac15846 Refactor bitreader and bitwriter wrapper.
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
2016-06-16 12:25:47 -07:00
Alex Converse 9dd0b89824 Move and wrap the old vpx boolcoder.
This should make room for compile time pluggable replacements.

Change-Id: Ib7afcffa93bf664b89a49da21a20138127443292
2016-06-13 16:50:15 +00:00
Linfeng Zhang 36b4949eed Slow pshufb removal in 3 intra prediction functions. (from libvpx)
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
2016-06-08 15:36:10 -07:00
Linfeng Zhang 7056e3a0f2 remove mmx variance functions (from libvpx)
Cherry-pick d0ffae8 remove mmx variance functions

there are sse2 equivalents which is a reasonable modern baseline
Removed mmx variance functions:
vpx_get_mb_ss_mmx()
vpx_get8x8var_mmx()
vpx_get4x4var_mmx()
vpx_variance4x4_mmx()
vpx_variance8x8_mmx()
vpx_mse16x16_mmx()
vpx_variance16x16_mmx()
vpx_variance16x8_mmx()
vpx_variance8x16_mmx()

Change-Id: Ife4e67fe85e0012ca560a98831f69195c852a645
2016-06-08 06:10:18 +00:00
Linfeng Zhang c5de1def49 remove mmx sad functions (from libvpx)
Cherry-pick d0e687b remove mmx sad functions

there are sse2 equivalents which is a reasonable modern baseline

Change-Id: I9b67ff6dd16e36179e48898257b277fee003c8be
2016-06-08 05:35:16 +00:00
Yaowu Xu 738d5b19e8 Clarify valid value ranges
This commit adds asserts to clarify value ranges in sum computations,
also corrects type conversion used in related calculations.

Change-Id: Ib6d574ec23e5c28ccd994dac26f973eb3920430d
2016-05-20 07:26:23 -07:00
Yaowu Xu b101b1f47a Clarify value ranges
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
2016-05-19 07:40:47 -07:00
James Zern 5c02d1f532 fix mips msa build
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
2016-05-10 20:49:03 -07:00
clang-format a2dc61c7a6 apply clang-format
.c files were missed in the previous change

Change-Id: I9d22cd83e1f87472bfb09e6a38284396b2fcd860
2016-05-10 12:13:58 -07:00