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

44 Коммитов

Автор SHA1 Сообщение Дата
Urvang Joshi 102245da24 Make ALT_INTRA experiment work with EXT_INTER experiment.
Updates to enums and mappings as needed.

Change-Id: Ie3a71031c74a5d4caa5308f0e210ed23c2361e95
2016-12-02 01:43:42 +00:00
Sarah Parker 6fdc853e40 Refactor ext-inter to loop through all masked modes in rdopt
No change in performance

Change-Id: Ie105a7baf6a2c2258d3ef117e727957e4393f51b
2016-12-01 17:45:12 +00:00
Yue Chen 69f18e1a64 Add WARPED_MOTION experiment
Performance gain (REF_MV on by default)
WARPED_MOTION: 1.061%
WARPED_MOTION+MOTION_VAR: 2.917%
MOTION_VAR: 2.337%

Change-Id: I43f742a02cdd43d13ef333a0a15087062ad020ab
2016-11-29 14:57:31 -08:00
Urvang Joshi 6be4a54b89 Add a new intra prediction mode "smooth".
This is added as part of ALT_INTRA experiment.

This uses interpolation between top row and estimated bottom row; as
well as left column and estimated right column to generate the
predicted block.The interpolation is done using a predefined weight
array.

Based on experiments, the currently chosen weight array was created
to represent a quadratic curve, but can be tuned further if needed.

Improvement from baseline on Derf set:
ALL Keyframes: 1.279%

Improvement from existing ALT_INTRA:
ALL Keyframes: 1.146%

Change-Id: I12637fa1b91bd836f1c59b27d6caee2004acbdd4
2016-11-28 12:12:26 -08:00
Debargha Mukherjee 5a488a624c Some fixes related to 64x64 tx, ext-tx, supertx
Change-Id: I95455ed7e44f3a163c751bd8a89f6119c0055c71
2016-11-23 10:29:42 -08:00
iole moccagatta f25a4cf9e8 Add coef_interleave experiment
This commit adds an experiment to interleave the coding of transform
coefficients from YUV planes.  The experiment can be enabled at config
time by --enable-coef-interleave.

Change-Id: Ifd92f9c367304bca9732f13fa026eb8996363677
2016-11-21 17:53:56 +00:00
Angie Chiang 3963d632ad Clean up and turn on rd_debug for non-sub8x8 inter block
Change-Id: Ib56273c23b7c7cb7c44d5ed95078156f1b09144c
2016-11-11 16:20:42 -08:00
Sarah Parker 6fddd18f74 Add ability to have multiple compound modes for interinter
This is currently just a refactor and creates no change in performance.
It allows new compound types to be added easily in the future to
facilitate experiments with segmentation masks.

Change-Id: If48fed216d482454fabb45a304b4220ada0dbdee
2016-11-11 23:53:03 +00:00
David Barker cf3d0b00ae Remove Global_Motion_Params and GLOBAL_MOTION_TYPE
After https://aomedia-review.googlesource.com/#/c/5589/ ,
the Global_Motion_Params and GLOBAL_MOTION_TYPE types
are redundant, and can be removed in favour of
WarpedMotionParams and TransformationType respectively.

Change-Id: I33f3796e5c469e595fd012ccdb65a672dd1bb86c
2016-11-11 18:25:48 +00:00
Jingning Han 70e5f3f02b Support rectangular tx_size in recursive txfm partition
This commit supports the recursive transform block partition to
start with both square and rectangular transform block sizes.

Change-Id: Idaf29d50cb1f4876b43e5ba82c2609708c6b1926
2016-11-10 17:55:16 +00:00
Angie Chiang 7c2b7f2534 Replace rate distortion sse skip by RD_STATS in rdopt.c
This CL doesn't change any coding behavior.
The functions modified in this CL include
choose_smallest_tx_size()
choose_largest_tx_size()
choose_tx_size_type_from_rd()
txfm_rd_in_plane()
txfm_yrd()

This change make the code cleaner and will facilitate rd_debug
implementation

