- 21 Aug, 2017 1 commit
-
-
Yaowu Xu authored
BUG=aomedia:685 Change-Id: I0698b281fbaff2e77a50f5dc9a10d752de6c6f79
-
- 17 Aug, 2017 3 commits
-
-
Yushin Cho authored
Use --tune=[cdef-dist|daala-dist] to enable them. Also, this commit set the use_activity_masking of PVQ as 0 by deafult, which means that PVQ assumes daala-dist is not used by default. Since we're currently not signaling which metric the encoder did use in the bitstream, the compile flag AV1_PVQ_ENABLE_ACTIVITY_MASKING will tell PVQ whether daala-dist is used or not. This commit is the last part of prep-work to remove DIST_8X8, CDEF_DIST, and DAALA_DIST experimental flags. Change-Id: Ia465b4d6fe64aac7f04852c8f9f4bac3409d2435
-
Sarah Parker authored
Currently the rate is never computed for the palette color indices. The code to compute the rate is inside av1_tokenize_palette_sb when dry_run == DRY_RUN_COSTCOEFFS, but av1_tokenize_palette_sb is only called when !dry_run. Change-Id: Ie33eae9e4bcf1997a22dc939f31001334cb2c399
-
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
-
- 16 Aug, 2017 1 commit
-
-
Zoe Liu authored
When ext-comp-refs is enabled, one-sided-compound is enabled by default, which ensures the use of ext-comp-refs is an extension of one-sided-compound. Both coding tools allow the use of same-sided reference frame pairs for compound prediction. Also, remove the dependency of ext-comp-refs on var-refs, i.e. these two coding tools can be independently enabled. They can still work together if both are enabled simultaneously. Change-Id: I3134e7e2956dc35d557fe814f5d801d473683650
-
- 15 Aug, 2017 2 commits
-
-
Urvang Joshi authored
This experiment has been adopted as it has been cleared by Tapas. Change-Id: I0682face60f62dd43091efa0a92d09d846396850
-
Debargha Mukherjee authored
1. Fixes logic for disabling global motion w/ resize. Turns off conditional write/read of global parameters since it does not work currenlty. To be fixed later. 2. Fixes call for av1_scale_if_required in encoder_frame_with_resize function 3. Remove asserts for the scaled convolve functions Change-Id: I6a0f18b5ab5cc819bc27ef9fc2f28b0e391643a0
-
- 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
-
- 07 Aug, 2017 1 commit
-
-
Cheng Chen authored
Enable vim to jump to correct corresponding braces, which is helpful especially when the function is long. Change-Id: Ibcf4f11df3e923e12bc33ec1656bb6dbd0451be6
-
- 04 Aug, 2017 1 commit
-
-
Rupert Swarbrick authored
Change-Id: I0c3772110e9fa62ac687bd99e290b5006bf3bd6c
-
- 03 Aug, 2017 2 commits
-
-
hui su authored
Compression gain: AWCY PSNR PSNR HVS SSIM CIEDE 2000 -0.42 -0.15 -0.38 -0.62 Google testsets lowres -0.18% midres -0.32% No obvious encoding speed changes observed. Change-Id: I888cf4b22b591d79d80b2d77c9eb10d84e5de722
-
Yaowu Xu authored
BUG=aomedia:676 Change-Id: I278e84de26d995419b85039f7b78b8324cadf3a3
-
- 02 Aug, 2017 2 commits
-
-
Zoe Liu authored
Compared against baseline with default enabled tools (except for ext-tx and global-motion for speed concern): altref2 -> altref2 + flex-refs lowres: avg_psnr -0.395% -> -0.460% midres: avg_psnr -0.418% -> -0.478% In particular, flex-refs improves the coding performance for the following 3 clips while no impact on all other clips: bowing_cif.y4m: avg_psnr 0.023% -> -1.022% pamphlet_cif.y4m: avg_psnr 0.454% -> -1.111% snow_mnt_480p.y4m: avg_psnr -0.162% -> -1.948% Change-Id: I612c1ae5feb1f07d8bd5aaf67e21a076445e10b9
-
Wei-Ting Lin authored
Also remove cost update in encodeframe.c as the cost is now updated through the function av1_fill_mode_rates in rd.c Change-Id: Ib670fd078320c706747429bb86e0265bc08356fd
-
- 01 Aug, 2017 2 commits
-
-
Zoe Liu authored
This CL adds the use of ALTREF2_FRAME to both single / comp reference prediction at the encoder side. In particular, the encoder keeps the distant altref as ALTREF, and uses the internal extra altrefs to refresh ALTREF2. Compared with the baseline (ext_tx and global_motion disabled simply for speed concern): (a) lowres: avg_psnr -0.395% ovr_psnr -0.393% ssim -0.329% (b) midres: avg_psnr -0.419% ovr_psnr -0.431% ssim -0.444% (c) AWCY High Latency: PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000 -0.6661 | -0.5988 | -0.6669 | -0.6993 | -0.6988 | -0.7303 | -0.6051 (d) AWCY Low Latency: PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000 0.0720 | -0.0505 | 0.1501 | 0.0670 | 0.0842 | 0.0517 | 0.0158 TODO list: (1) To have altref2 incorporated with ext-comp-refs; (2) To have altref2 fully work with new-multisymbol; (3) To re-collect the initial default probs/cdfs; (4) To tune the encoder gf group structure design for altref2. Change-Id: I6ad63fd65afa903d3bba20acdb68e3b67acf7fdf
-
Rupert Swarbrick authored
For some background, see this previous change in Gerrit[0]. What's going on here is that we only want to use a previous frame for motion vector prediction if the encoded sizes match. When scaling with superres, this means the size before upscaling. To check this correctly, we need to check prev_frame's width/height and compare it with the current frame. Without superres, prev_frame's width/height is stored in y_crop_width/y_crop_height so we can check that way. With superres, those numbers are after the scaling, so can't be compared with cm->width and cm->height. The previous code worked around this by comparing with cm->last_width and cm->last_height. That works because these are the width/height for the last encoded and shown frame and that frame *is* prev_frame if last_show_frame is true. Since this is the only case when we want to use prev_frame, they are the numbers we need. This patch simplifies the logic by storing the width/height in RefCntBuffer before any scaling and then checking that they match. The check for whether we can use motion vectors from a previous frame is factored out into a pair of inline functions in the header. frame_might_use_prev_frame_mvs() is true if it's possible that this frame could use motion vectors from a previous frame. This doesn't use knowledge of what prev_frame is: it just checks we're not in error resilient mode and aren't a keyframe. When this is true, a flag is signaled in the bitstream to say whether we actually want to use motion vectors from the previous frame. The second function, frame_can_use_prev_frame_mvs, is true if the current frame / previous frame pair is suitable for sharing motion vectors. This is a stricter test: the previous frame needs to be have been shown and not to have been intra_only, and it needs to have the same width/height as the current frame. If the re-assignment of prev_frame (just before the calls to frame_can_use_prev_frame_mvs()) were removed in some way, we could probably combine the two functions and often save a bit per frame header. The other slight tidy-up in the patch is to move re-allocation of the mvs buffer into onyxc_int.h: the code that did the allocation was duplicated between the encoder and decoder. [0] https://aomedia-review.googlesource.com/c/13806 BUG=aomedia:78 Change-Id: If25227fa24222fc05c56529c2ac9ddf1e1c36a84
-
- 31 Jul, 2017 4 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
-
Rupert Swarbrick authored
Since patch 52c5173e, update_stats() calls set_ref_ptrs on its local xd variable, which updates xd->block_refs. This means xd should not be const. Change-Id: Ia7b8e062e81497653d77f539e4aa403870c4fbb0
-
Rupert Swarbrick authored
This patch surrounds two uses of motion_mode_cost and motion_mode_cdf with preprocessor #if lines. Both uses were added by commit bdc8dab2. Change-Id: I7e4a74e97b9179e42bae6ee17e9b2094acb992f2
-
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
-
- 26 Jul, 2017 2 commits
-
-
Yue Chen authored
Change-Id: Ie2c34490dc50cb242bcd701308e6b55243883b15
-
Luc Trudeau authored
A separate prediction mode struct is added to allow for uv-only modes (like CfL). Note: CfL will be added as a separate mode in an upcoming commit. Results on Subset1 (Compared to 4266a7ed with CfL enabled) 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 Change-Id: Ie80711c641c97f745daac899eadce6201ed97fcc
-
- 24 Jul, 2017 1 commit
-
-
Todd Nguyen authored
- Modified temporal filter to take extra buffer parameter - Added bilinear interpolation, can be turned on by setting BGSPRITE_INTERPOLATION define to 1. - Added mean filter to bgsprite for blending modes - Bilinear interpolation is turned OFF by default - Mean filtering turned ON by default (was previously median filtering) - Allow for multiple references for alt_ref in encodeframe Change-Id: Icfe9054049339d353b4befff11e96c12ca73ed4e
-
- 21 Jul, 2017 1 commit
-
-
Thomas Davies authored
Tile groups are now an integral part of the codec. Change-Id: I620a88ec7a44b057d5cce0bf6cf602822a3339a9
-
- 20 Jul, 2017 3 commits
-
-
Yi Luo authored
- Split av1_update_boundary_info() into two functions to avoid unnecessarily checking which goes through each mi block. - av1_setup_frame_boundary_info() sets up frame level boundary, i.e. non-tile case, which is called in frame level only. - av1_setup_across_tile_boundary_info sets up tiles boundary, which is called per tile, in multiple tile case. - Decoder running time reduction: 8.72% (1080p, 25 frames, 4Mbps). Change-Id: I2fc42d4281c77bce4a7dab5d208347308cfbe579
-
hui su authored
Handle the first color index in the tokenization process, along with the other color indeices. This patch also includes some minor refactoring changes. Test results verify that there is no implact on compression efficiency. Change-Id: I7de51c18a52f337320331b5e8d63dfea3cf510f0
-
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
-
- 19 Jul, 2017 1 commit
-
-
Jingning Han authored
Use the row and column indexes to fetch txk_type, which allows the chroma components to derive the tx type from the corresponding luma components. It improves the coding performance of txk-sel by 0.18%. Change-Id: I3f4bca5839e13ae95e51053e76cd86fe58202ac9
-
- 18 Jul, 2017 2 commits
-
-
Alex Converse authored
Screen content tools can be forced on or inferred by color counting. This prevents the inferred status of the tools from getting clobbered when controls are evaluated. BUG=aomedia:656 This also fixes the build with --disable-palette --enable-intrabc Change-Id: If815a1eff2f9419117477f14cda143dd669c87c6
-
Alex Converse authored
This reverts commit 1b5328e0. This commit has some pretty negative consequences with block copy. I need to be able to force block copy on for arbitrary sequences while it is still in development, and I need to be able to keep the palette enable status between block copy and non-block copy runs. Change If815a1eff2f9419117477f14cda143dd669c87c6 will prevent allow_screen_content_tools from getting clobbered and still allow us to force it on. BUG=aomedia:656 Change-Id: I7a2f4207b5d2da35aec7870250e8b330c58a0e13
-
- 17 Jul, 2017 1 commit
-
-
hui su authored
Change-Id: I802c9e41ebfed090b5ad8300917aad5e16ad026a
-
- 14 Jul, 2017 2 commits
-
-
hui su authored
Change-Id: I2888bd8905253e02e3ac74597275cf56e5142d29
-
hui su authored
Always let the encoder decide if "allow_screen_content_tools" should be set. -The screen content detector(is_screen_content()) works fairly well. -Keeping the config control may lead to mismatches. For example, user may encode the 1st frame with the flag on, then turn the flag off for the 2nd frame via config control. On the decoder side, the flag is on for both frames, because the flag is only transmitted in the header of all-intra frame, i.e. the 1st frame in this example. BUT=aomedia:656 Change-Id: I0652fe2b9f8df19bfbf7ed7d3513205c80ea9c61
-
- 13 Jul, 2017 5 commits
-
-
Wei-Ting Lin authored
Transmit ncobmc modes only when the motion mode, ncobmc_adapt_weight, is selected. Change-Id: I19d6dd83278457b1867f8e2e5cd94d25f535fcaf
-
Urvang Joshi authored
Before this, this function was copied-and-edited from av1_build_inter_predictors_sby() and av1_build_inter_predictors_sbuv(). Also, some places used sb() one directly (like rdopt.c), while others used sby() and sbuv() separately (like encodeframe.c --> encode_superblock()). This was prone to errors, if someone mistakenly modified only one/two of the 3 functions. Now, we just reuse sby() and sbuv() functions in sb(). Verified that there's no change in output. Change-Id: If81d78e767cc3fa09f06094d4db36ff1eaea3e4f
-
hui su authored
BUG=aomedia:654 Change-Id: Ic77a456246f87acb59ae95ddd4c421e741a99789
-
Jingning Han authored
Use row and column indexes to fetch the txk_type value. Change-Id: I881d500c030e322d8aca9dccb6ff2870c9e1e392
-
Yue Chen authored
To make it compatible with frame_superres Change-Id: Id1560e1477a09cfd27a4b4f17468be9c76d09013
-
- 12 Jul, 2017 1 commit
-
-
hui su authored
Turn "allow_screen_content_tools" on when the source video has many blocks with only few different colors. The automatic detection is enabled by defualt (or with command line flag "--tune-content=default"). With "--tune-content=screen", the screen content tools are always turned on. On the screen_content test set, the "default" setting is less than 0.3% worse than the "screen" setting on keyframe encoding. Change-Id: Iac7ab8952c96531d1fae84da1823291f5987519c
-