- Timestamp:
- 19 May 2013, 18:43:01 (12 years ago)
- Location:
- branches/HTM-6.2-dev2-MERL/source/Lib
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/HTM-6.2-dev2-MERL/source/Lib/TLibCommon/TComDataCU.cpp
r418 r419 5873 5873 #endif 5874 5874 5875 #if QC_CU_NBDV_D0181 && MERL_VSP_C0152 // TODO: CHECK if the macro is right 5875 #if MERL_General_Fix 5876 #if QC_CU_NBDV_D0181 && MERL_VSP_C0152 5876 5877 pDInfo->m_acMvCandNoRef[pDInfo->iN] = defaultDV; 5878 #endif 5877 5879 #endif 5878 5880 -
branches/HTM-6.2-dev2-MERL/source/Lib/TLibCommon/TComPrediction.cpp
r418 r419 788 788 #endif 789 789 790 #if MERL_General_Fix 790 791 #if MERL_VSP_C0152 791 792 // Function to perform VSP block compensation … … 860 861 } 861 862 862 863 #endif 863 864 864 865 #if MERL_Bi_VSP_D0166 … … 950 951 #if QC_ARP_D0177 951 952 if( 952 #if MERL_VSP_C0152 953 vspIdx == 0 && // TODO: Maybe logically redundant, but easier to read. Need verification before being removed 953 #if MERL_General_Fix // TODO: Maybe logically redundant, but easier to read. Need verification before being removed 954 #if MERL_VSP_C0152 955 vspIdx == 0 && 956 #endif 954 957 #endif 955 958 pcCU->getSlice()->getSPS()->isDepth() == false … … 972 975 if (vspIdx != 0) 973 976 { // depth, vsp compensation 977 #if !MERL_General_Fix 978 // get depth estimator here 979 TComPic* pRefPicBaseDepth = pcCU->getSlice()->getRefPicBaseDepth(); 980 TComPicYuv* pcBaseViewDepthPicYuv = NULL; 981 if (vspIdx < 4) // spatial 982 { 983 pcBaseViewDepthPicYuv = pRefPicBaseDepth->getPicYuvRec(); 984 } 985 Int iBlkX = ( pcCU->getAddr() % pRefPicBaseDepth->getFrameWidthInCU() ) * g_uiMaxCUWidth + g_auiRasterToPelX[ g_auiZscanToRaster[ uiAbsPartIdx ] ]; 986 Int iBlkY = ( pcCU->getAddr() / pRefPicBaseDepth->getFrameWidthInCU() ) * g_uiMaxCUHeight + g_auiRasterToPelY[ g_auiZscanToRaster[ uiAbsPartIdx ] ]; 987 Int* pShiftLUT; 988 Int iShiftPrec; 989 pcCU->getSlice()->getBWVSPLUTParam(pShiftLUT, iShiftPrec); 990 //using disparity to find the depth block of the base view as the depth block estimator of the current block 991 //using depth block estimator and base view texture to get Backward warping 992 xPredInterLumaBlkFromDM ( pcBaseViewDepthPicYuv, pcBaseViewDepthPicYuv, pShiftLUT, iShiftPrec, &cMv, uiPartAddr, iBlkX, iBlkY, iWidth, iHeight, pcCU->getSlice()->getSPS()->isDepth(), vspIdx, rpcYuvPred ); 993 xPredInterChromaBlkFromDM( pcBaseViewDepthPicYuv, pcBaseViewDepthPicYuv, pShiftLUT, iShiftPrec, &cMv, uiPartAddr, iBlkX>>1, iBlkY>>1, iWidth>>1, iHeight>>1, pcCU->getSlice()->getSPS()->isDepth(), vspIdx, rpcYuvPred ); 994 #else 974 995 xPredInterVSPBlk(pcCU, uiPartAddr, uiAbsPartIdx, iWidth, iHeight, cMv, eRefPicList, rpcYuvPred, bi ); 996 #endif 975 997 } 976 998 else … … 1001 1023 if ( vspIdx != 0 ) 1002 1024 { // texture, vsp compensation 1025 #if !MERL_General_Fix 1026 TComPic* pRefPicBaseTxt = pcCU->getSlice()->getRefPicBaseTxt(); 1027 TComPicYuv* pcBaseViewTxtPicYuv = pRefPicBaseTxt->getPicYuvRec(); 1028 TComPicYuv* pcBaseViewDepthPicYuv = NULL; 1029 if (vspIdx < 4) // spatial 1030 { 1031 TComPic* pRefPicBaseDepth = pcCU->getSlice()->getRefPicBaseDepth(); 1032 pcBaseViewDepthPicYuv = pRefPicBaseDepth->getPicYuvRec(); 1033 } 1034 Int iBlkX = ( pcCU->getAddr() % pRefPicBaseTxt->getFrameWidthInCU() ) * g_uiMaxCUWidth + g_auiRasterToPelX[ g_auiZscanToRaster[ uiAbsPartIdx ] ]; 1035 Int iBlkY = ( pcCU->getAddr() / pRefPicBaseTxt->getFrameWidthInCU() ) * g_uiMaxCUHeight + g_auiRasterToPelY[ g_auiZscanToRaster[ uiAbsPartIdx ] ]; 1036 Int* pShiftLUT; 1037 Int iShiftPrec; 1038 pcCU->getSlice()->getBWVSPLUTParam(pShiftLUT, iShiftPrec); 1039 1040 //using disparity to find the depth block of the base view as the depth block estimator of the current block 1041 //using depth block estimator and base view texture to get Backward warping 1042 xPredInterLumaBlkFromDM ( pcBaseViewTxtPicYuv, pcBaseViewDepthPicYuv, pShiftLUT, iShiftPrec, &cMv, uiPartAddr, iBlkX, iBlkY, iWidth, iHeight, pcCU->getSlice()->getSPS()->isDepth(), vspIdx, rpcYuvPred ); 1043 xPredInterChromaBlkFromDM( pcBaseViewTxtPicYuv, pcBaseViewDepthPicYuv, pShiftLUT, iShiftPrec, &cMv, uiPartAddr, iBlkX>>1, iBlkY>>1, iWidth>>1, iHeight>>1, pcCU->getSlice()->getSPS()->isDepth(), vspIdx, rpcYuvPred ); 1044 #else 1003 1045 xPredInterVSPBlk(pcCU, uiPartAddr, uiAbsPartIdx, iWidth, iHeight, cMv, eRefPicList, rpcYuvPred, bi ); 1046 #endif 1004 1047 } 1005 1048 else//texture not VSP … … 1686 1729 // 1687 1730 // Output: dstPic, PU predictor 64x64 1688 Void TComPrediction::xPredInterLumaBlkFromDM( TComPicYuv *refPic, TComPicYuv *pPicBaseDepth, Int* pShiftLUT, Int iShiftPrec, TComMv* mv, UInt partAddr,Int posX, Int posY, Int sizeX, Int sizeY, Bool isDepth, TComYuv *&dstPic 1731 Void TComPrediction::xPredInterLumaBlkFromDM( TComPicYuv *refPic, TComPicYuv *pPicBaseDepth, Int* pShiftLUT, Int iShiftPrec, TComMv* mv, UInt partAddr,Int posX, Int posY, Int sizeX, Int sizeY, Bool isDepth 1732 #if !MERL_Bi_VSP_D0166 1733 , Int vspIdx 1734 #endif 1735 , TComYuv *&dstPic 1689 1736 #if MERL_Bi_VSP_D0166 1690 1737 , Bool bi … … 1929 1976 } 1930 1977 1931 Void TComPrediction::xPredInterChromaBlkFromDM ( TComPicYuv *refPic, TComPicYuv *pPicBaseDepth, Int* pShiftLUT, Int iShiftPrec, TComMv*mv, UInt partAddr, Int posX, Int posY, Int sizeX, Int sizeY, Bool isDepth, TComYuv *&dstPic 1978 Void TComPrediction::xPredInterChromaBlkFromDM ( TComPicYuv *refPic, TComPicYuv *pPicBaseDepth, Int* pShiftLUT, Int iShiftPrec, TComMv*mv, UInt partAddr, Int posX, Int posY, Int sizeX, Int sizeY, Bool isDepth 1979 #if !MERL_Bi_VSP_D0166 1980 , Int vspIdx 1981 #endif 1982 , TComYuv *&dstPic 1932 1983 #if MERL_Bi_VSP_D0166 1933 1984 , Bool bi -
branches/HTM-6.2-dev2-MERL/source/Lib/TLibCommon/TComPrediction.h
r416 r419 161 161 TComYuv *&dstPic, Bool bi); 162 162 #else 163 Void xPredInterLumaBlkFromDM ( TComPicYuv *refPic, TComPicYuv *pPicBaseDepth, Int* pShiftLUT, Int iShiftPrec, TComMv *mv, UInt partAddr,Int posX, Int posY, Int sizeX, Int sizeY, Bool isDepth, 163 Void xPredInterLumaBlkFromDM ( TComPicYuv *refPic, TComPicYuv *pPicBaseDepth, Int* pShiftLUT, Int iShiftPrec, TComMv *mv, UInt partAddr,Int posX, Int posY, Int sizeX, Int sizeY, Bool isDepth, Int vspIdx, 164 164 TComYuv *&dstPic ); 165 Void xPredInterChromaBlkFromDM ( TComPicYuv *refPic, TComPicYuv *pPicBaseDepth, Int* pShiftLUT, Int iShiftPrec, TComMv *mv, UInt partAddr,Int posX, Int posY, Int sizeX, Int sizeY, Bool isDepth, 165 Void xPredInterChromaBlkFromDM ( TComPicYuv *refPic, TComPicYuv *pPicBaseDepth, Int* pShiftLUT, Int iShiftPrec, TComMv *mv, UInt partAddr,Int posX, Int posY, Int sizeX, Int sizeY, Bool isDepth, Int vspIdx, 166 166 TComYuv *&dstPic ); 167 167 #endif -
branches/HTM-6.2-dev2-MERL/source/Lib/TLibCommon/TypeDef.h
r418 r419 187 187 #if MERL_VSP_C0152 188 188 189 #define MERL_General_Fix 1 // General fix by MERL 190 189 191 #define MERL_VSP_C0152_BugFix_ForNoDepthCase 1 // MERL bugfix for test condition of no depth 190 192 #define MERL_VSP_COMPENSATION_C0152 1 // JCT3V-C0152: 1: add VSP merge candidate to merging candidate list; 0: not to add (nocand). … … 201 203 #define MTK_DEPTH_TO_DISP_D0138 1 // JCT3V-D0138: Use max among four corners for DoNBDV and BVSP 202 204 205 #if MERL_General_Fix 203 206 #define MTK_LGE_VSP_DEPTH_OFF_D0105_D0139 1 // JCT3V-D0105/JCT3V-D0139: disable VSP for depth map 204 207 #define MTK_VSP_USING_NBDV_D0105 1 // JCT3V-D0105: use NBDV instead of DoNBDV for BVSP 205 208 #endif 209 210 #if MERL_General_Fix 206 211 #define MERL_VSP_NBDV_RefVId_Fix_D0166 1 // JCT3V-D0166: 1: fix the NBDV with ref view selectioin; 0: always use base view with refViewIdx=0 212 #else 213 #define MERL_VSP_NBDV_RefVId_Fix_D0166 0 214 #endif 215 207 216 #if MERL_VSP_NBDV_RefVId_Fix_D0166 208 217 #define MERL_Bi_VSP_D0166 1 // JCT3V-D0166: 1: add supporting for Bi-VSP, the code under the macro can also handle uni-direction VSP 218 #else 219 #define MERL_Bi_VSP_D0166 0 209 220 #endif 210 221 … … 217 228 #define MERL_Bi_VSP_D0166 0 // JCT3V-D0166: 1: add supporting for Bi-VSP, the code under the macro can also handle uni-direction VSP 218 229 #define MTK_VSP_USING_NBDV_D0105 0 230 #define MERL_General_Fix 0 231 #endif 232 233 #if !MERL_General_Fix 234 #define MTK_LGE_VSP_DEPTH_OFF_D0105_D0139 1 // JCT3V-D0105/JCT3V-D0139: disable VSP for depth map 235 #define MTK_VSP_USING_NBDV_D0105 1 // JCT3V-D0105: use NBDV instead of DoNBDV for BVSP 219 236 #endif 220 237 -
branches/HTM-6.2-dev2-MERL/source/Lib/TLibDecoder/TDecCu.cpp
r412 r419 1107 1107 // reconstruct residual based on mask + DC residuals 1108 1108 Pel apDCResiValues[2]; 1109 //Pel apDCRecoValues[2]; 1109 #if !MERL_General_Fix 1110 Pel apDCRecoValues[2]; 1111 #endif 1110 1112 for( UInt ui = 0; ui < uiNumSegments; ui++ ) 1111 1113 { … … 1114 1116 Pel pRecoValue = GetIdx2DepthValue( pPredIdx + pResiIdx ); 1115 1117 1116 //apDCRecoValues[ui] = pRecoValue; 1118 #if !MERL_General_Fix 1119 apDCRecoValues[ui] = pRecoValue; 1120 #endif 1117 1121 apDCResiValues[ui] = pRecoValue - apDCPredValues[ui]; 1118 1122 }
Note: See TracChangeset for help on using the changeset viewer.