From: Deb Mukherjee Date: Thu, 24 Jan 2013 23:22:57 +0000 (-0800) Subject: Further improvement on compound inter-intra expt X-Git-Tag: v1.3.0~1151^2~224^2 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3b04d467ac8eb143bceb388d242a199423e006fd;p=libvpx Further improvement on compound inter-intra expt Adds a special combination mode specific to intra prediciton mode D45. Current results with the compound inter/intra experiment: derf: 0.2% yt: 0.55% std-hd: 0.75% hd: 0.74% Change-Id: I8976bdf3b9b0b66ab8c5c628bbc62c14fc72ca86 --- diff --git a/vp9/common/vp9_reconintra.c b/vp9/common/vp9_reconintra.c index 2828d0373..9ee89d5cf 100644 --- a/vp9/common/vp9_reconintra.c +++ b/vp9/common/vp9_reconintra.c @@ -393,6 +393,7 @@ static void combine_interintra(MB_PREDICTION_MODE mode, 70, 70, 69, 69, 69, 69, 68, 68, 68, 68, 68, 67, 67, 67, 67, 67, }; + int size_scale = (size >= 64 ? 1: size == 32 ? 2 : size == 16 ? 4 : @@ -469,8 +470,21 @@ static void combine_interintra(MB_PREDICTION_MODE mode, break; case D45_PRED: - case DC_PRED: + for (i = 0; i < size; ++i) { + for (j = 0; j < size; ++j) { + int k = i * interstride + j; + int scale = (weights1d[i * size_scale] + + weights1d[j * size_scale]) >> 1; + interpred[k] = + ((scale_max - scale) * interpred[k] + + scale * intrapred[i * intrastride + j] + scale_round) + >> scale_bits; + } + } + break; + case TM_PRED: + case DC_PRED: default: // simple average for (i = 0; i < size; ++i) {