# HG changeset patch
# User Deepthi Devaki <[email protected]>
# Date 1381922390 -19800
# Node ID 0de261c32f33f278bfaf61a43580545d53738a92
# Parent 4b1716b232e56399cdc11abf5abb3c0b37d1c9ee
Bidir: fix for hash mismatch with B-frames
Use seperate variables for mvp and mvpidx used for zero mv candidates. Also
copy the corresponding AMVPinfo for each reflist/refIdx.
diff -r 4b1716b232e5 -r 0de261c32f33 source/Lib/TLibEncoder/TEncSearch.cpp
--- a/source/Lib/TLibEncoder/TEncSearch.cpp Wed Oct 16 02:35:57 2013 -0500
+++ b/source/Lib/TLibEncoder/TEncSearch.cpp Wed Oct 16 16:49:50 2013 +0530
@@ -2362,15 +2362,28 @@
m_me.setMVP(mvPredBi[1][refIdxBidir[1]]);
bitsZero1 = bits[1] - m_me.bitcost(mv[1]) +
m_me.bitcost(mvzero);
- xCheckBestMVP(cu, REF_PIC_LIST_0, mvzero,
mvPredBi[0][refIdxBidir[0]], mvpIdxBi[0][refIdxBidir[0]], bitsZero0, costTemp);
- xCheckBestMVP(cu, REF_PIC_LIST_1, mvzero,
mvPredBi[1][refIdxBidir[1]], mvpIdxBi[1][refIdxBidir[1]], bitsZero1, costTemp);
-
- int costZero = satdCost + m_rdCost->getCost(bitsZero0) +
m_rdCost->getCost(bitsZero1);
+ UInt costZero = satdCost + m_rdCost->getCost(bitsZero0) +
m_rdCost->getCost(bitsZero1);
+
+ MV mvpZero[2];
+ int mvpidxZero[2];
+ mvpZero[0] = mvPredBi[0][refIdxBidir[0]];
+ mvpidxZero[0] = mvpIdxBi[0][refIdxBidir[0]];
+ xCopyAMVPInfo(&amvpInfo[0][refIdxBidir[0]],
cu->getCUMvField(REF_PIC_LIST_0)->getAMVPInfo());
+ xCheckBestMVP(cu, REF_PIC_LIST_0, mvzero, mvpZero[0],
mvpidxZero[0], bitsZero0, costZero);
+ mvpZero[1] = mvPredBi[1][refIdxBidir[1]];
+ mvpidxZero[1] = mvpIdxBi[1][refIdxBidir[1]];
+ xCopyAMVPInfo(&amvpInfo[1][refIdxBidir[1]],
cu->getCUMvField(REF_PIC_LIST_1)->getAMVPInfo());
+ xCheckBestMVP(cu, REF_PIC_LIST_1, mvzero, mvpZero[1],
mvpidxZero[1], bitsZero1, costZero);
+
if (costZero < costbi)
{
costbi = costZero;
mvBidir[0].x = mvBidir[0].y = 0;
mvBidir[1].x = mvBidir[1].y = 0;
+ mvPredBi[0][refIdxBidir[0]] = mvpZero[0];
+ mvPredBi[1][refIdxBidir[1]] = mvpZero[1];
+ mvpIdxBi[0][refIdxBidir[0]] = mvpidxZero[0];
+ mvpIdxBi[1][refIdxBidir[1]] = mvpidxZero[1];
bits[2] = bitsZero0 + bitsZero1 - mbBits[0] -
mbBits[1] + mbBits[2];
}
}
_______________________________________________
x265-devel mailing list
[email protected]
https://mailman.videolan.org/listinfo/x265-devel