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

19728 Коммитов

Автор SHA1 Сообщение Дата
Nathan E. Egge 0f11c78dae Fix DAALA_EC when EC_MULTISYMBOL disabled.
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
2017-02-16 08:35:52 +00:00
clang-format 55ce9e0f35 apply clang-format
Change-Id: Ib1b5dde5d4c6479c968cd7d7a4a1d01abae1fcf6
2017-02-15 22:27:12 -08:00
James Zern c107183d0a .clang-format: update to 3.9.1
Change-Id: Ia3b00907f98330ecaf28832b2c0a68e42cf93d6e
2017-02-15 22:24:03 -08:00
Zoe Liu 1b672d3ff7 Make convolve_round compiled without dual_filter
Change-Id: I532e46b3947ca3f5898a2da61fb6b82c2f4bd5c6
2017-02-15 18:46:27 +00:00
Tom Finegan 1ba9bd89d7 Add MSVC win32 support to the cmake build.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: I3179fe9ec45ff1aab06cc8828d2bb34c141cca55
2017-02-15 17:58:31 +00:00
Tom Finegan 0b3c9052a8 Correct cmake intrinsic flag translation.
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
2017-02-15 17:48:28 +00:00
David Barker 15338d5f40 Speed up global motion determination
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
2017-02-15 15:09:40 +00:00
Nathan E. Egge 24f1a90441 Add flag for RAWBITS to use raw bits with DAALA_EC.
The use of raw bits is now disabled by default and can be turned on with:
 ./configure --enable-experimental --enable-rawbits
This commit has a negligible impact on rate.

subset1:

master@2017-02-14T18:57:22.282Z -> no_rawbits@2017-02-14T18:57:41.977Z

   PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
-0.0000 | -0.0000 | -0.0000 |  -0.0000 | -0.0000 | -0.0000 |    -0.0000

objective-1-fast:

master@2017-02-14T18:52:48.425Z -> no_rawbits@2017-02-14T18:52:04.489Z

   PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
-0.0001 | -0.0001 | -0.0001 |  -0.0001 | -0.0001 | -0.0001 |    -0.0001

Change-Id: I01e79e9f314565a64b224ca41047f7bd7fe33f70
2017-02-15 02:30:14 +00:00
David Barker 338e135ce7 Fix compile error with global-motion + highbitdepth
Change-Id: If6b80d302a24db35f0e214865ddcdaae195dc032
2017-02-14 23:18:43 +00:00
Yushin Cho 925e83c5f3 Clean up PVQ's bistream packing
Change-Id: Ic0d5a8ca3e3ef2a2a2d994fc57e291fc31a5cb2d
2017-02-14 11:22:53 -08:00
Debargha Mukherjee b3c43bc048 Add a macro to control use of domain txfm filter
Allows DomainTxfm filters to be turned off for experimentation.
Also expands the parameter set for the Self guided filters.

Change-Id: I68fdb8e079a2464d80b3a4a990005c49baaaf0b8
2017-02-14 18:00:48 +00:00
Debargha Mukherjee 0be0aa13b6 Fixes a bug introduced in ext-inter with cb4x4
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
2017-02-14 17:59:22 +00:00
Debargha Mukherjee 9275a7c150 Fixes a mismatch introduced in a previous patch
Fixes a mismatch introdcuded with ext-inter + motion-var in
https://aomedia.googlesource.com/aom/+/42d9610a797dbc778797c04445578eba514d4099

Change-Id: I9d357b6db8fdbfccc7d95aaa196d5d0574ef431b
2017-02-14 17:58:53 +00:00
Tom Finegan 87fdc289d4 Add MSVC support to the cmake build.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: Iced0b69e669aa39ff33a6ffa1dfc804d7ec9345f
2017-02-14 17:49:46 +00:00
James Zern 2b3496f43c rtcd.pl: tolerate mixed output line endings
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
2017-02-14 16:29:55 +00:00
James Zern d90eefebad av1/encoder/block.h: s/inline/INLINE/
vs2013 is still supported, it still uses the old behavior which supports
inline in c++ only.