Change-Id: I19b1b2384dce8b46b28d4c9baf80ff92998d05b6
2016-11-08 22:32:02 +00:00
Jingning Han 6515afc6b9 Merge "Add min_tx_size variable to recursive transform block partition system" into nextgenv2 2016-11-08 19:14:33 +00:00
Yaowu Xu f6e958b604 Merge "Fix the bug that PVQ commit broke dering" into nextgenv2 2016-11-08 18:00:53 +00:00
Angie Chiang 13ea019574 Merge changes Ib9428dc9,Ide04717a,If1dba7d8,I6da97880 into nextgenv2
* changes:
  Merge rd_stats only when it is valid
  Let parentheses in handle_inter_mode be symmetric
  Add RD_STATS into MB_MODE_INFO
  Add txb_coeff_cost_map
2016-11-08 17:42:04 +00:00
Jingning Han e67b38aa7c Add min_tx_size variable to recursive transform block partition system
Replace max_tx_size with min_tx_size for transform type decision.

Change-Id: I64e39923a67903d52b381bd93eaac33b3400a201
2016-11-08 09:36:54 -08:00
Yushin Cho 48f84dbd1c Fix the bug that PVQ commit broke dering
Since PVQ's max block size equals to the max transform size,
daala's definition of OD_BSIZE_MAX was changed from 5 down to 4 to
use AV1's max trasform size 32x32. However, dering also uses
OD_BSIZE_MAX and assumes its value is 5, which caused dering
not working.

Change-Id: I9d82bb24adc7d57552a8e0a8a7e798e77d96fd4b
2016-11-08 08:15:57 -08:00
Yushin Cho 77bba8d30a New experiment: Perceptual Vector Quantization from Daala
PVQ replaces the scalar quantizer and coefficient coding with a new
design originally developed in Daala. It currently depends on the
Daala entropy coder although it could be adapted to work with another
entropy coder if needed:
./configure --enable-experimental --enable-daala_ec --enable-pvq

The version of PVQ in this commit is adapted from the following
revision of Daala:
fb51c1ade6

More information about PVQ:
- https://people.xiph.org/~jm/daala/pvq_demo/
- https://jmvalin.ca/papers/spie_pvq.pdf

The following files are copied as-is from Daala with minimal
adaptations, therefore we disable clang-format on those files
to make it easier to synchronize the AV1 and Daala codebases in the future:
 av1/common/generic_code.c
 av1/common/generic_code.h
 av1/common/laplace_tables.c
 av1/common/partition.c
 av1/common/partition.h
 av1/common/pvq.c
 av1/common/pvq.h
 av1/common/state.c
 av1/common/state.h
 av1/common/zigzag.h
 av1/common/zigzag16.c
 av1/common/zigzag32.c
 av1/common/zigzag4.c
 av1/common/zigzag64.c
 av1/common/zigzag8.c
 av1/decoder/decint.h
 av1/decoder/generic_decoder.c
 av1/decoder/laplace_decoder.c
 av1/decoder/pvq_decoder.c
 av1/decoder/pvq_decoder.h
 av1/encoder/daala_compat_enc.c
 av1/encoder/encint.h
 av1/encoder/generic_encoder.c
 av1/encoder/laplace_encoder.c
 av1/encoder/pvq_encoder.c
 av1/encoder/pvq_encoder.h

Known issues:
- Lossless mode is not supported, '--lossless=1' will give the same result as
'--end-usage=q --cq-level=1'.
- High bit depth is not supported by PVQ.

Change-Id: I1ae0d6517b87f4c1ccea944b2e12dc906979f25e
2016-11-06 22:18:01 -08:00
Angie Chiang 9a44f5fbc8 Add RD_STATS into MB_MODE_INFO
With RD_STATS in MB_MODE_INFO, we will be able to compare the results
from rate-distortion loop and the results from bitstream packing.

Change-Id: If1dba7d87126577a6f369ac087d4517f7cebb0c5
2016-11-06 12:21:34 -08:00
Angie Chiang 75f45814ba Separate coefficient cost of U/V planes in write_modes_b()
Change-Id: Ie3082db5b0fead8c322b2aeede4eff7cd723ea12
2016-11-04 11:12:44 -07:00
Angie Chiang d402282f69 Add token cost comparison in write_modes_b()
This is just partial implementation
Compare token cost of pack_mb_tokens/pack_txb_tokens with token cost
from rate-distortion loop. If there is any difference, dump out mode
info.

