Changeset 840 in 3DVCSoftware
- Timestamp:
- 8 Feb 2014, 15:29:19 (11 years ago)
- Location:
- branches/HTM-10.0rc1-dev0/source
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-10.0rc1-dev0/source/App/TAppDecoder/TAppDecTop.cpp
r838 r840 280 280 bytestream.reset(); 281 281 #if H_MV_ENC_DEC_TRAC 282 #if ENC_DEC_TRACE 282 283 const Bool resetCounter = false; 283 284 if ( resetCounter ) … … 288 289 { 289 290 g_disableHLSTrace = true; // Trancing of second parsing of SH is not carried out 290 } 291 } 292 #endif 291 293 #endif 292 294 } -
branches/HTM-10.0rc1-dev0/source/App/TAppEncoder/TAppEncTop.cpp
r839 r840 825 825 } 826 826 827 #if !RATE_CONTROL_LAMBDA_DOMAIN && KWU_FIX_URQ828 for(Int layer=0; layer < m_numberOfLayers; layer++ )829 {830 if(m_acTEncTopList[layer]->getUseRateCtrl() && !m_acTEncTopList[layer]->getIsDepth())831 {832 m_acTEncTopList[layer]->getRateCtrl()->updateRCGOPStatus();833 }834 }835 #endif836 837 827 gopSize = maxGopSize; 838 828 } … … 1096 1086 rateStatsAccum(au, stats); 1097 1087 } 1098 } 1099 #endif 1088 #endif 1089 } 1100 1090 } 1101 1091 -
branches/HTM-10.0rc1-dev0/source/Lib/TLibCommon/TComYuv.cpp
r837 r840 647 647 } 648 648 } 649 #if H_3D 650 Void TComYuv::addClipPartLuma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiTrUnitIdx, UInt uiPartSize ) 651 { 652 Int x, y; 653 654 Pel* pSrc0 = pcYuvSrc0->getLumaAddr( uiTrUnitIdx); 655 Pel* pSrc1 = pcYuvSrc1->getLumaAddr( uiTrUnitIdx); 656 Pel* pDst = getLumaAddr( uiTrUnitIdx); 657 658 UInt iSrc0Stride = pcYuvSrc0->getStride(); 659 UInt iSrc1Stride = pcYuvSrc1->getStride(); 660 UInt iDstStride = getStride(); 661 for ( y = uiPartSize-1; y >= 0; y-- ) 662 { 663 for ( x = uiPartSize-1; x >= 0; x-- ) 664 { 665 pDst[x] = ClipY( pSrc0[x] + pSrc1[x] ); 666 } 667 pSrc0 += iSrc0Stride; 668 pSrc1 += iSrc1Stride; 669 pDst += iDstStride; 670 } 671 } 672 673 #if H_3D_ARP 674 Void TComYuv::addARP( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Bool bClip ) 675 { 676 addARPLuma ( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth , uiHeight , bClip ); 677 addARPChroma ( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth>>1, uiHeight>>1 , bClip ); 678 } 679 680 Void TComYuv::addARPLuma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Bool bClip ) 681 { 682 Int x, y; 683 684 Pel* pSrc0 = pcYuvSrc0->getLumaAddr( uiAbsPartIdx ); 685 Pel* pSrc1 = pcYuvSrc1->getLumaAddr( uiAbsPartIdx ); 686 Pel* pDst = getLumaAddr( uiAbsPartIdx ); 687 688 UInt iSrc0Stride = pcYuvSrc0->getStride(); 689 UInt iSrc1Stride = pcYuvSrc1->getStride(); 690 UInt iDstStride = getStride(); 691 for ( y = uiHeight-1; y >= 0; y-- ) 692 { 693 for ( x = uiWidth-1; x >= 0; x-- ) 694 { 695 pDst[x] = pSrc0[x] + pSrc1[x]; 696 if( bClip ) 697 { 698 pDst[x] = ClipY( pDst[x] ); 699 } 700 } 701 pSrc0 += iSrc0Stride; 702 pSrc1 += iSrc1Stride; 703 pDst += iDstStride; 704 } 705 } 706 707 Void TComYuv::addARPChroma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth, UInt uiHeight, Bool bClip ) 708 { 709 Int x, y; 710 711 Pel* pSrcU0 = pcYuvSrc0->getCbAddr( uiAbsPartIdx ); 712 Pel* pSrcU1 = pcYuvSrc1->getCbAddr( uiAbsPartIdx ); 713 Pel* pSrcV0 = pcYuvSrc0->getCrAddr( uiAbsPartIdx ); 714 Pel* pSrcV1 = pcYuvSrc1->getCrAddr( uiAbsPartIdx ); 715 Pel* pDstU = getCbAddr( uiAbsPartIdx ); 716 Pel* pDstV = getCrAddr( uiAbsPartIdx ); 717 718 UInt iSrc0Stride = pcYuvSrc0->getCStride(); 719 UInt iSrc1Stride = pcYuvSrc1->getCStride(); 720 UInt iDstStride = getCStride(); 721 for ( y = uiHeight-1; y >= 0; y-- ) 722 { 723 for ( x = uiWidth-1; x >= 0; x-- ) 724 { 725 pDstU[x] = pSrcU0[x] + pSrcU1[x]; 726 pDstV[x] = pSrcV0[x] + pSrcV1[x]; 727 if( bClip ) 728 { 729 pDstU[x] = ClipC( pDstU[x] ); 730 pDstV[x] = ClipC( pDstV[x] ); 731 } 732 } 733 734 pSrcU0 += iSrc0Stride; 735 pSrcU1 += iSrc1Stride; 736 pSrcV0 += iSrc0Stride; 737 pSrcV1 += iSrc1Stride; 738 pDstU += iDstStride; 739 pDstV += iDstStride; 740 } 741 } 742 743 Void TComYuv::subtractARP( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight ) 744 { 745 subtractARPLuma ( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth , uiHeight ); 746 subtractARPChroma( pcYuvSrc0, pcYuvSrc1, uiAbsPartIdx, uiWidth>>1 , uiHeight>>1 ); 747 } 748 749 Void TComYuv::subtractARPLuma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight ) 750 { 751 Int x, y; 752 753 Pel* pSrc0 = pcYuvSrc0->getLumaAddr( uiAbsPartIdx ); 754 Pel* pSrc1 = pcYuvSrc1->getLumaAddr( uiAbsPartIdx ); 755 Pel* pDst = getLumaAddr( uiAbsPartIdx ); 756 757 Int iSrc0Stride = pcYuvSrc0->getStride(); 758 Int iSrc1Stride = pcYuvSrc1->getStride(); 759 Int iDstStride = getStride(); 760 for ( y = uiHeight-1; y >= 0; y-- ) 761 { 762 for ( x = uiWidth-1; x >= 0; x-- ) 763 { 764 pDst[x] = pSrc0[x] - pSrc1[x]; 765 } 766 pSrc0 += iSrc0Stride; 767 pSrc1 += iSrc1Stride; 768 pDst += iDstStride; 769 } 770 } 771 772 Void TComYuv::subtractARPChroma( TComYuv* pcYuvSrc0, TComYuv* pcYuvSrc1, UInt uiAbsPartIdx, UInt uiWidth , UInt uiHeight ) 773 { 774 Int x, y; 775 776 Pel* pSrcU0 = pcYuvSrc0->getCbAddr( uiAbsPartIdx ); 777 Pel* pSrcU1 = pcYuvSrc1->getCbAddr( uiAbsPartIdx ); 778 Pel* pSrcV0 = pcYuvSrc0->getCrAddr( uiAbsPartIdx ); 779 Pel* pSrcV1 = pcYuvSrc1->getCrAddr( uiAbsPartIdx ); 780 Pel* pDstU = getCbAddr( uiAbsPartIdx ); 781 Pel* pDstV = getCrAddr( uiAbsPartIdx ); 782 783 Int iSrc0Stride = pcYuvSrc0->getCStride(); 784 Int iSrc1Stride = pcYuvSrc1->getCStride(); 785 Int iDstStride = getCStride(); 786 for ( y = uiHeight-1; y >= 0; y-- ) 787 { 788 for ( x = uiWidth-1; x >= 0; x-- ) 789 { 790 pDstU[x] = pSrcU0[x] - pSrcU1[x]; 791 pDstV[x] = pSrcV0[x] - pSrcV1[x]; 792 } 793 pSrcU0 += iSrc0Stride; 794 pSrcU1 += iSrc1Stride; 795 pSrcV0 += iSrc0Stride; 796 pSrcV1 += iSrc1Stride; 797 pDstU += iDstStride; 798 pDstV += iDstStride; 799 } 800 } 801 802 Void TComYuv::multiplyARP( UInt uiAbsPartIdx , UInt uiWidth , UInt uiHeight , UChar dW ) 803 { 804 multiplyARPLuma( uiAbsPartIdx , uiWidth , uiHeight , dW ); 805 multiplyARPChroma( uiAbsPartIdx , uiWidth >> 1 , uiHeight >> 1 , dW ); 806 } 807 808 Void TComYuv::xxMultiplyLine( Pel* pSrcDst , UInt uiWidth , UChar dW ) 809 { 810 assert( dW == 2 ); 811 for( UInt x = 0 ; x < uiWidth ; x++ ) 812 pSrcDst[x] = pSrcDst[x] >> 1; 813 } 814 815 Void TComYuv::multiplyARPLuma( UInt uiAbsPartIdx , UInt uiWidth , UInt uiHeight , UChar dW ) 816 { 817 Pel* pDst = getLumaAddr( uiAbsPartIdx ); 818 Int iDstStride = getStride(); 819 for ( Int y = uiHeight-1; y >= 0; y-- ) 820 { 821 xxMultiplyLine( pDst , uiWidth , dW ); 822 pDst += iDstStride; 823 } 824 } 825 826 Void TComYuv::multiplyARPChroma( UInt uiAbsPartIdx , UInt uiWidth , UInt uiHeight , UChar dW ) 827 { 828 Pel* pDstU = getCbAddr( uiAbsPartIdx ); 829 Pel* pDstV = getCrAddr( uiAbsPartIdx ); 830 831 Int iDstStride = getCStride(); 832 for ( Int y = uiHeight-1; y >= 0; y-- ) 833 { 834 xxMultiplyLine( pDstU , uiWidth , dW ); 835 xxMultiplyLine( pDstV , uiWidth , dW ); 836 pDstU += iDstStride; 837 pDstV += iDstStride; 838 } 839 } 840 #endif 841 #endif 842 649 843 //! \} -
branches/HTM-10.0rc1-dev0/source/Lib/TLibCommon/TypeDef.h
r839 r840 55 55 56 56 #ifndef HEVC_EXT 57 #define HEVC_EXT 057 #define HEVC_EXT 2 58 58 #endif 59 59 … … 323 323 #define MTK_NBDV_IVREF_FIX_G0067 1 // Disable IvMC, VSP when IVREF is not available, JCT3V-G0067 324 324 #endif 325 326 ///////////////////////////////////////////////////////////////////////////////////////// 327 /////////////////////////////////// HTM-10.1 Integrations ////////////////////////////// 328 ///////////////////////////////////////////////////////////////////////////////////////// 329 330 #define UPDATE_HM13 1 325 331 ///////////////////////////////////////////////////////////////////////////////////////// 326 332 /////////////////////////////////// HM RELATED DEFINES //////////////////////////////// -
branches/HTM-10.0rc1-dev0/source/Lib/TLibDecoder/TDecSbac.cpp
r838 r840 2173 2173 xCopyContextsFrom(pScr); 2174 2174 } 2175 2176 #if H_3D_ARP 2177 Void TDecSbac::parseARPW( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 2178 { 2179 UInt uiMaxW = pcCU->getSlice()->getARPStepNum() - 1; 2180 UInt uiW = 0; 2181 UInt uiOffset = pcCU->getCTXARPWFlag(uiAbsPartIdx); 2182 UInt uiCode = 0; 2183 2184 assert ( uiMaxW > 0 ); 2185 2186 m_pcTDecBinIf->decodeBin( uiCode , m_cCUPUARPWSCModel.get( 0, 0, 0 + uiOffset ) ); 2187 2188 uiW = uiCode; 2189 if( 1 == uiW ) 2190 { 2191 #if MTK_ARP_FLAG_CABAC_SIMP_G0061 2192 m_pcTDecBinIf->decodeBin( uiCode , m_cCUPUARPWSCModel.get( 0, 0, 2 ) ); 2193 #else 2194 m_pcTDecBinIf->decodeBin( uiCode , m_cCUPUARPWSCModel.get( 0, 0, 3 ) ); 2195 #endif 2196 uiW += ( 1 == uiCode ? 1 : 0 ); 2197 } 2198 #if H_MV_ENC_DEC_TRAC 2199 DTRACE_CU("iv_res_pred_weight_idx", uiW ) 2200 #endif 2201 pcCU->setARPWSubParts( ( UChar )( uiW ) , uiAbsPartIdx, uiDepth ); 2202 } 2203 #endif 2204 2205 #if H_3D_IC 2206 /** parse illumination compensation flag 2207 * \param pcCU 2208 * \param uiAbsPartIdx 2209 * \param uiDepth 2210 * \returns Void 2211 */ 2212 Void TDecSbac::parseICFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 2213 { 2214 UInt uiSymbol = 0; 2215 #if MTK_IC_FLAG_CABAC_SIMP_G0061 2216 m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUICFlagSCModel.get( 0, 0, 0 ) ); 2217 #else 2218 UInt uiCtxIC = pcCU->getCtxICFlag( uiAbsPartIdx ); 2219 m_pcTDecBinIf->decodeBin( uiSymbol, m_cCUICFlagSCModel.get( 0, 0, uiCtxIC ) ); 2220 #endif 2221 #if !H_MV_ENC_DEC_TRAC 2222 DTRACE_CABAC_VL( g_nSymbolCounter++ ); 2223 DTRACE_CABAC_T( "\tICFlag" ); 2224 DTRACE_CABAC_T( "\tuiCtxIC: "); 2225 DTRACE_CABAC_V( uiCtxIC ); 2226 DTRACE_CABAC_T( "\tuiSymbol: "); 2227 DTRACE_CABAC_V( uiSymbol ); 2228 DTRACE_CABAC_T( "\n"); 2229 #else 2230 DTRACE_CU("ic_flag", uiSymbol) 2231 #endif 2232 2233 pcCU->setICFlagSubParts( uiSymbol ? true : false , uiAbsPartIdx, 0, uiDepth ); 2234 } 2235 #endif 2236 2237 #if H_3D_INTER_SDC 2238 #if QC_SDC_UNIFY_G0130 2239 Void TDecSbac::parseDeltaDC( TComDataCU* pcCU, UInt absPartIdx, UInt depth ) 2240 { 2241 if( ! ( pcCU->getSDCFlag( absPartIdx ) || ( pcCU->isIntra( absPartIdx ) && getDimType( pcCU->getLumaIntraDir( absPartIdx ) ) < DIM_NUM_TYPE ) ) ) 2242 { 2243 assert( 0 ); 2244 } 2245 2246 UInt symbol = 0; 2247 UInt uiNumSegments = 0; 2248 2249 if( pcCU->isIntra( absPartIdx ) ) 2250 { 2251 UInt dir = pcCU->getLumaIntraDir( absPartIdx ); 2252 uiNumSegments = isDimMode( dir ) ? 2 : 1; 2253 2254 m_pcTDecBinIf->decodeBin( symbol, m_cDdcFlagSCModel.get( 0, 0, uiNumSegments-1 ) ); 2255 2256 if( pcCU->getSDCFlag( absPartIdx ) ) 2257 { 2258 assert( pcCU->getPartitionSize( absPartIdx ) == SIZE_2Nx2N ); 2259 pcCU->setTrIdxSubParts( 0, absPartIdx, depth ); 2260 pcCU->setCbfSubParts( 1, 1, 1, absPartIdx, depth ); 2261 } 2262 else 2263 { 2264 pcCU->setLumaIntraDirSubParts( dir + symbol, absPartIdx, depth ); 2265 } 2266 } 2267 else 2268 { 2269 #if SEC_INTER_SDC_G0101 2270 uiNumSegments = 1; 2271 #else 2272 PartSize cPartSize = pcCU->getPartitionSize( absPartIdx ); 2273 uiNumSegments = ( cPartSize == SIZE_2Nx2N ) ? 1 : ( cPartSize == SIZE_NxN ? 4 : 2 ); 2274 #endif 2275 symbol = 1; 2276 } 2277 2278 2279 for( UInt segment = 0; segment < uiNumSegments; segment++ ) 2280 { 2281 Pel valDeltaDC = 0; 2282 if( symbol ) 2283 { 2284 xParseDimDeltaDC( valDeltaDC, uiNumSegments ); 2285 } 2286 2287 if( pcCU->isIntra( absPartIdx ) ) 2288 { 2289 UInt dir = pcCU->getLumaIntraDir( absPartIdx ); 2290 2291 if( pcCU->getSDCFlag( absPartIdx ) ) 2292 { 2293 pcCU->setSDCSegmentDCOffset( valDeltaDC, segment, absPartIdx ); 2294 } 2295 else 2296 { 2297 pcCU->setDimDeltaDC( getDimType( dir ), segment, absPartIdx, valDeltaDC ); 2298 } 2299 } 2300 else 2301 { 2302 pcCU->setSDCSegmentDCOffset( valDeltaDC, segment, absPartIdx ); 2303 } 2304 } 2305 } 2306 2307 Void TDecSbac::parseSDCFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 2308 { 2309 UInt uiSymbol = 0; 2310 UInt uiCtxSDCFlag = pcCU->getCtxSDCFlag( uiAbsPartIdx ); 2311 2312 m_pcTDecBinIf->decodeBin( uiSymbol, m_cSDCFlagSCModel.get( 0, 0, uiCtxSDCFlag ) ); 2313 2314 if( uiSymbol ) 2315 { 2316 pcCU->setSDCFlagSubParts( true, uiAbsPartIdx, uiDepth ); 2317 pcCU->setTrIdxSubParts( 0, uiAbsPartIdx, uiDepth ); 2318 pcCU->setCbfSubParts( 1, 1, 1, uiAbsPartIdx, uiDepth ); 2319 } 2320 else 2321 { 2322 pcCU->setSDCFlagSubParts( false, uiAbsPartIdx, uiDepth ); 2323 } 2324 } 2325 #else 2326 Void TDecSbac::parseInterSDCFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 2327 { 2328 UInt uiSymbol = 0; 2329 UInt uiCtxInterSDCFlag = pcCU->getCtxInterSDCFlag( uiAbsPartIdx ); 2330 2331 m_pcTDecBinIf->decodeBin( uiSymbol, m_cInterSDCFlagSCModel.get( 0, 0, uiCtxInterSDCFlag ) ); 2332 2333 if( uiSymbol ) 2334 { 2335 pcCU->setInterSDCFlagSubParts( true, uiAbsPartIdx, 0, uiDepth ); 2336 pcCU->setTrIdxSubParts( 0, uiAbsPartIdx, uiDepth ); 2337 pcCU->setCbfSubParts( 1, 1, 1, uiAbsPartIdx, uiDepth ); 2338 } 2339 else 2340 { 2341 pcCU->setInterSDCFlagSubParts( false, uiAbsPartIdx, 0, uiDepth); 2342 } 2343 } 2344 2345 Void TDecSbac::parseInterSDCResidualData ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiSegment ) 2346 { 2347 UInt uiAbsIdx = 0; 2348 UInt uiSign = 0; 2349 Int iIdx = 0; 2350 2351 xReadExGolombLevel( uiAbsIdx, m_cInterSDCResidualSCModel.get( 0, 0, 0 ) ); 2352 2353 uiAbsIdx++; 2354 m_pcTDecBinIf->decodeBin( uiSign, m_cInterSDCResidualSignFlagSCModel.get( 0, 0, 0 ) ); 2355 iIdx = (Int)( uiSign ? -1 : 1 ) * uiAbsIdx; 2356 2357 pcCU->setInterSDCSegmentDCOffset( iIdx, uiSegment, uiAbsPartIdx ); 2358 } 2359 #endif 2360 #endif 2361 2362 #if H_3D_DBBP 2363 Void TDecSbac::parseDBBPFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 2364 { 2365 PartSize ePartSize = pcCU->getPartitionSize( uiAbsPartIdx ); 2366 AOF( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) ); 2367 AOF( !pcCU->getSlice()->getIsDepth() ); 2368 AOF( ePartSize == RWTH_DBBP_PACK_MODE ); 2369 2370 UInt uiSymbol = 0; 2371 2372 m_pcTDecBinIf->decodeBin( uiSymbol, m_cDBBPFlagSCModel.get( 0, 0, 0 ) ); 2373 2374 if( uiSymbol ) 2375 { 2376 pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx, 0, uiDepth); 2377 } 2378 } 2379 #endif 2380 2381 2382 2175 2383 //! \} -
branches/HTM-10.0rc1-dev0/source/Lib/TLibEncoder/TEncCu.cpp
r839 r840 1805 1805 memset( mergeCandBuffer, 0, MRG_MAX_NUM_CANDS_MEM*sizeof(Int) ); 1806 1806 rpcTempCU->setPartSizeSubParts( SIZE_2Nx2N, 0, uhDepth ); // interprets depth relative to LCU level 1807 #if !UPDATE_HM13 1807 1808 rpcTempCU->setCUTransquantBypassSubParts( m_pcEncCfg->getCUTransquantBypassFlagValue(), 0, uhDepth ); 1809 #endif 1808 1810 rpcTempCU->setARPWSubParts( (UChar)nARPW , 0 , uhDepth ); 1809 1811 #if H_3D_IC … … 1992 1994 if( rpcTempCU != rpcTempCUPre ) 1993 1995 { 1994 rpcTempCU->initEstData( uhDepth, orgQP );1996 rpcTempCU->initEstData( uhDepth, orgQP, bTransquantBypassFlag ); 1995 1997 rpcTempCU->copyPartFrom( rpcBestCU, 0, uhDepth ); 1996 1998 } … … 2022 2024 if( rpcTempCU != rpcTempCUPre ) 2023 2025 { 2024 rpcTempCU->initEstData( uhDepth, orgQP );2026 rpcTempCU->initEstData( uhDepth, orgQP, bTransquantBypassFlag ); 2025 2027 rpcTempCU->copyPartFrom( rpcBestCU, 0, uhDepth ); 2026 2028 } … … 2121 2123 #endif 2122 2124 { 2125 2126 #if UPDATE_HM13 2127 #if H_3D 2128 const Bool bTransquantBypassFlag = rpcTempCU->getCUTransquantBypass(0); 2129 #endif 2130 #endif 2123 2131 #if H_3D_FAST_TEXTURE_ENCODING 2124 2132 if(!(bFMD && (ePartSize == SIZE_2Nx2N))) //have motion estimation or merge check … … 2144 2152 if( bFirstTime == false && rpcTempCU->getSlice()->getVPS()->getUseAdvRP( iLayerId ) ) 2145 2153 { 2154 #if UPDATE_HM13 2155 rpcTempCU->initEstData( rpcTempCU->getDepth(0), rpcTempCU->getQP(0),bTransquantBypassFlag ); 2156 #else 2146 2157 rpcTempCU->initEstData( rpcTempCU->getDepth(0), rpcTempCU->getQP(0) ); 2158 #endif 2147 2159 } 2148 2160 #endif … … 2258 2270 { 2259 2271 Int orgQP = rpcBestCU->getQP( 0 ); 2272 #if UPDATE_HM13 2273 rpcTempCU->initEstData( uhDepth, orgQP ,bTransquantBypassFlag ); 2274 #else 2260 2275 rpcTempCU->initEstData( uhDepth, orgQP ); 2276 #endif 2261 2277 rpcTempCU->copyPartFrom( rpcBestCU, 0, uhDepth ); 2262 2278 } -
branches/HTM-10.0rc1-dev0/source/Lib/TLibEncoder/TEncEntropy.cpp
r837 r840 798 798 } 799 799 800 #if H_3D_INTER_SDC 801 #if QC_SDC_UNIFY_G0130 802 Void TEncEntropy::encodeDeltaDC ( TComDataCU* pcCU, UInt absPartIdx ) 803 { 804 m_pcEntropyCoderIf->codeDeltaDC( pcCU, absPartIdx ); 805 } 806 807 Void TEncEntropy::encodeSDCFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD ) 808 { 809 if( ( !pcCU->isIntra( uiAbsPartIdx ) && !pcCU->getSlice()->getVPS()->getInterSDCFlag( pcCU->getSlice()->getLayerIdInVps() ) ) || 810 ( pcCU->isIntra( uiAbsPartIdx ) && !pcCU->getSlice()->getVPS()->getVpsDepthModesFlag( pcCU->getSlice()->getLayerIdInVps() ) ) ) 811 { 812 return; 813 } 814 815 #if SEC_INTER_SDC_G0101 816 if( !pcCU->getSlice()->getIsDepth() || pcCU->getPartitionSize( uiAbsPartIdx ) != SIZE_2Nx2N || pcCU->isSkipped( uiAbsPartIdx ) ) 817 #else 818 if( !pcCU->getSlice()->getIsDepth() || ( pcCU->isIntra( uiAbsPartIdx ) && pcCU->getPartitionSize( uiAbsPartIdx ) != SIZE_2Nx2N ) || pcCU->isSkipped( uiAbsPartIdx ) ) 819 #endif 820 { 821 return; 822 } 823 824 #if SEC_INTER_SDC_G0101 825 assert( pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N || ( !pcCU->isIntra( uiAbsPartIdx ) && !pcCU->isSkipped( uiAbsPartIdx ) ) ); 826 #else 827 assert( ( pcCU->isIntra( uiAbsPartIdx ) && pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) || ( !pcCU->isIntra( uiAbsPartIdx ) && !pcCU->isSkipped( uiAbsPartIdx ) ) ); 828 #endif 829 830 if( bRD ) 831 { 832 uiAbsPartIdx = 0; 833 } 834 835 m_pcEntropyCoderIf->codeSDCFlag( pcCU, uiAbsPartIdx ); 836 } 837 #else 838 Void TEncEntropy::encodeInterSDCFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD ) 839 { 840 if( !pcCU->getSlice()->getVPS()->getInterSDCFlag( pcCU->getSlice()->getLayerIdInVps() ) ) 841 { 842 return; 843 } 844 845 if( !pcCU->getSlice()->getIsDepth() || pcCU->isIntra( uiAbsPartIdx ) || pcCU->isSkipped( uiAbsPartIdx ) ) 846 { 847 return; 848 } 849 850 if( bRD ) 851 { 852 uiAbsPartIdx = 0; 853 } 854 855 m_pcEntropyCoderIf->codeInterSDCFlag( pcCU, uiAbsPartIdx ); 856 } 857 858 Void TEncEntropy::encodeInterSDCResidualData( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD ) 859 { 860 if( !pcCU->getSlice()->getVPS()->getInterSDCFlag( pcCU->getSlice()->getLayerIdInVps() ) ) 861 { 862 return; 863 } 864 865 if( !pcCU->getSlice()->getIsDepth() || pcCU->isIntra( uiAbsPartIdx ) || !pcCU->getInterSDCFlag( uiAbsPartIdx ) ) 866 { 867 return; 868 } 869 870 if( bRD ) 871 { 872 uiAbsPartIdx = 0; 873 } 874 875 // number of segments depends on prediction mode for INTRA 876 UInt uiNumSegments = ( pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_2Nx2N ) ? 1 : ( pcCU->getPartitionSize( uiAbsPartIdx ) == SIZE_NxN ? 4 : 2 ); 877 878 // encode residual data for each segment 879 for( UInt uiSeg = 0; uiSeg < uiNumSegments; uiSeg++ ) 880 { 881 m_pcEntropyCoderIf->codeInterSDCResidualData( pcCU, uiAbsPartIdx, uiSeg ); 882 } 883 } 884 #endif 885 #endif 886 #if H_3D_DBBP 887 Void TEncEntropy::encodeDBBPFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD ) 888 { 889 if( bRD ) 890 { 891 uiAbsPartIdx = 0; 892 } 893 m_pcEntropyCoderIf->codeDBBPFlag( pcCU, uiAbsPartIdx ); 894 } 895 #endif 800 896 //! \} -
branches/HTM-10.0rc1-dev0/source/Lib/TLibEncoder/TEncSbac.h
r837 r840 257 257 ContextModel3DBuffer m_cTransformSkipSCModel; 258 258 ContextModel3DBuffer m_CUTransquantBypassFlagSCModel; 259 260 #if H_3D_DIM 261 ContextModel3DBuffer m_cDepthIntraModeSCModel; 262 ContextModel3DBuffer m_cDdcFlagSCModel; 263 ContextModel3DBuffer m_cDdcDataSCModel; 264 #if QC_GENERIC_SDC_G0122 265 ContextModel3DBuffer m_cAngleFlagSCModel; 266 #if !QC_SDC_UNIFY_G0130 267 ContextModel3DBuffer m_cIntraSdcFlagSCModel; 268 #endif 269 #endif 270 #if H_3D_DIM_DMM 271 ContextModel3DBuffer m_cDmm1DataSCModel; 272 #endif 273 #if H_3D_DIM_SDC 274 ContextModel3DBuffer m_cSDCResidualFlagSCModel; 275 ContextModel3DBuffer m_cSDCResidualSCModel; 276 #endif 277 #endif 278 #if H_3D_INTER_SDC && !QC_SDC_UNIFY_G0130 279 ContextModel3DBuffer m_cInterSDCFlagSCModel; 280 ContextModel3DBuffer m_cInterSDCResidualSCModel; 281 ContextModel3DBuffer m_cInterSDCResidualSignFlagSCModel; 282 #endif 283 #if QC_SDC_UNIFY_G0130 284 ContextModel3DBuffer m_cSDCFlagSCModel; 285 #endif 286 #if H_3D_DBBP 287 ContextModel3DBuffer m_cDBBPFlagSCModel; 288 #endif 259 289 }; 260 290 -
branches/HTM-10.0rc1-dev0/source/Lib/TLibEncoder/TEncSearch.cpp
r839 r840 6044 6044 UInt uiBits = 0; 6045 6045 TComYuv *pDummy = NULL; 6046 if( m_bUseSBACRD ) 6047 { 6048 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[pcCU->getDepth(0)][CI_CURR_BEST] ); 6049 } 6046 m_pcRDGoOnSbacCoder->load( m_pppcRDSbacCoder[pcCU->getDepth(0)][CI_CURR_BEST] ); 6050 6047 6051 6048 xAddSymbolBitsInter( pcCU, 0, 0, uiBits, pDummy, NULL, pDummy ); … … 6066 6063 pcCU->getTotalCost() = rdCost; 6067 6064 6068 if( m_bUseSBACRD ) 6069 { 6070 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ pcCU->getDepth( 0 ) ][ CI_TEMP_BEST ] ); 6071 } 6065 m_pcRDGoOnSbacCoder->store( m_pppcRDSbacCoder[ pcCU->getDepth( 0 ) ][ CI_TEMP_BEST ] ); 6072 6066 } 6073 6067
Note: See TracChangeset for help on using the changeset viewer.