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

470 Коммитов

Автор SHA1 Сообщение Дата
Alex Converse 55c6bdeb27 Add unpoison_partition_ctx experiment
At the edges of the picture only a subset of partitions are legal. Add
new contexts for these borders so they don't distort the probabilities of
the interior of the image where all partitions are legal.

Only include one context for each block size of each border direction
because so few blocks fall into these contexts to begin with.

objective-1-fast:
   PSNR | PSNR Cb | PSNR Cr | PSNR HVS |    SSIM | MS SSIM | CIEDE 2000
-0.0294 | -0.0911 | -0.2382 |  -0.0481 | -0.0441 | -0.0450 |    -0.0454

derf144: -0.135
lowres: -0.124
midres: -0.076
hdres: -0.078

Change-Id: I909b98eebb7e49273cde90154c8408febe334158
2017-01-18 01:27:55 +00:00
Yue Chen b2d26453dc Add NCOBMC experimental flag
NCOBMC (non-causal obmc) allows overlapped prediction that takes
mvs from blocks at positions with non-causal relation (e.g. at the
bottom, or to the right) to the current block.
This experiment will be a sub-experiment of MOTION_VAR, so will only
be effective when MOTION_VAR is on.

Change-Id: Ie3aa9591e1c15f5cc251664ea3c146210a5010cf
2017-01-12 01:27:04 +00:00
Zoe Liu 4a32b6053f Remove the unused experiment bidir_pred
Change-Id: Ie308a855c9c713dc7876ea171aa812ce57663c39
2017-01-09 17:37:37 +00:00
Angie Chiang 614442749e Remove ext_interp experiment flag
Change-Id: I8dcf7b4284da391c63ae5afc4b7637394b862cd8
2017-01-07 00:51:19 +00:00
Ryan Lei 7386eda0e0 Add an experiment to disable lpf on tile boundaries
This commit adds a new experiment to allow disabling of loop filtering
on tile boundaries. It is implemented by adding a syntax field
"loopfilter_across_tiles_enabled" into the uncompressed frame header. 
If it is set to 0, decoder and encoder will disables loop filtering for
block edges that are also tile boundaries.

Change-Id: Ib80bfd82d49c74f1ba46ae18ceedb30704ac8aa5
2017-01-04 04:59:42 +00:00
James Zern 56bf1a9533 configure: drop support for Visual Studio < 2013
this is a precursor to requiring toolchains to support c99

BUG=aomedia:111

Change-Id: Ic501ea074e738fe7870ce3f56fb6e87a509632fd
2016-12-20 04:56:23 +00:00
Yaowu Xu f12d4b0c43 Eanble warning of large stack size
This commit adds a compiler flag to gcc to warn stack size greater
than 300Kbytes.

Change-Id: I4bd0680de435373fc46bfd8d5b80a610dbaddad8
2016-12-19 23:54:41 +00:00
Thomas Davies 0090c8fb0a Turn on delta_q by default.
Also make sure that qindex is clipped to the quantizer range.

Change-Id: I3163da4b45e190f9ab34982d1bbbefa5cba7514e
2016-12-19 11:49:48 +00:00
Nathan E. Egge e0954ad6c0 Reverting the mandatory use of ans with ext_tile.
This patch reverts ca4782bb: Disable daala_ec when ext_tile is enabled.
Certain tests in superframe_test.cc were disabled for only ans that
 should have been disabled for both ans and daala_ec.
This was corrected in d526d0a8 and now the unit tests pass with
 --enable-daala_ec and --enable-ext_tile.

Change-Id: I76244bb4d687040dbd504475c31361933830943d
2016-12-15 19:03:35 +00:00
Yaowu Xu ca4782bb64 Disable daala_ec when ext_tile is enabled.
Experiment ext_tile is not compatible with daala_ec yet, this commit
disables daala_ec and enable ans if ext_tile is enabled.

A follow-up commit should resolve the underline conflicts within
ext-tile experiment.

BUG=aomedia:116

Change-Id: If60cb170e908a844dc8d22efce82f2a2c01b391b
2016-12-13 20:44:51 +00:00
Yaowu Xu a2cb61b2da Fix incompatibility between two experiments
ext_tile is not compatible with reference_buffer, this commit changes
to disable refrence_buffer when ext_tile is enabled.

