Changeset 781 in 3DVCSoftware for branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibDecoder
- Timestamp:
- 20 Jan 2014, 04:34:18 (11 years ago)
- Location:
- branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibDecoder
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibDecoder/TDecCu.cpp
r773 r781 932 932 pcCU->getPattern()->initPattern ( pcCU, 0, uiAbsPartIdx ); 933 933 pcCU->getPattern()->initAdiPattern( pcCU, uiAbsPartIdx, 0, m_pcPrediction->getPredicBuf(), m_pcPrediction->getPredicBufWidth(), m_pcPrediction->getPredicBufHeight(), bAboveAvail, bLeftAvail ); 934 934 #if QC_GENERIC_SDC_G0122 935 TComWedgelet* dmm4Segmentation = new TComWedgelet( uiWidth, uiHeight ); 936 #endif 935 937 //===== get prediction signal ===== 936 938 #if H_3D_DIM 937 939 if( isDimMode( uiLumaPredMode ) ) 938 940 { 939 m_pcPrediction->predIntraLumaDepth( pcCU, uiAbsPartIdx, uiLumaPredMode, piPred, uiStride, uiWidth, uiHeight ); 941 m_pcPrediction->predIntraLumaDepth( pcCU, uiAbsPartIdx, uiLumaPredMode, piPred, uiStride, uiWidth, uiHeight 942 #if QC_GENERIC_SDC_G0122 943 , false, dmm4Segmentation 944 #endif 945 ); 940 946 } 941 947 else … … 963 969 uiMaskStride = pcWedgelet->getStride(); 964 970 } 965 971 #if QC_GENERIC_SDC_G0122 972 if( getDimType( uiLumaPredMode ) == DMM4_IDX ) 973 { 974 uiNumSegments = 2; 975 pbMask = dmm4Segmentation->getPattern(); 976 uiMaskStride = dmm4Segmentation->getStride(); 977 } 978 #endif 966 979 // get DC prediction for each segment 967 980 Pel apDCPredValues[2]; … … 1025 1038 pRecCr += uiStrideC; 1026 1039 } 1040 #if QC_GENERIC_SDC_G0122 1041 dmm4Segmentation->destroy(); delete dmm4Segmentation; 1042 #endif 1027 1043 } 1028 1044 #endif -
branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibDecoder/TDecSbac.cpp
r773 r781 87 87 , m_cDdcFlagSCModel ( 1, 1, NUM_DDC_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 88 88 , m_cDdcDataSCModel ( 1, 1, NUM_DDC_DATA_CTX , m_contextModels + m_numContextModels, m_numContextModels) 89 #if QC_GENERIC_SDC_G0122 90 , m_cAngleFlagSCModel ( 1, 1, NUM_ANGLE_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 91 , m_cIntraSdcFlagSCModel ( 1, 1, NUM_INTRASDC_FLAG_CTX , m_contextModels + m_numContextModels, m_numContextModels) 92 #endif 89 93 #if H_3D_DIM_DMM 90 94 , m_cDmm1DataSCModel ( 1, 1, NUM_DMM1_DATA_CTX , m_contextModels + m_numContextModels, m_numContextModels) … … 170 174 m_cDdcFlagSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_DDC_FLAG ); 171 175 m_cDdcDataSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_DDC_DATA ); 176 #if QC_GENERIC_SDC_G0122 177 m_cAngleFlagSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_ANGLE_FLAG ); 178 m_cIntraSdcFlagSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_INTRASDC_FLAG ); 179 #endif 172 180 #if H_3D_DIM_DMM 173 181 m_cDmm1DataSCModel.initBuffer ( sliceType, qp, (UChar*)INIT_DMM1_DATA ); … … 239 247 m_cDdcFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DDC_FLAG ); 240 248 m_cDdcDataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DDC_DATA ); 249 #if QC_GENERIC_SDC_G0122 250 m_cAngleFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_ANGLE_FLAG ); 251 m_cIntraSdcFlagSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_INTRASDC_FLAG ); 252 #endif 241 253 #if H_3D_DIM_DMM 242 254 m_cDmm1DataSCModel.initBuffer ( eSliceType, iQp, (UChar*)INIT_DMM1_DATA ); … … 925 937 if( pcCU->getLumaIntraDir( absPartIdx+partOffset*j ) < NUM_INTRA_MODE ) 926 938 #if H_3D_DIM_SDC 939 #if QC_GENERIC_SDC_G0122 940 if( 1 ) 941 #else 927 942 if( !pcCU->getSDCFlag( absPartIdx+partOffset*j ) ) 943 #endif 928 944 #endif 929 945 { … … 943 959 if( pcCU->getLumaIntraDir( absPartIdx+partOffset*j ) < NUM_INTRA_MODE ) 944 960 #if H_3D_DIM_SDC 961 #if QC_GENERIC_SDC_G0122 962 if( 1 ) 963 #else 945 964 if( !pcCU->getSDCFlag( absPartIdx+partOffset*j ) ) 965 #endif 946 966 #endif 947 967 { … … 1049 1069 { 1050 1070 UInt symbol; 1071 #if QC_GENERIC_SDC_G0122 1072 UInt uiNumSegments = isDimMode( dir ) ? 2 : 1; 1073 #else 1051 1074 UInt uiNumSegments = ( dir == PLANAR_IDX ) ? 1 : 2; 1075 #endif 1052 1076 1053 1077 if( pcCU->getSDCFlag( absPartIdx ) ) … … 1089 1113 } 1090 1114 1115 #if QC_GENERIC_SDC_G0122 1116 Void TDecSbac::parseIntraDepthMode( TComDataCU* pcCU, UInt absPartIdx, UInt depth ) 1117 { 1118 UInt uiSymbol, uiIsDimMode; 1119 1120 if( ( pcCU->getSlice()->getSPS()->getMaxCUWidth() >> pcCU->getDepth( absPartIdx ) ) < 64 ) //DMM and HEVC intra modes are both allowed 1121 { 1122 m_pcTDecBinIf->decodeBin( uiSymbol, m_cAngleFlagSCModel.get( 0, 0, pcCU->getCtxAngleFlag( absPartIdx ) ) ); 1123 } 1124 else 1125 { 1126 uiSymbol = 1; 1127 } 1128 uiIsDimMode = uiSymbol ? 0 : 1; 1129 pcCU->setLumaIntraDirSubParts( 0, absPartIdx, depth ); 1130 1131 if( pcCU->getPartitionSize( absPartIdx ) == SIZE_2Nx2N ) //SDC is allowed only in this case 1132 { 1133 m_pcTDecBinIf->decodeBin( uiSymbol, m_cIntraSdcFlagSCModel.get( 0, 0, pcCU->getCtxSDCFlag( absPartIdx ) ) ); 1134 } 1135 else 1136 { 1137 uiSymbol = 0; 1138 } 1139 1140 pcCU->setSDCFlagSubParts( uiSymbol, absPartIdx, depth ); 1141 1142 //decode DMM index 1143 if( uiIsDimMode ) 1144 { 1145 m_pcTDecBinIf->decodeBin( uiSymbol, m_cDepthIntraModeSCModel.get( 0, 0, 0 ) ); 1146 if( !uiSymbol ) 1147 { 1148 pcCU->setLumaIntraDirSubParts( ( 2 * DMM1_IDX + DIM_OFFSET ), absPartIdx, depth ); 1149 } 1150 else 1151 { 1152 pcCU->setLumaIntraDirSubParts( ( 2 * DMM4_IDX + DIM_OFFSET ), absPartIdx, depth ); 1153 } 1154 } 1155 } 1156 #else 1091 1157 Void TDecSbac::parseIntraDepthMode( TComDataCU* pcCU, UInt absPartIdx, UInt depth ) 1092 1158 { … … 1151 1217 #endif 1152 1218 } 1219 #endif 1153 1220 #endif 1154 1221 -
branches/HTM-9.3-dev3-Qualcomm/source/Lib/TLibDecoder/TDecSbac.h
r773 r781 211 211 ContextModel3DBuffer m_cDdcFlagSCModel; 212 212 ContextModel3DBuffer m_cDdcDataSCModel; 213 #if QC_GENERIC_SDC_G0122 214 ContextModel3DBuffer m_cAngleFlagSCModel; 215 ContextModel3DBuffer m_cIntraSdcFlagSCModel; 216 #endif 213 217 #if H_3D_DIM_DMM 214 218 ContextModel3DBuffer m_cDmm1DataSCModel;
Note: See TracChangeset for help on using the changeset viewer.