- 17 Aug, 2017 1 commit
-
-
Yushin Cho authored
Even if 'dist-8x8' is enabled with configure, the dist-8x8 is not acutally enabled (so, no change in encoding behaviour) until the command line option, '--enable-dist-8x8=1" is used. The cdef-dist and daala-dist can not be enabled by a command line option yet. This commit is a part of prep-work to remove DIST_8X8, CDEF_DIST, and DAALA_DIST experimental flags. Change-Id: I5c2df90f837b32f44e756572a19272dfb4c3dff4
-
- 10 Aug, 2017 2 commits
-
-
Jingning Han authored
Use the rate cost to replace the probability fetch. This improves the encoding speed of level map by 10%. No coding stats change. Change-Id: Iab0beac5da291eed50f657549667d4edffb4ead8
-
Urvang Joshi authored
This experiment is now adopted as it was cleared by Tapas. Note: Palette use can still be controlled by command-line option "--tune-content=..." in 'aomenc'. Change-Id: I832f49f20f60c34bdef5b424755849c496687e87
-
- 03 Aug, 2017 1 commit
-
-
hui su authored
AWCY results: PSNR PSNR HVS SSIM CIEDE 2000 -0.09 -0.04 -0.02 -0.03 On Google testsets: lowres -0.18% midres -0.20% Above results are obtained with --disable-ext-refs --disable-dual-filter --disable-loop-restoration --disable-global-motion --disable-warped-motion Change-Id: Iba58d5e5ec9a65d0afba29609aa2e379a80d7236
-
- 31 Jul, 2017 2 commits
-
-
Yue Chen authored
It is a refactoring patch, which aims to make the code ready for implementation of in-frame mode cost update in RDO. Also add mode cost update per sb row, but it won't affect coding results because cdf update in RDO is not there. Mode cost arrays are moved to MACROBLOCK because in multi-thread coding, threads share the same AV1_COMP. This patch does not have impact on coding results. Change-Id: I2e8f7d7d066b23ebfbfc998269023781f359a6ff
-
Yue Chen authored
Initialize mode cost using frame-level cdf. Also in rd selection stage, cdf is updated per 64x64. Performance gain 0.20% Still suboptimal since in real bitstream packing, cdf is updated per symbol. Per symbol update in RDO is work in progress. Change-Id: I5062af91d8b00e5bf4c08abd0a7bfb0e5b27a619
-
- 20 Jul, 2017 1 commit
-
-
Yushin Cho authored
A framework for computing a distortion at 8x8 luma block level during RDO-based mode decision search. New 8x8 distortion metric can be plugged in by way of this tool. Existing daala_dist now uses this experiment as well. Other possible applications that can make use of this experiment would be a distortion meric, which should apply at 8x8 pixels such as PSNR-HVS, SSIM, or etc. A rd_cost for final coding mode decision for a super block is computed for a partition size 8x8 or larger. For a block larger than 8x8, a distortion of each 8x8 block is independently computed then summed up. The rd_cost for 8x8 block with new 8x8 distortion metric is computed only when the mode decision of its sub8x8 blocks are completed. However, MSE distortion metric is used with sub8x8 mode decision. Thus, early termination is also determined with the MSE based rd_cost. Because the best rd_cost (i.e. the reference rd_cost) during sub8x8 prediction or sub8x8 tx is based on new 8x8 distortion while each sub8x8 uses MSE, the existing early termination cannot be used (And this can be the one of possible reason for the BD-Rate change with this revision). For a sub8x8 prediction, prediction mode for each sub8x8 block of a 8x8 block is decided with existing MSE and then av1_dist_8x8() is applied to the 8x8 pixels. (There is also av1_dist_8x8_diff, which can input diff signal directly) For a sub8x8 tx in a block larger than 8x8, instead of computing MSE distortion for each sub8x8 tx block, we wait until all sub8x8 tx blocks are encoded before av1_dist_8x8() is applied to 8x8 pixels. Sub8x8 prediction and transformas were most of tricky parts in this change. Two kind of distortions, for a) predicted pixels and b) decoded pixels (i.e. predicted + possible reconstructed residue), are always computed during RDO. In order to access those two signals a) and b) for a 8x8 block after its sub8x8 mode decision is finished, a) and b) need be properly stored for later retrieval. The CB4X4 makes the task of accessing a) and b) signals for sub8x8 block further difficult, since the intermediate data (i.e. a and/or b) for sub8x8 block are not easily accessible outside of current partition unless reconstruced with decided coding modes. Change-Id: If60301a890c0674a3de1d8206965bbd6a6495bb7
-
- 26 Jun, 2017 1 commit
-
-
Yushin Cho authored
Change-Id: Idafef140d3425a9a9f66cb8864a804c4d2a89a70
-
- 15 Jun, 2017 1 commit
-
-
Urvang Joshi authored
This was initialized from a const and never modified. But was still passed around and stored in multiple structs. Removed these 'rddiv' member variables and now RDOPT() and RDOPT_DBL() always use the const RDDIV_BITS directly. Change-Id: I1a8dfd2c8fa857d466ad1207b4f0dd6ec07eafb8
-
- 08 Jun, 2017 1 commit
-
-
Yushin Cho authored
For a tx size RD search with partition size >= 8x8 and tx size < 8x8, daala-dist function is applied to the whole partition after all tx blocks are encoded instead of each 8x8 sub block of the partition. Change-Id: I27d9e2960aa641f550096e32ebcdf8dfb4de79a6
-
- 02 Jun, 2017 1 commit
-
-
Jingning Han authored
Move the large stack allocation from stack initialization to dedicated mem space. This resolves the extremely large stack issue when ext-partition, motion-var, and high bit-depth are all turned on. BUG=aomedia:415 Change-Id: I85b77bbc6429093fcb0152176d9e237087d6bbd8
-
- 01 Jun, 2017 1 commit
-
-
Yushin Cho authored
The place where av1_daala_dist() is applied for sub8x8 partition is moved from sub8x8 mode decision functions to rd_pick_partition(). BD-Rate change by daala-dist with '--disable-var-tx' is: (AWCY, objective-1-fast, high delay mode) PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000 15.1558 | 12.9585 | 14.4662 | -3.8651 | -1.7102 | -9.2956 | 10.8686 In MSE probe mode: PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000 0.0429 | 0.0435 | 0.1651 | -0.0415 | 0.0850 | 0.0122 | 0.0546 Change-Id: I3b2ea916d41c48e433eb641adf44552e4725c198
-
- 31 May, 2017 2 commits
-
-
Alex Converse authored
Change-Id: I68f8cc50d81a0cac116c6f342202b85ad2e6e3b2
-
Alex Converse authored
Change-Id: Ib94d57b24d3276dd74abe151f740258d78ff430b
-
- 05 May, 2017 1 commit
-
-
Sebastien Alaiwan authored
Change-Id: I96e386678f6227f3ca735c9be2725cb9795b3296
-
- 27 Apr, 2017 1 commit
-
-
Luc Trudeau authored
Stores the reconstructed luma pixels for each transform block inside a prediction block. Rectangular transform blocks are supported. As for RDO, after all the modes have been tested for luma, an extra encoding is perform in order to store the reconstructed pixel values of the best mode. These values are then used for RDO on the chromatic planes. Change-Id: I354d9827e32fd41065f1b2ce02832d943a6fa156
-
- 24 Apr, 2017 1 commit
-
-
Alex Converse authored
cherry pick of libvpx commit 6554333b59cf773983c7cacbd832d754f75139e8 BUG=aomedia:443 Change-Id: Ifebdc9ef37850508eb4b8e572fd0f6026ab04987
-
- 10 Apr, 2017 1 commit
-
-
Angie Chiang authored
1) block_raster_idx is actually raster order only when tx_size is TX_4x8. It's very specific, so we should put it near to the place it's actually used. 2) Sync the meaning of block_idx on encoder/decoder sides Change-Id: I7d37a992cb773503e29f9c0d9d2586e580aa6173
-
- 27 Mar, 2017 1 commit
-
-
Angie Chiang authored
1) Add txb_entropy_ctx into MACROBLOCK_PLANE and PICK_MODE_CONTEXT 2) Add av1_get_txb_entropy_context() to compute the entropy context 3) Compute and sore the entropy context before av1_xform_quant() return Change-Id: Ia2170523af3163b9456f7c6a305c1e77ad2b23be
-
- 21 Mar, 2017 1 commit
-
-
Angie Chiang authored
This a simple implementation. We will use a more precise buffer size for tcoeff once the experiment functions correctly. Change-Id: Ib561974f21ee1b8d72ce407882ea2be3cf0b069f
-
- 16 Mar, 2017 2 commits
-
-
Angie Chiang authored
This draft version only pass compiling check, it's not working yet. The following goal is to use new coding system when doing bitstream packing but keep old coding system in RD loop. Change-Id: I224a1581d1cc5c67d73e71558fb77d9faf9c2470
-
Angie Chiang authored
Doing tokenize in the last step of RD loop and then doing packing tokens in bitstream packing phase is hard for debugging. Therefore, we create a frame-level buffer to store the txfm coeffs from the reconstruction in RD loop and then in bitstream packing phase, we can code the txfm coeffs directly. Change-Id: I999470eef6e038317a91585df2bdfc20aca3573e
-
- 23 Feb, 2017 1 commit
-
-
Jingning Han authored
Skip redundant computation of recon_variance value. Change-Id: I0ea1a3528f8bdc7095d9cc458ce0bd3a958989b4
-
- 22 Feb, 2017 1 commit
-
-
Jingning Han authored
Skip the 2x2 uv block rate-distortion optimization process in the non-reference positions in key frame encoding. Change-Id: I51112492fd79f9a1c205fba151f8658cea9ee85f
-
- 14 Feb, 2017 1 commit
-
-
James Zern authored
vs2013 is still supported, it still uses the old behavior which supports inline in c++ only. Change-Id: I74417c6c93774e55122bbbf1db0283e2c30fe63e
-
- 23 Jan, 2017 1 commit
-
-
Yushin Cho authored
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
-
- 18 Jan, 2017 1 commit
-
-
Urvang Joshi authored
These are under EXT_TX + RECT_TX experiment combo. Results ======= Derf Set: -------- All Intra frames: 1.8% avg improvement (and 1.78% BD-rate improvement) Video: 0.230% avg improvement (and 0.262% BD-rate improvement) Objective-1-fast set -------------------- Video: 0.52 PSNR improvement Change-Id: I1893465929858e38419f327752dc61c19b96b997
-
- 06 Jan, 2017 1 commit
-
-
Jingning Han authored
Replace hard coded 4x4 transform block step size assumption with scalable table access. Change-Id: Ib1cc555c2641e5634acdd91ca33217f00aeb0b89
-
- 04 Jan, 2017 1 commit
-
-
Angie Chiang authored
Change-Id: I6ce654b582f2a9d45a40bf22ba597b47d418a0be
-
- 07 Dec, 2016 1 commit
-
-
Guillaume Martres authored
Change-Id: I0e1954ca281df60e56c3b1a5dcd54c47c4256649
-
- 07 Nov, 2016 1 commit
-
-
Yushin Cho authored
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: https://github.com/xiph/daala/commit/fb51c1ade6a31b668a0157d89de8f0a4493162a8 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
-
- 04 Nov, 2016 1 commit
-
-
Yushin Cho authored
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: https://github.com/xiph/daala/commit/fb51c1ade6a31b668a0157d89de8f0a4493162a8 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
-
- 25 Oct, 2016 2 commits
-
-
Yaowu Xu authored
It is no longer used anywhere. Change-Id: I5d40664373d66821c5382f6155302b8719ce58c0
-
Brennan Shacklett authored
Seems to be dead code Change-Id: I17b3edc9e82d6a1da172a686522358a6b1a630e9
-
- 24 Oct, 2016 1 commit
-
-
David Barker authored
Previously, we assumed that av1_init_plane_quantizers is always called with segment_id == xd->mi[0]->mbmi.segment_id (and use the latter to derive the value of 'qindex' to use in the quantizer). But this is no longer true when supertx is enabled. This patch instead remembers the value of 'qindex' derived from the latest call to av1_init_plane_quantizers and uses that directly. Change-Id: Ifa1c5bf74cad29942ff79b88ca92c231bc07f336
-
- 21 Oct, 2016 1 commit
-
-
Jingning Han authored
Check the encoding statistics. If all the coding blocks use the max transform size, skip transform size coding in the frame header. Change-Id: I31cb16314e87f945d7e95a34a90a5536b3ed82d5
-
- 19 Oct, 2016 1 commit
-
-
Urvang Joshi authored
While we are at it: - Rename some variables to more meaningful names - Reuse some common consts from a header instead of redefining them. Cherry-picked from aomedia/master: 863b0499 Change-Id: Ida5de713156dc0126a27f90fdd36d29a398a3c88
-
- 18 Oct, 2016 1 commit
-
-
Yushin Cho authored
This is not used since the commint 00cd5de5, "Remove skip_recode speed feature". Change-Id: Ic03da6c0095f6285a3889d5d22e8aaa2e6cbfd79
-
- 17 Oct, 2016 1 commit
-
-
Yue Chen authored
To get ready for pulling AV1 to nextgenv2. Refactoring is done to make the code structures similar, especially for the motion search part. Change-Id: I5d7636394408d97de55394d668540f5627827983
-
- 14 Oct, 2016 1 commit
-
-
Urvang Joshi authored
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
-