BUG=aomedia:114

Change-Id: I6416f4c731bec1c4cfeab3cdb539f359627ed2e2
2016-12-13 04:33:08 +00:00
Debargha Mukherjee b878d817ad Adds two experimental tags
entropy_stats: to generate stats of various symbols encoded
masked_tx: new experiemnt for coding a smaller transform in a
           prediction block

Change-Id: I48baf0f1c37245c43031a9eda879ef49eee5e76b
2016-12-12 20:35:17 +00:00
Sarah Parker 2f6ce75e9a Add compound segment experiment flag
Change-Id: Id80f76ea2598daa93e693c5efe29b782abe33957
2016-12-10 00:38:37 +00:00
hui su eda3d7646c Add intra-interp experiment flag
intra-interp experiment allows intra prediction to use different
interpolation filters. It was part of the ext-intra in the nextgenv2
branch.

Change-Id: I27ab692494dc79bb92e457dbf9a72988577f1c6d
2016-12-09 23:12:38 +00:00
Thomas Davies 95ae0d6da5 Enable reference buffer by default.
Change-Id: I21eaa680b0b340da5401a2b893ad9c847495ab79
2016-11-29 09:50:48 +00:00
Thomas Davies f31227d8a5 Enable filter_7bit by default
Change-Id: Ic587cddf04053bced6325b3cd5ce1b963e783393
2016-11-29 09:50:29 +00:00
zhipin deng 6feef1d2bb remove the leftover of simp_mv_pred in the configure file
Change-Id: I21013412174a2edefdc5e30ece0e8e857b99ac5e
2016-11-23 20:20:20 +00: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
Jingning Han 125e72939c Enable ref_mv by default
Enable the ref-mv experiment by default.

Change-Id: Icb4f37aab0dc866430569f0ee82805de1498bee3
2016-11-20 22:38:11 -08:00
Arild Fuldseth (arilfuld) 5114b7bf71 Frame buffer marking enabling non-intra-based loss recovery
Change-Id: Iaaf9244678cde74cf3e216f3b8c9d293f206f27e
2016-11-09 13:26:32 +00:00
Alex Converse 1e4e29f776 Fix rans ec_multisymbol merge issues.
The rans experiment is dead. The ans experiment with the ec_multisymbol
experiment also turned on takes its place.

Change-Id: Ie9f30ec7cf73aae6b2ea580a7b1f208485a8a7a7
2016-11-09 01:25:29 +00:00
Nathan E. Egge f0481a590f Use --enable-daala_ec by default.
Change-Id: I9e2a8db4e59cb9c109e978e473749ebc4e910148
2016-11-07 21:11:31 -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 2b10128a55 Add rd_debug flag
rd_debug is a debug tool aim at finding discrepancy between rate-distortion
loop and bitstream packing.

Change-Id: I751c4121516c5e6368668229c77778880a9dcb9d
2016-11-03 10:25:50 -07:00
Yaowu Xu 09a4265725 Merge "simp-mv-pred integration with ref-mv" into nextgenv2 2016-10-30 19:54:41 +00:00
Yaowu Xu 2ae4214618 Merge "Add ec_multisymbol for common daala_ec and rans code" into nextgenv2 2016-10-30 17:15:28 +00:00
Yaowu Xu 58eeb100ab Merge "Handle entropy coder experiment dependencies" into nextgenv2 2016-10-30 16:22:27 +00:00
Yaowu Xu eaafb17d41 Merge "Add EC_ADAPT experiment for symbol-adaptive entropy coding." into nextgenv2 2016-10-30 16:21:47 +00:00
Deng ca8d24d4e1 simp-mv-pred integration with ref-mv
This commit adds simp-mv-pred experiment. The experiment is to work on
top of ref-mv experiment to save memory bandwidth and reduce the size
of line buffer needed in ref-mv experiment.

When compared to ref-mv, this experiment showed:
low-delay BDR gain: 0.03%
High-delay BDR gain: 0.01%
memory/memory bandwidth saving: 40%
local memory/gate count saving: 20%

