- 31 Aug, 2017 4 commits
-
-
Luc Trudeau authored
When Chroma from Luma is combined with chroma_sub8x8, the prediction used for sub8x8 blocks originates from multiple luma blocks. Extra asserts are added to validate that the prediction buffer contains all the required information. Change-Id: I305c46ce9b8292697e1d5b181d123461026da11c
-
hui su authored
Remove the token prob tables and counters. Change-Id: Ic63d52d80bb922fc10b586c27a20f2378618168c
-
Jingning Han authored
Enable the use of motion field estimation in the dynamic motion vector referencing system. With default experiments on, it improves the compression performance: lowres 1.2% midres 1.5% Change-Id: Ifc5b15a7239b5c3212ea50f326ab99d372034658
-
Jingning Han authored
Add frame index to the deocded frames. Store such information to the reference frame buffer pool. This design allows each frame to know its index in natural order, as well as its reference frames positions. Change-Id: I5bb36928dc5750a4fdcc582dca0d244d6482f400
-
- 30 Aug, 2017 1 commit
-
-
Sarah Parker authored
These are not currently being used for anything so there is no impact on performance. Change-Id: Ida4e0afcc10bee665f8daa379314cd18b3a4ea28
-
- 29 Aug, 2017 1 commit
-
-
Luc Trudeau authored
Decoder speed up, only store the luma reconstructed pixels when the UV_MODE=UV_CFL_PRED. Change-Id: If22e8e43311c55d7935d71bedcdaf01ffad2fee0
-
- 25 Aug, 2017 1 commit
-
-
David Barker authored
Fix a rare case in which the tile boundary information was not set up properly in the decoder when using LOOPFILTERING_ACROSS_TILES The situation was: * One frame uses loop filtering across tiles. Then its tile boundary information is not needed, so is not calculated. * The next frame (in decode order) has the same size and the same tile layout, but doesn't use loop filtering across tiles. * Now the tile boundary information *is* needed, but we weren't recalculating it. This resulted in the loop filter being applied across tile boundaries even though we signalled not to. Since the conditions on when we can reuse the previous frame's boundary information are complex, and the overhead of calculating the tile boundaries is low, we avoid this issue by simply recalculating the boundary information each frame. Change-Id: I1f3cbb0537535bf38faaed4c21c07142e747f962
-
- 24 Aug, 2017 1 commit
-
-
Rupert Swarbrick authored
Patch 323d535d fixes the reported bug but doesn't correctly read a global transformation of type TRANSLATION or AFFINE. Fortunately, clang gives a warning about the ignored expression. Change-Id: I1127d5d5b809bf016872a3ba97903599869d5357
-
- 23 Aug, 2017 1 commit
-
-
Sarah Parker authored
BUG=aomedia:693 Change-Id: I09b34abc41ee6f85619f5a05f668e06491e542f0
-
- 22 Aug, 2017 3 commits
-
-
Lester Lu authored
Change get_lgt in order to integrate a later experiment lgt_from_pred with lgt. There are two main changes. The main purpose for this change is to unify get_fwd_lgt and get_inv_lgt functions into a get_lgt function so the lgt basis functions can always be selected through the same function in both forward and inverse transform paths. The structure of those functions will also be consistent with the get_lgt_from_pred functions that will be added in the lgt-from-pred experiment. These changes have no impact on the bitstream. Change-Id: Ifd3dfc1a9e1a250495830ddbf42c201e80aa913e
-
Debargha Mukherjee authored
Change-Id: I1b789acc18f1e69fb5db069ccd8bd17815938e9d
- 21 Aug, 2017 1 commit
-
-
Yaowu Xu authored
BUG=aomedia:685 Change-Id: I0698b281fbaff2e77a50f5dc9a10d752de6c6f79
-
- 19 Aug, 2017 2 commits
-
-
Cheng Chen authored
CONFIG_UV_LVL --> CONFIG_LOOPFILTER_LEVEL Change name because the experiment combines filter level search in U, V plane, and horizontal, vertical search in Y plane. Change-Id: Ia05b8f80cd93b60a0305eb94e5783559ef904c13
-
Cheng Chen authored
A new experiment for deblocking filter that separates vertical and horizontal filter strengths. This experiment is based on the assumption that non-flatness characteristics of vertical and horizontal direction may differ. Therefore selecting different filter strengths for vertical and horizontal can improve deblocking performance. The process of finding proper filter strength: 1. Search through the filter level under the constraint that (vertical == horizontal), and find the best solution. 2. Fix vertical level as the best solution found in step 1 and vary horizontal level to find the best value. 3. Fix the selected horizontal level, vary vertical level to find its best value. The experiment is working with UV_LVL, sharing the same config flag. The searching for horizontal and vertical filter strength only applies on Y plane for now. The experimental flag should be changed to filter_level later. Change-Id: I164eec8d3ccb3da7ff109c5c55f4b52c1536ddf1
-
- 18 Aug, 2017 1 commit
-
-
Hui Su authored
Coding gain becomes tiny on top of other experiments. Change-Id: Ia89b1c2a2653f3833dff8ac8bb612eaa3ba18446
-
- 17 Aug, 2017 1 commit
-
-
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
-
- 16 Aug, 2017 2 commits
-
-
Frederic Barbier authored
Fix a memory corruption introduced by commit f190a165 On some cases, when empty tiles are present, av1_set_across_tile_boundary_info() writes beyond mode info array. Sanity check added. BUG=aomedia:690 Change-Id: I8d87a2e183c69d0ed039c8b2f77b30434f837974
-
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 1 commit
-
-
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
-
- 11 Aug, 2017 1 commit
-
-
Steinar Midtskogen authored
Low latency, cpu-used=0: PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000 -0.3162 | -0.6719 | -0.6535 | 0.0089 | -0.3890 | -0.1515 | -0.6682 High latency, cpu-used=0: PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000 -0.0293 | -0.3556 | -0.5505 | 0.0684 | -0.0862 | 0.0513 | -0.2765 Low latency, cpu-used=4: PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000 -0.2248 | -0.7764 | -0.6630 | -0.2109 | -0.3240 | -0.2532 | -0.6980 High latency, cpu-used=4: PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000 -0.1118 | -0.5841 | -0.7406 | -0.0463 | -0.2442 | -0.1064 | -0.4187 Change-Id: I9ca8399c8f45489541a66f535fb3d771eb1d59ab
-
- 10 Aug, 2017 1 commit
-
-
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
-
- 04 Aug, 2017 1 commit
-
-
Steinar Midtskogen authored
Name changes and code moves to bring code more in line with the design doc and an upcoming single-pass patch. No functional changes. Change-Id: I2bccd58c644e534b139f420b623390aa971fbdb0
-
- 02 Aug, 2017 1 commit
-
-
Yi Luo authored
Change-Id: I44bc9d8887526a5ee92bf79730fa3ce6c73b160b
-
- 01 Aug, 2017 4 commits
-
-
Thomas Daede authored
Because frame contexts now follow reference frames, explicit resets are no longer necessary, but can simply happen at the same time as reference frame resets. Change-Id: Idbed3794e3ed52fa298346943a3014fa1ca23897
-
Thomas Daede authored
This stores frame contexts alongside a reference frame, and always uses the frame in reference slot 0 (LAST_FRAME) as the source of the frame context. The encoder could then reorder reference frames as to control which frame context is used, however currently it does not. Low Latency AWCY result: PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000 -0.1438 | 0.4161 | N/A | 0.0386 | -0.0281 | 0.0453 | 0.2514 https://arewecompressedyet.com/?job=before-frame-context-signaling%402017-06-07T23%3A20%3A49.473Z&job=after-frame-context-signaling%402017-06-07T23%3A21%3A36.117Z Change-Id: I4f6f9b12cb403573efbf9e5c3077d62f5dedc467
-
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
-
Rupert Swarbrick authored
Each CDF for partitioning square blocks is initialised from an entry of default_partition_cdf in entropymode.c. These CDFs are of different lengths, depending on which partition types are supported by the block size. For example, 8x8 blocks have a CDF with only 4 entries (PARTITION_NONE through PARTITION_SPLIT). Blocks of a size that supports 1:4 and 4:1 partitions have 10 entries. Currently, that's only 32x32 blocks. All other blocks have 8 entries. Change-Id: Ie2126b6d41afc0efedcc5b5b37fc1d0427b9a9fa
-
- 31 Jul, 2017 1 commit
-
-
Yushin Cho authored
These are caused when both #if and #else has if (...) '{' but there is only one matching '}'. Fixed for some of decoding side files. More to come soon. Change-Id: I9e63b90ba6e739b5c7e37498458c7808e2e16d33
-
- 27 Jul, 2017 2 commits
-
-
Cheng Chen authored
Make CDEF select filter strength every 64x64 block when block size could be larger than 64x64. With/without this patch, coding performances on AWCY and Google test of lowres and midres are neutral. BUG=aomedia:662 Change-Id: Ief82cc51be91fc08a7c6d7e87f6d13bcc4336476
-
Cheng Chen authored
Previously, U, V planes share the same filter level with Y. Here, we search and pick the best filter level for U, V planes. Selected filter levels are transmitted per frame. This works with parallel_deblocking. Coding gain on Google test set: Avg_psnr ovr_psnr ssim lowres: -0.116 -0.120 -0.339 midres: -0.218 -0.228 -0.338 hdres: -0.260 -0.264 -0.365 Change-Id: I03d2ac47539f3eea9f3c4b08007bd6d3f4b73572
-
- 26 Jul, 2017 1 commit
-
-
Yue Chen authored
Change-Id: Ie2c34490dc50cb242bcd701308e6b55243883b15
-
- 25 Jul, 2017 1 commit
-
-
Luc Trudeau authored
This change does not alter the bitstream Resuls on Subset1 (compared to 70a80a81 with cfl) 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: I7672eb4cde3c649ebba32610f7e56500e378c062
-
- 24 Jul, 2017 1 commit
-
-
Thomas Davies authored
Change-Id: I00f98e0e03a44aa894566b7a47bb0f32b56da766
-
- 21 Jul, 2017 2 commits
-
-
Luc Trudeau authored
Change-Id: Ib03758eb5ab32ee7d0f87d216bc5fad591578597
-
Thomas Davies authored
Tile groups are now an integral part of the codec. Change-Id: I620a88ec7a44b057d5cce0bf6cf602822a3339a9
-
- 20 Jul, 2017 4 commits
-
-
Zoe Liu authored
Change-Id: I11abc5448622265183abd0a58268c190b5891576
-
Jingning Han authored
Change-Id: Idbe1f71c49d0240e10d82081feeec9029898eecd
-
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
-
Yunqing Wang authored
In ext_tile experiment, when cm->large_scale_tile is 1, prev_frame_id can be the same as current_frame_id, which is prohibited in reference_buffer experiment and causes "CORRUPT_FRAME" error to be reported. In this patch, enable/disable reference_buffer according to large_scale_tile value, and thus make these 2 experiments compatible. Change-Id: If64943acb91e7a7b859db4e2ac62581e9b53ef85
-