diff --git a/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp b/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp index d745f22653600793c40a0e3b073b0e9f52565422..a6e1c508eb7d7d615d446ce6be6e363c3e0b2acb 100644 --- a/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp +++ b/source/Lib/EncoderLib/EncAdaptiveLoopFilter.cpp @@ -449,7 +449,6 @@ EncAdaptiveLoopFilter::EncAdaptiveLoopFilter() m_alfCovarianceFrame.fill(nullptr); m_filterCoeffSet = nullptr; m_filterClippSet = nullptr; - m_diffFilterCoeff = nullptr; m_alfCovarianceCcAlf[0] = nullptr; m_alfCovarianceCcAlf[1] = nullptr; @@ -512,13 +511,11 @@ void EncAdaptiveLoopFilter::create(const EncCfg* encCfg, const int picWidth, con m_filterCoeffSet = new AlfCoeff*[std::max(MAX_NUM_ALF_CLASSES, ALF_MAX_NUM_ALTERNATIVES_CHROMA)]; m_filterClippSet = new int*[std::max(MAX_NUM_ALF_CLASSES, ALF_MAX_NUM_ALTERNATIVES_CHROMA)]; - m_diffFilterCoeff = new int*[MAX_NUM_ALF_CLASSES]; for( int i = 0; i < MAX_NUM_ALF_CLASSES; i++ ) { m_filterCoeffSet[i] = new AlfCoeff[MAX_NUM_ALF_LUMA_COEFF]; - m_filterClippSet[i] = new int[MAX_NUM_ALF_LUMA_COEFF]; - m_diffFilterCoeff[i] = new int[MAX_NUM_ALF_LUMA_COEFF]; + m_filterClippSet[i] = new int[MAX_NUM_ALF_LUMA_COEFF]; } @@ -657,18 +654,6 @@ void EncAdaptiveLoopFilter::destroy() m_filterClippSet = nullptr; } - if( m_diffFilterCoeff ) - { - for( int i = 0; i < MAX_NUM_ALF_CLASSES; i++ ) - { - delete[] m_diffFilterCoeff[i]; - m_diffFilterCoeff[i] = nullptr; - } - delete[] m_diffFilterCoeff; - m_diffFilterCoeff = nullptr; - } - - delete[] m_ctbDistortionFixedFilter; m_ctbDistortionFixedFilter = nullptr; for (int comp = 0; comp < MAX_NUM_COMPONENT; comp++) @@ -1534,7 +1519,7 @@ double EncAdaptiveLoopFilter::mergeFiltersAndCost( dist = deriveFilterCoeffs(covFrame, covMerged, clipMerged, alfShape, m_filterIndices[numFilters - 1], numFilters, errorForce0CoeffTab, alfParam); // filter coeffs are stored in m_filterCoeffSet distForce0 = getDistForce0( alfShape, numFilters, errorForce0CoeffTab, codedVarBins ); - coeffBits = deriveFilterCoefficientsPredictionMode( alfShape, m_filterCoeffSet, m_diffFilterCoeff, numFilters ); + coeffBits = deriveFilterCoefficientsPredictionMode(alfShape, m_filterCoeffSet, numFilters); coeffBitsForce0 = getCostFilterCoeffForce0( alfShape, m_filterCoeffSet, numFilters, codedVarBins ); cost = dist + m_lambda[COMPONENT_Y] * coeffBits; @@ -1554,7 +1539,7 @@ double EncAdaptiveLoopFilter::mergeFiltersAndCost( } dist = deriveFilterCoeffs( covFrame, covMerged, clipMerged, alfShape, m_filterIndices[numFiltersBest - 1], numFiltersBest, errorForce0CoeffTab, alfParam ); - coeffBits = deriveFilterCoefficientsPredictionMode( alfShape, m_filterCoeffSet, m_diffFilterCoeff, numFiltersBest ); + coeffBits = deriveFilterCoefficientsPredictionMode(alfShape, m_filterCoeffSet, numFiltersBest); distForce0 = getDistForce0( alfShape, numFiltersBest, errorForce0CoeffTab, codedVarBins ); coeffBitsForce0 = getCostFilterCoeffForce0( alfShape, m_filterCoeffSet, numFiltersBest, codedVarBins ); @@ -1662,7 +1647,7 @@ int EncAdaptiveLoopFilter::getCostFilterCoeffForce0(AlfFilterShape& alfShape, Al } int EncAdaptiveLoopFilter::deriveFilterCoefficientsPredictionMode(AlfFilterShape& alfShape, AlfCoeff** filterSet, - int** filterCoeffDiff, const int numFilters) + const int numFilters) { return (m_alfParamTemp.nonLinearFlag[ChannelType::LUMA] ? getCostFilterClipp(alfShape, filterSet, numFilters) : 0) + getCostFilterCoeff(alfShape, filterSet, numFilters); diff --git a/source/Lib/EncoderLib/EncAdaptiveLoopFilter.h b/source/Lib/EncoderLib/EncAdaptiveLoopFilter.h index a9e592883b0556135df00b3d39dc8334a8a09ae0..20c60151068ba8a96ac1ce15b6c0e3ed90f7b0b9 100644 --- a/source/Lib/EncoderLib/EncAdaptiveLoopFilter.h +++ b/source/Lib/EncoderLib/EncAdaptiveLoopFilter.h @@ -247,8 +247,7 @@ private: double m_lambda[MAX_NUM_COMPONENT]; AlfCoeff** m_filterCoeffSet; // [lumaClassIdx/chromaAltIdx][coeffIdx] - int** m_filterClippSet; // [lumaClassIdx/chromaAltIdx][coeffIdx] - int** m_diffFilterCoeff; + int** m_filterClippSet; // [lumaClassIdx/chromaAltIdx][coeffIdx] AlfBankIdx m_filterIndices[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_CLASSES]; EnumArray<unsigned, ChannelType> m_bitsNewFilter; @@ -346,8 +345,7 @@ private: int clipMerged[MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_CLASSES][MAX_NUM_ALF_LUMA_COEFF], AlfFilterShape& alfShape, AlfBankIdx* filterIndices, int numFilters, double errorTabForce0Coeff[MAX_NUM_ALF_CLASSES][2], AlfParam& alfParam); - int deriveFilterCoefficientsPredictionMode(AlfFilterShape& alfShape, AlfCoeff** filterSet, int** filterCoeffDiff, - const int numFilters); + int deriveFilterCoefficientsPredictionMode(AlfFilterShape& alfShape, AlfCoeff** filterSet, const int numFilters); double deriveCoeffQuant(int* filterClipp, AlfCoeff* filterCoeffQuant, const AlfCovariance& cov, const AlfFilterShape& shape, const int fractionalBits, const bool optimizeClip); double deriveCtbAlfEnableFlags(CodingStructure &cs, const int shapeIdx, ChannelType channel,