Although this does not fully convert var-tx to using
av1_block_dist(), it does make it use the same distortion functions
av1_block_dist() uses: pixel_sse() and sum_squares_visible().
Change-Id: I1173bc6941a3b895381b9fcb73b533b5afc31aab
When --enable-coefficient-range-checking isn't specificed, clamp the
coefficient at each stage.
This doesn't change the decoder behaviour for existing AV1 streams.
However, some AV1 bitstreams that would have been rejected by the
decoder as illegal (range check failure) are now legal bitstreams.
There is no impact on video quality.
BUG=aomedia:30
Change-Id: Ifa01186bae6bfe5d7712298e33d964c20f88435e
Small change to calculate the encode size for scale checking using the
av1_calculate_scaled_size function used elsewhere instead of calculating
it in place. Done for constistency's sake.
Change-Id: I72626b729477e28e868cf9028ea4537267a12413
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
The code to pre-scale reference frames was hardcoded to only work
for 4:2:0. This makes it work for 4:2:2, 4:4:0, and 4:4:4, also.
It also eliminates the special case for a fourth plane, based on the
assert above that the total number of planes is no more than three.
Change-Id: I79870d2d11bfc3b6e2e73c48a9ba679bffab186f
RESIZE_SCALE_DENOMINATOR and SUPERRES_SCALE_DENOMINATOR were two
constants with the same value that did essentially the same thing.
This patch merges the two into SCALE_DENOMINATOR for simplicity's sake.
Change-Id: I252a9b7f89f10d77bdb0c3cf2d67d31d337afa4b
Adapt the intra_inter binary syntax element symbol-by-symbol
and remove updates from the compressed header.
Change-Id: I9abfd91d4521202f27854ce3e01b670ce15846e9
Perform symbol-by-symbol adaptation for the skip syntax
element and remove updates from the compressed header.
Change-Id: Ic42f60e19c56db52dd51b3784fd305c7e6b595c7
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
With C99 we can now declare iterators inside the 'for' statements,
allowing a better syntax for this macro.
This new syntax accepts #if/#endif inside the loop body,
and makes explicit, at loop body level, what the iterator name is.
Change-Id: Icbd363a34a9264ff566ee8057c08a705736b509f
This patch will not cause any performance change regardless of whether
speed_refs is on or off.
This coding tool is targeted to speed up the encoder side reference
frame selection process. The essential idea is to have two scanning
passes for each superblock of size 64x64 and this CL lays out the
initial framework but no reference frame selection is done yet:
First scanning pass - To simplify the partition and the mode
candidates (e.g. considering nearestmv / nearmv / zeromv only) and
identify the best reference frame prediction candidates;
Second scanning pass - Use the best reference frame candidate(s)
obtained from the first pass to encode the current superblock.
Change-Id: I11266d468de3077271a5e866eebd341a8014d136
This moves up to the main the decision of which coding path to use,
aligning the decoder's logic on the encoder's logic.
Change-Id: I61c709ca1160aefb156d0be25cab8bb1c20ff92a
The 'intra_y_mode_bsize_mask' speed feature is never set or
checked, so can be deleted from the SPEED_FEATURES structure.
Change-Id: I3094ab7e8e87334e35a6646f6fbf0a8adaf78c00
the tile boundary info flag was updated for each mi data structure
which starts from cm->mi. there is the second level buffer which
contains the pointer to the mi structure. it starts at
cm->mi_grid_visible. for every coded block, pointer in the second level
buffer only points to the top left mi structure of that particular coded
block. in order to get the correct boundary info for each mi. we have to
access the mi structure from cm->mi instead of cm->mi_grid_visible.
this change doesn't impact the result, it only cleans up the logic.
Change-Id: I8f883a284f600e3075754124b8197d78898a56be
Before:
-------
accu_error was always <= 0:
- It was initialized to zero, and
- Became more and more negative through the iterations.
This meant that RDOPT() macro usage on accu_error was causing left shift
of negative value.
Now:
----
- accu_error is initialized to a large positive value.
- It becomes smaller on every iteration but remains >= always.
This is functionally equivalent: verified that there's no change in
output due to this patch.
BUG=aomedia:600
Change-Id: I654572a72234c588c8f332d5b66a5587fc6610b4
Fix a bug where the encoder sets reference_mode =
COMPOUND_REFERENCE even if the frame contains some
4x4 blocks (but no larger blocks) that are single
reference. This occurs only in corner cases,
typically for very small frame sizes (e.g. 16x8).
BUG=aomedia:575
Change-Id: I5caedaa753a56e9f9b48995c1d2e0a0886aa4366
Unifies the command line arguments for resize and superes.
Removes resize arguments that are currently unused.
Change-Id: I1362dffceb8257cee539f92679d1e8d79df08e66
Adds "superres-mode" and "superres-numerator" arguments to configure
superres scaling.
There are only two modes right now: SUPERRES_FIXED and SUPERRES_DYNAMIC.
0 sets the fixed mode and 1 sets the dynamic mode.
For the fixed mode superres will scale to the provided numerator where
possible. The cumulative scale change over resizing and superres is
limited to 1/2, so it may have to back off.
For the dynamic mode, the provided numerator will be used as the initial
numerator. Asides from that it's just random for now.
Change-Id: Ibae01c77abba2599fbf51096459d09ddca458d4f
Validate the provided coefficient location with respect to the
height and width of the transform block size.
Change-Id: Id4f10052141fd914f5aea5ae4202cf35d3e63867
This commit makes the level map coding system support the transform
coefficients from rectangular transform block sizes.
Change-Id: I5cd6c71d12e41938f942adc98cc1e1f286336f12
Explicilty use the transform block size to determine the coeff
band array. Remove the assumption on square transform block size.
Change-Id: I18e285130465a5eced49304a27a6cb617e297760
Map the rectangular transform block size into the bigger square
transform block size as the context for level map probability
model.
Change-Id: I20cf2b16daec16172855a78a201b670ff0547bf5
Fix a bug that causes unnecessary filtering on inner 4x4
block boundaries inside a 8x8 transform block.
BUG=aomedia:594
Change-Id: I0b39fdb4fd9a1c1892c8eac547f5d83823fd05c8
plane_bsize is now computed properly. This also includes support for the
special case of blocks < 4X4
Results on subset1 (compared to 8e689e4b with CfL)
PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000
-0.0218 | -0.2328 | -0.2555 | -0.0230 | -0.0379 | -0.0723 | -0.1205
Change-Id: I6ec87d818d8df6a40ecf3bb1b86954e59c952930
Remove deprecated tree coding for the global motion type.
Encoding with literals costs at most 0.8 bit per frame or
tile group for the identity type, and saves bits for other
types.
AWCY (objective-1-fast): PSNR +0.02%, PSNR-HVS/MSSSIM +0.03%.
Change-Id: I421a39fd8f830b2e40d105ea3c3688099a2b6d15
this change added the support for var_tx in the parallel deblocking
experiment. the mainc change is the way to get actual transform
size for every MI from internal tx size table of the mbmi structure.
Change-Id: I225f3a95b1def15d6389d572927156720e487e11