# HG changeset patch # User Deepthi Devaki <deepthidev...@multicorewareinc.com> # Date 1387285108 -19800 # Node ID c14f3ef98f22c77c7ce1c52f9084f64946c3282a # Parent 0350191d340e87ca1330debfc3a5e28297ee3134 compress: clean up
diff -r 0350191d340e -r c14f3ef98f22 source/encoder/compress.cpp --- a/source/encoder/compress.cpp Tue Dec 17 18:19:22 2013 +0530 +++ b/source/encoder/compress.cpp Tue Dec 17 18:28:28 2013 +0530 @@ -541,6 +541,71 @@ } } } + if (m_cfg->param.rdLevel <= 2) + { + if (outBestCU->getPredictionMode(0) == MODE_INTER) + { + int numPart = outBestCU->getNumPartInter(); + for (int partIdx = 0; partIdx < numPart; partIdx++) + { + m_search->motionCompensation(outBestCU, m_bestPredYuv[depth], REF_PIC_LIST_X, partIdx, false, true); + } + + if (m_cfg->param.rdLevel == 2) + { + m_search->encodeResAndCalcRdInterCU(outBestCU, m_origYuv[depth], m_bestPredYuv[depth], m_tmpResiYuv[depth], + m_bestResiYuv[depth], m_bestRecoYuv[depth], false); + } + else if (m_cfg->param.rdLevel == 1) + { + m_tmpResiYuv[depth]->subtract(m_origYuv[depth], m_bestPredYuv[depth], 0, outBestCU->getWidth(0)); + m_search->generateCoeffRecon(outBestCU, m_origYuv[depth], m_bestPredYuv[depth], m_tmpResiYuv[depth], m_bestRecoYuv[depth], false); + } + else if (m_cfg->param.rdLevel == 0) + { + m_origYuv[depth]->copyPartToPartYuv(m_bestRecoYuv[depth], 0, outBestCU->getWidth(0), outBestCU->getHeight(0), true, true); + } + } + else + { + if (m_cfg->param.rdLevel == 2) + xEncodeIntraInInter(outBestCU, m_origYuv[depth], m_bestPredYuv[depth], m_tmpResiYuv[depth], m_bestRecoYuv[depth]); + else if (m_cfg->param.rdLevel == 1) + { + m_search->generateCoeffRecon(outBestCU, m_origYuv[depth], m_bestPredYuv[depth], m_tmpResiYuv[depth], m_bestRecoYuv[depth], false); + } + else if (m_cfg->param.rdLevel == 0) + { + m_origYuv[depth]->copyPartToPartYuv(m_bestRecoYuv[depth], 0, outBestCU->getWidth(0), outBestCU->getHeight(0), true, true); + } + } + //Check Merge-skip + if (m_cfg->param.rdLevel <= 2) + { + if (!(outBestCU->getPredictionMode(0) == MODE_INTER && outBestCU->getPartitionSize(0) == SIZE_2Nx2N && outBestCU->getMergeFlag(0))) + { + int numPart = m_mergeCU[depth]->getNumPartInter(); + for (int partIdx = 0; partIdx < numPart; partIdx++) + { + m_search->motionCompensation(m_mergeCU[depth], bestMergePred, REF_PIC_LIST_X, partIdx, false, true); + } + } + m_search->encodeResAndCalcRdInterCU(m_mergeCU[depth], m_origYuv[depth], bestMergePred, m_tmpResiYuv[depth], + m_bestResiYuv[depth], m_tmpRecoYuv[depth], true); + + if (m_mergeCU[depth]->m_totalCost < outBestCU->m_totalCost) + { + outBestCU = m_mergeCU[depth]; + tempYuv = m_bestRecoYuv[depth]; + m_bestRecoYuv[depth] = m_tmpRecoYuv[depth]; + m_tmpRecoYuv[depth] = tempYuv; + if (bestMergePred != m_bestPredYuv[depth]) + { + bestMergePred->copyPartToPartYuv(m_bestPredYuv[depth], 0, outBestCU->getWidth(0), outBestCU->getHeight(0)); + } + } + } + } } else { @@ -553,71 +618,6 @@ m_bestRecoYuv[depth] = m_bestMergeRecoYuv[depth]; m_bestMergeRecoYuv[depth] = tempYuv; } - if (m_cfg->param.rdLevel <= 2 && !earlyskip) - { - if (outBestCU->getPredictionMode(0) == MODE_INTER) - { - int numPart = outBestCU->getNumPartInter(); - for (int partIdx = 0; partIdx < numPart; partIdx++) - { - m_search->motionCompensation(outBestCU, m_bestPredYuv[depth], REF_PIC_LIST_X, partIdx, false, true); - } - - if (m_cfg->param.rdLevel == 2) - { - m_search->encodeResAndCalcRdInterCU(outBestCU, m_origYuv[depth], m_bestPredYuv[depth], m_tmpResiYuv[depth], - m_bestResiYuv[depth], m_bestRecoYuv[depth], false); - } - else if (m_cfg->param.rdLevel == 1) - { - m_tmpResiYuv[depth]->subtract(m_origYuv[depth], m_bestPredYuv[depth], 0, outBestCU->getWidth(0)); - m_search->generateCoeffRecon(outBestCU, m_origYuv[depth], m_bestPredYuv[depth], m_tmpResiYuv[depth], m_bestRecoYuv[depth], false); - } - else if (m_cfg->param.rdLevel == 0) - { - m_origYuv[depth]->copyPartToPartYuv(m_bestRecoYuv[depth], 0, outBestCU->getWidth(0), outBestCU->getHeight(0), true, true); - } - } - else - { - if (m_cfg->param.rdLevel == 2) - xEncodeIntraInInter(outBestCU, m_origYuv[depth], m_bestPredYuv[depth], m_tmpResiYuv[depth], m_bestRecoYuv[depth]); - else if (m_cfg->param.rdLevel == 1) - { - m_search->generateCoeffRecon(outBestCU, m_origYuv[depth], m_bestPredYuv[depth], m_tmpResiYuv[depth], m_bestRecoYuv[depth], false); - } - else if (m_cfg->param.rdLevel == 0) - { - m_origYuv[depth]->copyPartToPartYuv(m_bestRecoYuv[depth], 0, outBestCU->getWidth(0), outBestCU->getHeight(0), true, true); - } - } - //Check Merge-skip - if (m_cfg->param.rdLevel <= 2) - { - if (!(outBestCU->getPredictionMode(0) == MODE_INTER && outBestCU->getPartitionSize(0) == SIZE_2Nx2N && outBestCU->getMergeFlag(0))) - { - int numPart = m_mergeCU[depth]->getNumPartInter(); - for (int partIdx = 0; partIdx < numPart; partIdx++) - { - m_search->motionCompensation(m_mergeCU[depth], bestMergePred, REF_PIC_LIST_X, partIdx, false, true); - } - } - m_search->encodeResAndCalcRdInterCU(m_mergeCU[depth], m_origYuv[depth], bestMergePred, m_tmpResiYuv[depth], - m_bestResiYuv[depth], m_tmpRecoYuv[depth], true); - - if (m_mergeCU[depth]->m_totalCost < outBestCU->m_totalCost) - { - outBestCU = m_mergeCU[depth]; - tempYuv = m_bestRecoYuv[depth]; - m_bestRecoYuv[depth] = m_tmpRecoYuv[depth]; - m_tmpRecoYuv[depth] = tempYuv; - if (bestMergePred != m_bestPredYuv[depth]) - { - bestMergePred->copyPartToPartYuv(m_bestPredYuv[depth], 0, outBestCU->getWidth(0), outBestCU->getHeight(0)); - } - } - } - } if (m_cfg->param.rdLevel > 0) //checkDQP can be done only after residual encoding is done xCheckDQP(outBestCU); _______________________________________________ x265-devel mailing list x265-devel@videolan.org https://mailman.videolan.org/listinfo/x265-devel