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

488 Коммитов

Автор SHA1 Сообщение Дата
Yushin Cho 97d102eaff Enable ec-adapt automatically if pvq is enabled
Change-Id: Ib3797b7e0ea6050225a56464042deaa856f6a72f
2017-02-22 01:01:07 +00:00
Jean-Marc Valin 0143513080 Merging the dering and clpf experiments into a single experiment: CDEF
The result is identical to enabling both deringing and CLPF

Change-Id: I71db5ba9e21fcaf11ad87e94841eaf80be58c0a8
2017-02-18 21:30:54 +00:00
Rostislav Pehlivanov 002e7b7a03 Implement a new rate control system
This commit implements a new rate control system which was ported from
Daala's rate control system (which was based off of Theora's rate
control system) to the encoder. Its aim is to address the weaknesses of
the current rate control system and eventually serve as its replacement.

This is still work in progress. So far this commit only implements
support for single pass encoding for constant quality and bitrate
targeting.
Additional commits which implement two-pass support and the rest to
match the feature set of the current rate control system are coming
soon.

The rate control system hasn't been fully tuned (and will likely need
additional tuning as the encoder's development progresses) and does
contain some "hacks", to convert the quality to a quantizer value
(empirical) and to tweak the quantizer in between golden frames (which
uses some code from the current rate control system as well as code
which attempts to model what that code does), the latter of which is
only in the constant quality codepath.

Bitrate targeting works much better than the current rate control
system's targeting and will actually closely match the rate specified by
the user without the current rate control system's bursty behaviour.

Change-Id: I588fbfd2e80a3d21ce7176903115d6a96ef1700a
2017-02-17 00:18:53 +00:00
Nathan E. Egge 912672b616 Allow EC_MULTISYMBOL to be disabled with DAALA_EC.
It is now possible to use daala_ec without ec_multisymbol by running:
 ./configure --enable-experimental --disable-ec_mulitsymbol.

Change-Id: I55a0473b887846f01ef832059cdbe31aebebce05
2017-02-16 11:40:53 -05: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
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
Angie Chiang 76ebf7ce16 Turn on adapt_scan by default
Change-Id: Ibf160e83e7cb1c7dce8b40e7cbead48416440974
2017-02-10 17:45:35 +00:00
Alex Converse a9598cd6bf ec_multisymbol: Split off new new_tokenset experiment
The new_tokenset experiment replaces the unconstrained tokenset with a
multisymbol alphabet in an inventive way.

Tested configurations:
new_tokenset + ec_adapt, new_tokenset, ec_multisymbol

Change-Id: I846ab2e51c2a1dc3f2f9904ed8c47a8e98f853c5
2017-02-06 21:03:01 +00:00
Fangwen Fu 7b9f2b3b0d add horizontal tile dependence support
Change-Id: I1050b69045407381d4626b65a0bf6f35957a66f4
2017-02-04 00:45:16 +00:00
Tom Finegan 9d3076cf9e Add macosx Sierra (v10.12) support to configure.
Change-Id: Ib90be26f69c658a6be6e133097c41845db58b6e1
2017-02-03 08:42:49 -08:00
Ryan Lei 9b02b0e6cd deblocking_across_tiles->loopfilter_across_tiles
This commit renames deblocking_across_tiles to loopfilter_across_tiles, 
to get ready for dering and clpf integration.

Change-Id: Id25b051da9b1e5cb92f35a9619662597462d9537
2017-02-03 01:25:52 +00:00
Angie Chiang dbfec2a816 Add convolve-round experiment
Change-Id: I02a019b1c11b3ee4ae32d424cb6ef2f8ae554824
2017-02-02 17:40:40 +00:00
Zoe Liu 70ae8f09f1 Add the new experiment tag 'tripred'
This experiment implements the idea of the uniform tri-prediction,
which adds a 3rd inter prediction on top of the existing compound
inter bi-prediction. The final predictor for an inter-coded block is
the average of the compound bi-predictor and the third predictor,
which is indentified by a third reference frame and a third motion
vector.

Change-Id: I7ca8435a441960e7d9702fa09614ed7ae9d0ab02
2017-02-01 21:05:25 +00:00
Sarah Parker c2d3871501 Make global_motion work with ext_inter
Change-Id: I2a490e144099d7692296992528192c1f11d2c06f
2017-01-31 17:59:51 +00:00
James Zern 1c4a878f8b configure,cmake: remove -Wdeclaration-after-statement
this was superseded by the addition of -std=c99

BUG=aomedia:111

Change-Id: Ib89125b6f2e259b52ae35af26e882f9b02ef2c27
2017-01-25 16:02:46 -08:00
Debargha Mukherjee e75f735ee1 Increase stack size a bit to silence warning
ext-partition needs a slightly bigger stack.

Change-Id: Ib727cfd5b3526b18d8c7306ddb33a490bb885834
2017-01-25 05:10:23 +00:00
Fangwen Fu 8d164de25c enable explicit temp mv prediction signaling
Change-Id: Ieb2922c3df4ef4f8514b8a6df6f9a8fc45ef3cf4
2017-01-23 14:22:45 -08:00
Yushin Cho 7a428ba243 Add a new experiment, DAALA_DIST
This commit adds a new experiment, Daala's distortion function,
which is designed to better approximate perceptual distortion
in 8x8 pixel blocks.

This experiment is expected to work best with PVQ.

It measures the variance of overlapped 4x4 regions in the 8x8 area,
then uses these variances to scale the MSE of weighted frequency domain
distortion of 8x8 block.

Since AV1 calculates distortion in blocks as small as 4x4, it is not possible to
directly replace the existing distortion functions of AV1,
such as dist_block() and block_rd_txf().
Hence, there has been substantial changes in order to apply
Daala's 8x8 distortion function.
The daala distortion function is applied
after all 4x4 tx blocks in a 8x8 block are encoded (during RDO),
as in below two cases:
1) intra/inter sub8x8 predictions and
2) 4x4 transform with prediction size >= 8.

To enable this experiment, add '--enable-daala-dist' with configure.

TODO: Significant tuning of parameters is required since the function has
originally came from Daala thus most parameters would not work
correctly outside Daala.
The fact that chroma distortion is added to the distortion of AV1's RDO is
also critical since Daala's distortion function is applied to luma only
and chroma continues to use MSE.

Change-Id: If35fdd3aec7efe401f351ba1c99891ad57a3d957
2017-01-23 20:24:57 +00:00
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