Handles a rare divisin by 0 case.
Also adds a check on global motion parameters to disable
if the parameters obtained are outside the range that the
shear supports. This fixes a rare assert failure.
Also changes the recode loop threshold somewhat.
Change-Id: I4c6e74b914ac653cd9caa0563d78b0a19a2a8627
Improves and simplifies costing for global motion to use the
actual bits used to communicate the global motion parameters.
Removes some of the old hacks.
This patch also includes necessary refactoring to incorporate
reference based coding of the motion parameters to follow.
lowres results: -1.489% (up from -1.333%)
Change-Id: I994dc97046011de4261633ccb0c9d71e374f2c5a
1) Add txb_entropy_ctx into MACROBLOCK_PLANE and PICK_MODE_CONTEXT
2) Add av1_get_txb_entropy_context() to compute the entropy context
3) Compute and sore the entropy context before av1_xform_quant()
return
Change-Id: Ia2170523af3163b9456f7c6a305c1e77ad2b23be
Modify ransac to keep the N best global motions by num_inliers and
variance rather than a single one. Compute the error advantage for
each in encode_frame_internal(), and use the best as the global motion
for that pair of <target, reference> frames.
Improvements for different values of N:
N %PSNR gain on lowres
1 (current impl) 1.287
2 1.328
4 1.370
8 1.419
16 1.427
32 1.439
Change-Id: Ic0c9066a3f175a5ea0a78828cd244104e70144ba
Currently, mbmi->ref_mv_idx can be set to a nonzero value
on the encoder side if mbmi->mode is one of NEARMV, NEWMV,
NEAR_NEARMV, or NEW_NEWMV. But it can only be nonzero on the
decoder side if the mode is NEARMV or NEWMV. Hence av1_nmv_ctx
has previously been disabled when ext-inter is enabled, to
prevent a mismatch due to this.
This patch changes the encoder behaviour to match the decoder
behaviour.
Change-Id: Icfe41fb72e76731ae373fe8c6065f5e003f6414f
Delta quant doesn't make sense if the intent is to encode
the frame in lossless mode.
BUG=aomedia:393
Change-Id: Ic26e30267dd3a061d7ee5e980b6950366f06b32f
Enabling SEPARATE_GLOBAL_MOTION will remove the ability for
a block that uses zeromv with global motion to pick warped_causal
or obmc_causal as the motion mode. When this is enabled there is:
0.05% drop on lowres for global + warped enabled
0.15% drop on midres for global + warped enabled
0.12% drop on lowres with global + motion var enabled
0.07% drop on midres with global + motion var enabled
No performance change for global, warped, or motion var individually.
Change-Id: Idbfb8dd7a93da14902438504b06a08e5212e48cb
This draft version only pass compiling check, it's not working yet.
The following goal is to use new coding system when doing bitstream
packing but keep old coding system in RD loop.
Change-Id: I224a1581d1cc5c67d73e71558fb77d9faf9c2470
The variable "use_hbd" was defined but not used in four places in the
codebase. The warning that it wasn't used was missed by Jenkins
because it only tries one experimental flag at a time, but these
definitions were inside nested experimental flag conditions. Both
CONFIG_WARPED_MOTION and CONFIG_AOM_HIGHBITDEPTH had to be set for the
variables to be defined.
This patch deletes the unused definitions to remove the unused variable
warnings when the AV1 encoder and/or decoder are built with warped
motion and high bitdepth configured.
Change-Id: I9e80523db05a7a19cebe3ec8085a4a1e4b198c52
* Run 45 degree wavefront coding for palette index
with palette_throughput experiment.
* Remove palette index interleave.
Change-Id: Ibb57004401f817dec8b00bc2a941d70a26783ff9
Split it into two experiments:
q_adapt_probs: multiple initial coeff prob tables based on q-index
subframe_prob_update: multiple backward prob updates within frame
Change-Id: I78041ebd4ba34afc9152f6861225f63c2e8eb686
Make the transform size conform to the segment and frame level
constraints. This fixes encoder and decoder mismatch issue in
aq-mode 1 and 2.
BUG=aomedia:131
Change-Id: I0784aa12aa49541085ce17ca82e77dcff151fd24
Disable the support of compound prediction modes for sub8x8 codking
blocks. Make the rate-distortion optimizations process account for
such constraints.
With the use 2x2 chroma prediction block, this makes the wrost case
number of inter predictors same as vp9. It affects the coding
gains by 0.35% for lowres, 0.17% for midres, and 0.08% for hdres.
The encoding speed is up by 10%.
Change-Id: Ieb2a83030676911baa403e586f1f800cbf485d81
* code the palette color index using 45 wavefront
* interleave the coeff and palette color index in
transform block level
* the above change does not change code efficiency
Details:
The 45 wavefront scan allows to compute the ctx of
the diagonal samples' indices at the same time.
Interleaving palette indices and palette residual
on a transform block basis means that the entropy
decoding and further processing of the palette
residual is not delayed by the entropy decoding
of all the color indices of the palette encoded
block.
Change-Id: Ie9f576002a9a68394b99c23b01e9730df06df070
Since gm_get_motion_vector is trying to give a motion vector for
"the frame as a whole", it makes more sense for it to calculate
the motion of the *center* of the block rather than the top-left
corner of the frame.
In theory, this change should also help the encoder make better
decisions on when to use global motion. It avoids an issue
where, early in the frame, NEARESTMV looks like a good way to use
the global motion vector *without* paying the rate cost applied
to the first few global motion blocks in each frame. This seems
to lead to a better overall result.
Change-Id: Ia5c6259ceb8b4ff3d00a5d553e1d18bdb802da59
Skip coding the intra mode for chroma component for sub8x8 blocks
that are not in the reference position.
Change-Id: Ic3daab2668ab41c3b743664faf195e34124ead33
Skip the 2x2 uv block rate-distortion optimization process in the
non-reference positions in key frame encoding.
Change-Id: I51112492fd79f9a1c205fba151f8658cea9ee85f
Here we create a default set for the ext-tx experiment which
includes:
Intra: {DCT, ADST} X {DCT, ADST} + IDTX (identity in both directions)
Inter: DCT_DCT + IDTX
This set is used if indicated in the uncompressed header.
Change-Id: Ic907ada12b4e0c98cabb7c9650ab99942d0c0859
Skip rectangular transform block size coding for intra coded block
in var-tx mode, when the rect-tx is disabled.
Change-Id: If3a091d25f19bf4a67485b5d235bb3d7d0c2cd03
Noticed that some ALTREF_FRAMEs could have used compound modes for its
prediction but have been labeled as SINGLE_REFERENCE mode in the frame
header. This experiment is to remove the COMPOUND_REFERENCE mode from
the frame-level reference mode choices and only leave SINGLE_REFERENCE
and REFERENCE_MODE_SELECT the two choices in the frame header.
When turning on both ext-refs and ref-adapt, compared against ext-refs
itself, a small gain is achieved. In PSNR, the bitrate saving gains are
as follows:
lowres: Avg -0.120%; BDRate -0.128%
midres: Avg -0.155%; BDRate -0.128%
Change-Id: I2cfff8a6b7eaa65ef863dbdbc4dd086d3b586f8c
This commit renames deblocking_across_tiles to loopfilter_across_tiles,
to get ready for dering and clpf integration.
Change-Id: Id25b051da9b1e5cb92f35a9619662597462d9537
This follows the naming for the other frame types, and allows libaom
to be compiled against other libraries that also #define NONE.
Change-Id: Ic2e2814587bbc5ea67385a9af775396d29b7dde0
This commit makes ext-tx and rect-tx experiments supported in the
cb4x4 mode. It resolves an enc/dec mismatch issue when all the
transform experiments are enabled.
The coding gains are
ext-tx + rect-tx cb4x4 vartx total
lowres 4.0% 2.3% 0.5% 6.9%
The encoding speed is about the same when cb4x4 and vartx are
further enabled.
BUG=aomedia:139
Change-Id: I3fdabc6d5de23ceb78ac0751a9bf7332ebc0a3ac
When segment feature is on, frame level cm->tx_mode can be set to
ONLY_4X4 only if all segments are lossless. Otherwise will cause
bugs when xd->lossless[i] is 0 and xd->lossless[0] is 1.
Also fix the condition of coding tx_type, which should be on when
the qindex of current segment is > 0.
BUG=aomedia:106
BUG=aomedia:104
Change-Id: Ic076083bb78b3b99a6f7d17ec82ee402c64bcc52
At the final round of encoding of each superblock, will go through
each prediction block to check if ncobmc mode is better than non-
overlapped prediction. Note that causal obmc mode is dumped here.
PSNR gain (MOTION_VAR + NCOBMC): -2.845% lowres
Change-Id: Ibe504f7f1882446a08ba426e1e9824bca73bf655
At the edges of the picture only a subset of partitions are legal. Add
new contexts for these borders so they don't distort the probabilities of
the interior of the image where all partitions are legal.
Only include one context for each block size of each border direction
because so few blocks fall into these contexts to begin with.
objective-1-fast:
PSNR | PSNR Cb | PSNR Cr | PSNR HVS | SSIM | MS SSIM | CIEDE 2000
-0.0294 | -0.0911 | -0.2382 | -0.0481 | -0.0441 | -0.0450 | -0.0454
derf144: -0.135
lowres: -0.124
midres: -0.076
hdres: -0.078
Change-Id: I909b98eebb7e49273cde90154c8408febe334158
This commit reworks the transform block partition context update
to support cb4x4 mode in the recursive transform block partition.
It resolves the remaining enc/dec mismatch issue when both cb4x4
and var-tx are turned on.
Change-Id: I850d121204fe4c68e81488f1d2848c570d9d08b9