Change-Id: I74417c6c93774e55122bbbf1db0283e2c30fe63e
2017-02-13 18:55:19 -08:00
Yushin Cho 4483ea210d Clean up pvq codes in bitstream packing
Change-Id: Id9e43dcda3e356296ca138ec913579822c514019
2017-02-14 01:12:59 +00:00
Tom Finegan 49c8585f44 Tidy up latest googletest update.
- Remove gtest files that aren't necessary in libaom.
- Correct the removals noted in README.libaom

Change-Id: Icb5dd6340334d5d0db0072ee0d101709cf785feb
2017-02-14 01:04:47 +00:00
Urvang Joshi 92b90f3022 Add comments about some default probability tables.
Change-Id: I070ee1acde80c99576d30f2611b6c653834b3e9b
2017-02-13 22:54:56 +00:00
Jingning Han 45e0d46182 Skip count update in error resilient mode
This fixes a decoding failure issue of adaptive scan order in the
error resilient mode.

BUG=aomedia:353

Change-Id: I4b09f168cd0e0efc843a05f82d7e1c05173ee629
2017-02-13 14:34:49 -08:00
Alex Converse 7fdf2d2f2b ans: Optimize rabs unbiased bit decode
Change-Id: Icb4ab1de851db9f4016af8757e17fcb935a2db5a
2017-02-13 21:01:51 +00:00
Alex Converse 8c687d2feb ans: Cleanup rans writing routines
* 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
2017-02-13 21:01:51 +00:00
Alex Converse 3920406821 ans: Use a subnormal initial state
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
2017-02-13 21:01:51 +00:00
David Barker e0b7151138 Fix compile error for global-motion without ref-mv
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
2017-02-13 18:20:24 +00:00
Tom Finegan a7ed143aa6 Remove RTCD sources from cmake targets other than aom_rtcd.
Change-Id: I1f715581e801f098097b44000d8e200a7d50f016
2017-02-13 10:14:35 -08:00
Tom Finegan e0157bc80b Add CONFIG_MOTION_VAR support to the cmake build.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: I196e343c25e31caffc214f609e5a2f7703b1202e
2017-02-13 10:14:25 -08:00
Tom Finegan 5cc19c231b Add CONFIG_EXT_INTER support to the cmake build.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: Ieec0ba8a7a6aec87a531a3daea09591034bb6d0f
2017-02-13 10:14:10 -08:00
Tom Finegan 64e8537ec5 Add CONFIG_ANS support to the cmake build.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: I917896f377ce16bc7035311c3ecc2a6a3414b93c
2017-02-13 10:14:00 -08:00
Tom Finegan e0abcb82f1 Add CONFIG_ACCOUNTING support to the cmake build.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: Ia60540f27e2e3d286528f5be3e3d7044e3f615d1
2017-02-13 10:13:49 -08:00
Tom Finegan 3e24dc5855 Add CONFIG_CLPF support to the cmake build.
BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: I6fa298e6b9dd6b40bd2322a1b78c79d35a34fa93
2017-02-13 18:11:22 +00:00
Tom Finegan 7a07ece23b Include googletest cmake support.
- 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
2017-02-13 18:11:11 +00:00
Tom Finegan 17ce8b170f Remove file base name collisions.
Change-Id: I1bf9002c159563d0e5238b26d1515ef305d416dc
2017-02-13 18:07:27 +00:00
Nathan E. Egge 71a2ea7737 Silence unused function warning with ANS.
The write_intra_mode() function is not called when compiling with
 --enable-ans and --enable-ec_multisymbol.

Change-Id: I86f9cdf554586194ecc1fba7264ea0cac86338a9
2017-02-13 14:48:53 +00:00
Angie Chiang 7a2af6ce2f Separate Y and UV planes' filter declaration
This allows Y and UV planes use different filter kernel