Change-Id: Ic4006e041fc58ede411da83d0d730c464ebe1749
2016-10-29 22:26:48 -07:00
Alex Converse aca9feba82 Add ec_multisymbol for common daala_ec and rans code
The new ec_multisymbol experiment supersedes the rans experiment and is
used for multisymbol features that can be backed by either daala_ec or
rans.

This experiment is automatically enabled by ec_adapt and will try to
enable daala_ec or ans (in that order).

Change-Id: Ie75b4002b7a9d7f5f7b4d130c1aacb3dbe97e54f
2016-10-29 17:05:40 -07:00
Alex Converse 242558a21b Handle entropy coder experiment dependencies
Change-Id: I854c53d9379f820b5a78fcb53f9ef09bc6f9d9e7
2016-10-29 17:05:40 -07:00
Thomas 9ac5508f32 Add EC_ADAPT experiment for symbol-adaptive entropy coding.
This experiment performs symbol-by-symbol statistics
adaptation for non-binary symbols. It requires DAALA_EC or
RANS and ANS to be enabled. The adaptation is currently
based on a simple recursive filter and is taken from
Daala. It has an adaptation rate dependent on alphabet size,
taken from Daala. It applies wherever non-binary symbols
are encoded using Cumulative Probability Functions rather
than trees.

Where symbols are adapted, forward updates in the compressed
header are removed.

In the case of RANS coefficient token values are adapted,
with the exception of the zero token which remains a
binary symbol. In the case of DAALA_EC other values
such as inter and intra modes are adapted as CDFs are
provided in those cases.

The experiment is configured with:

./configure --enable-experimental --enable-daala-ec --enable-ec-adapt

or

./configure --enable-experimental --enable-ans --enable-rans \
    --enable-ec-adapt

EC_ADAPT is not currently compatible with tiles.

BDR results on Objective-1-fast give a small loss:

PSNR YCbCr:      0.51%      0.49%      0.48%
PSNRHVS:      0.50%
SSIM:      0.50%
MSSSIM:      0.51%
CIEDE2000:      0.50%

Change-Id: I3888718e42616f3fd87144de7f125228446ac984
2016-10-29 16:57:48 -07:00
Urvang Joshi 1252f75616 Merge "RANGE_CHECK: "==" || ">" is simply ">="." into nextgenv2 2016-10-28 23:55:01 +00:00
Urvang Joshi cd8ab904e1 RANGE_CHECK: "==" || ">" is simply ">=".
Also:
- For unsigned ints, don't check value >= 0 as that is always true.
- Add "-Wlogical-op" warning flag which would have warned that "logical
  'or' of collectively exhaustive tests is always true" before this
  patch.

Change-Id: Idf3bd312464397f2df19256fc69b22f345dc7753
2016-10-28 14:40:29 -07:00
Thomas Davies 80188d1546 Encode and decode multiple tile groups
This is a manual adaptation of the following commit from aom/master:
ce12003d60

The original commit message:

A tile group is a set of tiles in scan order.

Each tile group has a version of uncompressed and compressed headers,
identical apart from tile group parameters.
Encoding probability updates takes account of the number of
headers to control overheads.

The decoder supports arbitrary numbers of tile groups with
arbitrary number of tiles. The number of tiles in a TG is
signalled in the uncompressed header for that TG.

The encoder currently only supports a fixed number
of TGs (3, when error resilient mode is on) of equal size
(except possibly for the last one).

The average BDR performnce with 3 tile groups versus
anchor with error resilient mode and up to 16 tiles is:

NR YCbCr:      3.02%      3.04%      3.05%
PSNRHVS:      3.09%
SSIM:      3.06%
MSSSIM:      3.05%
CIEDE2000:      3.04%

Change-Id: I9b97c5ed733103b9160a3a5d4370de5322c00c0b
2016-10-28 11:52:13 -07:00
Ryan Lei 15149484ec Add parallel-deblocking experiment
This commit is a manual cherry-pick from aom/master:
42ff3881ac

Change-Id: I4a3cdb939b7b96a3aa27f6a00da7a0e73222f3f3
2016-10-26 09:20:47 -07:00
Arild Fuldseth 7acfabbc40 7-bit interpolation filters
Purpose:
-Reduce dynamic range of interpolation filter coefficents from 8
bits to 7 bits.
-Inner product for 8-bit input data can be stored in a 16-bit signed
integer.

