Changeset 879 in 3DVCSoftware for branches/HTM-10.1-dev0/source/Lib/TLibDecoder
- Timestamp:
- 27 Mar 2014, 22:31:12 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-10.1-dev0/source/Lib/TLibDecoder/TDecCu.cpp
r878 r879 1117 1117 UInt uiWidth = pcCU->getWidth ( 0 ); 1118 1118 UInt uiHeight = pcCU->getHeight ( 0 ); 1119 #if QC_PKU_SDC_SPLIT_G01231120 #if HS_TSINGHUA_SDC_SPLIT_G01111121 1119 TComWedgelet* dmm4SegmentationOrg = new TComWedgelet( uiWidth, uiHeight ); 1122 #else1123 TComWedgelet* dmm4Segmentation = new TComWedgelet( uiWidth, uiHeight );1124 #endif1125 #endif1126 #if QC_PKU_SDC_SPLIT_G01231127 1120 UInt numParts = 1; 1128 UInt i = 0;1129 1121 UInt sdcDepth = 0; 1130 1122 TComYuv* pcRecoYuv = m_ppcYuvReco[uiDepth]; … … 1143 1135 UInt uiLumaPredMode = 0; 1144 1136 1145 #if HS_TSINGHUA_SDC_SPLIT_G01111146 1137 if ((uiWidth >> pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize()) > 1) 1147 1138 { … … 1150 1141 uiWidth = uiHeight = (1 << pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize()); 1151 1142 } 1152 #else 1153 if (uiWidth == 64) 1154 { 1155 numParts = 4; 1156 sdcDepth = 1; 1157 uiWidth = uiHeight = 32; 1158 } 1159 #endif 1160 1161 for ( i = 0; i < numParts; i++ ) 1143 1144 for ( Int i = 0; i < numParts; i++ ) 1162 1145 { 1163 1146 uiStride = pcRecoYuv->getStride (); … … 1165 1148 piPred = pcPredYuv->getLumaAddr( uiAbsPartIdx ); 1166 1149 piResi = pcResiYuv->getLumaAddr( uiAbsPartIdx ); 1167 1150 1168 1151 uiZOrder = pcCU->getZorderIdxInCU() + uiAbsPartIdx; 1169 1152 piRecIPred = pcCU->getPic()->getPicYuvRec()->getLumaAddr( pcCU->getAddr(), uiZOrder ); … … 1173 1156 1174 1157 AOF( uiWidth == uiHeight ); 1175 #else 1176 TComYuv* pcRecoYuv = m_ppcYuvReco[uiDepth]; 1177 TComYuv* pcPredYuv = m_ppcYuvReco[uiDepth]; 1178 TComYuv* pcResiYuv = m_ppcYuvResi[uiDepth]; 1179 1180 UInt uiStride = pcRecoYuv->getStride (); 1181 Pel* piReco = pcRecoYuv->getLumaAddr( uiAbsPartIdx ); 1182 Pel* piPred = pcPredYuv->getLumaAddr( uiAbsPartIdx ); 1183 Pel* piResi = pcResiYuv->getLumaAddr( uiAbsPartIdx ); 1184 1185 UInt uiZOrder = pcCU->getZorderIdxInCU() + uiAbsPartIdx; 1186 Pel* piRecIPred = pcCU->getPic()->getPicYuvRec()->getLumaAddr( pcCU->getAddr(), uiZOrder ); 1187 UInt uiRecIPredStride = pcCU->getPic()->getPicYuvRec()->getStride (); 1188 1189 UInt uiLumaPredMode = pcCU->getLumaIntraDir ( uiAbsPartIdx ); 1190 1191 AOF( uiWidth == uiHeight ); 1192 AOF( uiAbsPartIdx == 0 ); 1193 AOF( pcCU->getSDCAvailable(uiAbsPartIdx) ); 1194 AOF( pcCU->getSDCFlag(uiAbsPartIdx) ); 1195 #endif 1196 1197 //===== init availability pattern ===== 1198 Bool bAboveAvail = false; 1199 Bool bLeftAvail = false; 1200 #if QC_PKU_SDC_SPLIT_G0123 1201 pcCU->getPattern()->initPattern ( pcCU, sdcDepth, uiAbsPartIdx ); 1202 pcCU->getPattern()->initAdiPattern( pcCU, uiAbsPartIdx, sdcDepth, m_pcPrediction->getPredicBuf(), m_pcPrediction->getPredicBufWidth(), m_pcPrediction->getPredicBufHeight(), bAboveAvail, bLeftAvail ); 1203 #else 1204 pcCU->getPattern()->initPattern ( pcCU, 0, uiAbsPartIdx ); 1205 pcCU->getPattern()->initAdiPattern( pcCU, uiAbsPartIdx, 0, m_pcPrediction->getPredicBuf(), m_pcPrediction->getPredicBufWidth(), m_pcPrediction->getPredicBufHeight(), bAboveAvail, bLeftAvail ); 1206 #endif 1207 #if !QC_PKU_SDC_SPLIT_G0123 1208 TComWedgelet* dmm4Segmentation = new TComWedgelet( uiWidth, uiHeight ); 1209 #endif 1210 #if HS_TSINGHUA_SDC_SPLIT_G0111 1211 TComWedgelet* dmm4Segmentation = new TComWedgelet( uiWidth, uiHeight ); 1212 #endif 1213 //===== get prediction signal ===== 1214 #if H_3D_DIM 1215 if( isDimMode( uiLumaPredMode ) ) 1216 { 1217 m_pcPrediction->predIntraLumaDepth( pcCU, uiAbsPartIdx, uiLumaPredMode, piPred, uiStride, uiWidth, uiHeight 1218 , false, dmm4Segmentation 1219 ); 1220 #if HS_TSINGHUA_SDC_SPLIT_G0111 1221 Bool* dmm4PatternSplit = dmm4Segmentation->getPattern(); 1222 Bool* dmm4PatternOrg = dmm4SegmentationOrg->getPattern(); 1223 for( UInt k = 0; k < (uiWidth*uiHeight); k++ ) 1224 { 1225 dmm4PatternOrg[k+(uiAbsPartIdx<<4)] = dmm4PatternSplit[k]; 1226 } 1227 #endif 1228 } 1229 else 1230 { 1231 #endif 1232 m_pcPrediction->predIntraLumaAng( pcCU->getPattern(), uiLumaPredMode, piPred, uiStride, uiWidth, uiHeight, bAboveAvail, bLeftAvail ); 1233 #if H_3D_DIM 1234 } 1235 #endif 1236 #if QC_PKU_SDC_SPLIT_G0123 1158 1159 //===== init availability pattern ===== 1160 Bool bAboveAvail = false; 1161 Bool bLeftAvail = false; 1162 1163 pcCU->getPattern()->initPattern ( pcCU, sdcDepth, uiAbsPartIdx ); 1164 pcCU->getPattern()->initAdiPattern( pcCU, uiAbsPartIdx, sdcDepth, m_pcPrediction->getPredicBuf(), m_pcPrediction->getPredicBufWidth(), m_pcPrediction->getPredicBufHeight(), bAboveAvail, bLeftAvail ); 1165 1166 TComWedgelet* dmm4Segmentation = new TComWedgelet( uiWidth, uiHeight ); 1167 //===== get prediction signal ===== 1168 if( isDimMode( uiLumaPredMode ) ) 1169 { 1170 m_pcPrediction->predIntraLumaDepth( pcCU, uiAbsPartIdx, uiLumaPredMode, piPred, uiStride, uiWidth, uiHeight, false, dmm4Segmentation ); 1171 Bool* dmm4PatternSplit = dmm4Segmentation->getPattern(); 1172 Bool* dmm4PatternOrg = dmm4SegmentationOrg->getPattern(); 1173 for( UInt k = 0; k < (uiWidth*uiHeight); k++ ) 1174 { 1175 dmm4PatternOrg[k+(uiAbsPartIdx<<4)] = dmm4PatternSplit[k]; 1176 } 1177 } 1178 else 1179 { 1180 m_pcPrediction->predIntraLumaAng( pcCU->getPattern(), uiLumaPredMode, piPred, uiStride, uiWidth, uiHeight, bAboveAvail, bLeftAvail ); 1181 } 1182 1237 1183 if ( numParts > 1 ) 1238 1184 { … … 1250 1196 } 1251 1197 uiAbsPartIdx += ( (uiWidth * uiWidth) >> 4 ); 1252 #if HS_TSINGHUA_SDC_SPLIT_G01111253 1198 dmm4Segmentation->destroy(); delete dmm4Segmentation; 1254 #endif1255 1199 } 1256 1200 uiAbsPartIdx = 0; … … 1267 1211 piRecIPred = pcCU->getPic()->getPicYuvRec()->getLumaAddr( pcCU->getAddr(), uiZOrder ); 1268 1212 uiRecIPredStride = pcCU->getPic()->getPicYuvRec()->getStride (); 1269 #endif1270 1213 // number of segments depends on prediction mode 1271 1214 UInt uiNumSegments = 1; … … 1287 1230 { 1288 1231 uiNumSegments = 2; 1289 #if HS_TSINGHUA_SDC_SPLIT_G01111290 1232 pbMask = dmm4SegmentationOrg->getPattern(); 1291 1233 uiMaskStride = dmm4SegmentationOrg->getStride(); 1292 #else1293 pbMask = dmm4Segmentation->getPattern();1294 uiMaskStride = dmm4Segmentation->getStride();1295 #endif1296 1234 } 1297 1235 // get DC prediction for each segment … … 1356 1294 pRecCr += uiStrideC; 1357 1295 } 1358 #if HS_TSINGHUA_SDC_SPLIT_G01111359 1296 dmm4SegmentationOrg->destroy(); delete dmm4SegmentationOrg; 1360 #else1361 dmm4Segmentation->destroy(); delete dmm4Segmentation;1362 #endif1363 1297 } 1364 1298 #endif
Note: See TracChangeset for help on using the changeset viewer.