Commit 96382283 authored by Luc Trudeau's avatar Luc Trudeau

Remove H/V considerations in pvq_theta

As H/V Prediction is not implemented in AV1, pvq_theta does not need to
consider it when adjusting its parameters.

It is important to understand that the results shown here are not the outcome
of this patch but the outcome of leaving the condition in and enabling
is_keyframe. Currently, this change does not impact the bitstream as
is_keyframe is hard coded to 0 for PVQ.

The following result show that enabled for spatial intra, the H/V pred
tweaks do not yeild benefits.

Enabling the condition for all planes in a keyframe:
Subset1:
pvq@2017-02-28T20:31:50.969Z -> pvq-unreliable-intra@2017-02-28T20:30:32.049Z
PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
0.0896 |  0.0860 | -0.0759 |   0.1608 | 0.1442 |  0.1599 |     0.0147

Enabling the condition for Luma plane in a keyframe:
Subset1:
pvq@2017-02-28T20:31:50.969Z
 -> pvq-unreliable-intra-luma@2017-02-28T20:34:18.029Z
PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
0.0713 |  0.1317 |  0.0717 |   0.1253 | 0.1365 |  0.1406 |     0.0312

Enabling the condition for Chroma planes in a keyframe:
Subset1:
pvq@2017-02-28T20:31:50.969Z -> pvq-unreliable-intra-chroma@2017-02-28T21:09:38.992Z
PSNR | PSNR Cb | PSNR Cr | PSNR HVS |   SSIM | MS SSIM | CIEDE 2000
0.0232 | -0.1240 | -0.1379 |   0.0029 | 0.0187 |  0.0191 |    -0.0916

Based on these results, the condition in the if statement is removed.

Change-Id: Icd2f1313952548939069b4570cf7db04632f35f3
parent 5329a2bf
......@@ -553,11 +553,9 @@ static int pvq_theta(od_coeff *out, const od_coeff *x0, const od_coeff *r0,
}
}
/* Don't bother with no-reference version if there's a reasonable
correlation. The only exception is luma on a keyframe because
H/V prediction is unreliable. */
if (n <= OD_MAX_PVQ_SIZE &&
((is_keyframe && pli == 0) || corr < .5
|| cg < (od_val32)(OD_SHL(2, OD_CGAIN_SHIFT)))) {
correlation. */
if (n <= OD_MAX_PVQ_SIZE && (corr < .5
|| cg < (od_val32)(OD_SHL(2, OD_CGAIN_SHIFT)))) {
int gain_bound;
int prev_k;
gain_bound = OD_SHR(cg, OD_CGAIN_SHIFT);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment