- 13 Sep, 2017 1 commit
-
-
Rupert Swarbrick authored
This function is given a bsize and an mi array and has to figure out what partition to use to divide the given bsize in the direction of the sizes it finds in the mi array. (Since each block size can be reached by only one sequence of partitions, this can be done unambiguously) The previous version was correct, working by looking up entries in the partition_lookup array. Unfortunately, that lookup isn't quite enough when CONFIG_EXT_PARTITION_TYPES is true, so it then had to do some slightly confusing computations to fix things up after the fact. The new version should be more self-explanatory and doesn't work by looking things up in a magic array. It looks up the width and height corresponding to bsize and compares them with the width and height corresponding to the sb_type at mi_row,mi_col in the mi array. When CONFIG_EXT_PARTITION_TYPES is false, this is all you need, and the four corresponding cases can be found by a lookup in an array of 4 elements. With extended partition types and a sufficiently large block, you have to do a bit more searching. For example, if bsize is BLOCK_16X16 and the subsize is BLOCK_8X8, the partition might be PARTITION_SPLIT, but it might be one of PARTITION_HORZ_A or PARTITION_VERT_A instead. The new code adds some comments to explain what's going on. A nice side-effect of rewriting get_partition in this way is that it lets us completely dispense with the partition_lookup array. The patch also fixes comments for the A/B extended partitions in enums.h, which were slightly backwards (a "horizontal split means two blocks vertically above one another) Change-Id: I4b48189103aa63e1859f25a15d7690d53ca7baf5
-
- 08 Sep, 2017 1 commit
-
-
Yaowu Xu authored
Change-Id: Ia84ea2f4e855671f5a29058cc7a6b5ba9e6bfef9
-
- 05 Sep, 2017 1 commit
-
-
Timothy B. Terriberry authored
Automatic rebasing didn't pick up that an extra instance of the EC_SMALLMUL flag was added in commit 8711cf5f. However, that commit also broke CONFIG_ANS, since the CDF probabilities are not inverted in that case. This patch fixes both issues. Change-Id: I85b3eb8a4be5b7a392f2f872fc4a90f3fdbf2727
-
- 02 Sep, 2017 1 commit
-
-
Zoe Liu authored
Change-Id: Ie67266538db41c6aa7d79a5c270c26c021583c48
-
- 31 Aug, 2017 3 commits
-
-
Stanislav Vitvitskyy authored
Test results: akiyo -0.05% bowing -0.072% bridge -0.042% bus -0.156% coastguard -0.645% container -0.087% deadline 0.007% flower 0.02% football -0.009% foreman 0.03% hall 0.087% highway -0.041% husky -0.031% mad900 0.015% mobile -0.007% mother 0.012% news 0.039% pamphlet 0.061% paris -0.003% sign -0.148% silent 0.003% students -0.009% tempete -0.061% waterfall 0.666 Change-Id: I96c2fd3a6fbc5f8e5cf7f3b881ef89335e58d5ac
-
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
-
- 25 Aug, 2017 1 commit
-
-
Rupert Swarbrick authored
When updating default_partition_cdf, this sums the probabilities that were divided evenly across the pairs PARTITION_HORZ_A/PARTITION_HORZ_B and PARTITION_VERT_A/PARTITION_VERT_B. Those summed probabilities now get distributed evenly across the triples you get by adding PARTITION_HORZ_4 and PARTITION_VERT_4, respectively. Rather than implement 2X8/8X2 blocks for now, ss_size_lookup returns 4X8/8X4 block sizes to use as chroma transform sizes for 4X16/16X4 blocks. The changes in setup_pred_plane and set_skip_context are because this is presumably the first time we've had to deal with 16x4 or 4x16 blocks. Since BLOCK_16X4 is not less than BLOCK_8X8, the existing logic didn't work (and the "shuffle back one" logic should probably be done for small widths and heights separately). Change-Id: If28d8954da42d6c726f2bcce2cb5242154b0870c
-
- 24 Aug, 2017 1 commit
-
-
Urvang Joshi authored
When 64x64 transforms are enabled, it should return TX_64x64. Midres set: Small PSNR improvement overall (-0.061%), But 3 clips have large gains (-1.0% to -0.4% range) Change-Id: Ic2a1f0213449f81213219479c6b6aa0acfaac2e7
-
- 21 Aug, 2017 1 commit
-
-
Angie Chiang authored
This will speed up lv_map by 4.3% Change-Id: I886f67b9f1ae2e5f567e114fa34cf3ba437b8381
-
- 18 Aug, 2017 2 commits
-
-
Yaowu Xu authored
BUG=aomedia:685 Change-Id: I8490af713c53e8c420ef9dffa7c27bb71bbfca54
-
Tom Finegan authored
Avoid changing the public API based on an experiment flag: - Remove aom_config.h include from aom_image.h. - Unconditionally include the existing API additions. - Add some missing doc comments (silences Doxygen warnings). - Return an error when using ctrl flags that require CONFIG_COLORSPACE_HEADERS when it's not enabled. - Move colorspace_headers to the correct section of configure. - Move CONFIG_COLORSPACE_HEADERS to the correct section of aom_config_defaults.cmake. - clang-format style check appeasement Change-Id: I7b5d72c6f9f1a5561409d7813ba59180d98d8805
-
- 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
-
- 08 Aug, 2017 2 commits
-
-
RogerZhou authored
Change-Id: Iec7969ffd8f53ca2f4eefd1d757cfec7b3bde131
-
Wei-Ting Lin authored
Also add another default probabilities and for two-modes Change-Id: Ia503301e6d8e89c8d7c945ff25588807107d4807
-
- 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 3 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
-
- 21 Jul, 2017 1 commit
-
-
Thomas Davies authored
Tile groups are now an integral part of the codec. Change-Id: I620a88ec7a44b057d5cce0bf6cf602822a3339a9
-
- 20 Jul, 2017 1 commit
-
-
Zoe Liu authored
This CL adds an extra alt-ref reference frame, namely ALTREF2_FRAME, and designs the contexts for ALTREF2_FRAME. Change-Id: I12fe8629b868aebf6c2b54260fca5abc38f90ae6
-
- 14 Jul, 2017 1 commit
-
-
Yunqing Wang authored
Added a 1-bit flag 'large_scale_tile'. If it is 0 that is the default value, use normal tile coding in TILE_GROUPS. If it is 1, use large-scale tile coding in EXT_TILE. At large_scale_tile=1 case, if single-tile-decoding is required, then the loopfilter is disabled. Related API and unit tests were modified. Change-Id: I3ba12dc3d80ccf1ab21543ab3b16c02282c34e3b
-
- 12 Jul, 2017 2 commits
-
-
Rupert Swarbrick authored
This patch adds support for 4:1 rectangular blocks to various common data arrays, and adds new partition types to the EXT_PARTITION_TYPES experiment which will use them. This patch has the following restrictions, which can be lifted in future patches: * ext-partition-types is incompatible with fp_mb_stats and supertx for the moment * Currently only 32x32 superblocks can use the new partition types There's a slightly odd restriction about when we allow PARTITION_HORZ_4 or PARTITION_VERT_4. Since these both live in the EXT_PARTITION_TYPES CDF, read_partition() can only return them if both has_rows and has_cols is true. This means that at least half of the width and height of the block must be visible. It might be nice to relax that restriction but that would imply a change to how we encode partition types, which seems already to be in a state of flux, so maybe it's better to wait until that has settled down. Change-Id: Id7fc3fd0f762f35f63b3d3e3bf4e07c245c7b4fa
-
Zoe Liu authored
(1) Work with var-refs to remove redundant bits in ref frame coding; (2) Add a new uni-directional compound reference pair: (LAST_FRAME, LAST3_FRAME); (3) Redesign the contexts for encoding uni-directional reference frame pairs; (4) Use aom_entropy_optimizer to collect stats for all the default probability setups related to the coding of reference frames. Compared against the baseline (default enabled tools excluding ext-tx and global-motion for encoder speed concern) with one-sided-compound, the coding gain of ext-comp-refs + var-refs - one-sided-compound is: lowres: avg_psnr -0.385%; ovr_psnr -0.378% ssim -0.344% midres: avg_psnr -0.466%; ovr_psnr -0.447% ssim -0.513% AWCY - High Latency: PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000 -0.2758 | -0.1526 | -0.0965 | -0.2581 | -0.2492 | -0.2534 | -0.2118 AWCY - Low Latency: PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000 -1.0467 | -1.4500 | -0.9732 | -0.9928 | -1.0407 | -1.0180 | -1.0049 Compared against the baseline (default enabled tools excluding ext-tx and global-motion for encoder speed concern) without one-sided-compound, the coding gain of ext-comp-refs + var-refs - one-sided-compound is: lowres: avg_psnr -0.875%; ovr_psnr -0.877% ssim -0.895% midres: avg_psnr -0.824%; ovr_psnr -0.802% ssim -0.843% Change-Id: I8de774c9a74c20632ea93ccb0c17779fa94431cb
-
- 05 Jul, 2017 1 commit
-
-
Thomas Daede authored
This required moving the CDEF and lr signaling in the uncompressed header to after segmentation is signaled. The all_lossless logic was factored out into onyxc_int.h. Change-Id: If8de03438d4e9f8cb49ed49b60a880962cc9d28b
-
- 28 Jun, 2017 1 commit
-
-
Jingning Han authored
Support the transform block kernel coding for rectangular transform block size in var-tx. This integrates txk-sel with var-tx. Change-Id: I9a8edd84812168f56c79b78cc9af34f6304b1d54
-
- 20 Jun, 2017 1 commit
-
-
James Zern authored
this warning is covered by an assert and other runtime detection. expanding the array, adding a conditional or converting the type to int are less desirable. BUG=aomedia:578 Change-Id: Idb6a1dec5f17db85a0e9c1d0ee372e701f4e1aa4
-
- 19 Jun, 2017 1 commit
-
-
Luc Trudeau authored
Extract the compution of the luma reconstructed average out of cfl_load and into cfl_compute_average. The reconstructed luma average is stored in the CFL_CONTEXT to avoid computing it for each transform block and for each plane. Results on subset1 (compared to 803bea26 with CfL) PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000 -0.0474 | -0.1486 | -0.2931 | -0.0358 | -0.0397 | -0.0127 | -0.1162 Change-Id: I9e34af0fe5961ce8dbe70cb80aea2a16221d0d92
-
- 16 Jun, 2017 1 commit
-
-
Fergus Simpson authored
Adds a separate scale numerator for resize and superres scaling on keyframes. They will only use this factor in their respective FIXED modes. Change-Id: I4ef9a5760a5423ec632d644e6c7fec674bbb46f4
-
- 14 Jun, 2017 1 commit
-
-
anorkin authored
Change-Id: If93f9e41c25a5885b5927e66a298c129bb844e18
-
- 12 Jun, 2017 3 commits
-
-
Fergus Simpson authored
This patch implements the post-encode and post-decode upscaling for the frame superresolution experiment to work. Upscaling happens after cdef and before loop restoration. For now, this patch forces on random-superres. The patch also cleans up some broken rate control hooks from VP9 days, to be brought back later when the resize and superres tools are stable. Change-Id: If0a8f69224dfaa0f4ae7703bd429ea2af953c7a6
-
Yue Chen authored
Refactoring: split prediction+extension for each plane, so we can handle luma/chroma supertx pred in different ways. Compatibility fix: fix conflicts with cb4x4 and chroma_sub8x8, now for chroma sub8x8 supertx, only the top-left(basic cb4x4) or the the bottom-right(cb4x4 + chroma_sub8x8) predictor will be used without any blending within a 8x8 unit. Change-Id: I6cf7b12768a82d3c7e01811ada02de84af9bd8ac
-
Zoe Liu authored
Check the availability of the reference frames at the frame level at both encoder and decoder, and if a reference frame is not available for a specific video frame, remove the signaling of such reference frame info at the block level. This patch adds the consideration of the bit saving inside the RD optimization loop. Change-Id: I4c22f1b843b21c7d2b47e118c99c3ad615a3d4e4
-
- 07 Jun, 2017 1 commit
-
-
Luc Trudeau authored
Change-Id: I3ce09c03d4306c1f2a9c70aa1e82126493bc9406
-
- 06 Jun, 2017 2 commits
-
-
Luc Trudeau authored
This change does not impact the bitstream 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: I6e131e91bad5efa345ed2542ae970eb6122eff51
-
Luc Trudeau authored
Change-Id: Ideaeb52dbaf87e5a68da90cb94b0517760cb9d5c
-
- 01 Jun, 2017 2 commits
-
-
Jingning Han authored
Update and capture the effective transform block size per color plane. Change-Id: Ib6e0e7abb3973db6b8d511ee7c9948aaab048788
-
Change-Id: Id2be191fb48ed8d65b452499e1a1a1f470359321
-
- 31 May, 2017 1 commit
-
-
Jingning Han authored
Make the txfm_above and txfm_left be processed in the unit of miniumum transform block size. Scale the transform block step size with respect to the mode_info step size. Change-Id: Iee4421e005db742cd4ff7899215560063e5f68e5
-