- 28 Sep, 2017 18 commits
-
-
Ryan authored
AV1 encoder's logic for handling current_delta_lf_from_base value has a hole, which could cause enc/dec mismatch due to deblocking filter level mismatch. On the encoder side, when delta_lf is used. current_delta_lf_from_base value is only written into the bit stream when the following condition is true: ((bsize != BLOCK_LARGEST || skip == 0) && super_block_upper_left) i.e., it is only written into the bit stream when current mi is the top left corner of a super block, and it is not skipped or block size is not 64x64. this is applied to both INTRA and INTER blocks in write_mbmi_b(). And the following code is used to handle the case when the above condition is not true. if (!dry_run) { mbmi = &xd->mi[0]->mbmi; if (bsize == BLOCK_64X64 && mbmi->skip == 1 && is_inter_block(mbmi) && cpi->common.delta_lf_present_flag) { mbmi->current_delta_lf_from_base = xd->prev_delta_lf_from_base; } The idea is that if the above condition is not true, then the current_delta_lf_from_base should be reset to the previous delta lf, which is prev_delta_lf_frame_base. However, there is a hole in this logic. For INTRA 64x64 blocks, even it is skipped, the current_delta_lf_frame_base is not reset back to the previous delta_lf. So, in this case, decoder side won't receive any new delta_lf from bit stream, so it will use previous delta_lf. encoder side will use the new delta_lf value. this mismatch will cause final loop filter level calculation inconsistent in the deblocking stage and thus cause encoder and decoder mismatch. BUG=aomedia:826 Change-Id: I90c1dcca5da106e4f3e0bcba1ed539c1cd99c370
-
Ola Hugosson authored
This experiment offset the filter tile grid 8 pixels upwards. Deblocked pixels (rather than CDEFed pixels) are used for the 2 lines above and below the filter processing unit. The 8 pixel offset is the offset produced by deblock/cdef. This way the loop_restoration does not need additional line buffers in a single pass hardware implementation. Change-Id: I89e0831dc28413a5d3e02d7a426ce2885ab629d7
-
Monty Montgomery authored
They're unused, disabled in the prototype setup, but still built and complicating the already convoluted ifdef mess in TX experiment configuration. Don't leave dead code in the sourcebase. That's what SCM is for. Change-Id: Idb2adf597ac064c7b5027df8af1cf65054984aa4
-
Yi Luo authored
Function speedup sse2 v. C Predictor V_PRED H_PRED 4x8 ~1.7x ~1.8x 8x4 ~1.8x ~2.2x 8x16 ~1.5x ~1.4x 16x8 ~1.9x ~1.3x 16x32 ~1.6x ~1.4x 32x16 ~2.0x ~1.9x This patch disables speed tests to save Jenkins build time. Developer can manually enable them by using, --gtest_also_run_disabled_test flag in test command line. Change-Id: I81eaee5e8afc55275c7507c99774f78cc9e49f9a
-
Tom Finegan authored
Change-Id: I6d75d3955bd8dd2218fb07b36c10361e032eb66e
-
Tom Finegan authored
$GIT_EXECUTABLE was being passed as the value of CMAKE_INSTALL_PREFIX to pkg_config.cmake. Pass $CMAKE_INSTALL_PREFIX as intended. BUG=aomedia:814 Change-Id: I86126f472447eaa6a2196dca3a8c68fb4de9415a
-
Luc Trudeau authored
To facilitate HBD support, we extract the loop that builds the prediction from cfl_predict_block. This change does not alter the bitstream. Change-Id: Ie88d1c5872a90303b7fa0692fed8c2855e1d315f
-
Luc Trudeau authored
Pixels are subsampled when they are stored in the CfL prediction buffer. This allows to avoid having two buffers. No impact on the bitstream. Results on subset1 (Compared to parent) 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 https://arewecompressedyet.com/?job=cfl-avg-on-fly%402017-09-23T21%3A38%3A04.440Z&job=cfl-Sub-On-Store%402017-09-24T15%3A01%3A41.161Z Change-Id: If051e34d6d7078d77609542305a2afebef5cb177
-
Rupert Swarbrick authored
This is just a code cleanup, moving the calculation of cm->tile_rows and cm->tile_cols into get_tile_size, which is already calculating cm->tile_width and cm->tile_height. The patch also gets rid of a spurious AOMMIN and replaces it with an assertion. Change-Id: I46666c4a197ac26d4b3746d9ea6575dc4af0d570
-
Rupert Swarbrick authored
This patch slightly reorders the fields in yv12_buffer_config and then uses anonymous unions in order to make it possible to write code that iterates uniformly over planes. The patch also ports some code (mostly in yv12extend.c and aom_scale.c) to show how this can make things more concise. This should make no difference to the coded results. I think it's unlikely to have any significant performance impact (the reordered fields in a yv12_buffer_config only come to 17*4 = 68 bytes in total, so almost fit in a normal sized cache line). Change-Id: Iebb46344500b9df82915f34cfd193e189d712062
-
Jonathan Matthews authored
BUG:aomedia:824 Change-Id: I67bfd16a9ba994055ccbaf624c58117c7939d5c8
-
Thomas Davies authored
CDFs are used for coding and costs, so there is no need to base the CDF on the obsolete tree and remap filter indices. No change to common test conditions BDR. Change-Id: I441dd21b127bc07ba33eef8ddcfd147eef21d0d4
-
Ola Hugosson authored
This change enables using 13 taps for luma plane deblocking and 5 taps for chroma plane deblocking when pixels are in flat area. The aim for the experiment is to make sure that luma line 57 and chroma line 29 of the current superblock is not changed by the deblocking process of the superblock below. Previously this was already the case for luma line 56 and chroma line 28 (but not for 57 and 29). This experiment is part of an effort to reduce the overall line buffer size for DEBLOCK+CDEF+LR. With this change it is possible to CDEF line -8 to +55 direcly on the output of deblock (which require line +56 and +57 to be final). Change-Id: I7779a08d6ad5683bf35c3372b1526786eaac8472
-
Urvang Joshi authored
This has been cleared by Tapas. Change-Id: Ie62ffe84d2b285ae83939e7bcc354c2964fb5938
-
Sebastien Alaiwan authored
Also, print the actual out-of-bounds values, instead of just printing the input buffer. Change-Id: Ia6b73d98e41c3285d8fd9f39963f9d556d2d95f7
-
Sebastien Alaiwan authored
Change-Id: Ic1aa7dfd4da4e9e29318665d5ecff7ea75fd41e9
-
Debargha Mukherjee authored
Re-enables most of the previously disabled tests. The ones that are still disabled expect resize to be triggered through rate control, which is no longer supported in Av1. Change-Id: Ie5e9ba3eb0843cd44ff1ac988500081470ba0fe2
-
Luc Trudeau authored
Instead of storing the transform block average, it is immediately subtracted from the subsampled pixels. This change does not alter the bitstream and it reduces CfL complexity. Change-Id: Ia5038b336abf1ec01e295b235734318906d3bae6
-
- 27 Sep, 2017 22 commits
-
-
Angie Chiang authored
Change-Id: Ia33e9962fce962e4f45281537d3e90b4d88543a5
-
Rupert Swarbrick authored
With convolve round, tmp_buf32 should be set to tmp_buf rather than tmp_dst because we want the actual pointer value rather than the funky rescaled one when the frame is high bit depth. Change-Id: I614ca1ebb4b6db8c4957fdced9dc2009a7ac107e
-
Pavel Frolov authored
This fixes global motion read/write mismatch. Minimal test case would be 3 encoded frames with: 1) frame0: KEY frame 2) frame1: INTER frame with refresh_frame_flags not 0x00 and not 0xFF, say 0x01 (refresh first slot) 3) frame2: INTER frame with all reference indices equal to 3 (i.e. no reference to frame1) When decoding frame2 decoder will use cm->prev_frame=frame1 for gm params decoding, then switch to cm->prev_frame=frame0 for the rest of the frame. This makes frame2 dependent on frame1 which is not used as reference. And also it is different from what encoder does. BUG=aomedia:750 Change-Id: I42ba19c03d909286af12ba3149910693a12249e8
-
Luc Trudeau authored
When using uv_mode the corresponding enum is the UV_PREDICTION_MODE not the PREDICTION_MODE enum. Change-Id: I44b19e4db5947a2d44281430b34ed61b82f999eb
-
Luc Trudeau authored
The buffer width and height are updated after adding to padding data to the CfL buffer. This way, padding is not repeated. This change does not alter the bitstream Change-Id: I7e709fc4e18b03a516b1345099b334c9d33d71aa
-
James Zern authored
Change-Id: I612517c6218c561ee94888c8c14298964851484a
-
Cheng Chen authored
Change-Id: I24d129aceb66e00388bedf98bc8e46524c0812eb
-
Thomas Davies authored
Enable the RESTRICT_COMPRESSED_HDR experiment when NEW_MULTISYMBOL is on and apply when there is no backward update also. Change-Id: I5f6812df2cb3f9bc32fe533b2689fd51235aedbc
-
James Zern authored
and to CONFIG_LIST + CMDLINE_SELECT. the experiment list should now match cmake Change-Id: I724d35b3a16ed5c641207525949093bc0caf4a49
-
Angie Chiang authored
Change-Id: I8080a860c32d465810a960bf25f4299c40122937
-
Angie Chiang authored
Add function get_binary_prob_new in aom_entropy_optimizer.c. This function add "+1" to both 0 and 1 counters such that it won't generate extreme probability when both counters are small Change-Id: I759d6e1cfedaf1c36281b523c26e7a7d1cad147c
-
David Barker authored
When deciding whether the top-right or bottom-left blocks are available, we currently always act as if we're using 128x128 superblocks. This means that, when using 64x64 superblocks, we sometimes conclude that blocks are available when they haven't been decoded yet! This typically happens at, for example, mi_row=15, mi_col=16 (for bottom left), where we're at a 64x64 boundary but not a 128x128 boundary. This patch fixes the issue by checking based on the signalled superblock size. Note: Most of this patch is just threading 'cm' through the intra prediction process, so that we have access to cm->sb_size in has_top_right() and has_bottom_left() Change-Id: I126964c510aafffc870e7cd8b3e64a46abb14b3a
-
Dominic Symes authored
This patch is designed to complete the CONFIG_MAX_TILE experiment. It adds the following features: - Explicit tiles of same width can be signalled with command line --tile_width - Explicit tiles of same hieght can be signalled with command line --tile_height - max_tile now works with the depenedent horizontal tiles experiment - additional checking added to ensure maximum number of rows/columns <= 64 - one fix to the tile group code for when the number of tiles is not a power of two Change-Id: I749a68fdb3dcdd8d1ced2b3558f3817e4b832c06
-
Ryan authored
inside the encode_super_block function, the tx_size decision logic is different in the dry_run==0 and dry_run==1 case when segment is lossless. this change fix the inconsistence. BUG=aomedia:819 Change-Id: I2f4c5434d8c4ef722ac885a1ffd2d253863ae6d9
-
Pavel Frolov authored
This fixes decoder's capability to start decoding bitstream from non-KEY intra_only frame. BUG=aomedia:816 Change-Id: Iecd5add418590119f59a51acd7208eb08cb17042
-
Yi Luo authored
Add lowbd unit test functionality to intrapred_test.cc Function speedup against C (i7-6700): Predictor DC LEFT TOP 128 4x8 ~1.4x ~1.4x ~1.7x ~1.9x 8x4 ~1.2x ~1.6x ~1.6x ~2.6x 8x16 ~1.4x ~1.3x ~1.4x ~2.1x 16x8 ~2.0x ~1.8x ~2.3x ~2.1x 16x32 ~2.0x ~1.9x ~1.8x ~2.2x 32x16 ~2.0x ~2.0x ~1.9x ~2.2x Change-Id: I33db512020ca3c6853a9205a8079f3d00134f584
-
Luc Trudeau authored
Since Subsampled values are in Q3, one does not need to take the average, as the sum of 4 values is the average in Q2. As such, shifting by 1 to the left, results in the average in Q3. By removing the intermediate step in Q0, rounding error is removed. Results on Subset1 PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000 -0.0204 | -0.1945 | -0.1474 | -0.0170 | -0.0237 | -0.0178 | -0.0973 https://arewecompressedyet.com/?job=cfl-baseline%402017-09-06T17%3A41%3A38.041Z&job=cfl-NoAverageInSub%402017-09-06T17%3A59%3A00.035Z Change-Id: I8c6d4f71ec0e6e3923e254d79b83127b3734699e
-
Luc Trudeau authored
Result from luma subsampling is left-shifted by 3. This avoids having to do it during averaging, in alpha search and when building the prediction. This change does not alter the bitstream. Results on Subset1 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 https://arewecompressedyet.com/?job=cfl-baseline%402017-09-06T17%3A41%3A38.041Z&job=cfl-SubsampleQ3%402017-09-06T17%3A42%3A01.252Z Change-Id: I6e89eac6496f7c36e46364c9223fbcbca6759032
-
Rupert Swarbrick authored
Exactly one of tmp_dst/tmp_dst_/tmp_dst2 is used in a call to av1_make_masked_inter_predictor. Work out how many bytes are needed by the largest one possible and just allocate that. Change-Id: Ib8fabaf1f461ce1192c5657a3d2b5a4f7fa8d7b1
-
David Barker authored
When calculating the above overlapped prediction, we adjust xd->mb_to_bottom_edge to have the correct value for the prediction we're about to make. This prediction is half the height of the current block - *unless* the block is 128 pixels high, in which case the prediction is only 32 pixels high. This patch implements the special case for 128-pixel high blocks. (all of this applies analogously for left predictions too) Change-Id: I2780e8d4a6f8a9f82f540f2c2dfde691d07298e2
-
Sebastien Alaiwan authored
Change-Id: Id6f588876b1adf68abd8c17d7eef2223d552e457
-
Jonathan Matthews authored
BUG=aomedia:812 Change-Id: I635d620fc6d350391ecb7885cc119eaef0af39bc
-