Change-Id: I46b373ee2522c5047f799f36baf7cec5fbc06f06
2016-11-04 11:09:24 -07:00
Jingning Han 7e9929736c Replace get_tx2d_size() with direct tx_size_2d[] table access
Change-Id: I20040cdb5d9fdbf6c50082e5e17b4cfbd1926b13
2016-10-31 12:39:33 -07:00
Jingning Han d4c65cdba4 Remove unused get_tx1d_width/height wrapper
Change-Id: Ie8bc40579720b8c402bbc8b23b6fd3a7a50834bb
2016-10-27 18:49:45 +00:00
Jingning Han 4e1737af64 Add depth to tx_size mapper to bit-stream coding
It serves as a helper function to integrate various transform coding
options.

Change-Id: I64e7d0c88ea10137fa1ff1072d865eb0054c2a25
2016-10-26 15:45:19 +00:00
Jingning Han c47fe6c64b Add block size in pixels lookup table
This prepares for the next refactoring to support 2x2 transform
block sizes.

Change-Id: Ia06bc487da34e853ef9323cd13e3d482e819db43
2016-10-21 16:47:08 -07:00
Angie Chiang b0f9968ac7 Merge "Remove the has_no_coeffs corner case" into nextgenv2 2016-10-21 18:16:45 +00:00
Jingning Han a6923f7f97 Unify set_contexts() function for encoder and decoder
Remove the separate implementations of set_contexts() in encoder
and decoder.

Change-Id: I9f6e9b075532faae0f74f885d9443589254258a7
2016-10-21 09:32:28 -07:00
Peter de Rivaz 130ca4d675 Remove the has_no_coeffs corner case
BUG=webm:1277

Change-Id: I052239e8a6c468da8704bdbbb663b59533c01be2
2016-10-20 19:38:26 +01:00
hui su 5db9743fbb Seperate FILTER_INTRA from EXT_INTRA experiment
Prepare for the av1/nextgenv2 merge.

Coding gain (%):

               lowres     midres
ext-intra       0.69       0.97
filter-intra    0.67       0.83
both            1.05       1.48

Change-Id: Ia24d6fafb3e484c4f92192e0b7eee5e39f4f4ee6
2016-10-19 21:40:49 -07:00
Arild Fuldseth 07441165fe Support for delta-q at superblock level
Change-Id: I4128af44776d1f361bddc1fdffb75ed2224dbfa5
2016-10-19 15:14:27 -07:00
Urvang Joshi 526484482a Code cleanup: mainly rd_pick_partition and methods called from there.
- Const correctness
- Refactoring
- Make variables local when possible etc
- Remove -Wcast-qual to allow explicitly casting away const.

Cherry-picked from aomedia/master: c27fcccc
And then a number of more const correctness changes to make sure other
experiments build OK.

Change-Id: I77c18d99d21218fbdc9b186d7ed3792dc401a0a0
2016-10-18 17:21:27 -07:00
Urvang Joshi b100db7c1d Wrap palette code inside CONFIG_PALETTE flag.
This flag was already added to aomedia/master, so bringing it back to
webm/nextgenv2, as part of an effort to get the two codebases in sync.

Change-Id: I2b933a6a160e4210d1411a9e7978149eb8553205
2016-10-14 13:42:02 -07:00
Yue Chen cb60b185c7 Renamings for OBMC experiment
To get ready for pulling AV1 to nextgenv2
Replace the experimental flag by MOTION_VAR. Rename major variables.

Change-Id: If6cf4f37b9319c46d8f90df551cc7295d66ca205
2016-10-13 15:51:22 -07:00
Debargha Mukherjee 3c42c09608 Further changes to new-quant tables
Refactor to streamline the number of profiles needed, in
preparation for the next steps.

NO change in performance.

Change-Id: I753b89299897857f3c250c316b4cdc4fedcb90e8
2016-10-01 17:59:28 -07:00
Yue Chen 49587a77f1 Fix unit test failure for RECT_TX + VAR_TX
Disable rect_tx because we only support 4x4 Walsh-Hadamard transform
in lossless mode.

Fixes failure in ./test_libaom --gtest_filter=*Large*ScreencastQ0/1
Configuration: --enable-experimental --enable-var-tx --enable-rect-tx
 --enable-ref-mv --enable-ext_intra --enable-ext_tx --enable-debug
 --disable-optimizations

