Changeset 373 in 3DVCSoftware for branches/HTM-6.2-dev2-Qualcomm/source/Lib/TLibEncoder
- Timestamp:
- 5 May 2013, 05:25:40 (12 years ago)
- Location:
- branches/HTM-6.2-dev2-Qualcomm/source/Lib/TLibEncoder
- Files:
-
- 14 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified branches/HTM-6.2-dev2-Qualcomm/source/Lib/TLibEncoder/TEncCavlc.cpp ¶
r332 r373 711 711 WRITE_UVLC( pcSPS->getMultiviewMvPredMode(), "multi_view_mv_pred_mode" ); 712 712 #endif 713 #if H3D_IVRP 713 #if H3D_IVRP & !QC_ARP_D0177 714 714 WRITE_FLAG ( pcSPS->getMultiviewResPredMode(), "multi_view_residual_pred_mode" ); 715 715 #endif 716 716 } 717 #endif 718 #if QC_ARP_D0177 719 WRITE_FLAG( pcSPS->getUseAdvRP () ? 1 : 0, "advanced_residual_pred_flag" ); 717 720 #endif 718 721 } … … 1321 1324 } 1322 1325 #endif 1323 1326 #if QC_ARP_D0177 1327 Void TEncCavlc::codeARPW( TComDataCU* pcCU, UInt uiAbsPartIdx ) 1328 { 1329 assert( false ); 1330 } 1331 #endif 1324 1332 Void TEncCavlc::codeAlfCtrlFlag( TComDataCU* pcCU, UInt uiAbsPartIdx ) 1325 1333 { -
TabularUnified branches/HTM-6.2-dev2-Qualcomm/source/Lib/TLibEncoder/TEncCavlc.h ¶
r332 r373 160 160 Void codeResPredFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 161 161 #endif 162 #if QC_ARP_D0177 163 virtual Void codeARPW ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 164 #endif 162 165 Void codeAlfCtrlFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 163 166 -
TabularUnified branches/HTM-6.2-dev2-Qualcomm/source/Lib/TLibEncoder/TEncCfg.h ¶
r332 r373 333 333 #endif 334 334 #if H3D_IVRP 335 #if QC_ARP_D0177 336 UInt m_nUseAdvResPred; 337 UInt m_nARPStepNum; 338 #else 335 339 UInt m_uiMultiviewResPredMode; 340 #endif 336 341 #endif 337 342 … … 414 419 #endif 415 420 #if H3D_IVRP 421 #if QC_ARP_D0177 422 UInt getUseAdvRP () { return m_nUseAdvResPred; } 423 Void setUseAdvRP ( UInt u ) { m_nUseAdvResPred = u; } 424 UInt getARPStepNum () { return m_nARPStepNum; } 425 Void setARPStepNum ( UInt u ) { m_nARPStepNum = u; } 426 #else 416 427 Void setMultiviewResPredMode ( UInt u ) { m_uiMultiviewResPredMode = u; } 428 #endif 417 429 #endif 418 430 … … 809 821 Int getViewOrderIdx () { return m_iViewOrderIdx; } // will be changed to view_id 810 822 #endif 823 811 824 }; 812 825 -
TabularUnified branches/HTM-6.2-dev2-Qualcomm/source/Lib/TLibEncoder/TEncCu.cpp ¶
r351 r373 64 64 m_ppcBestCU = new TComDataCU*[m_uhTotalDepth-1]; 65 65 m_ppcTempCU = new TComDataCU*[m_uhTotalDepth-1]; 66 66 #if QC_ARP_D0177 67 m_ppcWeightedTempCU = new TComDataCU*[m_uhTotalDepth-1]; 68 #endif 67 69 m_ppcPredYuvBest = new TComYuv*[m_uhTotalDepth-1]; 68 70 m_ppcResiYuvBest = new TComYuv*[m_uhTotalDepth-1]; … … 91 93 m_ppcBestCU[i] = new TComDataCU; m_ppcBestCU[i]->create( uiNumPartitions, uiWidth, uiHeight, false, uiMaxWidth >> (m_uhTotalDepth - 1) ); 92 94 m_ppcTempCU[i] = new TComDataCU; m_ppcTempCU[i]->create( uiNumPartitions, uiWidth, uiHeight, false, uiMaxWidth >> (m_uhTotalDepth - 1) ); 93 95 #if QC_ARP_D0177 96 m_ppcWeightedTempCU[i] = new TComDataCU; m_ppcWeightedTempCU[i]->create( uiNumPartitions, uiWidth, uiHeight, false, uiMaxWidth >> (m_uhTotalDepth - 1) ); 97 #endif 94 98 m_ppcPredYuvBest[i] = new TComYuv; m_ppcPredYuvBest[i]->create(uiWidth, uiHeight); 95 99 m_ppcResiYuvBest[i] = new TComYuv; m_ppcResiYuvBest[i]->create(uiWidth, uiHeight); … … 170 174 { 171 175 m_ppcResPredTmp [i]->destroy(); delete m_ppcResPredTmp[i]; m_ppcResPredTmp[i] = NULL; 176 } 177 #endif 178 #if QC_ARP_D0177 179 if(m_ppcWeightedTempCU[i]) 180 { 181 m_ppcWeightedTempCU[i]->destroy(); delete m_ppcWeightedTempCU[i]; m_ppcWeightedTempCU[i] = NULL; 172 182 } 173 183 #endif … … 596 606 if( rpcTempCU->getSlice()->getSliceType() != I_SLICE ) 597 607 { 608 #if QC_ARP_D0177 609 if(( rpcTempCU->getSlice()->getSPS()->getMultiviewMvPredMode() || rpcTempCU->getSlice()->getSPS()->getUseAdvRP()) && rpcTempCU->getSlice()->getViewId()) 610 #else 598 611 if(( rpcTempCU->getSlice()->getSPS()->getMultiviewMvPredMode() || rpcTempCU->getSlice()->getSPS()->getMultiviewResPredMode()) && rpcTempCU->getSlice()->getViewId()) 612 #endif 599 613 { 600 614 PartSize ePartTemp = rpcTempCU->getPartitionSize(0); … … 624 638 { 625 639 #if H3D_IVRP 640 #if QC_ARP_D0177 641 Bool bResPredAvailable = false; 642 Bool bResPredAllowed = (!rpcBestCU->getSlice()->getSPS()->isDepth () ); 643 bResPredAllowed = bResPredAllowed && ( rpcBestCU->getSlice()->getSPS()->getViewId () ); 644 if( bResPredAllowed ) 645 { 646 bResPredAvailable = rpcBestCU->getResidualSamples( 0, true, m_ppcResPredTmp[uiDepth] ); 647 } 648 for( UInt uiResPrdId = 0; uiResPrdId < (rpcBestCU->getSlice()->getSPS()->getUseAdvRP()? 1: ( bResPredAvailable ? 2 : 1 )); uiResPrdId++ ) 649 #else 626 650 Bool bResPredAvailable = false; 627 651 UInt uiResPrdId = 0; 652 #endif 628 653 { 629 654 Bool bResPredFlag = ( uiResPrdId > 0 ); … … 743 768 { 744 769 #if H3D_IVRP 770 #if QC_ARP_D0177 771 Bool bResPredAvailable = false; 772 Bool bResPredAllowed = (!rpcBestCU->getSlice()->getSPS()->isDepth () ); 773 bResPredAllowed = bResPredAllowed && ( rpcBestCU->getSlice()->getSPS()->getViewId () ); 774 if( bResPredAllowed ) 775 { 776 bResPredAvailable = rpcBestCU->getResidualSamples( 0, true, m_ppcResPredTmp[uiDepth] ); 777 } 778 for( UInt uiResPrdId = 0; uiResPrdId < (rpcBestCU->getSlice()->getSPS()->getUseAdvRP()? 1: ( bResPredAvailable ? 2 : 1 )); uiResPrdId++ ) 779 #else 745 780 Bool bResPredAvailable = false; 746 781 UInt uiResPrdId = 0; 782 #endif 747 783 { 748 784 Bool bResPredFlag = ( uiResPrdId > 0 ); … … 1795 1831 ); 1796 1832 #endif 1833 #if QC_ARP_D0177 1834 m_pcEntropyCoder->encodeARPW( pcCU , uiAbsPartIdx, 0, uiDepth); 1835 #endif 1797 1836 finishCU(pcCU,uiAbsPartIdx,uiDepth); 1798 1837 return; … … 1861 1900 Int numValidMergeCand = 0; 1862 1901 1902 #if QC_ARP_D0177 1903 Bool bResPrdAvail = rpcTempCU->getResPredAvail( 0 ); 1904 Bool bResPrdFlag = rpcTempCU->getResPredFlag ( 0 ); 1905 #endif 1863 1906 #if LGE_ILLUCOMP_B0045 1864 1907 Bool bICFlag = rpcTempCU->getICFlag(0); … … 1893 1936 rpcTempCU->getInterMergeCandidates( 0, 0, uhDepth, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand ); 1894 1937 #endif 1895 #if H3D_IVRP 1938 #if H3D_IVRP & !QC_ARP_D0177 1896 1939 Bool bResPredAvail = rpcTempCU->getResPredAvail(0); 1897 1940 #endif 1898 1941 1899 1942 Bool bestIsSkip = false; 1900 1943 #if QC_ARP_D0177 1944 Int nGRPW = rpcTempCU->getSlice()->getARPStepNum() - 1; 1945 if(nGRPW < 0 || !bResPrdAvail ) 1946 nGRPW = 0; 1947 for( ; nGRPW >= 0 ; nGRPW-- ) 1948 { 1949 #endif 1901 1950 for( UInt uiMergeCand = 0; uiMergeCand < numValidMergeCand; ++uiMergeCand ) 1902 1951 { … … 1932 1981 rpcTempCU->setPredModeSubParts( MODE_SKIP, 0, uhDepth ); // interprets depth relative to LCU level 1933 1982 rpcTempCU->setPartSizeSubParts( SIZE_2Nx2N, 0, uhDepth ); // interprets depth relative to LCU level 1983 #if QC_ARP_D0177 1984 if(rpcTempCU->getSlice()->getSPS()->getUseAdvRP()) 1985 rpcTempCU->setARPWSubParts( ( UChar )nGRPW , 0 , uhDepth ); 1986 #endif 1934 1987 rpcTempCU->setMergeFlagSubParts( true, 0, 0, uhDepth ); // interprets depth relative to LCU level 1935 1988 rpcTempCU->setMergeIndexSubParts( uiMergeCand, 0, 0, uhDepth ); // interprets depth relative to LCU level … … 1955 2008 1956 2009 #if H3D_IVRP 2010 #if !QC_ARP_D0177 1957 2011 rpcTempCU->setResPredAvailSubParts(bResPredAvail, 0, 0, uhDepth); 2012 #else 2013 rpcTempCU->setResPredAvailSubParts( bResPrdAvail, 0, 0, uhDepth ); 2014 rpcTempCU->setResPredFlagSubParts ( bResPrdFlag, 0, 0, uhDepth ); 2015 #endif 1958 2016 #endif 1959 2017 #if LGE_ILLUCOMP_B0045 1960 2018 rpcTempCU->setICFlagSubParts(bICFlag, 0, 0, uhDepth); 1961 2019 #endif 1962 2020 #if QC_ARP_D0177 2021 if(rpcTempCU->getSlice()->getSPS()->getUseAdvRP()) 2022 { 2023 bool bSignalflag[2] = {true, true}; 2024 for(UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx ++ ) 2025 { 2026 Int iRefIdx = cMvFieldNeighbours[uiRefListIdx + 2*uiMergeCand].getRefIdx(); 2027 RefPicList eRefList = uiRefListIdx ? REF_PIC_LIST_1 : REF_PIC_LIST_0; 2028 if(iRefIdx < 0 || rpcTempCU->getSlice()->getPOC() == rpcTempCU->getSlice()->getRefPOC(eRefList, iRefIdx)) 2029 bSignalflag[uiRefListIdx] = false; 2030 } 2031 if(!bSignalflag[0]&& !bSignalflag[1]) 2032 { 2033 rpcTempCU->setARPWSubParts( 0 , 0 , uhDepth ); 2034 } 2035 } 2036 #endif 1963 2037 // do MC 1964 2038 #if HHI_INTERVIEW_SKIP … … 1973 2047 m_pcPredSearch->motionCompensation ( rpcTempCU, m_ppcPredYuvTemp[uhDepth] ); 1974 2048 #endif 1975 #if H3D_IVRP 2049 #if H3D_IVRP & !QC_ARP_D0177 1976 2050 if (uiMergeCand == 0 && rpcTempCU->getResPredAvail(0)) 1977 2051 { … … 1992 2066 m_pcPredSearch->motionCompensation ( rpcTempCU, m_ppcPredYuvTemp[uhDepth] ); 1993 2067 #endif 1994 #if H3D_IVRP 2068 #if H3D_IVRP & !QC_ARP_D0177 1995 2069 if (uiMergeCand == 0 && rpcTempCU->getResPredAvail(0)) 1996 2070 { … … 2049 2123 } 2050 2124 } 2125 #if QC_ARP_D0177 2126 } 2127 #endif 2051 2128 } 2052 2129 … … 2066 2143 { 2067 2144 UChar uhDepth = rpcTempCU->getDepth( 0 ); 2068 2145 #if QC_ARP_D0177 2146 Bool bFirstTime = true; 2147 Int nARPWMax = rpcTempCU->getSlice()->getARPStepNum() - 1; 2148 if(nARPWMax < 0 || !rpcTempCU->getResPredAvail( 0 ) ) 2149 nARPWMax = 0; 2150 if( ePartSize != SIZE_2Nx2N) 2151 nARPWMax = 0; 2152 Int nARPWStart = 0 , nARPWStep = 1; 2153 for( Int nCount = 0 , nGRPW = nARPWStart ; nCount <= nARPWMax ; nCount++ , nGRPW += nARPWStep ) 2154 { 2155 if( bFirstTime == false && rpcTempCU->getSlice()->getSPS()->getUseAdvRP() ) 2156 rpcTempCU->initEstData( rpcTempCU->getDepth(0), rpcTempCU->getQP(0) ); 2157 #endif 2069 2158 #if HHI_VSO 2070 2159 if( m_pcRdCost->getUseRenModel() ) … … 2093 2182 rpcTempCU->setPredModeSubParts ( MODE_INTER, 0, uhDepth ); 2094 2183 2184 #if QC_ARP_D0177 2185 if(rpcTempCU->getSlice()->getSPS()->getUseAdvRP()) 2186 rpcTempCU->setARPWSubParts( ( UChar )nGRPW , 0 , uhDepth ); 2187 #endif 2188 #if QC_ARP_D0177 2189 if( bFirstTime == false && rpcTempCU->getSlice()->getSPS()->getUseAdvRP()) 2190 { 2191 assert(!rpcTempCU->getSlice()->getSPS()->isDepth()); 2192 rpcTempCU->copyPartFrom( m_ppcWeightedTempCU[uhDepth] , 0 , uhDepth, true ); 2193 rpcTempCU->setARPWSubParts( ( UChar )nGRPW , 0 , uhDepth ); 2194 #if MERL_VSP_C0152 2195 m_pcPredSearch->motionCompensation( rpcTempCU , m_ppcPredYuvTemp[uhDepth], 0); 2196 #else 2197 m_pcPredSearch->motionCompensation( rpcTempCU , m_ppcPredYuvTemp[uhDepth] ); 2198 #endif 2199 if(rpcTempCU->getPartitionSize(0)==SIZE_2Nx2N) 2200 { 2201 bool bSignalflag[2] = {true, true}; 2202 for(UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx ++ ) 2203 { 2204 RefPicList eRefList = uiRefListIdx ? REF_PIC_LIST_1 : REF_PIC_LIST_0; 2205 Int iRefIdx = rpcTempCU->getCUMvField(eRefList)->getRefIdx(0); 2206 if(iRefIdx < 0 || rpcTempCU->getSlice()->getPOC() == rpcTempCU->getSlice()->getRefPOC(eRefList, iRefIdx)) 2207 bSignalflag[uiRefListIdx] = false; 2208 } 2209 if(!bSignalflag[0]&& !bSignalflag[1]) 2210 rpcTempCU->setARPWSubParts( 0 , 0 , uhDepth ); 2211 } 2212 } 2213 else 2214 { 2215 bFirstTime = false; 2216 #endif 2095 2217 #if AMP_MRG 2096 2218 rpcTempCU->setMergeAMP (true); … … 2107 2229 #endif 2108 2230 #endif 2231 #if QC_ARP_D0177 2232 if(rpcTempCU->getSlice()->getSPS()->getUseAdvRP()) 2233 { 2234 m_ppcWeightedTempCU[uhDepth]->copyPartFrom( rpcTempCU , 0 , uhDepth ); 2235 if(rpcTempCU->getSlice()->getSPS()->getUseAdvRP() && rpcTempCU->getPartitionSize(0)==SIZE_2Nx2N) 2236 { 2237 bool bSignalflag[2] = {true, true}; 2238 for(UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx ++ ) 2239 { 2240 RefPicList eRefList = uiRefListIdx ? REF_PIC_LIST_1 : REF_PIC_LIST_0; 2241 Int iRefIdx = rpcTempCU->getCUMvField(eRefList)->getRefIdx(0); 2242 if(iRefIdx < 0 || rpcTempCU->getSlice()->getPOC() == rpcTempCU->getSlice()->getRefPOC(eRefList, iRefIdx)) 2243 bSignalflag[uiRefListIdx] = false; 2244 } 2245 if(!bSignalflag[0]&& !bSignalflag[1]) 2246 rpcTempCU->setARPWSubParts( 0 , 0 , uhDepth ); 2247 } 2248 } 2249 } 2250 #endif 2109 2251 2110 2252 #if AMP_MRG 2111 2253 if ( !rpcTempCU->getMergeAMP() ) 2112 2254 { 2255 #if QC_ARP_D0177 2256 if(rpcTempCU->getSlice()->getSPS()->getUseAdvRP()) 2257 continue; 2258 else 2259 #endif 2113 2260 return; 2114 2261 } … … 2151 2298 xCheckDQP( rpcTempCU ); 2152 2299 xCheckBestMode(rpcBestCU, rpcTempCU, uhDepth); 2300 #if QC_ARP_D0177 2301 } 2302 #endif 2153 2303 } 2154 2304 -
TabularUnified branches/HTM-6.2-dev2-Qualcomm/source/Lib/TLibEncoder/TEncCu.h ¶
r296 r373 69 69 TComDataCU** m_ppcBestCU; ///< Best CUs in each depth 70 70 TComDataCU** m_ppcTempCU; ///< Temporary CUs in each depth 71 #if QC_ARP_D0177 72 TComDataCU** m_ppcWeightedTempCU; 73 #endif 71 74 UChar m_uhTotalDepth; 72 75 -
TabularUnified branches/HTM-6.2-dev2-Qualcomm/source/Lib/TLibEncoder/TEncEntropy.cpp ¶
r332 r373 456 456 457 457 458 #if QC_ARP_D0177 459 Void TEncEntropy::encodeARPW( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD, UInt uiDepth) 460 { 461 if( pcCU->getSlice()->getViewId() == 0 || pcCU->getSlice()->getIsDepth() == true || !pcCU->getSlice()->getARPStepNum() ) 462 { 463 return; 464 } 465 assert( pcCU->isIntra( uiAbsPartIdx ) == false ); 466 if( bRD ) 467 { 468 uiAbsPartIdx = 0; 469 } 470 bool bSignalflag[2] = {true, true}; 471 if (!(pcCU->getPartitionSize(uiAbsPartIdx)==SIZE_2Nx2N || pcCU->isSkipped(uiAbsPartIdx))) 472 { 473 assert(pcCU->getARPW (uiAbsPartIdx) == 0); 474 bSignalflag[0] = false; 475 bSignalflag[1] = false; 476 } 477 if (!(bSignalflag[0]|| bSignalflag[1])) 478 { 479 assert(pcCU->getARPW (uiAbsPartIdx) == 0); 480 if (uiDepth != -1) 481 pcCU->setARPWSubParts(0, uiAbsPartIdx, uiDepth); 482 } 483 else 484 m_pcEntropyCoderIf->codeARPW( pcCU, uiAbsPartIdx ); 485 486 } 487 #endif 458 488 /** parse the fixed length code (smaller than one max value) in ALF 459 489 * \param run: coded value … … 1233 1263 { 1234 1264 encodePUWise( pcCU, uiAbsPartIdx, bRD ); 1265 #if QC_ARP_D0177 1266 encodeARPW( pcCU , uiAbsPartIdx , bRD ); 1267 #endif 1235 1268 } 1236 1269 } -
TabularUnified branches/HTM-6.2-dev2-Qualcomm/source/Lib/TLibEncoder/TEncEntropy.h ¶
r332 r373 117 117 virtual Void codeResPredFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0; 118 118 #endif 119 #if QC_ARP_D0177 120 virtual Void codeARPW ( TComDataCU* pcCU, UInt uiAbsPartIdx ) = 0; 121 #endif 119 122 virtual Void codeSplitFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) = 0; 120 123 … … 250 253 Void encodeMergeFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiPUIdx ); 251 254 Void encodeMergeIndex ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiPUIdx, Bool bRD = false ); 255 #if QC_ARP_D0177 256 Void encodeARPW ( TComDataCU* pcCU, UInt uiAbspartIdx , Bool bRD = false, UInt uiDepth = -1); 257 #endif 252 258 Void encodeAlfCtrlFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, Bool bRD = false ); 253 259 -
TabularUnified branches/HTM-6.2-dev2-Qualcomm/source/Lib/TLibEncoder/TEncGOP.cpp ¶
r332 r373 78 78 m_pcDepthMapGenerator = NULL; 79 79 #endif 80 #if H3D_IVRP 80 #if H3D_IVRP & !QC_ARP_D0177 81 81 m_pcResidualGenerator = NULL; 82 82 #endif … … 131 131 m_pcDepthMapGenerator = pcTEncTop->getDepthMapGenerator(); 132 132 #endif 133 #if H3D_IVRP 133 #if H3D_IVRP & !QC_ARP_D0177 134 134 m_pcResidualGenerator = pcTEncTop->getResidualGenerator(); 135 135 #endif … … 390 390 std::vector<TComPic*> apcInterViewRefPics = tAppEncTop->getInterViewRefPics( m_pcEncTop->getViewId(), pcSlice->getPOC(), m_pcEncTop->getIsDepth(), pcSlice->getSPS() ); 391 391 pcSlice->setRefPicListMvc( rcListPic, apcInterViewRefPics ); 392 392 #if QC_ARP_D0177 393 pcSlice->setARPStepNum(); 394 if(pcSlice->getARPStepNum() > 1) 395 { 396 for(Int iViewIdx = 0; iViewIdx < pcSlice->getViewId(); iViewIdx ++ ) 397 pcSlice->setBaseViewRefPicList( tAppEncTop->getTEncTop( iViewIdx , false )->getListPic(), iViewIdx ); 398 } 399 #endif 393 400 // Slice info. refinement 394 401 if( pcSlice->getSliceType() == B_SLICE ) … … 754 761 m_pcDepthMapGenerator->covertOrgDepthMap( pcPic ); 755 762 #endif 756 #if H3D_IVRP 763 #if H3D_IVRP & !QC_ARP_D0177 757 764 m_pcResidualGenerator->initViewComponent( pcPic ); 758 765 #endif … … 818 825 pcSlice = pcPic->getSlice(0); 819 826 820 #if H3D_IVRP 827 #if H3D_IVRP & !QC_ARP_D0177 821 828 // set residual picture 822 829 m_pcResidualGenerator->setRecResidualPic( pcPic ); -
TabularUnified branches/HTM-6.2-dev2-Qualcomm/source/Lib/TLibEncoder/TEncGOP.h ¶
r296 r373 97 97 TComDepthMapGenerator* m_pcDepthMapGenerator; 98 98 #endif 99 #if H3D_IVRP 99 #if H3D_IVRP & !QC_ARP_D0177 100 100 TComResidualGenerator* m_pcResidualGenerator; 101 101 #endif -
TabularUnified branches/HTM-6.2-dev2-Qualcomm/source/Lib/TLibEncoder/TEncSbac.cpp ¶
r332 r373 72 72 #if H3D_IVRP 73 73 , m_cResPredFlagSCModel ( 1, 1, NUM_RES_PRED_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 74 #endif 75 #if QC_ARP_D0177 76 , m_cCUPUARPW ( 1, 1, NUM_ARPW_CTX , m_contextModels + m_numContextModels, m_numContextModels) 74 77 #endif 75 78 , m_cCUPartSizeSCModel ( 1, 1, NUM_PART_SIZE_CTX , m_contextModels + m_numContextModels, m_numContextModels) … … 158 161 m_cResPredFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_RES_PRED_FLAG ); 159 162 #endif 163 #if QC_ARP_D0177 164 m_cCUPUARPW.initBuffer ( eSliceType, iQp, (UChar*)INIT_ARPW ); 165 #endif 160 166 m_cCUPartSizeSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_PART_SIZE ); 161 167 m_cCUAMPSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_CU_AMP_POS ); … … 311 317 m_cResPredFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_RES_PRED_FLAG ); 312 318 #endif 319 #if QC_ARP_D0177 320 m_cCUPUARPW.initBuffer ( eSliceType, iQp, (UChar*)INIT_ARPW ); 321 #endif 313 322 m_cCUPartSizeSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_PART_SIZE ); 314 323 m_cCUAMPSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_CU_AMP_POS ); … … 840 849 } 841 850 #endif 842 851 #if QC_ARP_D0177 852 Void TEncSbac::codeARPW( TComDataCU* pcCU, UInt uiAbsPartIdx ) 853 { 854 Int nW = pcCU->getARPW( uiAbsPartIdx ); 855 Int nMaxW = pcCU->getSlice()->getARPStepNum() - 1; 856 assert( 0 <= nW && nW <= nMaxW ); 857 assert(nMaxW > 0); 858 if( nMaxW > 0 ) 859 { 860 Int nOffset = pcCU->getCTXARPWFlag(uiAbsPartIdx); 861 assert( 0 <= nOffset && nOffset <= 2 ); 862 Int nBinNum = nW + ( nW != nMaxW ); 863 m_pcBinIf->encodeBin( nW != 0 , m_cCUPUARPW.get( 0, 0, 0 + nOffset ) ); 864 if( nBinNum > 1 ) 865 m_pcBinIf->encodeBin( nW == nMaxW , m_cCUPUARPW.get( 0, 0, 3 ) ); 866 } 867 } 868 #endif 843 869 Void TEncSbac::codeSplitFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 844 870 { -
TabularUnified branches/HTM-6.2-dev2-Qualcomm/source/Lib/TLibEncoder/TEncSbac.h ¶
r332 r373 209 209 Void codeResPredFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 210 210 #endif 211 #if QC_ARP_D0177 212 virtual Void codeARPW ( TComDataCU* pcCU, UInt uiAbsPartIdx ); 213 #endif 211 214 Void codeSplitFlag ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); 212 215 #if H3D_IVMP … … 265 268 #if H3D_IVRP 266 269 ContextModel3DBuffer m_cResPredFlagSCModel; 270 #endif 271 #if QC_ARP_D0177 272 ContextModel3DBuffer m_cCUPUARPW; 267 273 #endif 268 274 ContextModel3DBuffer m_cCUPartSizeSCModel; -
TabularUnified branches/HTM-6.2-dev2-Qualcomm/source/Lib/TLibEncoder/TEncSearch.cpp ¶
r332 r373 4674 4674 #endif 4675 4675 ); 4676 #if QC_ARP_D0177 4677 m_pcEntropyCoder->encodeARPW ( pcCU , 0 , true ); 4678 #endif 4676 4679 #endif 4677 4680 #if HHI_MPI … … 5954 5957 ); 5955 5958 #endif 5959 #if QC_ARP_D0177 5960 m_pcEntropyCoder->encodeARPW( pcCU , 0 , true ); 5961 #endif 5956 5962 ruiBits += m_pcEntropyCoder->getNumberOfWrittenBits(); 5957 5963 } … … 5977 5983 #endif 5978 5984 ); 5985 #if QC_ARP_D0177 5986 m_pcEntropyCoder->encodeARPW( pcCU , 0 , true ); 5987 #endif 5979 5988 #endif 5980 5989 #if HHI_MPI -
TabularUnified branches/HTM-6.2-dev2-Qualcomm/source/Lib/TLibEncoder/TEncTop.cpp ¶
r332 r373 120 120 m_cDepthMapGenerator. create( false, getSourceWidth(), getSourceHeight(), g_uiMaxCUDepth, g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiBitDepth + g_uiBitIncrement, PDM_SUB_SAMP_EXP_X(m_uiPredDepthMapGeneration), PDM_SUB_SAMP_EXP_Y(m_uiPredDepthMapGeneration) ); 121 121 #endif 122 #if H3D_IVRP 122 #if H3D_IVRP & !QC_ARP_D0177 123 123 m_cResidualGenerator. create( false, getSourceWidth(), getSourceHeight(), g_uiMaxCUDepth, g_uiMaxCUWidth, g_uiMaxCUHeight, g_uiBitDepth + g_uiBitIncrement ); 124 124 #endif … … 251 251 m_cDepthMapGenerator. destroy(); 252 252 #endif 253 #if H3D_IVRP 253 #if H3D_IVRP & !QC_ARP_D0177 254 254 m_cResidualGenerator. destroy(); 255 255 #endif … … 347 347 #endif 348 348 #endif 349 #if H3D_IVRP 349 #if H3D_IVRP & !QC_ARP_D0177 350 350 m_cResidualGenerator.init( &m_cTrQuant, &m_cDepthMapGenerator ); 351 351 #endif … … 722 722 #endif 723 723 #if H3D_IVRP 724 #if QC_ARP_D0177 725 m_cSPS.setUseAdvRP ( 0 ); 726 m_cSPS.setARPStepNum ( 1 ); 727 #else 724 728 m_cSPS.setMultiviewResPredMode ( 0 ); 725 729 #endif 730 #endif 731 726 732 } 727 733 else … … 742 748 #endif 743 749 #if H3D_IVRP 744 m_cSPS.setMultiviewResPredMode ( m_uiMultiviewResPredMode ); 750 #if QC_ARP_D0177 751 m_cSPS.setUseAdvRP ( m_viewId > 0 ? m_nUseAdvResPred : 0 ); 752 m_cSPS.setARPStepNum( m_viewId > 0 ? QC_ARP_WFNR : 1 ); 753 #else 754 m_cSPS.setMultiviewResPredMode ( m_uiMultiviewResPredMode ); 755 #endif 745 756 #endif 746 757 } … … 751 762 #endif 752 763 #if H3D_IVRP 764 #if QC_ARP_D0177 765 m_cSPS.setUseAdvRP ( 0 ); 766 m_cSPS.setARPStepNum ( 1 ); 767 #else 753 768 m_cSPS.setMultiviewResPredMode ( 0 ); 769 #endif 754 770 #endif 755 771 } -
TabularUnified branches/HTM-6.2-dev2-Qualcomm/source/Lib/TLibEncoder/TEncTop.h ¶
r296 r373 103 103 TComDepthMapGenerator m_cDepthMapGenerator; ///< depth map generator 104 104 #endif 105 #if H3D_IVRP 105 #if H3D_IVRP & !QC_ARP_D0177 106 106 TComResidualGenerator m_cResidualGenerator; ///< generator for residual pictures 107 107 #endif … … 234 234 TComDepthMapGenerator* getDepthMapGenerator () { return &m_cDepthMapGenerator; } 235 235 #endif 236 #if H3D_IVRP 236 #if H3D_IVRP & !QC_ARP_D0177 237 237 TComResidualGenerator* getResidualGenerator () { return &m_cResidualGenerator; } 238 238 #endif
Note: See TracChangeset for help on using the changeset viewer.