diff --git a/source/Lib/CommonLib/IntraPrediction.cpp b/source/Lib/CommonLib/IntraPrediction.cpp index 18931743f11152cd92f717617b194aa7145c5ab4..53b55310896773ce94f52d0d99992b40845d02a7 100644 --- a/source/Lib/CommonLib/IntraPrediction.cpp +++ b/source/Lib/CommonLib/IntraPrediction.cpp @@ -194,7 +194,7 @@ void IntraPrediction::destroy() #endif #if JVET_AD0120_LBCCP - delete m_pCCFilterTemp; + delete[] m_pCCFilterTemp; m_pCCFilterTemp = nullptr; #endif #if JVET_AB0067_MIP_DIMD_LFNST @@ -609,7 +609,7 @@ void IntraPrediction::xIntraPredTimdHorVerPdpc(Pel* pDsty,const int dstStride,Pe } } -void IntraPrediction::xIntraPredTimdPlanarDcPdpc(const CPelBuf &pSrc, Pel* pDst, int iDstStride, int width, int height, TEMPLATE_TYPE eTempType, int iTemplateWidth, int iTemplateHeight) +void IntraPrediction::xIntraPredTimdPlanarDcPdpc(const CPelBuf &pSrc, Pel* pDst, int iDstStride, int width, int height, TemplateType eTempType, int iTemplateWidth, int iTemplateHeight) { if (eTempType == LEFT_ABOVE_NEIGHBOR) { @@ -788,7 +788,7 @@ void IntraPrediction::xIntraPredPlanarDcPdpc(const CPelBuf &pSrc, Pel* pDst, int #if JVET_Z0056_GPM_SPLIT_MODE_REORDERING && JVET_Y0065_GPM_INTRA template <uint8_t partIdx> -bool IntraPrediction::xFillIntraGPMRefTemplateAll(PredictionUnit& pu, TEMPLATE_TYPE eTempType, bool readBufferedMPMList, bool doInitMPMList, bool loadIntraRef, std::vector<Pel>* lut, uint8_t candIdx) +bool IntraPrediction::xFillIntraGPMRefTemplateAll(PredictionUnit& pu, TemplateType eTempType, bool readBufferedMPMList, bool doInitMPMList, bool loadIntraRef, std::vector<Pel>* lut, uint8_t candIdx) { if (eTempType == NO_NEIGHBOR || candIdx < GEO_MAX_NUM_UNI_CANDS) { @@ -825,7 +825,7 @@ bool IntraPrediction::xFillIntraGPMRefTemplateAll(PredictionUnit& pu, TEMPLATE_T return true; } -bool IntraPrediction::xFillIntraGPMRefTemplate(PredictionUnit& pu, TEMPLATE_TYPE eTempType, uint8_t intraMode, bool loadIntraRef, Pel* bufTop, Pel* bufLeft, std::vector<Pel>* lut) +bool IntraPrediction::xFillIntraGPMRefTemplate(PredictionUnit& pu, TemplateType eTempType, uint8_t intraMode, bool loadIntraRef, Pel* bufTop, Pel* bufLeft, std::vector<Pel>* lut) { if (eTempType == NO_NEIGHBOR) { @@ -835,7 +835,7 @@ bool IntraPrediction::xFillIntraGPMRefTemplate(PredictionUnit& pu, TEMPLATE_TYPE m_abFilledIntraGPMRefTpl[intraMode] = true; const uint32_t uiPredStride = MAX_CU_SIZE + DIMD_MAX_TEMP_SIZE; - static Pel PredLuma[uiPredStride * uiPredStride]; + static Pel predLuma[uiPredStride * uiPredStride]; int iTempWidth = GEO_MODE_SEL_TM_SIZE; int iTempHeight = GEO_MODE_SEL_TM_SIZE; @@ -843,7 +843,7 @@ bool IntraPrediction::xFillIntraGPMRefTemplate(PredictionUnit& pu, TEMPLATE_TYPE // Load reference samples if (loadIntraRef) { - TEMPLATE_TYPE tplType = (TEMPLATE_TYPE)prefillIntraGPMReferenceSamples(pu, iTempWidth, iTempHeight); + TemplateType tplType = (TemplateType)prefillIntraGPMReferenceSamples(pu, iTempWidth, iTempHeight); CHECK(eTempType != tplType, "Inconsistent template block availability"); } else // Just need setting intra ref parameters, when ref samples have not been swapped out @@ -858,23 +858,23 @@ bool IntraPrediction::xFillIntraGPMRefTemplate(PredictionUnit& pu, TEMPLATE_TYPE uint32_t uiRealW = pu.lwidth() + (eTempType != ABOVE_NEIGHBOR ? iTempWidth : 0); uint32_t uiRealH = pu.lheight() + (eTempType != LEFT_NEIGHBOR ? iTempHeight : 0); initPredTimdIntraParams(pu, pu.Y(), dirMode); - predTimdIntraAng(COMPONENT_Y, pu, dirMode, PredLuma, uiPredStride, uiRealW, uiRealH, eTempType, (eTempType == ABOVE_NEIGHBOR) ? 0 : iTempWidth, (eTempType == LEFT_NEIGHBOR) ? 0 : iTempHeight); + predTimdIntraAng(COMPONENT_Y, pu, dirMode, predLuma, uiPredStride, uiRealW, uiRealH, eTempType, (eTempType == ABOVE_NEIGHBOR) ? 0 : iTempWidth, (eTempType == LEFT_NEIGHBOR) ? 0 : iTempHeight); // Store intra pred Pel* predSrcAbove = nullptr; Pel* predSrcLeft = nullptr; if (eTempType == ABOVE_NEIGHBOR) { - predSrcAbove = PredLuma; + predSrcAbove = predLuma; } else if (eTempType == LEFT_NEIGHBOR) { - predSrcLeft = PredLuma; + predSrcLeft = predLuma; } else // Above-left { - predSrcAbove = PredLuma + iTempWidth; - predSrcLeft = PredLuma + iTempHeight * uiPredStride; + predSrcAbove = predLuma + iTempWidth; + predSrcLeft = predLuma + iTempHeight * uiPredStride; } if (predSrcAbove != nullptr) @@ -942,7 +942,7 @@ uint8_t IntraPrediction::prefillIntraGPMReferenceSamples(PredictionUnit& pu, int { int iRefX = -1, iRefY = -1; uint32_t uiRefWidth = 0, uiRefHeight = 0; - TEMPLATE_TYPE eTempType = CU::deriveTimdRefType(pu.lx(), pu.ly(), pu.lwidth(), pu.lheight(), iTempWidth, iTempHeight, iRefX, iRefY, uiRefWidth, uiRefHeight); + TemplateType eTempType = CU::deriveTimdRefType(pu.lx(), pu.ly(), pu.lwidth(), pu.lheight(), iTempWidth, iTempHeight, iRefX, iRefY, uiRefWidth, uiRefHeight); m_ipaParam.multiRefIndex = iTempWidth; initTimdIntraPatternLuma(*pu.cu, pu.Y(), (eTempType != ABOVE_NEIGHBOR ? iTempWidth : 0), (eTempType != LEFT_NEIGHBOR ? iTempHeight : 0), uiRefWidth, uiRefHeight); @@ -957,7 +957,7 @@ bool IntraPrediction::fillIntraGPMRefTemplateAll(PredictionUnit& pu, bool hasAbo return false; } - TEMPLATE_TYPE templateType = (TEMPLATE_TYPE)((hasAboveTemplate ? ABOVE_NEIGHBOR : 0) + (hasLeftTemplate ? LEFT_NEIGHBOR : 0)); + TemplateType templateType = (TemplateType)((hasAboveTemplate ? ABOVE_NEIGHBOR : 0) + (hasLeftTemplate ? LEFT_NEIGHBOR : 0)); if (templateType == NO_NEIGHBOR) { return false; @@ -4654,7 +4654,7 @@ void IntraPrediction::xFilterReferenceSamples(const Pel *refBufUnfiltered, Pel * } #if JVET_W0123_TIMD_FUSION -Pel IntraPrediction::xGetPredTimdValDc( const CPelBuf &pSrc, const Size &dstSize, TEMPLATE_TYPE eTempType, int iTempHeight, int iTempWidth ) +Pel IntraPrediction::xGetPredTimdValDc( const CPelBuf &pSrc, const Size &dstSize, TemplateType eTempType, int iTempHeight, int iTempWidth ) { int idx, sum = 0; Pel dcVal; @@ -4703,7 +4703,7 @@ Pel IntraPrediction::xGetPredTimdValDc( const CPelBuf &pSrc, const Size &dstSize return dcVal; } -void IntraPrediction::predTimdIntraAng( const ComponentID compId, const PredictionUnit &pu, uint32_t uiDirMode, Pel* pPred, uint32_t uiStride, uint32_t iWidth, uint32_t iHeight, TEMPLATE_TYPE eTempType, int32_t iTemplateWidth, int32_t iTemplateHeight) +void IntraPrediction::predTimdIntraAng( const ComponentID compId, const PredictionUnit &pu, uint32_t uiDirMode, Pel* pPred, uint32_t uiStride, uint32_t iWidth, uint32_t iHeight, TemplateType eTempType, int32_t iTemplateWidth, int32_t iTemplateHeight) { const ComponentID compID = MAP_CHROMA( compId ); @@ -4730,7 +4730,7 @@ void IntraPrediction::predTimdIntraAng( const ComponentID compId, const Predicti } } -void IntraPrediction::xPredTimdIntraPlanar( const CPelBuf &pSrc, Pel* rpDst, int iDstStride, int width, int height, TEMPLATE_TYPE eTempType, int iTemplateWidth, int iTemplateHeight ) +void IntraPrediction::xPredTimdIntraPlanar( const CPelBuf &pSrc, Pel* rpDst, int iDstStride, int width, int height, TemplateType eTempType, int iTemplateWidth, int iTemplateHeight ) { static int leftColumn[MAX_CU_SIZE+DIMD_MAX_TEMP_SIZE+1] = {0}, topRow[MAX_CU_SIZE+DIMD_MAX_TEMP_SIZE+1] ={0}, bottomRow[MAX_CU_SIZE+DIMD_MAX_TEMP_SIZE] = {0}, rightColumn[MAX_CU_SIZE+DIMD_MAX_TEMP_SIZE]={0}; if(eTempType == LEFT_ABOVE_NEIGHBOR) @@ -4903,7 +4903,7 @@ void IntraPrediction::xPredTimdIntraPlanar( const CPelBuf &pSrc, Pel* rpDst, int } } -void IntraPrediction::xPredTimdIntraDc( const PredictionUnit &pu, const CPelBuf &pSrc, Pel* pDst, int iDstStride, int iWidth, int iHeight, TEMPLATE_TYPE eTempType, int iTemplateWidth, int iTemplateHeight ) +void IntraPrediction::xPredTimdIntraDc( const PredictionUnit &pu, const CPelBuf &pSrc, Pel* pDst, int iDstStride, int iWidth, int iHeight, TemplateType eTempType, int iTemplateWidth, int iTemplateHeight ) { #if JVET_AC0119_LM_CHROMA_FUSION const Size& dstSize = Size(iWidth - iTemplateWidth, iHeight - iTemplateHeight); @@ -5022,7 +5022,7 @@ void IntraPrediction::initPredTimdIntraParams(const PredictionUnit & pu, const C } } -void IntraPrediction::xPredTimdIntraAng( const CPelBuf &pSrc, const ClpRng& clpRng, Pel* pTrueDst, int iDstStride, int iWidth, int iHeight, TEMPLATE_TYPE eTempType, int iTemplateWidth , int iTemplateHeight, uint32_t dirMode +void IntraPrediction::xPredTimdIntraAng( const CPelBuf &pSrc, const ClpRng& clpRng, Pel* pTrueDst, int iDstStride, int iWidth, int iHeight, TemplateType eTempType, int iTemplateWidth , int iTemplateHeight, uint32_t dirMode #if JVET_AC0119_LM_CHROMA_FUSION , const ChannelType channelType #endif @@ -5720,7 +5720,7 @@ void IntraPrediction::deriveSgpmModeOrdered(const CPelBuf &recoBuf, const CompAr const int iTempWidth = SGPM_TEMPLATE_SIZE, iTempHeight = SGPM_TEMPLATE_SIZE; - TEMPLATE_TYPE eTempType = CU::deriveTimdRefType(iCurX, iCurY, uiWidth, uiHeight, iTempWidth, iTempHeight, iRefX, + TemplateType eTempType = CU::deriveTimdRefType(iCurX, iCurY, uiWidth, uiHeight, iTempWidth, iTempHeight, iRefX, iRefY, uiRefWidth, uiRefHeight); auto & pu = *cu.firstPU; uint32_t uiRealW = uiRefWidth + (eTempType == LEFT_NEIGHBOR ? iTempWidth : 0); @@ -5851,7 +5851,7 @@ void IntraPrediction::deriveMPMSorted(const PredictionUnit& pu, uint8_t* mpm, in iBestN = pu.ipredIdx; } - TEMPLATE_TYPE eTempType = CU::deriveTimdRefType(iCurX, iCurY, uiWidth, uiHeight, iTempWidth, iTempHeight, iRefX, + TemplateType eTempType = CU::deriveTimdRefType(iCurX, iCurY, uiWidth, uiHeight, iTempWidth, iTempHeight, iRefX, iRefY, uiRefWidth, uiRefHeight); if (eTempType == NO_NEIGHBOR) @@ -5944,9 +5944,9 @@ int IntraPrediction::deriveTimdMode(const CPelBuf &recoBuf, const CompArea &area SizeType uiWidth = cu.lwidth(); SizeType uiHeight = cu.lheight(); - static Pel PredLuma[(MAX_CU_SIZE + DIMD_MAX_TEMP_SIZE) * (MAX_CU_SIZE + DIMD_MAX_TEMP_SIZE)]; - memset(PredLuma, 0, (MAX_CU_SIZE + DIMD_MAX_TEMP_SIZE) * (MAX_CU_SIZE + DIMD_MAX_TEMP_SIZE) * sizeof(Pel)); - Pel * piPred = PredLuma; + static Pel predLuma[(MAX_CU_SIZE + DIMD_MAX_TEMP_SIZE) * (MAX_CU_SIZE + DIMD_MAX_TEMP_SIZE)]; + memset(predLuma, 0, (MAX_CU_SIZE + DIMD_MAX_TEMP_SIZE) * (MAX_CU_SIZE + DIMD_MAX_TEMP_SIZE) * sizeof(Pel)); + Pel * piPred = predLuma; uint32_t uiPredStride = MAX_CU_SIZE + DIMD_MAX_TEMP_SIZE; int iCurX = cu.lx(); @@ -5964,7 +5964,7 @@ int IntraPrediction::deriveTimdMode(const CPelBuf &recoBuf, const CompArea &area iTempHeight = 2; } - TEMPLATE_TYPE eTempType = CU::deriveTimdRefType(iCurX, iCurY, uiWidth, uiHeight, iTempWidth, iTempHeight, iRefX, + TemplateType eTempType = CU::deriveTimdRefType(iCurX, iCurY, uiWidth, uiHeight, iTempWidth, iTempHeight, iRefX, iRefY, uiRefWidth, uiRefHeight); if (eTempType != NO_NEIGHBOR) @@ -6728,9 +6728,9 @@ int IntraPrediction::deriveTimdMode( const CPelBuf &recoBuf, const CompArea &are SizeType uiWidth = cu.lwidth(); SizeType uiHeight = cu.lheight(); - static Pel PredLuma[(MAX_CU_SIZE + DIMD_MAX_TEMP_SIZE) * (MAX_CU_SIZE + DIMD_MAX_TEMP_SIZE)]; - memset(PredLuma, 0, (MAX_CU_SIZE + DIMD_MAX_TEMP_SIZE) * (MAX_CU_SIZE + DIMD_MAX_TEMP_SIZE) * sizeof(Pel)); - Pel* piPred = PredLuma; + static Pel predLuma[(MAX_CU_SIZE + DIMD_MAX_TEMP_SIZE) * (MAX_CU_SIZE + DIMD_MAX_TEMP_SIZE)]; + memset(predLuma, 0, (MAX_CU_SIZE + DIMD_MAX_TEMP_SIZE) * (MAX_CU_SIZE + DIMD_MAX_TEMP_SIZE) * sizeof(Pel)); + Pel* piPred = predLuma; uint32_t uiPredStride = MAX_CU_SIZE + DIMD_MAX_TEMP_SIZE; int iCurX = cu.lx(); @@ -6748,7 +6748,7 @@ int IntraPrediction::deriveTimdMode( const CPelBuf &recoBuf, const CompArea &are iTempHeight = 2; } - TEMPLATE_TYPE eTempType = CU::deriveTimdRefType(iCurX, iCurY, uiWidth, uiHeight, iTempWidth, iTempHeight, iRefX, iRefY, uiRefWidth, uiRefHeight); + TemplateType eTempType = CU::deriveTimdRefType(iCurX, iCurY, uiWidth, uiHeight, iTempWidth, iTempHeight, iRefX, iRefY, uiRefWidth, uiRefHeight); if (eTempType != NO_NEIGHBOR) { @@ -10342,8 +10342,8 @@ void IntraPrediction::xGetLMParametersLMS(const PredictionUnit &pu, const Compon { // Classify and training MMLM_parameter parameters[2]; - int LumaSamples[512]; - int ChrmSamples[512]; + int lumaSamples[512]; + int chromaSamples[512]; int meanC = 0; int mean = 0; int avgCnt = cntT + cntL; @@ -10351,8 +10351,8 @@ void IntraPrediction::xGetLMParametersLMS(const PredictionUnit &pu, const Compon { mean += pTempBufferSrc[i]; meanC += pTempBufferCur[i]; - LumaSamples[i] = pTempBufferSrc[i]; - ChrmSamples[i] = pTempBufferCur[i]; + lumaSamples[i] = pTempBufferSrc[i]; + chromaSamples[i] = pTempBufferCur[i]; } if (avgCnt) @@ -10370,7 +10370,7 @@ void IntraPrediction::xGetLMParametersLMS(const PredictionUnit &pu, const Compon meanC = (meanC * v) >> (x + 3); } - xLMSampleClassifiedTraining(avgCnt, mean, meanC, LumaSamples, ChrmSamples, uiInternalBitDepth, parameters); + xLMSampleClassifiedTraining(avgCnt, mean, meanC, lumaSamples, chromaSamples, uiInternalBitDepth, parameters); cclmModel.setFirstModel ( parameters[0].a, parameters[0].b, parameters[0].shift ); cclmModel.setSecondModel( parameters[1].a, parameters[1].b, parameters[1].shift, mean ); @@ -10384,14 +10384,14 @@ void IntraPrediction::xGetLMParametersLMS(const PredictionUnit &pu, const Compon for (int i = 0; i < avgCnt; i++) { - if ( LumaSamples[i] <= mean ) + if ( lumaSamples[i] <= mean ) { - sumLuma0 += LumaSamples[i]; + sumLuma0 += lumaSamples[i]; numPels0 += 1; } else { - sumLuma1 += LumaSamples[i]; + sumLuma1 += lumaSamples[i]; numPels1 += 1; } } @@ -18013,7 +18013,7 @@ bool IntraPrediction::xCflmCreateChromaPred(const PredictionUnit& pu, const Comp PelBuf refChroma = xCflmGetRefBuf(pu, compId, area, areaWidth, areaHeight, refSizeX, refSizeY, refPosPicX, refPosPicY); // top/left reference areas - TEMPLATE_TYPE eTplType = (TEMPLATE_TYPE)((refSizeX > 0 ? LEFT_NEIGHBOR : 0) + (refSizeY > 0 ? ABOVE_NEIGHBOR : 0)); + TemplateType eTplType = (TemplateType)((refSizeX > 0 ? LEFT_NEIGHBOR : 0) + (refSizeY > 0 ? ABOVE_NEIGHBOR : 0)); if (eTplType == NO_NEIGHBOR) { return false; @@ -19532,9 +19532,9 @@ void IntraPrediction::getTmrlList(CodingUnit& cu) int channelBitDepth = cu.slice->getSPS()->getBitDepth(CHANNEL_TYPE_LUMA); SizeType uiWidth = cu.lwidth(); SizeType uiHeight = cu.lheight(); - static Pel PredLuma[(MAX_CU_SIZE + TMRL_TPL_SIZE) * (MAX_CU_SIZE + TMRL_TPL_SIZE)]; - memset(PredLuma, 0, (MAX_CU_SIZE + TMRL_TPL_SIZE) * (MAX_CU_SIZE + TMRL_TPL_SIZE) * sizeof(Pel)); - Pel* piPred = PredLuma; + static Pel predLuma[(MAX_CU_SIZE + TMRL_TPL_SIZE) * (MAX_CU_SIZE + TMRL_TPL_SIZE)]; + memset(predLuma, 0, (MAX_CU_SIZE + TMRL_TPL_SIZE) * (MAX_CU_SIZE + TMRL_TPL_SIZE) * sizeof(Pel)); + Pel* piPred = predLuma; uint32_t uiPredStride = MAX_CU_SIZE + TMRL_TPL_SIZE; tmrlInfo.uiWidth = uiWidth; tmrlInfo.uiHeight = uiHeight; diff --git a/source/Lib/CommonLib/IntraPrediction.h b/source/Lib/CommonLib/IntraPrediction.h index 85cebc064a90aeb1cc48534538e8bd25097638ed..064316e5c76f9c46216b40a0e6bbdf8c30456bd4 100644 --- a/source/Lib/CommonLib/IntraPrediction.h +++ b/source/Lib/CommonLib/IntraPrediction.h @@ -585,9 +585,9 @@ public: #endif #if JVET_W0123_TIMD_FUSION || JVET_AC0119_LM_CHROMA_FUSION void xIntraPredTimdHorVerPdpc (Pel* pDsty,const int dstStride, Pel* refSide, const int width, const int height, int xOffset, int yOffset, int scale, const Pel* refMain, const ClpRng& clpRng); - void xPredTimdIntraPlanar (const CPelBuf &pSrc, Pel* pDst, int iDstStride, int width, int height, TEMPLATE_TYPE eTempType, int iTemplateWidth , int iTemplateHeight); - void xPredTimdIntraDc ( const PredictionUnit &pu, const CPelBuf &pSrc, Pel* pDst, int iDstStride, int iWidth, int iHeight, TEMPLATE_TYPE eTempType, int iTemplateWidth , int iTemplateHeight); - void xPredTimdIntraAng ( const CPelBuf &pSrc, const ClpRng& clpRng, Pel* pTrueDst, int iDstStride, int iWidth, int iHeight, TEMPLATE_TYPE eTempType, int iTemplateWidth , int iTemplateHeight, uint32_t dirMode + void xPredTimdIntraPlanar (const CPelBuf &pSrc, Pel* pDst, int iDstStride, int width, int height, TemplateType eTempType, int iTemplateWidth , int iTemplateHeight); + void xPredTimdIntraDc ( const PredictionUnit &pu, const CPelBuf &pSrc, Pel* pDst, int iDstStride, int iWidth, int iHeight, TemplateType eTempType, int iTemplateWidth , int iTemplateHeight); + void xPredTimdIntraAng ( const CPelBuf &pSrc, const ClpRng& clpRng, Pel* pTrueDst, int iDstStride, int iWidth, int iHeight, TemplateType eTempType, int iTemplateWidth , int iTemplateHeight, uint32_t dirMode #if JVET_AC0119_LM_CHROMA_FUSION , const ChannelType channelType #endif @@ -596,10 +596,10 @@ public: #if JVET_AC0119_LM_CHROMA_FUSION void xIntraPredTimdAngChroma(Pel* pDstBuf, const ptrdiff_t dstStride, Pel* refMain, int width, int height, int deltaPos, int intraPredAngle, const ClpRng& clpRng, int xOffset, int yOffset); #endif - void xIntraPredTimdPlanarDcPdpc (const CPelBuf &pSrc, Pel* pDst, int iDstStride, int width, int height, TEMPLATE_TYPE eTempType, int iTemplateWidth , int iTemplateHeight); + void xIntraPredTimdPlanarDcPdpc (const CPelBuf &pSrc, Pel* pDst, int iDstStride, int width, int height, TemplateType eTempType, int iTemplateWidth , int iTemplateHeight); void xIntraPredTimdAngPdpc(Pel* pDsty,const int dstStride,Pel* refSide,const int width,const int height, int xOffset, int yOffset, int scale, int invAngle); void xFillTimdReferenceSamples ( const CPelBuf &recoBuf, Pel* refBufUnfiltered, const CompArea &area, const CodingUnit &cu, int iTemplateWidth, int iTemplateHeight ); - Pel xGetPredTimdValDc ( const CPelBuf &pSrc, const Size &dstSize, TEMPLATE_TYPE eTempType, int iTempHeight, int iTempWidth ); + Pel xGetPredTimdValDc ( const CPelBuf &pSrc, const Size &dstSize, TemplateType eTempType, int iTempHeight, int iTempWidth ); #if JVET_AB0155_SGPM void initPredTimdIntraParams(const PredictionUnit &pu, const CompArea area, int dirMode, bool bSgpm = false #if JVET_AC0094_REF_SAMPLES_OPT @@ -609,7 +609,7 @@ public: #else void initPredTimdIntraParams (const PredictionUnit & pu, const CompArea area, int dirMode); #endif - void predTimdIntraAng ( const ComponentID compId, const PredictionUnit &pu, uint32_t uiDirMode, Pel* pPred, uint32_t uiStride, uint32_t iWidth, uint32_t iHeight, TEMPLATE_TYPE eTempType, int32_t iTemplateWidth, int32_t iTemplateHeight); + void predTimdIntraAng ( const ComponentID compId, const PredictionUnit &pu, uint32_t uiDirMode, Pel* pPred, uint32_t uiStride, uint32_t iWidth, uint32_t iHeight, TemplateType eTempType, int32_t iTemplateWidth, int32_t iTemplateHeight); #if JVET_AB0155_SGPM int deriveTimdMode ( const CPelBuf &recoBuf, const CompArea &area, CodingUnit &cu, bool bFull = true, bool bHorVer = false ); #else @@ -666,8 +666,8 @@ protected: Pel m_acYuvRefGPMIntraTemplate[NUM_INTRA_MODE][2][GEO_MAX_CU_SIZE * GEO_MODE_SEL_TM_SIZE]; //[][0][]: top, [][1][]: left template <uint8_t partIdx> - bool xFillIntraGPMRefTemplateAll(PredictionUnit& pu, TEMPLATE_TYPE eTempType, bool readBufferedMPMList, bool doInitMPMList, bool loadIntraRef, std::vector<Pel>* lut = nullptr, uint8_t candIdx = std::numeric_limits<uint8_t>::max()); - bool xFillIntraGPMRefTemplate (PredictionUnit& pu, TEMPLATE_TYPE eTempType, uint8_t intraMode, bool loadIntraRef, Pel* bufTop, Pel* bufLeft, std::vector<Pel>* lut = nullptr); + bool xFillIntraGPMRefTemplateAll(PredictionUnit& pu, TemplateType eTempType, bool readBufferedMPMList, bool doInitMPMList, bool loadIntraRef, std::vector<Pel>* lut = nullptr, uint8_t candIdx = std::numeric_limits<uint8_t>::max()); + bool xFillIntraGPMRefTemplate (PredictionUnit& pu, TemplateType eTempType, uint8_t intraMode, bool loadIntraRef, Pel* bufTop, Pel* bufLeft, std::vector<Pel>* lut = nullptr); public: uint8_t prefillIntraGPMReferenceSamples (PredictionUnit& pu, int iTempWidth, int iTempHeight); diff --git a/source/Lib/CommonLib/TypeDef.h b/source/Lib/CommonLib/TypeDef.h index 7f26d148c361c6b8a6cff1ac868ff0e021638ee5..d2274754b45318fcfb17313afa5166daf921b84f 100644 --- a/source/Lib/CommonLib/TypeDef.h +++ b/source/Lib/CommonLib/TypeDef.h @@ -843,7 +843,7 @@ enum ISPType }; #if JVET_W0123_TIMD_FUSION || (JVET_Z0056_GPM_SPLIT_MODE_REORDERING && JVET_Y0065_GPM_INTRA) -enum TEMPLATE_TYPE +enum TemplateType { NO_NEIGHBOR = 0, LEFT_NEIGHBOR = 1, diff --git a/source/Lib/CommonLib/UnitTools.cpp b/source/Lib/CommonLib/UnitTools.cpp index 3556e98a7c89dddd163cc5f9b8fa1625db6f4442..3ea2a895d89890d856ab24b002d34f3c3f1059ec 100644 --- a/source/Lib/CommonLib/UnitTools.cpp +++ b/source/Lib/CommonLib/UnitTools.cpp @@ -710,14 +710,14 @@ bool CU::allLumaCBFsAreZero(const CodingUnit& cu) } #if JVET_W0123_TIMD_FUSION -TEMPLATE_TYPE CU::deriveTimdRefType( int iCurX, int iCurY, uint32_t uiCurWidth, uint32_t uiCurHeight, int iTemplateWidth, int iTemplateHeight, int& iRefX, int& iRefY, uint32_t& uiRefWidth, uint32_t& uiRefHeight ) +TemplateType CU::deriveTimdRefType( int iCurX, int iCurY, uint32_t uiCurWidth, uint32_t uiCurHeight, int iTemplateWidth, int iTemplateHeight, int& iRefX, int& iRefY, uint32_t& uiRefWidth, uint32_t& uiRefHeight ) { if(iCurX == 0 && iCurY == 0) { return NO_NEIGHBOR; } - TEMPLATE_TYPE eTempType = NO_NEIGHBOR; + TemplateType eTempType = NO_NEIGHBOR; iRefX = iRefY = -1; if(iCurX > 0 && iCurY > 0) { diff --git a/source/Lib/CommonLib/UnitTools.h b/source/Lib/CommonLib/UnitTools.h index 3e249068a93dee4ef63d9f072437fab5168473b3..7abc702f18361e05e1de1a3d453f0d0b84d8b3b1 100644 --- a/source/Lib/CommonLib/UnitTools.h +++ b/source/Lib/CommonLib/UnitTools.h @@ -120,7 +120,7 @@ namespace CU uint32_t getISPSplitDim ( const int width, const int height, const PartSplit ispType ); bool allLumaCBFsAreZero ( const CodingUnit& cu ); #if JVET_W0123_TIMD_FUSION - TEMPLATE_TYPE deriveTimdRefType ( int iCurX, int iCurY, uint32_t uiCurWidth, uint32_t uiCurHeight, int iTemplateWidth, int iTemplateHeight, int& iRefX, int& iRefY, uint32_t& uiRefWidth, uint32_t& uiRefHeight ); + TemplateType deriveTimdRefType ( int iCurX, int iCurY, uint32_t uiCurWidth, uint32_t uiCurHeight, int iTemplateWidth, int iTemplateHeight, int& iRefX, int& iRefY, uint32_t& uiRefWidth, uint32_t& uiRefHeight ); #endif PUTraverser traversePUs ( CodingUnit& cu); diff --git a/source/Lib/EncoderLib/IntraSearch.cpp b/source/Lib/EncoderLib/IntraSearch.cpp index 302384ec521a45b139bd5aa345b583f195b42e97..3217be91d1f3ca5cad0ae8f66790d7ae6a1eac0b 100644 --- a/source/Lib/EncoderLib/IntraSearch.cpp +++ b/source/Lib/EncoderLib/IntraSearch.cpp @@ -4484,8 +4484,10 @@ void IntraSearch::estIntraPredChromaQT( CodingUnit &cu, Partitioner &partitioner for (int32_t lstIdx = 0; lstIdx < 6; lstIdx++) { int iModedx = satdChromaFusionModeList[lstIdx]; - if (!fusionModeIsEnable[iModedx]) + if( !fusionModeIsEnable[iModedx] ) + { break; + } int chromaIntraMode = fusionModeMap[iModedx][0]; pu.isChromaFusion = fusionModeMap[iModedx][1];