# HG changeset patch # User Deepthi Nandakumar <deep...@multicorewareinc.com> # Date 1383214067 -19800 # Node ID c92fadfe223a9740ab353f8abc0f7b8723a46287 # Parent ec6b4d35f11053b06d0e1ea46df798ff89a4c127 compress: cleanup, remove unused data structs
diff -r ec6b4d35f110 -r c92fadfe223a source/Lib/TLibEncoder/TEncCu.cpp --- a/source/Lib/TLibEncoder/TEncCu.cpp Thu Oct 31 00:09:49 2013 -0500 +++ b/source/Lib/TLibEncoder/TEncCu.cpp Thu Oct 31 15:37:47 2013 +0530 @@ -86,12 +86,7 @@ m_bestPredYuv = new TComYuv*[m_totalDepth - 1]; m_bestResiYuv = new TShortYUV*[m_totalDepth - 1]; m_bestRecoYuv = new TComYuv*[m_totalDepth - 1]; - for (int j = 0; j < 4; j++) - { - m_bestPredYuvNxN[j] = new TComYuv*[m_totalDepth - 1]; - m_interCU_NxN[j] = new TComDataCU*[m_totalDepth - 1]; - } - + m_tmpPredYuv = new TComYuv*[m_totalDepth - 1]; m_modePredYuv[0] = new TComYuv*[m_totalDepth - 1]; @@ -119,12 +114,6 @@ m_tempCU[i] = new TComDataCU; m_tempCU[i]->create(numPartitions, width, height, maxWidth >> (m_totalDepth - 1)); - for (int j = 0; j < 4; j++) - { - m_interCU_NxN[j][i] = new TComDataCU; - m_interCU_NxN[j][i]->create(numPartitions, width, height, maxWidth >> (m_totalDepth - 1)); - } - m_interCU_2Nx2N[i] = new TComDataCU; m_interCU_2Nx2N[i]->create(numPartitions, width, height, maxWidth >> (m_totalDepth - 1)); m_interCU_2NxN[i] = new TComDataCU; @@ -144,12 +133,6 @@ m_bestRecoYuv[i] = new TComYuv; m_bestRecoYuv[i]->create(width, height); - for (int j = 0; j < 4; j++) - { - m_bestPredYuvNxN[j][i] = new TComYuv; - m_bestPredYuvNxN[j][i]->create(width, height); - } - m_tmpPredYuv[i] = new TComYuv; m_tmpPredYuv[i]->create(width, height); @@ -231,16 +214,6 @@ m_tempCU[i] = NULL; } - for (int j = 0; j < 4; j++) - { - if (m_interCU_NxN[j][i]) - { - m_interCU_NxN[j][i]->destroy(); - delete m_interCU_NxN[j][i]; - m_interCU_NxN[j][i] = NULL; - } - } - if (m_bestPredYuv[i]) { m_bestPredYuv[i]->destroy(); @@ -259,16 +232,7 @@ delete m_bestRecoYuv[i]; m_bestRecoYuv[i] = NULL; } - for (int j = 0; j < 4; j++) - { - if (m_bestPredYuvNxN[j][i]) - { - m_bestPredYuvNxN[j][i]->destroy(); - delete m_bestPredYuvNxN[j][i]; - m_bestPredYuvNxN[j][i] = NULL; - } - } - + if (m_tmpPredYuv[i]) { m_tmpPredYuv[i]->destroy(); @@ -329,12 +293,6 @@ delete [] m_tempCU; m_tempCU = NULL; - for (int j = 0; j < 4; j++) - { - delete [] m_interCU_NxN[j]; - m_interCU_NxN[j] = NULL; - } - delete [] m_bestPredYuv; m_bestPredYuv = NULL; delete [] m_bestResiYuv; @@ -342,12 +300,6 @@ delete [] m_bestRecoYuv; m_bestRecoYuv = NULL; - for (int j = 0; j < 4; j++) - { - delete [] m_bestPredYuvNxN[j]; - m_bestPredYuvNxN[j] = NULL; - } - delete [] m_bestMergeRecoYuv; m_bestMergeRecoYuv = NULL; delete [] m_tmpPredYuv; diff -r ec6b4d35f110 -r c92fadfe223a source/Lib/TLibEncoder/TEncCu.h --- a/source/Lib/TLibEncoder/TEncCu.h Thu Oct 31 00:09:49 2013 -0500 +++ b/source/Lib/TLibEncoder/TEncCu.h Thu Oct 31 15:37:47 2013 +0530 @@ -76,15 +76,13 @@ TComDataCU** m_intraInInterCU; TComDataCU** m_mergeCU; TComDataCU** m_bestMergeCU; - TComDataCU** m_interCU_NxN[4]; TComDataCU** m_bestCU; ///< Best CUs at each depth TComDataCU** m_tempCU; ///< Temporary CUs at each depth TComYuv** m_bestPredYuv; ///< Best Prediction Yuv for each depth TShortYUV** m_bestResiYuv; ///< Best Residual Yuv for each depth TComYuv** m_bestRecoYuv; ///< Best Reconstruction Yuv for each depth - TComYuv** m_bestPredYuvNxN[4]; - + TComYuv** m_tmpPredYuv; ///< Temporary Prediction Yuv for each depth TShortYUV** m_tmpResiYuv; ///< Temporary Residual Yuv for each depth TComYuv** m_tmpRecoYuv; ///< Temporary Reconstruction Yuv for each depth diff -r ec6b4d35f110 -r c92fadfe223a source/encoder/compress.cpp --- a/source/encoder/compress.cpp Thu Oct 31 00:09:49 2013 -0500 +++ b/source/encoder/compress.cpp Thu Oct 31 15:37:47 2013 +0530 @@ -426,7 +426,6 @@ if (!earlyDetectionSkip) { /*Compute 2Nx2N mode costs*/ - //if (depth == 0) { xComputeCostInter(m_interCU_2Nx2N[depth], m_modePredYuv[0][depth], SIZE_2Nx2N); /*Choose best mode; initialise outBestCU to 2Nx2N*/ @@ -435,15 +434,6 @@ m_modePredYuv[0][depth] = m_bestPredYuv[depth]; m_bestPredYuv[depth] = tempYuv; } - //reusing the buffer gives md5 hash error - need to look into it. suspect it happens when inSlice condition is false. - - /*else - { - outBestCU = m_interCU_NxN[PartitionIndex][depth]; - tempYuv = m_bestPredYuvNxN[PartitionIndex][depth]; - m_bestPredYuvNxN[PartitionIndex][depth] = m_bestPredYuv[depth]; - m_bestPredYuv[depth] = tempYuv; - }*/ bTrySplitDQP = bTrySplit; @@ -643,67 +633,6 @@ } } #endif -#if 0 // turn ON this to enable early exit - //early exit when RD cost of best mode is less than the cumulative RD cost of 4 subpartition - UInt64 nxnCost = 0; - if (outBestCU != 0 && depth > 0) - { - outTempCU->initEstData(depth, qp); - UChar nextDepth = (UChar)(depth + 1); - /*Best CU initialised to NULL; */ - subBestPartCU = NULL; - /*The temp structure is used for boundary analysis, and to copy Best SubCU mode data on return*/ - nxnCost = 0; - for (uint32_t partUnitIdx = 0; partUnitIdx < 4; partUnitIdx++) - { - subTempPartCU = m_interCU_NxN[partUnitIdx][nextDepth]; - subTempPartCU->initSubCU(outTempCU, partUnitIdx, nextDepth, qp); // clear sub partition datas or init. - TComPic* subPic = subTempPartCU->getPic(); - m_origYuv[nextDepth]->copyFromPicYuv(subPic->getPicYuvOrg(), subTempPartCU->getAddr(), subTempPartCU->getZorderIdxInCU()); - TComSlice * pcSubSlice = subTempPartCU->getPic()->getSlice(); - bool subSliceEnd = subTempPartCU->getSCUAddr() < slice->getSliceCurEndCUAddr() - && pcSubSlice->getSliceCurEndCUAddr() < subTempPartCU->getSCUAddr() + subTempPartCU->getTotalNumPart(); - if (!subSliceEnd && (subTempPartCU->getCUPelX() < slice->getSPS()->getPicWidthInLumaSamples()) && - (subTempPartCU->getCUPelY() < slice->getSPS()->getPicHeightInLumaSamples())) - { - if (outBestCU->getPredictionMode(0) == 0) - { - xComputeCostInter(subTempPartCU, m_bestPredYuvNxN[partUnitIdx][nextDepth], outBestCU->getPartitionSize(0), 0); - m_search->encodeResAndCalcRdInterCU(subTempPartCU, m_origYuv[nextDepth], m_bestPredYuvNxN[partUnitIdx][nextDepth], m_tmpResiYuv[nextDepth], - m_bestResiYuv[nextDepth], m_tmpRecoYuv[nextDepth], false); - nxnCost += subTempPartCU->m_totalCost; - } - else if (outBestCU->getPredictionMode(0) == 1) - { - xComputeCostIntraInInter(subTempPartCU, SIZE_2Nx2N); - xEncodeIntraInInter(subTempPartCU, m_origYuv[nextDepth], m_modePredYuv[5][nextDepth], m_tmpResiYuv[nextDepth], m_tmpRecoYuv[nextDepth]); - nxnCost += subTempPartCU->m_totalCost; - } - } - subTempPartCU->copyToPic((UChar)nextDepth); - } - - float lambda = 1.0f; - if (outBestCU->getSlice()->getSliceType() == P_SLICE) - lambda = 0.9f; - else if (outBestCU->getSlice()->getSliceType() == B_SLICE) - lambda = 1.1f; - - if (outBestCU->m_totalCost < lambda * nxnCost) - { - m_entropyCoder->resetBits(); - m_entropyCoder->encodeSplitFlag(outBestCU, 0, depth, true); - outBestCU->m_totalBits += m_entropyCoder->getNumberOfWrittenBits(); // split bits - outBestCU->m_totalCost = m_rdCost->calcRdCost(outBestCU->m_totalDistortion, outBestCU->m_totalBits); - /* Copy Best data to Picture for next partition prediction. */ - outBestCU->copyToPic((UChar)depth); - - /* Copy Yuv data to picture Yuv */ - xCopyYuv2Pic(outBestCU->getPic(), outBestCU->getAddr(), outBestCU->getZorderIdxInCU(), depth, depth, outBestCU, lpelx, tpely); - return; - } - } -#endif // early exit outTempCU->initEstData(depth, qp); UChar nextDepth = (UChar)(depth + 1); subTempPartCU = m_tempCU[nextDepth]; _______________________________________________ x265-devel mailing list x265-devel@videolan.org https://mailman.videolan.org/listinfo/x265-devel