Changeset 781 in 3DVCSoftware for branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibEncoder/TEncSbac.cpp
- Timestamp:
- 20 Jan 2014, 04:34:18 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibEncoder/TEncSbac.cpp
r773 r781 93 93 , m_cDdcFlagSCModel ( 1, 1, NUM_DDC_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 94 94 , m_cDdcDataSCModel ( 1, 1, NUM_DDC_DATA_CTX , m_contextModels + m_numContextModels, m_numContextModels) 95 #if QC_GENERIC_SDC_G0122 96 , m_cAngleFlagSCModel ( 1, 1, NUM_ANGLE_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 97 , m_cIntraSdcFlagSCModel ( 1, 1, NUM_INTRASDC_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 98 #endif 95 99 #if H_3D_DIM_DMM 96 100 , m_cDmm1DataSCModel ( 1, 1, NUM_DMM1_DATA_CTX , m_contextModels + m_numContextModels, m_numContextModels) … … 168 172 m_cDdcFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DDC_FLAG ); 169 173 m_cDdcDataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DDC_DATA ); 174 #if QC_GENERIC_SDC_G0122 175 m_cAngleFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_ANGLE_FLAG ); 176 m_cIntraSdcFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_INTRASDC_FLAG ); 177 #endif 170 178 #if H_3D_DIM_DMM 171 179 m_cDmm1DataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA ); … … 252 260 curCost += m_cDdcFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_DDC_FLAG ); 253 261 curCost += m_cDdcDataSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_DDC_DATA ); 262 #if QC_GENERIC_SDC_G0122 263 curCost += m_cAngleFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_ANGLE_FLAG ); 264 curCost += m_cIntraSdcFlagSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_INTRASDC_FLAG ); 265 #endif 254 266 #if H_3D_DIM_DMM 255 267 curCost += m_cDmm1DataSCModel.calcCost ( curSliceType, qp, (UChar*)INIT_DMM1_DATA ); … … 317 329 m_cDdcFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DDC_FLAG ); 318 330 m_cDdcDataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DDC_DATA ); 331 #if QC_GENERIC_SDC_G0122 332 m_cAngleFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_ANGLE_FLAG ); 333 m_cIntraSdcFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_INTRASDC_FLAG ); 334 #endif 319 335 #if H_3D_DIM_DMM 320 336 m_cDmm1DataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA ); … … 629 645 this->m_cDepthIntraModeSCModel .copyFrom( &pSrc->m_cDepthIntraModeSCModel ); 630 646 this->m_cDdcFlagSCModel .copyFrom( &pSrc->m_cDdcFlagSCModel ); 647 #if QC_GENERIC_SDC_G0122 648 this->m_cAngleFlagSCModel .copyFrom( &pSrc->m_cAngleFlagSCModel ); 649 this->m_cIntraSdcFlagSCModel .copyFrom( &pSrc->m_cIntraSdcFlagSCModel ); 650 #endif 631 651 } 632 652 #endif … … 1016 1036 if( pcCU->getLumaIntraDir( absPartIdx+partOffset*j ) < NUM_INTRA_MODE ) 1017 1037 #if H_3D_DIM_SDC 1038 #if QC_GENERIC_SDC_G0122 1039 if( 1 ) 1040 #else 1018 1041 if( !pcCU->getSDCFlag( absPartIdx+partOffset*j ) ) 1042 #endif 1019 1043 #endif 1020 1044 { … … 1042 1066 if( pcCU->getLumaIntraDir( absPartIdx+partOffset*j ) < NUM_INTRA_MODE ) 1043 1067 #if H_3D_DIM_SDC 1068 #if QC_GENERIC_SDC_G0122 1069 if( 1 ) 1070 #else 1044 1071 if( !pcCU->getSDCFlag( absPartIdx+partOffset*j ) ) 1072 #endif 1045 1073 #endif 1046 1074 { … … 1146 1174 UInt dimDeltaDC; 1147 1175 Pel deltaDC; 1176 #if QC_GENERIC_SDC_G0122 1177 UInt uiNumSegments = isDimMode( dir ) ? 2 : 1; 1178 #else 1148 1179 UInt uiNumSegments = ( dir == PLANAR_IDX ) ? 1 : 2; 1180 #endif 1149 1181 if( pcCU->getSDCFlag( absPartIdx ) ) 1150 1182 { … … 1176 1208 } 1177 1209 1210 #if QC_GENERIC_SDC_G0122 1211 Void TEncSbac::codeIntraDepthMode( TComDataCU* pcCU, UInt absPartIdx ) 1212 { 1213 UInt dir = pcCU->getLumaIntraDir( absPartIdx ); 1214 1215 if( ( pcCU->getSlice()->getSPS()->getMaxCUWidth() >> pcCU->getDepth( absPartIdx ) ) < 64 ) //DMM and HEVC intra modes are both allowed 1216 { 1217 m_pcBinIf->encodeBin( isDimMode( dir ) ? 0 : 1, m_cAngleFlagSCModel.get( 0, 0, pcCU->getCtxAngleFlag( absPartIdx ) ) ); 1218 } 1219 1220 if( pcCU->getPartitionSize( absPartIdx ) == SIZE_2Nx2N ) //SDC is allowed only in this case 1221 { 1222 m_pcBinIf->encodeBin( pcCU->getSDCFlag( absPartIdx ) ? 1 : 0, m_cIntraSdcFlagSCModel.get( 0, 0, pcCU->getCtxSDCFlag( absPartIdx ) ) ); 1223 } 1224 1225 if( isDimMode( dir ) ) 1226 { 1227 UInt uiCodeIdx = 0; 1228 1229 switch( getDimType( dir ) ) 1230 { 1231 case DMM1_IDX: uiCodeIdx = 0; break; 1232 case DMM4_IDX: uiCodeIdx = 1; break; 1233 default: break; 1234 } 1235 //mode coding 1236 m_pcBinIf->encodeBin( uiCodeIdx == 0 ? 0 : 1, m_cDepthIntraModeSCModel.get( 0, 0, 0 ) ); 1237 } 1238 } 1239 #else 1178 1240 Void TEncSbac::codeIntraDepthMode( TComDataCU* pcCU, UInt absPartIdx ) 1179 1241 { … … 1216 1278 } 1217 1279 } 1280 #endif 1218 1281 #endif 1219 1282
Note: See TracChangeset for help on using the changeset viewer.