Changeset 799 in 3DVCSoftware for branches/HTM-9.3-dev3-Hisilicon/source/Lib/TLibDecoder
- Timestamp:
- 26 Jan 2014, 15:40:44 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-9.3-dev3-Hisilicon/source/Lib/TLibDecoder/TDecCu.cpp
r792 r799 921 921 UInt uiWidth = pcCU->getWidth ( 0 ); 922 922 UInt uiHeight = pcCU->getHeight ( 0 ); 923 923 #if QC_PKU_SDC_SPLIT_G0123 924 #if QC_GENERIC_SDC_G0122 925 TComWedgelet* dmm4Segmentation = new TComWedgelet( uiWidth, uiHeight ); 926 #endif 927 #endif 928 #if QC_PKU_SDC_SPLIT_G0123 929 UInt numParts = 1; 930 UInt i = 0; 931 UInt sdcDepth = 0; 932 TComYuv* pcRecoYuv = m_ppcYuvReco[uiDepth]; 933 TComYuv* pcPredYuv = m_ppcYuvReco[uiDepth]; 934 TComYuv* pcResiYuv = m_ppcYuvResi[uiDepth]; 935 936 UInt uiStride = 0; 937 Pel* piReco; 938 Pel* piPred; 939 Pel* piResi; 940 941 UInt uiZOrder; 942 Pel* piRecIPred; 943 UInt uiRecIPredStride; 944 945 UInt uiLumaPredMode = 0; 946 947 #if HS_TSINGHUA_SDC_SPLIT_G0111 948 if ((uiWidth >> pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize()) > 1) 949 { 950 numParts = uiWidth * uiWidth >> (2 * pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize()); 951 sdcDepth = g_aucConvertToBit[uiWidth] + 2 - pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize(); 952 uiWidth = uiHeight = (1 << pcCU->getSlice()->getSPS()->getQuadtreeTULog2MaxSize()); 953 } 954 #else 955 if (uiWidth == 64) 956 { 957 numParts = 4; 958 sdcDepth = 1; 959 uiWidth = uiHeight = 32; 960 } 961 #endif 962 963 for ( i = 0; i < numParts; i++ ) 964 { 965 uiStride = pcRecoYuv->getStride (); 966 piReco = pcRecoYuv->getLumaAddr( uiAbsPartIdx ); 967 piPred = pcPredYuv->getLumaAddr( uiAbsPartIdx ); 968 piResi = pcResiYuv->getLumaAddr( uiAbsPartIdx ); 969 970 uiZOrder = pcCU->getZorderIdxInCU() + uiAbsPartIdx; 971 piRecIPred = pcCU->getPic()->getPicYuvRec()->getLumaAddr( pcCU->getAddr(), uiZOrder ); 972 uiRecIPredStride = pcCU->getPic()->getPicYuvRec()->getStride (); 973 974 uiLumaPredMode = pcCU->getLumaIntraDir ( uiAbsPartIdx ); 975 976 AOF( uiWidth == uiHeight ); 977 #else 924 978 TComYuv* pcRecoYuv = m_ppcYuvReco[uiDepth]; 925 979 TComYuv* pcPredYuv = m_ppcYuvReco[uiDepth]; … … 936 990 937 991 UInt uiLumaPredMode = pcCU->getLumaIntraDir ( uiAbsPartIdx ); 938 992 939 993 AOF( uiWidth == uiHeight ); 940 994 AOF( uiAbsPartIdx == 0 ); 941 995 AOF( pcCU->getSDCAvailable(uiAbsPartIdx) ); 942 996 AOF( pcCU->getSDCFlag(uiAbsPartIdx) ); 997 #endif 943 998 944 999 //===== init availability pattern ===== 945 1000 Bool bAboveAvail = false; 946 1001 Bool bLeftAvail = false; 1002 #if QC_PKU_SDC_SPLIT_G0123 1003 pcCU->getPattern()->initPattern ( pcCU, sdcDepth, uiAbsPartIdx ); 1004 pcCU->getPattern()->initAdiPattern( pcCU, uiAbsPartIdx, sdcDepth, m_pcPrediction->getPredicBuf(), m_pcPrediction->getPredicBufWidth(), m_pcPrediction->getPredicBufHeight(), bAboveAvail, bLeftAvail ); 1005 #else 947 1006 pcCU->getPattern()->initPattern ( pcCU, 0, uiAbsPartIdx ); 948 1007 pcCU->getPattern()->initAdiPattern( pcCU, uiAbsPartIdx, 0, m_pcPrediction->getPredicBuf(), m_pcPrediction->getPredicBufWidth(), m_pcPrediction->getPredicBufHeight(), bAboveAvail, bLeftAvail ); 1008 #endif 1009 #if !QC_PKU_SDC_SPLIT_G0123 949 1010 #if QC_GENERIC_SDC_G0122 950 1011 TComWedgelet* dmm4Segmentation = new TComWedgelet( uiWidth, uiHeight ); 1012 #endif 951 1013 #endif 952 1014 //===== get prediction signal ===== … … 967 1029 } 968 1030 #endif 969 1031 #if QC_PKU_SDC_SPLIT_G0123 1032 if ( numParts > 1 ) 1033 { 1034 for( UInt uiY = 0; uiY < uiHeight; uiY++ ) 1035 { 1036 for( UInt uiX = 0; uiX < uiWidth; uiX++ ) 1037 { 1038 piReco [ uiX ] = ClipY( piPred[ uiX ] ); 1039 piRecIPred [ uiX ] = piReco[ uiX ]; 1040 } 1041 piPred += uiStride; 1042 piReco += uiStride; 1043 piRecIPred += uiRecIPredStride; 1044 } 1045 } 1046 uiAbsPartIdx += ( (uiWidth * uiWidth) >> 4 ); 1047 } 1048 uiAbsPartIdx = 0; 1049 1050 if ( numParts > 1 ) 1051 { 1052 uiWidth = pcCU->getWidth( 0 ); 1053 uiHeight = pcCU->getHeight( 0 ); 1054 } 1055 piReco = pcRecoYuv->getLumaAddr( uiAbsPartIdx ); 1056 piPred = pcPredYuv->getLumaAddr( uiAbsPartIdx ); 1057 piResi = pcResiYuv->getLumaAddr( uiAbsPartIdx ); 1058 uiZOrder = pcCU->getZorderIdxInCU() + uiAbsPartIdx; 1059 piRecIPred = pcCU->getPic()->getPicYuvRec()->getLumaAddr( pcCU->getAddr(), uiZOrder ); 1060 uiRecIPredStride = pcCU->getPic()->getPicYuvRec()->getStride (); 1061 #endif 970 1062 // number of segments depends on prediction mode 971 1063 UInt uiNumSegments = 1;
Note: See TracChangeset for help on using the changeset viewer.