Changeset 950 in 3DVCSoftware for trunk/source/Lib/TLibDecoder
- Timestamp:
- 25 Apr 2014, 12:38:00 (11 years ago)
- Location:
- trunk/source/Lib/TLibDecoder
- Files:
-
- 6 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/source/Lib/TLibDecoder/TDecCAVLC.cpp
r884 r950 440 440 441 441 READ_FLAG(uiCode, "inter_view_dlt_pred_enable_flag[ i ]"); 442 443 #if MTK_DLT_CODING_FIX_H0091 444 if( uiCode ) 445 { 446 assert( pcDLT->getUseDLTFlag( 1 )); 447 } 448 #endif 449 442 450 pcDLT->setInterViewDltPredEnableFlag( i, (uiCode == 1) ? true : false ); 443 451 … … 1751 1759 #if H_3D_IV_MERGE 1752 1760 READ_FLAG( uiCode, "iv_mv_pred_flag[i]"); pcVPS->setIvMvPredFlag ( i, uiCode == 1 ? true : false ); 1761 #if QC_IV_PRED_CONSTRAINT_H0137 1762 if( !pcVPS->getNumDirectRefLayers(i) ) 1763 { 1764 assert( !uiCode ); 1765 } 1766 #endif 1753 1767 #if H_3D_SPIVMP 1754 1768 READ_UVLC (uiCode, "log2_sub_PU_size_minus3[i]"); pcVPS->setSubPULog2Size(i, uiCode+3); … … 1757 1771 #if H_3D_ARP 1758 1772 READ_FLAG( uiCode, "iv_res_pred_flag[i]" ); pcVPS->setUseAdvRP ( i, uiCode ); pcVPS->setARPStepNum( i, uiCode ? H_3D_ARP_WFNR : 1 ); 1759 1773 #if QC_IV_PRED_CONSTRAINT_H0137 1774 if( !pcVPS->getNumDirectRefLayers(i) ) 1775 { 1776 assert( !uiCode ); 1777 } 1778 #endif 1760 1779 #endif 1761 1780 #if H_3D_NBDV_REF … … 1764 1783 #if H_3D_VSP 1765 1784 READ_FLAG( uiCode, "view_synthesis_pred_flag[i]"); pcVPS->setViewSynthesisPredFlag( i, uiCode == 1 ? true : false ); 1785 #if QC_IV_PRED_CONSTRAINT_H0137 1786 if( !pcVPS->getNumDirectRefLayers(i) ) 1787 { 1788 assert( !uiCode ); 1789 } 1790 #endif 1766 1791 #endif 1767 1792 #if H_3D_DBBP … … 1775 1800 { 1776 1801 READ_FLAG( uiCode, "iv_mv_pred_flag[i]"); pcVPS->setIvMvPredFlag ( i, uiCode == 1 ? true : false ); 1802 #if QC_IV_PRED_CONSTRAINT_H0137 1803 if( !pcVPS->getNumDirectRefLayers(i) ) 1804 { 1805 assert( !uiCode ); 1806 } 1807 #endif 1777 1808 } 1778 1809 #endif -
trunk/source/Lib/TLibDecoder/TDecCu.cpp
r884 r950 431 431 m_ppcCU[uiDepth]->initAvailableFlags(); 432 432 m_ppcCU[uiDepth]->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 433 m_ppcCU[uiDepth]->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo 433 m_ppcCU[uiDepth]->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours 434 #if !ETRIKHU_CLEANUP_H0083 435 ,vspFlag 436 #endif 437 , inheritedVSPDisInfo 434 438 #if H_3D_SPIVMP 435 , bSPIVMPFlag, pcMvFieldSP, puhInterDirSP 439 #if !ETRIKHU_CLEANUP_H0083_MISSING 440 , bSPIVMPFlag 441 #endif 442 , pcMvFieldSP, puhInterDirSP 436 443 #endif 437 444 , numValidMergeCand, uiMergeIndex ); 445 446 #if ETRIKHU_CLEANUP_H0083 447 m_ppcCU[uiDepth]->buildMCL( cMvFieldNeighbours, uhInterDirNeighbours, vspFlag 448 #if H_3D_SPIVMP 449 , bSPIVMPFlag 450 #endif 451 , numValidMergeCand ); 452 #endif 438 453 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiAbsPartIdx, 0, uiDepth ); 439 454 #else … … 782 797 } 783 798 799 #if RWTH_DBBP_NO_SPU_H0057 800 AOF( pcCU->getARPW(uiPartAddr) == 0 ); 801 AOF( pcCU->getICFlag(uiPartAddr) == false ); 802 AOF( pcCU->getSPIVMPFlag(uiPartAddr) == false ); 803 AOF( pcCU->getVSPFlag(uiPartAddr) == 0 ); 804 #else 784 805 pDBBPTmpData->ahVSPFlag[uiSegment] = pcCU->getVSPFlag( uiPartAddr ); 785 806 pDBBPTmpData->acDvInfo[uiSegment] = pcCU->getDvInfo( uiPartAddr ); 807 #endif 786 808 } 787 809 … … 793 815 pcCU->setInterDirSubParts( pDBBPTmpData->auhInterDir[uiSegment], 0, 0, uiDepth ); 794 816 817 #if !RWTH_DBBP_NO_SPU_H0057 795 818 pcCU->setVSPFlagSubParts( pDBBPTmpData->ahVSPFlag[uiSegment], 0, 0, uiDepth ); 796 819 pcCU->setDvInfoSubParts( pDBBPTmpData->acDvInfo[uiSegment], 0, 0, uiDepth ); 820 #endif 797 821 798 822 for ( UInt uiRefListIdx = 0; uiRefListIdx < 2; uiRefListIdx++ ) … … 816 840 pcCU->setDBBPFlagSubParts(true, uiPartAddr, uiSegment, uiDepth); 817 841 842 #if !RWTH_DBBP_NO_SPU_H0057 818 843 pcCU->setVSPFlagSubParts( pDBBPTmpData->ahVSPFlag[uiSegment], uiPartAddr, uiSegment, uiDepth ); 819 844 pcCU->setDvInfoSubParts( pDBBPTmpData->acDvInfo[uiSegment], uiPartAddr, uiSegment, uiDepth ); 845 #endif 820 846 821 847 pcCU->setInterDirSubParts(pDBBPTmpData->auhInterDir[uiSegment], uiPartAddr, uiSegment, uiDepth); // interprets depth relative to LCU level … … 920 946 for( UInt uiX = 0; uiX < uiWidth; uiX++ ) 921 947 { 922 #if H_3D 948 #if H_3D && !SEC_NO_RESI_DLT_H0105 923 949 if ( useDltFlag ) 924 950 { … … 1231 1257 // get DC prediction for each segment 1232 1258 Pel apDCPredValues[2]; 1259 #if HS_DMM_SDC_PREDICTOR_UNIFY_H0108 1260 if ( getDimType( uiLumaPredMode ) == DMM1_IDX || getDimType( uiLumaPredMode ) == DMM4_IDX ) 1261 { 1262 apDCPredValues[0] = pcCU->getDmmPredictor( 0 ); 1263 apDCPredValues[1] = pcCU->getDmmPredictor( 1 ); 1264 } 1265 else 1266 #endif 1233 1267 m_pcPrediction->analyzeSegmentsSDC(piPred, uiStride, uiWidth, apDCPredValues, uiNumSegments, pbMask, uiMaskStride, uiLumaPredMode); 1234 1268 -
trunk/source/Lib/TLibDecoder/TDecEntropy.cpp
r884 r950 139 139 140 140 #if H_3D_DBBP 141 142 #if MTK_DBBP_SIGNALING_H0094 143 if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) ) 144 #else 141 145 if( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) && pcCU->getPartitionSize(uiAbsPartIdx) == RWTH_DBBP_PACK_MODE ) 146 #endif 142 147 { 143 148 decodeDBBPFlag(pcCU, uiAbsPartIdx, uiDepth); … … 145 150 if( pcCU->getDBBPFlag(uiAbsPartIdx) ) 146 151 { 152 #if !MTK_DBBP_SIGNALING_H0094 147 153 AOF( pcCU->getPartitionSize(uiAbsPartIdx) == RWTH_DBBP_PACK_MODE ); 154 #endif 148 155 149 156 // get collocated depth block … … 161 168 162 169 pcCU->setPartSizeSubParts(eVirtualPartSize, uiAbsPartIdx, uiDepth); 170 171 #if RWTH_DBBP_NO_SPU_H0057 172 // make sure that DBBP flag is set for both segments 173 UInt uiPUOffset = ( g_auiPUOffset[UInt( eVirtualPartSize )] << ( ( pcCU->getSlice()->getSPS()->getMaxCUDepth() - uiDepth ) << 1 ) ) >> 4; 174 pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx, 0, uiDepth); 175 pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx+uiPUOffset, 1, uiDepth); 176 #endif 163 177 } 164 178 } … … 196 210 return; 197 211 } 212 #if !MTK_SDC_FLAG_FIX_H0095 198 213 #if H_3D_DIM_SDC 199 214 if( pcCU->getSDCFlag(uiAbsPartIdx) ) … … 201 216 return; 202 217 } 218 #endif 203 219 #endif 204 220 … … 292 308 pcSubCU->initAvailableFlags(); 293 309 pcSubCU->getInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand); 294 pcSubCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo 310 pcSubCU->xGetInterMergeCandidates( 0, 0, cMvFieldNeighbours, uhInterDirNeighbours 311 #if !ETRIKHU_CLEANUP_H0083 312 ,vspFlag 313 #endif 314 , inheritedVSPDisInfo 295 315 #if H_3D_SPIVMP 296 , bSPIVMPFlag, pcMvFieldSP, puhInterDirSP 316 #if !ETRIKHU_CLEANUP_H0083_MISSING 317 , bSPIVMPFlag 318 #endif 319 , pcMvFieldSP, puhInterDirSP 297 320 #endif 298 321 , numValidMergeCand ); 322 323 #if ETRIKHU_CLEANUP_H0083 324 pcSubCU->buildMCL( cMvFieldNeighbours, uhInterDirNeighbours, vspFlag 325 #if H_3D_SPIVMP 326 , bSPIVMPFlag 327 #endif 328 , numValidMergeCand ); 329 #endif 299 330 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 300 331 … … 329 360 pcSubCU->initAvailableFlags(); 330 361 pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 331 pcSubCU->xGetInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours, vspFlag, inheritedVSPDisInfo 362 pcSubCU->xGetInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, cMvFieldNeighbours, uhInterDirNeighbours 363 #if !ETRIKHU_CLEANUP_H0083 364 , vspFlag 365 #endif 366 , inheritedVSPDisInfo 332 367 #if H_3D_SPIVMP 333 , bSPIVMPFlag, pcMvFieldSP, puhInterDirSP 368 #if !ETRIKHU_CLEANUP_H0083_MISSING 369 , bSPIVMPFlag 370 #endif 371 , pcMvFieldSP, puhInterDirSP 334 372 #endif 335 373 ,numValidMergeCand, uiMergeIndex ); 374 375 #if ETRIKHU_CLEANUP_H0083 376 pcSubCU->buildMCL( cMvFieldNeighbours, uhInterDirNeighbours, vspFlag 377 #if H_3D_SPIVMP 378 , bSPIVMPFlag 379 #endif 380 ,numValidMergeCand ); 381 #endif 336 382 pcCU->setVSPFlagSubParts( vspFlag[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 337 383 if(vspFlag[uiMergeIndex]) -
trunk/source/Lib/TLibDecoder/TDecSbac.cpp
r884 r950 87 87 , m_cDdcDataSCModel ( 1, 1, NUM_DDC_DATA_CTX , m_contextModels + m_numContextModels, m_numContextModels) 88 88 , m_cAngleFlagSCModel ( 1, 1, NUM_ANGLE_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 89 #if H_3D_DIM_DMM 89 #if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092 90 90 , m_cDmm1DataSCModel ( 1, 1, NUM_DMM1_DATA_CTX , m_contextModels + m_numContextModels, m_numContextModels) 91 91 #endif … … 171 171 m_cDdcDataSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_DDC_DATA ); 172 172 m_cAngleFlagSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_ANGLE_FLAG ); 173 #if H_3D_DIM_DMM 173 #if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092 174 174 m_cDmm1DataSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_DMM1_DATA ); 175 175 #endif … … 241 241 m_cDdcDataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DDC_DATA ); 242 242 m_cAngleFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_ANGLE_FLAG ); 243 #if H_3D_DIM_DMM 243 #if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092 244 244 m_cDmm1DataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA ); 245 245 #endif … … 386 386 uiCount++; 387 387 } 388 #if QC_SIMP_DELTADC_CODING_H0131 389 while( uiSymbol && ( uiCount != 3 ) ); 390 #else 388 391 while( uiSymbol && ( uiCount != 13 ) ); 389 392 #endif 390 393 ruiSymbol = uiCount - 1; 391 394 … … 423 426 for( Int i = 0; i < iNumBit; i++ ) 424 427 { 428 #if MTK_DMM_SIMP_CODE_H0092 429 m_pcTDecBinIf->decodeBinEP( uiSymbol ); 430 #else 425 431 m_pcTDecBinIf->decodeBin( uiSymbol, m_cDmm1DataSCModel.get(0, 0, 0) ); 432 #endif 426 433 uiIdx += uiSymbol << i; 427 434 } … … 1128 1135 if( ( pcCU->getSlice()->getSPS()->getMaxCUWidth() >> pcCU->getDepth( absPartIdx ) ) < 64 ) //DMM and HEVC intra modes are both allowed 1129 1136 { 1137 #if LGE_SIMP_DIM_NOT_PRESENT_FLAG_CODING_H0119_H0135 1138 m_pcTDecBinIf->decodeBin( uiSymbol, m_cAngleFlagSCModel.get( 0, 0, 0 ) ); 1139 #else 1130 1140 m_pcTDecBinIf->decodeBin( uiSymbol, m_cAngleFlagSCModel.get( 0, 0, pcCU->getCtxAngleFlag( absPartIdx ) ) ); 1141 #endif 1131 1142 } 1132 1143 else … … 2068 2079 UInt dir = pcCU->getLumaIntraDir( absPartIdx ); 2069 2080 uiNumSegments = isDimMode( dir ) ? 2 : 1; 2070 2081 #if MTK_DELTA_DC_FLAG_ONE_CONTEXT_H0084_H0100_H0113 2082 m_pcTDecBinIf->decodeBin( symbol, m_cDdcFlagSCModel.get( 0, 0, 0 ) ); 2083 #else 2071 2084 m_pcTDecBinIf->decodeBin( symbol, m_cDdcFlagSCModel.get( 0, 0, uiNumSegments-1 ) ); 2072 2085 #endif 2073 2086 if( pcCU->getSDCFlag( absPartIdx ) ) 2074 2087 { … … 2141 2154 Void TDecSbac::parseDBBPFlag( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ) 2142 2155 { 2156 #if !MTK_DBBP_SIGNALING_H0094 2143 2157 PartSize ePartSize = pcCU->getPartitionSize( uiAbsPartIdx ); 2158 #endif 2144 2159 AOF( pcCU->getSlice()->getVPS()->getUseDBBP(pcCU->getSlice()->getLayerIdInVps()) ); 2145 2160 AOF( !pcCU->getSlice()->getIsDepth() ); 2161 #if !MTK_DBBP_SIGNALING_H0094 2146 2162 AOF( ePartSize == RWTH_DBBP_PACK_MODE ); 2163 #endif 2147 2164 2148 2165 UInt uiSymbol = 0; … … 2153 2170 { 2154 2171 pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx, 0, uiDepth); 2172 #if MTK_DIS_SPBIP8X4_H0205 2173 UInt uiCurrPartNumQ = (pcCU->getPic()->getNumPartInCU() >> (2 * uiDepth)) >> 2; 2174 pcCU->setDBBPFlagSubParts(true, uiAbsPartIdx + 2*uiCurrPartNumQ, 1, uiDepth); 2175 #endif 2155 2176 } 2156 2177 } -
trunk/source/Lib/TLibDecoder/TDecSbac.h
r884 r950 214 214 ContextModel3DBuffer m_cDdcDataSCModel; 215 215 ContextModel3DBuffer m_cAngleFlagSCModel; 216 #if H_3D_DIM_DMM 216 #if H_3D_DIM_DMM && !MTK_DMM_SIMP_CODE_H0092 217 217 ContextModel3DBuffer m_cDmm1DataSCModel; 218 218 #endif -
trunk/source/Lib/TLibDecoder/TDecSlice.cpp
r872 r950 221 221 } 222 222 } 223 #if MTK_DLT_CODING_FIX_H0091 224 if( pcSlice->getPPS()->getDLT() != NULL ) 225 { 226 assert( pcSlice->getSPS()->getBitDepthY() == pcSlice->getPPS()->getDLT()->getDepthViewBitDepth() ); 227 } 228 #endif 223 229 for( Int iCUAddr = iStartCUAddr; !uiIsLast && iCUAddr < rpcPic->getNumCUsInFrame(); iCUAddr = rpcPic->getPicSym()->xCalculateNxtCUAddr(iCUAddr) ) 224 230 {
Note: See TracChangeset for help on using the changeset viewer.