Change-Id: Ib6b3494c7dcf7182f1cab9b138388d054851a23d
2016-09-29 09:20:52 -07:00
Yaowu Xu f5bbbfad1d rename pred_mv_s8 to pred_mv
Change-Id: Ib1088c3fc80952074e098385fe5eb81742e7dc59
2016-09-26 09:13:38 -07:00
Urvang Joshi cb586f3ba9 enums.h: Combine related #defines into packed enums.
enums for BLOCK_SIZE, TX_SIZE and PREDICTION_MODE.

Note: These were converted to #defines earlier to save on memory:
https://chromium-review.googlesource.com/#/c/269854/

But we, instead, use attribute 'packed' (see here:
https://gcc.gnu.org/onlinedocs/gcc/Common-Type-Attributes.html#Common-Type-Attributes)
to ensure that these enums use the smallest possible integer type,
and so use smallest memory when used in structs/arrays etc.

Change-Id: If1fc136686b28847109c9f3a06f8728165e7e475
2016-09-22 09:44:51 -07:00
clang-format 67948d312d apply clang-format
Change-Id: If22018f8911d9d7ee99c2127bdfcc56e42b0e2d7
2016-09-15 16:41:21 -07:00
James Zern 7b9407a81b s/INTERP_FILTER/InterpFilter/
this matches style guidelines and stabilizes successive runs of
clang-format across the tree. remaining types should be address in
successive commits.

Change-Id: I6ad3f69cf0a22cb9a9b895b272195f891f71170f
2016-09-09 00:32:31 +00:00
Debargha Mukherjee 2f12340ff0 Enable rectangular transforms for UV
Uses an array to map block sizes, y tx sizes, and subsampling
factors to various transform sizes for UV.

Results improve by 0.1-0.2%

Change-Id: Icb58fd96bc7c01a72cbf1332fe2be4d55a0feedc
2016-09-05 15:06:19 -07:00
Yaowu Xu ecee7f29d0 Merge "Change to use AOM copyright notice" into nextgenv2 2016-09-02 22:13:24 +00:00
Yaowu Xu 2ab7ff05f1 Change to use AOM copyright notice
Change-Id: I2b2b70e756b7eb9611b7b33b7d5f19b3b30e0a50
2016-09-02 19:52:03 +00:00
Debargha Mukherjee 3b52b3ac27 Some cleanups for unnecessary macros
Remove some macros that are no longer necessary for experimentation.

Change-Id: I959bf441c8333607df4aa1ee18841f189ade8112
2016-09-01 00:30:32 -07:00
Yaowu Xu f883b42cab Port renaming changes from AOMedia
Cherry-Picked the following commits:
0defd8f Changed "WebM" to "AOMedia" & "webm" to "aomedia"
54e6676 Replace "VPx" by "AVx"
5082a36 Change "Vpx" to "Avx"
7df44f1 Replace "Vp9" w/ "Av1"
967f722 Remove kVp9CodecId
828f30c Change "Vp8" to "AOM"
030b5ff AUTHORS regenerated
2524cae Add ref-mv experimental flag
016762b Change copyright notice to AOMedia form
81e5526 Replace vp9 w/ av1
9b94565 Add missing files
fa8ca9f Change "vp9" to "av1"
ec838b7  Convert "vp8" to "aom"
80edfa0 Change "VP9" to "AV1"
d1a11fb Change "vp8" to "aom"
7b58251 Point to WebM test data
dd1a5c8 Replace "VP8" with "AOM"
ff00fc0 Change "VPX" to "AOM"
01dee0b Change "vp10" to "av1" in source code
cebe6f0 Convert "vpx" to "aom"
17b0567 rename vp10*.mk to av1_*.mk
fe5f8a8 rename files vp10_* to av1_*

Change-Id: I6fc3d18eb11fc171e46140c836ad5339cf6c9419
2016-08-31 18:19:03 -07:00
Yaowu Xu c27fc14b02 Port folder renaming changes from AOM
Manually cherry-picked commits:
ceef058 libvpx->libaom part2
3d26d91 libvpx -> libaom
cfea7dd vp10/ -> av1/
3a8eff7 Fix a build issue for a test
bf4202e Rename vpx to aom

Change-Id: I1b0eb5a40796e3aaf41c58984b4229a439a597dc
2016-08-31 17:26:24 -07:00