Change-Id: I524aa3f6ffbc439acee6660bdbaf5cf2059379b5
2017-02-13 02:19:46 +00:00
Angie Chiang e3a4c1c7e0 Pass plane into get_conv_params###
This CL allows us to use different interpolation filters for
YUV planes.

Change-Id: I9446d43ae2be5a9a48b8a4cb6efcac43df6196d5
2017-02-13 02:19:46 +00:00
Angie Chiang 6f938489dd Use 6-tap filters for smooth and smooth2 filter
Change-Id: I1bf9c2fcd664fb4012d67e420cac613eaca735a8
2017-02-13 02:19:46 +00:00
Jingning Han 5d0b310b33 Make adapt-scan support multi-thread encoding
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
2017-02-12 20:08:59 +00:00
Jingning Han cb51228307 Separate intra tx_size logic between var-tx and rect-tx
Skip rectangular transform block size coding for intra coded block
in var-tx mode, when the rect-tx is disabled.

Change-Id: If3a091d25f19bf4a67485b5d235bb3d7d0c2cd03
2017-02-12 20:08:51 +00:00
Angie Chiang 118bf67cb6 Implement shorter-tap first in convolve_round
The performance change is 0.004% on lowres

Change-Id: If3702ba6377ac42997e7d49b8959ff16fb182daa
2017-02-12 19:38:43 +00:00
David Barker befcc42572 Fix segfault with loop-restoration on x86.
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
2017-02-12 10:32:52 +00:00
Zoe Liu b05e5d10ce Add a new experiment of REF_ADAPT
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
2017-02-11 04:48:24 +00:00
Steinar Midtskogen f844e6eff9 Speed up CLPF when there's nothing to clip
Gives 7% speed-up in the CLPF processing (measured on SSE4.2).

Change-Id: I934ad85ef2066086a44387030b42e14301b3d428
2017-02-10 23:00:16 +00:00
Steinar Midtskogen 4f0b3ed8b8 Retune the CLPF kernel
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
2017-02-10 23:00:16 +00:00
Angie Chiang 76ebf7ce16 Turn on adapt_scan by default
Change-Id: Ibf160e83e7cb1c7dce8b40e7cbead48416440974
2017-02-10 17:45:35 +00:00
Angie Chiang 822eea3296 Exclusively uses 12-tap filter in convolve_round
Performance drop by 0.084% on lowres

Change-Id: I2bcaae96b68033a0af7a1da988505623bc14ed94
2017-02-10 16:55:53 +00:00
Thomas Daede 1dbda1b918 Convert PVQ coefficient handling functions to tran_low_t.
Change-Id: Iad2b526d65865cbcb2119aca21686563ca8e97fd
2017-02-09 22:07:36 +00:00
Alex Converse b13ce13c94 ans: Increase the base state to 1<<17.
ans_multion@2017-01-25T21:00:51.374Z ->
ans_multion_rabs17@2017-01-27T19:25:33.101Z
objective-1-fast
   PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
-0.0494 | -0.0494 | -0.0494 |  -0.0475 | -0.0484 | -0.0488 | -0.0497

Increasing the state any further seems to yield a compression drop.

Change-Id: Iacfd6af7e2b8a47c41033d61e338c5106bd3679c
2017-02-08 17:56:30 +00:00
Steinar Midtskogen 73ad523642 Add support for disabling CLPF on tile boundaries
Change-Id: Icb578f9b54c4020effa4b9245e343c1519bd7acb
2017-02-08 06:41:20 +00:00
Sarah Parker 42d9610a79 Avoid sending bits for the compound type for sub 8x8 blocks
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
2017-02-08 04:37:16 +00:00
Tom Finegan 0115691e3b Add CONFIG_INTERNAL_STATS support to the cmake build.
Includes CONFIG_AOM_HIGHBITDEPTH support for same.

BUG=https://bugs.chromium.org/p/aomedia/issues/detail?id=76

Change-Id: I99893c8c3c7e163383f7297d0df777c9c21822fd
2017-02-07 08:53:33 -08:00