[x265] [PATCH] fix: hash/binary mismatch for new CU structure holds CU-specific info

ashok at multicorewareinc.com ashok at multicorewareinc.com
Wed Sep 3 16:50:28 CEST 2014


# HG changeset patch
# User Ashok Kumar Mishra<ashok at multicorewareinc.com>
# Date 1409753842 -19800
#      Wed Sep 03 19:47:22 2014 +0530
# Node ID 00c381bf615840180bb6ce924dc9be84c060938f
# Parent  62c4779fb0bb35d5d8a69678e9e8aa81272f0115
fix: hash/binary mismatch for new CU structure holds CU-specific info

diff -r 62c4779fb0bb -r 00c381bf6158 source/encoder/analysis.cpp
--- a/source/encoder/analysis.cpp	Thu Aug 28 13:14:34 2014 +0530
+++ b/source/encoder/analysis.cpp	Wed Sep 03 19:47:22 2014 +0530
@@ -420,13 +420,13 @@
         checkIntra(outBestCU, outTempCU, SIZE_2Nx2N, cu);
         if (depth == g_maxCUDepth)
         {
-                checkIntra(outBestCU, outTempCU, SIZE_NxN, cu);
+            checkIntra(outBestCU, outTempCU, SIZE_NxN, cu);
         }
         else
         {
-        m_entropyCoder->resetBits();
-        m_entropyCoder->codeSplitFlag(outBestCU, 0, depth);
-        outBestCU->m_totalBits += m_entropyCoder->getNumberOfWrittenBits(); // split bits
+            m_entropyCoder->resetBits();
+            m_entropyCoder->codeSplitFlag(outBestCU, 0, depth);
+            outBestCU->m_totalBits += m_entropyCoder->getNumberOfWrittenBits(); // split bits
         }
         if (m_rdCost.m_psyRd)
             outBestCU->m_totalPsyCost = m_rdCost.calcPsyRdCost(outBestCU->m_totalDistortion, outBestCU->m_totalBits, outBestCU->m_psyEnergy);
@@ -437,6 +437,7 @@
     // copy original YUV samples in lossless mode
     if (outBestCU->isLosslessCoded(0))
         fillOrigYUVBuffer(outBestCU, m_origYuv[depth]);
+
     // further split
     if (cu_split_flag)
     {
@@ -445,18 +446,17 @@
         TComDataCU* subTempPartCU = m_tempCU[nextDepth];
         for (uint32_t partUnitIdx = 0; partUnitIdx < 4; partUnitIdx++)
         {
-            int qp = outTempCU->getQP(0);
-            subBestPartCU->initSubCU(outTempCU, partUnitIdx, nextDepth, qp); // clear sub partition datas or init.
-            if (cu->flags & CU::PRESENT)
+            CU *child_cu = cuPicsym->m_CULocalData + cu->childIdx + partUnitIdx;
+
+            if (child_cu->flags & CU::PRESENT)
             {
+                int qp = outTempCU->getQP(0);
+                subBestPartCU->initSubCU(outTempCU, partUnitIdx, nextDepth, qp); // clear sub partition datas or init.
                 subTempPartCU->initSubCU(outTempCU, partUnitIdx, nextDepth, qp); // clear sub partition datas or init.
                 if (0 == partUnitIdx) //initialize RD with previous depth buffer
                     m_rdEntropyCoders[nextDepth][CI_CURR_BEST].load(m_rdEntropyCoders[depth][CI_CURR_BEST]);
                 else
                     m_rdEntropyCoders[nextDepth][CI_CURR_BEST].load(m_rdEntropyCoders[nextDepth][CI_NEXT_BEST]);
-                CU *child_cu = cuPicsym->m_CULocalData + cu->childIdx + partUnitIdx;
-                if (!(child_cu->flags & CU::PRESENT))
-                    continue;
 
                 compressIntraCU(subBestPartCU, subTempPartCU, nextDepth, bInsidePicture, cuPicsym, child_cu);
                 outTempCU->copyPartFrom(subBestPartCU, partUnitIdx, nextDepth); // Keep best part data to current temporary data.


More information about the x265-devel mailing list