Changeset 593 in SHVCSoftware for branches/SHM-5.0-dev/source/Lib/TLibEncoder/TEncSearch.cpp
- Timestamp:
- 2 Feb 2014, 04:51:29 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/SHM-5.0-dev/source/Lib/TLibEncoder/TEncSearch.cpp
r540 r593 4 4 * granted under this license. 5 5 * 6 * Copyright (c) 2010-201 3, ITU/ISO/IEC6 * Copyright (c) 2010-2014, ITU/ISO/IEC 7 7 * All rights reserved. 8 8 * … … 199 199 m_pppcRDSbacCoder = pppcRDSbacCoder; 200 200 m_pcRDGoOnSbacCoder = pcRDGoOnSbacCoder; 201 202 m_bUseSBACRD = pppcRDSbacCoder ? true : false;203 201 204 202 for (Int iDir = 0; iDir < 2; iDir++) … … 1125 1123 { 1126 1124 Int scalingListType = 0 + g_eTTable[(Int)TEXT_LUMA]; 1127 assert(scalingListType < 6);1125 assert(scalingListType < SCALING_LIST_NUM); 1128 1126 m_pcTrQuant->invtransformNxN( pcCU->getCUTransquantBypass(uiAbsPartIdx), TEXT_LUMA,pcCU->getLumaIntraDir( uiAbsPartIdx ), piResi, uiStride, pcCoeff, uiWidth, uiHeight, scalingListType, useTransformSkip ); 1129 1127 } … … 1318 1316 { 1319 1317 Int scalingListType = 0 + g_eTTable[(Int)eText]; 1320 assert(scalingListType < 6);1318 assert(scalingListType < SCALING_LIST_NUM); 1321 1319 m_pcTrQuant->invtransformNxN( pcCU->getCUTransquantBypass(uiAbsPartIdx), TEXT_CHROMA, REG_DCT, piResi, uiStride, pcCoeff, uiWidth, uiHeight, scalingListType, useTransformSkipChroma ); 1322 1320 } … … 1424 1422 checkTransformSkip &= (widthTransformSkip == 4 && heightTransformSkip == 4); 1425 1423 checkTransformSkip &= (!pcCU->getCUTransquantBypass(0)); 1426 checkTransformSkip &= (!((pcCU->getQP( 0 ) == 0) && (pcCU->getSlice()->getSPS()->getUseLossless())));1427 1424 if ( m_pcEncCfg->getUseTransformSkipFast() ) 1428 1425 { … … 1434 1431 { 1435 1432 //----- store original entropy coding status ----- 1436 if( m_bUseSBACRD) 1437 { 1438 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ uiFullDepth ][ CI_QT_TRAFO_ROOT ] ); 1439 } 1433 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ uiFullDepth ][ CI_QT_TRAFO_ROOT ] ); 1434 1440 1435 UInt singleDistYTmp = 0; 1441 1436 UInt singleDistCTmp = 0; … … 1503 1498 { 1504 1499 xStoreIntraResultQT(pcCU, uiTrDepth, uiAbsPartIdx,bLumaOnly ); 1505 if( m_bUseSBACRD) 1506 { 1507 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ uiFullDepth ][ CI_TEMP_BEST ] ); 1508 } 1500 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ uiFullDepth ][ CI_TEMP_BEST ] ); 1509 1501 } 1510 1502 } … … 1529 1521 } 1530 1522 } 1531 if(m_bUseSBACRD) 1532 { 1533 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiFullDepth ][ CI_TEMP_BEST ] ); 1534 } 1535 } 1523 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiFullDepth ][ CI_TEMP_BEST ] ); 1524 } 1536 1525 1537 1526 if( !bLumaOnly ) … … 1558 1547 pcCU ->setTransformSkipSubParts ( 0, TEXT_LUMA, uiAbsPartIdx, uiFullDepth ); 1559 1548 //----- store original entropy coding status ----- 1560 if( m_bUseSBACRD &&bCheckSplit )1549 if( bCheckSplit ) 1561 1550 { 1562 1551 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ uiFullDepth ][ CI_QT_TRAFO_ROOT ] ); … … 1595 1584 { 1596 1585 //----- store full entropy coding status, load original entropy coding status ----- 1597 if( m_bUseSBACRD ) 1598 { 1599 if( bCheckFull ) 1600 { 1601 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ uiFullDepth ][ CI_QT_TRAFO_TEST ] ); 1602 m_pcRDGoOnSbacCoder->load ( m_pppcRDSbacCoder[ uiFullDepth ][ CI_QT_TRAFO_ROOT ] ); 1603 } 1604 else 1605 { 1606 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ uiFullDepth ][ CI_QT_TRAFO_ROOT ] ); 1607 } 1608 } 1586 if( bCheckFull ) 1587 { 1588 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ uiFullDepth ][ CI_QT_TRAFO_TEST ] ); 1589 m_pcRDGoOnSbacCoder->load ( m_pppcRDSbacCoder[ uiFullDepth ][ CI_QT_TRAFO_ROOT ] ); 1590 } 1591 else 1592 { 1593 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ uiFullDepth ][ CI_QT_TRAFO_ROOT ] ); 1594 } 1595 1609 1596 //----- code splitted block ----- 1610 1597 Double dSplitCost = 0.0; … … 1647 1634 } 1648 1635 //----- restore context states ----- 1649 if( m_bUseSBACRD ) 1650 { 1651 m_pcRDGoOnSbacCoder->load ( m_pppcRDSbacCoder[ uiFullDepth ][ CI_QT_TRAFO_ROOT ] ); 1652 } 1636 m_pcRDGoOnSbacCoder->load ( m_pppcRDSbacCoder[ uiFullDepth ][ CI_QT_TRAFO_ROOT ] ); 1637 1653 1638 //----- determine rate and r-d cost ----- 1654 1639 UInt uiSplitBits = xGetIntraBitsQT( pcCU, uiTrDepth, uiAbsPartIdx, true, !bLumaOnly, false ); … … 1665 1650 } 1666 1651 //----- set entropy coding status ----- 1667 if( m_bUseSBACRD ) 1668 { 1669 m_pcRDGoOnSbacCoder->load ( m_pppcRDSbacCoder[ uiFullDepth ][ CI_QT_TRAFO_TEST ] ); 1670 } 1671 1652 m_pcRDGoOnSbacCoder->load ( m_pppcRDSbacCoder[ uiFullDepth ][ CI_QT_TRAFO_TEST ] ); 1653 1672 1654 //--- set transform index and Cbf values --- 1673 1655 pcCU->setTrIdxSubParts( uiTrDepth, uiAbsPartIdx, uiFullDepth ); … … 2194 2176 { 2195 2177 //use RDO to decide whether Cr/Cb takes TS 2196 if( m_bUseSBACRD ) 2197 { 2198 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[uiFullDepth][CI_QT_TRAFO_ROOT] ); 2199 } 2178 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[uiFullDepth][CI_QT_TRAFO_ROOT] ); 2200 2179 2201 2180 for(Int chromaId = 0; chromaId < 2; chromaId ++) … … 2239 2218 2240 2219 if(singleCostTmp < dSingleCost) 2220 { 2221 dSingleCost = singleCostTmp; 2222 singleDistC = singleDistCTmp; 2223 bestModeId = chromaModeId; 2224 singleCbfC = singleCbfCTmp; 2225 2226 if(bestModeId == firstCheckId) 2241 2227 { 2242 dSingleCost = singleCostTmp; 2243 singleDistC = singleDistCTmp; 2244 bestModeId = chromaModeId; 2245 singleCbfC = singleCbfCTmp; 2246 2247 if(bestModeId == firstCheckId) 2248 { 2249 xStoreIntraResultChromaQT(pcCU, uiTrDepth, uiAbsPartIdx,chromaId); 2250 if( m_bUseSBACRD) 2251 { 2252 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ uiFullDepth ][ CI_TEMP_BEST ] ); 2253 } 2254 } 2255 } 2256 if(chromaModeId == firstCheckId) 2257 { 2258 m_pcRDGoOnSbacCoder->load ( m_pppcRDSbacCoder[ uiFullDepth ][ CI_QT_TRAFO_ROOT ] ); 2228 xStoreIntraResultChromaQT(pcCU, uiTrDepth, uiAbsPartIdx,chromaId); 2229 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ uiFullDepth ][ CI_TEMP_BEST ] ); 2259 2230 } 2260 2231 } 2261 2262 if(bestModeId == firstCheckId) 2232 if(chromaModeId == firstCheckId) 2263 2233 { 2264 xLoadIntraResultChromaQT(pcCU, uiTrDepth, uiAbsPartIdx,chromaId); 2265 pcCU->setCbfSubParts ( singleCbfC << uiTrDepth, (TextType)(chromaId + 2), uiAbsPartIdx, pcCU->getDepth(0) + actualTrDepth ); 2266 if(m_bUseSBACRD) 2267 { 2268 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiFullDepth ][ CI_TEMP_BEST ] ); 2269 } 2234 m_pcRDGoOnSbacCoder->load ( m_pppcRDSbacCoder[ uiFullDepth ][ CI_QT_TRAFO_ROOT ] ); 2270 2235 } 2271 pcCU ->setTransformSkipSubParts( bestModeId, (TextType)(chromaId + 2), uiAbsPartIdx, pcCU->getDepth( 0 ) + actualTrDepth ); 2272 ruiDist += singleDistC; 2273 2274 if(chromaId == 0) 2275 { 2276 if( m_bUseSBACRD ) 2277 { 2278 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[uiFullDepth][CI_QT_TRAFO_ROOT] ); 2279 } 2280 } 2281 } 2236 } 2237 2238 if(bestModeId == firstCheckId) 2239 { 2240 xLoadIntraResultChromaQT(pcCU, uiTrDepth, uiAbsPartIdx,chromaId); 2241 pcCU->setCbfSubParts ( singleCbfC << uiTrDepth, (TextType)(chromaId + 2), uiAbsPartIdx, pcCU->getDepth(0) + actualTrDepth ); 2242 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiFullDepth ][ CI_TEMP_BEST ] ); 2243 } 2244 pcCU ->setTransformSkipSubParts( bestModeId, (TextType)(chromaId + 2), uiAbsPartIdx, pcCU->getDepth( 0 ) + actualTrDepth ); 2245 ruiDist += singleDistC; 2246 2247 if(chromaId == 0) 2248 { 2249 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[uiFullDepth][CI_QT_TRAFO_ROOT] ); 2250 } 2251 } 2282 2252 } 2283 2253 else … … 2575 2545 2576 2546 // set context models 2577 if( m_bUseSBACRD ) 2578 { 2579 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST] ); 2580 } 2547 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST] ); 2581 2548 2582 2549 // determine residual for partition … … 2640 2607 2641 2608 // set context models 2642 if( m_bUseSBACRD ) 2643 { 2644 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST] ); 2645 } 2609 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST] ); 2646 2610 2647 2611 // determine residual for partition … … 2770 2734 2771 2735 //===== reset context models ===== 2772 if(m_bUseSBACRD) 2773 { 2774 m_pcRDGoOnSbacCoder->load(m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST]); 2775 } 2736 m_pcRDGoOnSbacCoder->load(m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST]); 2776 2737 2777 2738 //===== set distortion (rate and r-d costs are determined later) ===== … … 2805 2766 { 2806 2767 //----- restore context models ----- 2807 if( m_bUseSBACRD ) 2808 { 2809 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST] ); 2810 } 2768 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST] ); 2811 2769 2812 2770 //----- chroma coding ----- … … 2814 2772 pcCU->setChromIntraDirSubParts ( uiModeList[uiMode], 0, uiDepth ); 2815 2773 xRecurIntraChromaCodingQT ( pcCU, 0, 0, pcOrgYuv, pcPredYuv, pcResiYuv, uiDist ); 2816 if( m_bUseSBACRD &&pcCU->getSlice()->getPPS()->getUseTransformSkip() )2774 if( pcCU->getSlice()->getPPS()->getUseTransformSkip() ) 2817 2775 { 2818 2776 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST] ); … … 2846 2804 2847 2805 //----- restore context models ----- 2848 if( m_bUseSBACRD ) 2849 { 2850 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST] ); 2851 } 2806 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST] ); 2852 2807 } 2853 2808 … … 3005 2960 dCost = m_pcRdCost->calcRdCost( uiBits, uiDistortion ); 3006 2961 3007 if(m_bUseSBACRD) 3008 { 3009 m_pcRDGoOnSbacCoder->load(m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST]); 3010 } 2962 m_pcRDGoOnSbacCoder->load(m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST]); 3011 2963 3012 2964 pcCU->getTotalBits() = uiBits; … … 4574 4526 + m_pcRdCost->getDistPart(g_bitDepthC, rpcYuvRec->getCrAddr(), rpcYuvRec->getCStride(), pcYuvOrg->getCrAddr(), pcYuvOrg->getCStride(), uiWidth >> 1, uiHeight >> 1, TEXT_CHROMA_V ); 4575 4527 4576 if( m_bUseSBACRD ) 4577 { 4578 m_pcRDGoOnSbacCoder->load(m_pppcRDSbacCoder[pcCU->getDepth(0)][CI_CURR_BEST]); 4579 } 4528 m_pcRDGoOnSbacCoder->load(m_pppcRDSbacCoder[pcCU->getDepth(0)][CI_CURR_BEST]); 4580 4529 4581 4530 m_pcEntropyCoder->resetBits(); … … 4592 4541 pcCU->getTotalCost() = m_pcRdCost->calcRdCost( uiBits, uiDistortion ); 4593 4542 4594 if( m_bUseSBACRD ) 4595 { 4596 m_pcRDGoOnSbacCoder->store(m_pppcRDSbacCoder[pcCU->getDepth(0)][CI_TEMP_BEST]); 4597 } 4543 m_pcRDGoOnSbacCoder->store(m_pppcRDSbacCoder[pcCU->getDepth(0)][CI_TEMP_BEST]); 4598 4544 4599 4545 pcCU->setCbfSubParts( 0, 0, 0, 0, pcCU->getDepth( 0 ) ); … … 4631 4577 uiBits = 0; 4632 4578 uiDistortion = 0; 4633 if( m_bUseSBACRD ) 4634 { 4635 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ pcCU->getDepth( 0 ) ][ CI_CURR_BEST ] ); 4636 } 4579 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ pcCU->getDepth( 0 ) ][ CI_CURR_BEST ] ); 4637 4580 4638 4581 UInt uiZeroDistortion = 0; … … 4668 4611 } 4669 4612 4670 if( m_bUseSBACRD ) 4671 { 4672 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[pcCU->getDepth(0)][CI_CURR_BEST] ); 4673 } 4613 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[pcCU->getDepth(0)][CI_CURR_BEST] ); 4674 4614 #if 0 // check 4675 4615 { … … 4677 4617 m_pcEntropyCoder->encodeCoeff( pcCU, 0, pcCU->getDepth(0), pcCU->getWidth(0), pcCU->getHeight(0) ); 4678 4618 const UInt uiBitsForCoeff = m_pcEntropyCoder->getNumberOfWrittenBits(); 4679 if( m_bUseSBACRD ) 4680 { 4681 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[pcCU->getDepth(0)][CI_CURR_BEST] ); 4682 } 4619 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[pcCU->getDepth(0)][CI_CURR_BEST] ); 4683 4620 if( uiBitsForCoeff != uiBits ) 4684 4621 assert( 0 ); … … 4729 4666 dCostBest = dCost; 4730 4667 qpBest = qp; 4731 if( m_bUseSBACRD ) 4732 { 4733 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ pcCU->getDepth( 0 ) ][ CI_TEMP_BEST ] ); 4734 } 4668 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ pcCU->getDepth( 0 ) ][ CI_TEMP_BEST ] ); 4735 4669 } 4736 4670 } … … 4740 4674 if( qpMin != qpMax && qpBest != qpMax ) 4741 4675 { 4742 if( m_bUseSBACRD ) 4743 { 4744 assert( 0 ); // check 4745 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ pcCU->getDepth( 0 ) ][ CI_TEMP_BEST ] ); 4746 } 4676 assert( 0 ); // check 4677 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ pcCU->getDepth( 0 ) ][ CI_TEMP_BEST ] ); 4678 4747 4679 // copy best cbf and trIdx to pcCU 4748 4680 const UInt uiQPartNum = pcCU->getPic()->getNumPartInCU() >> (pcCU->getDepth(0) << 1); … … 4824 4756 UInt uiBestTransformMode[3] = {0}; 4825 4757 4826 if( m_bUseSBACRD ) 4827 { 4828 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 4829 } 4758 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 4830 4759 4831 4760 if( bCheckFull ) … … 4965 4894 4966 4895 Int scalingListType = 3 + g_eTTable[(Int)TEXT_LUMA]; 4967 assert(scalingListType < 6);4896 assert(scalingListType < SCALING_LIST_NUM); 4968 4897 m_pcTrQuant->invtransformNxN( pcCU->getCUTransquantBypass(uiAbsPartIdx), TEXT_LUMA,REG_DCT, pcResiCurrY, m_pcQTTempTComYuv[uiQTTempAccessLayer].getStride(), pcCoeffCurrY, trWidth, trHeight, scalingListType );//this is for inter mode only 4969 4898 … … 5038 4967 5039 4968 Int scalingListType = 3 + g_eTTable[(Int)TEXT_CHROMA_U]; 5040 assert(scalingListType < 6);4969 assert(scalingListType < SCALING_LIST_NUM); 5041 4970 m_pcTrQuant->invtransformNxN( pcCU->getCUTransquantBypass(uiAbsPartIdx), TEXT_CHROMA,REG_DCT, pcResiCurrU, m_pcQTTempTComYuv[uiQTTempAccessLayer].getCStride(), pcCoeffCurrU, trWidthC, trHeightC, scalingListType ); 5042 4971 … … 5108 5037 5109 5038 Int scalingListType = 3 + g_eTTable[(Int)TEXT_CHROMA_V]; 5110 assert(scalingListType < 6);5039 assert(scalingListType < SCALING_LIST_NUM); 5111 5040 m_pcTrQuant->invtransformNxN( pcCU->getCUTransquantBypass(uiAbsPartIdx), TEXT_CHROMA,REG_DCT, pcResiCurrV, m_pcQTTempTComYuv[uiQTTempAccessLayer].getCStride(), pcCoeffCurrV, trWidthC, trHeightC, scalingListType ); 5112 5041 … … 5192 5121 } 5193 5122 5194 if( m_bUseSBACRD ) 5195 { 5196 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 5197 } 5123 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 5198 5124 5199 5125 pcCU->setTransformSkipSubParts ( 1, TEXT_LUMA, uiAbsPartIdx, uiDepth ); … … 5234 5160 5235 5161 Int scalingListType = 3 + g_eTTable[(Int)TEXT_LUMA]; 5236 assert(scalingListType < 6);5162 assert(scalingListType < SCALING_LIST_NUM); 5237 5163 5238 5164 m_pcTrQuant->invtransformNxN( pcCU->getCUTransquantBypass(uiAbsPartIdx), TEXT_LUMA,REG_DCT, pcResiCurrY, m_pcQTTempTComYuv[uiQTTempAccessLayer].getStride(), pcCoeffCurrY, trWidth, trHeight, scalingListType, true ); … … 5292 5218 } 5293 5219 5294 if( m_bUseSBACRD ) 5295 { 5296 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 5297 } 5220 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 5298 5221 5299 5222 pcCU->setTransformSkipSubParts ( 1, TEXT_CHROMA_U, uiAbsPartIdx, pcCU->getDepth(0)+uiTrModeC ); … … 5345 5268 5346 5269 Int scalingListType = 3 + g_eTTable[(Int)TEXT_CHROMA_U]; 5347 assert(scalingListType < 6);5270 assert(scalingListType < SCALING_LIST_NUM); 5348 5271 5349 5272 m_pcTrQuant->invtransformNxN( pcCU->getCUTransquantBypass(uiAbsPartIdx), TEXT_CHROMA,REG_DCT, pcResiCurrU, m_pcQTTempTComYuv[uiQTTempAccessLayer].getCStride(), pcCoeffCurrU, trWidthC, trHeightC, scalingListType, true ); … … 5387 5310 5388 5311 Int scalingListType = 3 + g_eTTable[(Int)TEXT_CHROMA_V]; 5389 assert(scalingListType < 6);5312 assert(scalingListType < SCALING_LIST_NUM); 5390 5313 5391 5314 m_pcTrQuant->invtransformNxN( pcCU->getCUTransquantBypass(uiAbsPartIdx), TEXT_CHROMA,REG_DCT, pcResiCurrV, m_pcQTTempTComYuv[uiQTTempAccessLayer].getCStride(), pcCoeffCurrV, trWidthC, trHeightC, scalingListType, true ); … … 5423 5346 } 5424 5347 5425 if( m_bUseSBACRD ) 5426 { 5427 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 5428 } 5429 5348 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 5430 5349 m_pcEntropyCoder->resetBits(); 5431 5350 … … 5460 5379 if( bCheckSplit ) 5461 5380 { 5462 if( m_bUseSBACRD &&bCheckFull )5381 if( bCheckFull ) 5463 5382 { 5464 5383 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_TEST ] ); … … 5492 5411 } 5493 5412 5494 if( m_bUseSBACRD ) 5495 { 5496 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 5497 } 5413 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_ROOT ] ); 5498 5414 m_pcEntropyCoder->resetBits(); 5499 5415 … … 5523 5439 } 5524 5440 assert( bCheckFull ); 5525 if( m_bUseSBACRD ) 5526 { 5527 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_TEST ] ); 5528 } 5441 5442 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[ uiDepth ][ CI_QT_TRAFO_TEST ] ); 5529 5443 } 5530 5444 rdCost += dSingleCost; … … 5717 5631 UInt TEncSearch::xModeBitsIntra( TComDataCU* pcCU, UInt uiMode, UInt uiPU, UInt uiPartOffset, UInt uiDepth, UInt uiInitTrDepth ) 5718 5632 { 5719 if( m_bUseSBACRD ) 5720 { 5721 // Reload only contexts required for coding intra mode information 5722 m_pcRDGoOnSbacCoder->loadIntraDirModeLuma( m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST] ); 5723 } 5633 // Reload only contexts required for coding intra mode information 5634 m_pcRDGoOnSbacCoder->loadIntraDirModeLuma( m_pppcRDSbacCoder[uiDepth][CI_CURR_BEST] ); 5724 5635 5725 5636 pcCU->setLumaIntraDirSubParts ( uiMode, uiPartOffset, uiDepth + uiInitTrDepth ); … … 6037 5948 } 6038 5949 5950 #if SVC_EXTENSION 6039 5951 #if REF_IDX_ME_ZEROMV 6040 5952 Void TEncSearch::xPatternSearchFracDIFMv0(TComDataCU* pcCU, … … 6205 6117 } 6206 6118 #endif 6119 #endif //SVC_EXTENSION 6207 6120 6208 6121 //! \}
Note: See TracChangeset for help on using the changeset viewer.