From 4144b6de3f872af471e1d43743edadb6a0ce0153 Mon Sep 17 00:00:00 2001
From: Ru-Ling Liao <ruling.liao@sg.panasonic.com>
Date: Thu, 6 Dec 2018 15:04:46 +0800
Subject: [PATCH] fix scaling process of averaging L0 and L1 motion vectors in
triangle list derivation
---
source/Lib/CommonLib/UnitTools.cpp | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/source/Lib/CommonLib/UnitTools.cpp b/source/Lib/CommonLib/UnitTools.cpp
index a2be738..fee9892 100644
a
|
b
|
void PU::getTriangleMergeCandidates( const PredictionUnit &pu, MergeCtx& triangl |
4980 | 4980 | int32_t refPicPocL0 = slice.getRefPOC(REF_PIC_LIST_0, candidate[i].refIdx[0]); |
4981 | 4981 | int32_t refPicPocL1 = slice.getRefPOC(REF_PIC_LIST_1, candidate[i].refIdx[1]); |
4982 | 4982 | Mv aveMv = candidate[i].mv[1]; |
4983 | | aveMv = aveMv.scaleMv( xGetDistScaleFactor( curPicPoc, refPicPocL0, curPicPoc, refPicPocL1 ) ); // scaling to L0 |
| 4983 | int32_t distscale = xGetDistScaleFactor( curPicPoc, refPicPocL0, curPicPoc, refPicPocL1 ); |
| 4984 | if( distscale != 4096 ) |
| 4985 | { |
| 4986 | aveMv = aveMv.scaleMv( distscale ); // scaling to L0 |
| 4987 | } |
4984 | 4988 | aveMv.setHor( ( aveMv.getHor() + candidate[i].mv[0].getHor() + 1 ) >> 1 ); |
4985 | 4989 | aveMv.setVer( ( aveMv.getVer() + candidate[i].mv[0].getVer() + 1 ) >> 1 ); |
4986 | 4990 | |