Ticket #610: HM-7.1-dev@r2488_PME_Signaling.patch
File HM-7.1-dev@r2488_PME_Signaling.patch, 15.7 KB (added by huiyong, 12 years ago) |
---|
-
cfg/encoder_lowdelay_he10.cfg
118 118 TargetBitrate : 1000 # input target bitrate when RateCtrl is enable 119 119 NumLCUInUnit : 1 # Number of LCU in an Unit. Fraction is not allowed 120 120 121 #=========== Parallel Merge Estimation ================= 122 Log2ParallelMergeLevel : 2 # Parallel Merge Estimation Level 2: 4x4(Disable), 3: 8x8, 4: 16x16, 5: 32x32, 6: 64x64 123 121 124 ### DO NOT ADD ANYTHING BELOW THIS LINE ### 122 125 ### DO NOT DELETE THE EMPTY LINE BELOW ### -
cfg/encoder_lowdelay_main.cfg
118 118 TargetBitrate : 1000 # input target bitrate when RateCtrl is enable 119 119 NumLCUInUnit : 1 # Number of LCU in an Unit. Fraction is not allowed 120 120 121 #=========== Parallel Merge Estimation ================= 122 Log2ParallelMergeLevel : 2 # Parallel Merge Estimation Level 2: 4x4(Disable), 3: 8x8, 4: 16x16, 5: 32x32, 6: 64x64 123 121 124 ### DO NOT ADD ANYTHING BELOW THIS LINE ### 122 125 ### DO NOT DELETE THE EMPTY LINE BELOW ### -
cfg/encoder_lowdelay_P_he10.cfg
118 118 TargetBitrate : 1000 # input target bitrate when RateCtrl is enable 119 119 NumLCUInUnit : 1 # Number of LCU in an Unit. Fraction is not allowed 120 120 121 #=========== Parallel Merge Estimation ================= 122 Log2ParallelMergeLevel : 2 # Parallel Merge Estimation Level 2: 4x4(Disable), 3: 8x8, 4: 16x16, 5: 32x32, 6: 64x64 123 121 124 ### DO NOT ADD ANYTHING BELOW THIS LINE ### 122 125 ### DO NOT DELETE THE EMPTY LINE BELOW ### -
cfg/encoder_lowdelay_P_main.cfg
118 118 TargetBitrate : 1000 # input target bitrate when RateCtrl is enable 119 119 NumLCUInUnit : 1 # Number of LCU in an Unit. Fraction is not allowed 120 120 121 #=========== Parallel Merge Estimation ================= 122 Log2ParallelMergeLevel : 2 # Parallel Merge Estimation Level 2: 4x4(Disable), 3: 8x8, 4: 16x16, 5: 32x32, 6: 64x64 123 121 124 ### DO NOT ADD ANYTHING BELOW THIS LINE ### 122 125 ### DO NOT DELETE THE EMPTY LINE BELOW ### -
cfg/encoder_randomaccess_he10.cfg
122 122 TargetBitrate : 1000 # input target bitrate when RateCtrl is enable 123 123 NumLCUInUnit : 1 # Number of LCU in an Unit. Fraction is not allowed 124 124 125 #=========== Parallel Merge Estimation ================= 126 Log2ParallelMergeLevel : 2 # Parallel Merge Estimation Level 2: 4x4(Disable), 3: 8x8, 4: 16x16, 5: 32x32, 6: 64x64 127 125 128 ### DO NOT ADD ANYTHING BELOW THIS LINE ### 126 129 ### DO NOT DELETE THE EMPTY LINE BELOW ### 127 130 -
cfg/encoder_randomaccess_main.cfg
122 122 TargetBitrate : 1000 # input target bitrate when RateCtrl is enable 123 123 NumLCUInUnit : 1 # Number of LCU in an Unit. Fraction is not allowed 124 124 125 #=========== Parallel Merge Estimation ================= 126 Log2ParallelMergeLevel : 2 # Parallel Merge Estimation Level 2: 4x4(Disable), 3: 8x8, 4: 16x16, 5: 32x32, 6: 64x64 127 125 128 ### DO NOT ADD ANYTHING BELOW THIS LINE ### 126 129 ### DO NOT DELETE THE EMPTY LINE BELOW ### 127 130 -
source/App/TAppEncoder/TAppEncCfg.cpp
329 329 #else 330 330 ("weighted_bipred_idc,-wpBidc", m_uiBiPredIdc, 0u, "weighted bipred idc (B-Slices)") 331 331 #endif 332 ("Log2ParallelMergeLevel", m_uiLog2ParallelMergeLevel, 0u, "Parallel merge estimation region") 332 333 #if !TILES_OR_ENTROPY_FIX 333 334 ("TileInfoPresentFlag", m_iColumnRowInfoPresent, 1, "0: tiles parameters are NOT present in the PPS. 1: tiles parameters are present in the PPS") 334 335 #endif … … 967 968 xConfirmPara(!m_TransquantBypassEnableFlag && m_CUTransquantBypassFlagValue, "CUTransquantBypassFlagValue cannot be 1 when TransquantBypassEnableFlag is 0"); 968 969 #endif 969 970 971 xConfirmPara(m_uiLog2ParallelMergeLevel < 2, "Log2ParallelMergeLevel should be larger than or equal to 2"); 972 970 973 #undef xConfirmPara 971 974 if (check_failed) 972 975 { … … 1115 1118 #else 1116 1119 printf("WPB:%d ", m_uiBiPredIdc); 1117 1120 #endif 1121 printf("PME:%d ", m_uiLog2ParallelMergeLevel); 1118 1122 #if !EXPLICITLY_SIGNAL_ENTRY_POINTS 1119 1123 printf("TileLocationInSliceHdr:%d ", m_iTileLocationInSliceHeaderFlag); 1120 1124 #endif -
source/App/TAppEncoder/TAppEncCfg.h
237 237 #else 238 238 UInt m_uiBiPredIdc; ///< Use of Bi-Directional Weighting Prediction (B_SLICE): explicit(1) or implicit(2) 239 239 #endif 240 241 UInt m_uiLog2ParallelMergeLevel; ///< Parallel merge estimation region 240 242 241 243 #if SLICE_TMVP_ENABLE 242 244 Int m_TMVPModeId; -
source/App/TAppEncoder/TAppEncTop.cpp
206 206 #else 207 207 m_cTEncTop.setWPBiPredIdc ( m_uiBiPredIdc ); 208 208 #endif 209 //====== Parallel Merge Estimation ======== 210 m_cTEncTop.setLog2ParallelMergeLevelMinus2 ( m_uiLog2ParallelMergeLevel - 2 ); 211 209 212 //====== Slice ======== 210 213 m_cTEncTop.setSliceMode ( m_iSliceMode ); 211 214 m_cTEncTop.setSliceArgument ( m_iSliceArgument ); -
source/Lib/TLibCommon/TypeDef.h
111 111 #define IPCM_LOSSLESS_LOOP_FILTERING_UNIFICATION 1 ///< I0586: I_PCM/lossless loop filtering unification 112 112 #endif 113 113 114 #define LOG2_PARALLEL_MERGE_LEVEL_MINUS2 0 //< H0082 parallel merge level 0-> 4x4, 1-> 8x8, 2->16x16, 3->32x32, 4->64x64115 #if LOG2_PARALLEL_MERGE_LEVEL_MINUS2116 #define CU_BASED_MRG_CAND_LIST 1 //< H0240: single merge candidate list for all PUs inside a 8x8 CU conditioned on LOG2_PARALLEL_MERGE_LEVEL_MINUS2 > 0117 #endif118 119 114 #define LAST_CTX_DERIVATION 1 //< I0331: table removal of LAST context derivation 120 115 #define DISABLING_CLIP_FOR_BIPREDME 1 ///< Ticket #175 121 116 -
source/Lib/TLibDecoder/TDecCAVLC.cpp
1189 1189 } 1190 1190 #endif 1191 1191 READ_UVLC( uiCode, "log2_parallel_merge_level_minus2"); 1192 assert(uiCode == LOG2_PARALLEL_MERGE_LEVEL_MINUS2);1193 1192 pcPPS->setLog2ParallelMergeLevelMinus2 (uiCode); 1194 1193 1195 1194 READ_FLAG( uiCode, "pps_extension_flag"); -
source/Lib/TLibDecoder/TDecEntropy.cpp
179 179 UInt uiNumPU = ( ePartSize == SIZE_2Nx2N ? 1 : ( ePartSize == SIZE_NxN ? 4 : 2 ) ); 180 180 UInt uiPUOffset = ( g_auiPUOffset[UInt( ePartSize )] << ( ( pcCU->getSlice()->getSPS()->getMaxCUDepth() - uiDepth ) << 1 ) ) >> 4; 181 181 182 #if CU_BASED_MRG_CAND_LIST183 182 TComMvField cMvFieldNeighbours[MRG_MAX_NUM_CANDS << 1]; // double length for mv of both lists 184 183 UChar uhInterDirNeighbours[MRG_MAX_NUM_CANDS]; 185 184 … … 189 188 } 190 189 Int numValidMergeCand = 0; 191 190 bool isMerged = false; 192 #endif193 191 194 192 pcSubCU->copyInterPredInfoFrom( pcCU, uiAbsPartIdx, REF_PIC_LIST_0 ); 195 193 pcSubCU->copyInterPredInfoFrom( pcCU, uiAbsPartIdx, REF_PIC_LIST_1 ); 196 194 for ( UInt uiPartIdx = 0, uiSubPartIdx = uiAbsPartIdx; uiPartIdx < uiNumPU; uiPartIdx++, uiSubPartIdx += uiPUOffset ) 197 195 { 198 #if !CU_BASED_MRG_CAND_LIST199 TComMvField cMvFieldNeighbours[MRG_MAX_NUM_CANDS << 1]; // double length for mv of both lists200 UChar uhInterDirNeighbours[MRG_MAX_NUM_CANDS];201 Int numValidMergeCand = 0;202 for( UInt ui = 0; ui < MRG_MAX_NUM_CANDS; ++ui )203 {204 uhInterDirNeighbours[ui] = 0;205 }206 #endif207 196 decodeMergeFlag( pcCU, uiSubPartIdx, uiDepth, uiPartIdx ); 208 197 if ( pcCU->getMergeFlag( uiSubPartIdx ) ) 209 198 { 210 199 decodeMergeIndex( pcCU, uiPartIdx, uiSubPartIdx, ePartSize, uhInterDirNeighbours, cMvFieldNeighbours, uiDepth ); 211 #if CU_BASED_MRG_CAND_LIST212 200 UInt uiMergeIndex = pcCU->getMergeIndex(uiSubPartIdx); 213 201 if ( pcCU->getSlice()->getPPS()->getLog2ParallelMergeLevelMinus2() && ePartSize != SIZE_2Nx2N && pcSubCU->getWidth( 0 ) <= 8 ) 214 202 { … … 225 213 uiMergeIndex = pcCU->getMergeIndex(uiSubPartIdx); 226 214 pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, uiDepth, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex ); 227 215 } 228 #else229 UInt uiMergeIndex = pcCU->getMergeIndex(uiSubPartIdx);230 pcSubCU->getInterMergeCandidates( uiSubPartIdx-uiAbsPartIdx, uiPartIdx, uiDepth, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand, uiMergeIndex );231 #endif232 216 pcCU->setInterDirSubParts( uhInterDirNeighbours[uiMergeIndex], uiSubPartIdx, uiPartIdx, uiDepth ); 233 217 234 218 TComMv cTmpMv( 0, 0 ); -
source/Lib/TLibEncoder/TEncCfg.h
276 276 #else 277 277 UInt m_uiBiPredIdc; //< Use of Bi-Directional Weighting Prediction (B_SLICE) 278 278 #endif 279 UInt m_uiLog2ParallelMergeLevelMinus2; // Parallel merge estimation region 279 280 Int m_useScalingListId; ///< Using quantization matrix i.e. 0=off, 1=default, 2=file. 280 281 char* m_scalingListFile; ///< quantization matrix file name 281 282 #if SLICE_TMVP_ENABLE … … 664 665 #else 665 666 UInt getWPBiPredIdc () { return m_uiBiPredIdc; } 666 667 #endif 668 Void setLog2ParallelMergeLevelMinus2 ( UInt u ) { m_uiLog2ParallelMergeLevelMinus2 = u; } 669 UInt getLog2ParallelMergeLevelMinus2 () { return m_uiLog2ParallelMergeLevelMinus2; } 667 670 Void setUseScalingListId ( Int u ) { m_useScalingListId = u; } 668 671 Int getUseScalingListId () { return m_useScalingListId; } 669 672 Void setScalingListFile ( char* pch ){ m_scalingListFile = pch; } -
source/Lib/TLibEncoder/TEncSearch.cpp
3202 3202 * \param bValid 3203 3203 * \returns Void 3204 3204 */ 3205 #if CU_BASED_MRG_CAND_LIST3206 3205 Void TEncSearch::xMergeEstimation( TComDataCU* pcCU, TComYuv* pcYuvOrg, Int iPUIdx, UInt& uiInterDir, TComMvField* pacMvField, UInt& uiMergeIndex, UInt& ruiCost, TComMvField* cMvFieldNeighbours, UChar* uhInterDirNeighbours, Int& numValidMergeCand ) 3207 #else3208 Void TEncSearch::xMergeEstimation( TComDataCU* pcCU, TComYuv* pcYuvOrg, Int iPUIdx, UInt& uiInterDir, TComMvField* pacMvField, UInt& uiMergeIndex, UInt& ruiCost )3209 #endif3210 3206 { 3211 #if !CU_BASED_MRG_CAND_LIST3212 TComMvField cMvFieldNeighbours[MRG_MAX_NUM_CANDS << 1]; // double length for mv of both lists3213 UChar uhInterDirNeighbours[MRG_MAX_NUM_CANDS];3214 Int numValidMergeCand = 0;3215 3216 for( UInt ui = 0; ui < MRG_MAX_NUM_CANDS; ++ui )3217 {3218 uhInterDirNeighbours[ui] = 0;3219 }3220 #endif3221 3222 3207 UInt uiAbsPartIdx = 0; 3223 3208 Int iWidth = 0; 3224 3209 Int iHeight = 0; 3225 3210 3226 3211 pcCU->getPartIndexAndSize( iPUIdx, uiAbsPartIdx, iWidth, iHeight ); 3227 3212 UInt uiDepth = pcCU->getDepth( uiAbsPartIdx ); 3228 #if CU_BASED_MRG_CAND_LIST3229 3213 PartSize partSize = pcCU->getPartitionSize( 0 ); 3230 3214 if ( pcCU->getSlice()->getPPS()->getLog2ParallelMergeLevelMinus2() && partSize != SIZE_2Nx2N && pcCU->getWidth( 0 ) <= 8 ) 3231 3215 { … … 3240 3224 { 3241 3225 pcCU->getInterMergeCandidates( uiAbsPartIdx, iPUIdx, uiDepth, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand ); 3242 3226 } 3243 #else3244 pcCU->getInterMergeCandidates( uiAbsPartIdx, iPUIdx, uiDepth, cMvFieldNeighbours,uhInterDirNeighbours, numValidMergeCand );3245 #endif3246 3227 #if BIPRED_RESTRICT_SMALL_PU 3247 3228 xRestrictBipredMergeCand( pcCU, iPUIdx, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand ); 3248 3229 #endif … … 3376 3357 Int iZeroMvdDir = -1; 3377 3358 #endif 3378 3359 3379 #if CU_BASED_MRG_CAND_LIST3380 3360 TComMvField cMvFieldNeighbours[MRG_MAX_NUM_CANDS << 1]; // double length for mv of both lists 3381 3361 UChar uhInterDirNeighbours[MRG_MAX_NUM_CANDS]; 3382 3362 Int numValidMergeCand = 0 ; 3383 #endif3384 3363 3385 3364 for ( Int iPartIdx = 0; iPartIdx < iNumPart; iPartIdx++ ) 3386 3365 { … … 3934 3913 3935 3914 // find Merge result 3936 3915 UInt uiMRGCost = MAX_UINT; 3937 #if CU_BASED_MRG_CAND_LIST3938 3916 xMergeEstimation( pcCU, pcOrgYuv, iPartIdx, uiMRGInterDir, cMRGMvField, uiMRGIndex, uiMRGCost, cMvFieldNeighbours, uhInterDirNeighbours, numValidMergeCand); 3939 #else3940 xMergeEstimation( pcCU, pcOrgYuv, iPartIdx, uiMRGInterDir, cMRGMvField, uiMRGIndex, uiMRGCost );3941 #endif3942 3917 if ( uiMRGCost < uiMECost ) 3943 3918 { 3944 3919 // set Merge result -
source/Lib/TLibEncoder/TEncSearch.h
392 392 TComMvField* pacMvField, 393 393 UInt& uiMergeIndex, 394 394 UInt& ruiCost 395 #if CU_BASED_MRG_CAND_LIST396 395 , TComMvField* cMvFieldNeighbours, 397 396 UChar* uhInterDirNeighbours, 398 397 Int& numValidMergeCand 399 #endif400 398 ); 401 399 402 400 #if BIPRED_RESTRICT_SMALL_PU -
source/Lib/TLibEncoder/TEncTop.cpp
666 666 m_cPPS.setTSIG(getTSIG()); 667 667 #endif 668 668 m_cPPS.setDeblockingFilterControlPresent (m_DeblockingFilterControlPresent ); 669 m_cPPS.setLog2ParallelMergeLevelMinus2 (LOG2_PARALLEL_MERGE_LEVEL_MINUS2);669 m_cPPS.setLog2ParallelMergeLevelMinus2 (m_uiLog2ParallelMergeLevelMinus2 ); 670 670 m_cPPS.setCabacInitPresentFlag(CABAC_INIT_PRESENT_FLAG); 671 671 672 672 Int histogram[8];