Impact on compression efficiency:
-Marginal improvement, typically less than 0.5% BDR.

Change-Id: I58d1408307ae7d2a6f9de8965c5877b258703199
2016-10-25 10:18:55 -07:00
Yaowu Xu c76572af16 Merge changes Icfc16070,Ied47a248,I8af087d9,I322a1366,If04580af into nextgenv2
* changes:
  Palette: Use inverse_color_order to find color index faster.
  Rewrite some loops to avoid -Wunsafe-loop-optimizations warnings.
  Remove some useless casts
  Add compiler warning flag -Wextra and fix related warnings.
  Declare some array sizes to be constants (known at compile time).
2016-10-21 17:31:42 +00:00
Yaowu Xu 98a306a1b2 Merge changes I027a4f2a,Ide91d76f into nextgenv2
* changes:
  Add complier warning -wunused.
  angle estimation: Some renames/tweaks to sync with aomedia code.
2016-10-21 17:31:22 +00:00
Urvang Joshi d71a231c49 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.

Cherry-picked from aomedia/master: 4790a69

Change-Id: I322a1366bd4fd6c0dec9e758c2d5e88e003b1cbf
2016-10-20 15:49:16 -07:00
Urvang Joshi 3212dda94d Add complier warning -wunused.
Cherry-picked from aomedia/master: 953f086c

Note: related fixes were already part of webm/nextgenv2.

Change-Id: I027a4f2a540af5a304b358ddbf293965b4211b9e
2016-10-20 14:58:01 -07:00
Angie Chiang 8c2dc6f591 Add adapt_scan experimental flag
Change-Id: I1424690fa792b960a1cfb78bbcb37da6b9899ee6
2016-10-20 09:19:01 -07:00
Yaowu Xu cfc5ac5034 Merge "Partition the ans experiment into 'ans' and 'rans'" into nextgenv2 2016-10-19 22:58:05 +00:00
Arild Fuldseth 07441165fe Support for delta-q at superblock level
Change-Id: I4128af44776d1f361bddc1fdffb75ed2224dbfa5
2016-10-19 15:14:27 -07:00
Yaowu Xu dc8a2c523f Merge "Always send frame size explicitly" into nextgenv2 2016-10-19 22:00:40 +00:00
Yue Chen 0651eced9f Merge "Remove OBMC from the experimental configure list" into nextgenv2 2016-10-19 21:02:15 +00:00
Arild Fuldseth 842e9b030f Always send frame size explicitly
This commit changes to send frame size explicitly when
error_resilient_mode=1. Purpose is to allow parsing of bitstream
after a packet loss.

Change-Id: I7d1c010a465aa18914762cc1a3e61db377304c08
2016-10-19 12:35:12 -07:00
Alex Converse ec6fb649da Partition the ans experiment into 'ans' and 'rans'
The (new) ans experiment replaces the bool coder with uABS bools. The
'rans' experiment adds multisymbol coding.

This matches the setup in aom/master.

Change-Id: Ida8372ccabf1e1e9afc45fe66362cda35a491222
2016-10-19 12:03:15 -07:00
Yue Chen 48877de873 Remove OBMC from the experimental configure list
It was replaced by MOTION_VAR in commit cb60b18

Change-Id: I7ab625eef4dbae2e5585d9fa3b6873aa78b2c254
2016-10-19 18:45:34 +00:00
Urvang Joshi 66b1fcc924 Merge changes I3922dea2,I3bab2848,I21f7478a,Ida5de713,Ib9f0eefe, ... into nextgenv2
* changes:
  Fix warnings reported by -Wshadow: Part4: main directory
  Fix warnings reported by -Wshadow: Part3: test/ directory
  Fix warnings reported by -Wshadow: Part2b: more from av1 directory
  Fix warnings reported by -Wshadow: Part2: av1 directory
  Fix warnings reported by -Wshadow: Part1b: scan_order struct and variable
  Fix warnings reported by -Wshadow: Part1: aom_dsp directory
  Move STAT_TYPE enum to source file.
  Code cleanup: mainly rd_pick_partition and methods called from there.
2016-10-19 18:25:52 +00:00