source: 3DVCSoftware/branches/HTM-6.2-dev1-Samsung/Lib/TLibEncoder/TEncAdaptiveLoopFilter.h @ 347

Last change on this file since 347 was 347, checked in by samsung-htm, 11 years ago

D0122 Integration

File size: 18.2 KB
Line 
1/* The copyright in this software is being made available under the BSD
2 * License, included below. This software may be subject to other third party
3 * and contributor rights, including patent rights, and no such rights are
4 * granted under this license. 
5 *
6 * Copyright (c) 2010-2012, ITU/ISO/IEC
7 * All rights reserved.
8 *
9 * Redistribution and use in source and binary forms, with or without
10 * modification, are permitted provided that the following conditions are met:
11 *
12 *  * Redistributions of source code must retain the above copyright notice,
13 *    this list of conditions and the following disclaimer.
14 *  * Redistributions in binary form must reproduce the above copyright notice,
15 *    this list of conditions and the following disclaimer in the documentation
16 *    and/or other materials provided with the distribution.
17 *  * Neither the name of the ITU/ISO/IEC nor the names of its contributors may
18 *    be used to endorse or promote products derived from this software without
19 *    specific prior written permission.
20 *
21 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
22 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
23 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
24 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS
25 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
26 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
27 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
28 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
29 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
30 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
31 * THE POSSIBILITY OF SUCH DAMAGE.
32 */
33
34/** \file     TEncAdaptiveLoopFilter.h
35 \brief    estimation part of adaptive loop filter class (header)
36 */
37
38#ifndef __TENCADAPTIVELOOPFILTER__
39#define __TENCADAPTIVELOOPFILTER__
40
41#include "TLibCommon/TComAdaptiveLoopFilter.h"
42#include "TLibCommon/TComPic.h"
43
44#include "TEncEntropy.h"
45#include "TEncSbac.h"
46#include "TLibCommon/TComBitCounter.h"
47
48//! \ingroup TLibEncoder
49//! \{
50
51#define LCUALF_FILTER_BUDGET_CONTROL_ENC        1 //!< filter budget control
52#define LCUALF_AVOID_USING_BOTTOM_LINES_ENCODER 1 //!< avoid using LCU bottom lines when lcu-based encoder RDO is used
53
54// ====================================================================================================================
55// Class definition
56// ====================================================================================================================
57
58/// correlation info
59struct AlfCorrData
60{
61  Double*** ECorr; //!< auto-correlation matrix
62  Double**  yCorr; //!< cross-correlation
63  Double*   pixAcc;
64  Int componentID;
65
66  //constructor & operator
67  AlfCorrData();
68  AlfCorrData(Int cIdx);
69  ~AlfCorrData();
70  Void reset();
71  Void mergeFrom(const AlfCorrData& src, Int* mergeTable, Bool doPixAccMerge);
72  AlfCorrData& operator += (const AlfCorrData& src);
73};
74
75/// picture quad-tree info
76struct AlfPicQTPart
77{
78  Int         componentID;
79  Int         partCUXS;
80  Int         partCUYS;
81  Int         partCUXE;
82  Int         partCUYE;
83  Int         partIdx;
84  Int         partLevel;
85  Int         partCol;
86  Int         partRow;
87  Int         childPartIdx[4];
88  Int         parentPartIdx;
89  Bool        isBottomLevel;
90  Bool        isSplit;
91  Bool        isProcessed;
92  Double      splitMinCost;
93  Int64       splitMinDist;
94  Int64       splitMinRate;
95  Double      selfMinCost;
96  Int64       selfMinDist;
97  Int64       selfMinRate;
98  Int         numFilterBudget;
99
100  AlfUnitParam* alfUnitParam; 
101  AlfCorrData*  alfCorr;
102
103  //constructor & operator
104  AlfPicQTPart();
105  ~AlfPicQTPart();
106  AlfPicQTPart& operator= (const AlfPicQTPart& src);
107};
108
109
110
111/// estimation part of adaptive loop filter class
112class TEncAdaptiveLoopFilter : public TComAdaptiveLoopFilter
113{
114private:
115  ///
116  /// variables for correlation calculation
117  ///
118  double **m_y_merged;
119  double ***m_E_merged;
120  double *m_pixAcc_merged;
121  double *m_y_temp;
122  double **m_E_temp;
123  static const Int  m_alfNumPartsInRowTab[5];
124  static const Int  m_alfNumPartsLevelTab[5];
125  static const Int  m_alfNumCulPartsLevelTab[5];
126
127  Int    m_lastSliceIdx;
128  Bool   m_picBasedALFEncode;
129  Bool   m_alfCoefInSlice;
130  Int*   m_numSlicesDataInOneLCU;
131  Int*   m_coeffNoFilter[NO_VAR_BINS]; //!< used for RDO
132  AlfParamSet* m_bestAlfParamSet;
133  AlfCorrData** m_alfCorr[NUM_ALF_COMPONENT];
134  AlfCorrData*  m_alfCorrMerged[NUM_ALF_COMPONENT]; //!< used for RDO
135  AlfUnitParam* m_alfPicFiltUnits[NUM_ALF_COMPONENT];
136  Int    m_alfPQTMaxDepth;
137  AlfPicQTPart* m_alfPQTPart[NUM_ALF_COMPONENT]; 
138#if LCUALF_FILTER_BUDGET_CONTROL_ENC
139  Double m_alfFiltBudgetPerLcu;
140  Int    m_alfUsedFilterNum;
141#endif
142
143  ///
144  /// ALF parameters
145  ///
146  ALFParam *m_tempALFp;
147
148  ///
149  /// temporary picture buffers or pointers
150  ///
151  TComPicYuv* m_pcPicYuvBest;
152  TComPicYuv* m_pcPicYuvTmp;
153
154  ///
155  /// temporary filter buffers or pointers
156  ///
157  Int    *m_filterCoeffQuantMod;
158  double *m_filterCoeff;
159  Int    *m_filterCoeffQuant;
160  Int    **m_filterCoeffSymQuant;
161  Int    **m_diffFilterCoeffQuant;
162  Int    **m_FilterCoeffQuantTemp;
163  ///
164  /// coding control parameters
165  ///
166  Double m_dLambdaLuma;
167  Double m_dLambdaChroma;
168  Int  m_iALFEncodePassReduction; //!< 0: 16-pass encoding, 1: 1-pass encoding, 2: 2-pass encoding
169
170  Int  m_iALFMaxNumberFilters;    //!< ALF Max Number Filters per unit
171
172  Int  m_iALFNumOfRedesign;       //!< number of redesigning filter for each CU control depth
173
174  ///
175  /// variables for on/off control
176  ///
177  Pel **m_maskImg;
178  Bool m_bAlfCUCtrlEnabled;                         //!< if input ALF CU control param is NULL, this variable is set to be false (Disable CU control)
179  std::vector<AlfCUCtrlInfo> m_vBestAlfCUCtrlParam; //!< ALF CU control parameters container to store the ALF CU control parameters after RDO
180
181  ///
182  /// miscs.
183  ///
184  TEncEntropy* m_pcEntropyCoder;
185private:
186
187  Void disableComponentAlfParam(Int compIdx, AlfParamSet* alfParamSet, AlfUnitParam* alfUnitPic);
188  Void copyAlfParamSet(AlfParamSet* dst, AlfParamSet* src);
189  Void initALFEncoderParam(AlfParamSet* alfParamSet, std::vector<AlfCUCtrlInfo>* alfCtrlParam);
190  Void assignALFEncoderParam(AlfParamSet* alfParamSet, std::vector<AlfCUCtrlInfo>* alfCtrlParam);
191  Void getStatistics(TComPicYuv* pPicOrg, TComPicYuv* pPicDec);
192  Void getOneCompStatistics(AlfCorrData** alfCorrComp, Int compIdx, Pel* imgOrg, Pel* imgDec, Int stride, Int formatShift, Bool isRedesignPhase);
193  Void getStatisticsOneLCU(Bool skipLCUBottomLines, Int compIdx, AlfLCUInfo* alfLCU, AlfCorrData* alfCorr, Pel* pPicOrg, Pel* pPicSrc, Int stride, Int formatShift, Bool isRedesignPhase);
194#if HHI_INTERVIEW_SKIP
195  Void decideParameters(TComPicYuv* pPicOrg, TComPicYuv* pPicDec, TComPicYuv* pPicRest, TComPicYuv* pUsedPelMap, AlfParamSet* alfParamSet, std::vector<AlfCUCtrlInfo>* alfCtrlParam) ;
196#else
197  Void decideParameters(TComPicYuv* pPicOrg, TComPicYuv* pPicDec, TComPicYuv* pPicRest, AlfParamSet* alfParamSet, std::vector<AlfCUCtrlInfo>* alfCtrlParam);
198#endif
199  Void deriveFilterInfo(Int compIdx, AlfCorrData* alfCorr, ALFParam* alfFiltParam, Int maxNumFilters);
200#if HHI_INTERVIEW_SKIP
201  Void decideBlockControl(Pel* pOrg, Pel* pDec, Pel* pRest, Pel* pUsed, Int stride, AlfPicQTPart* alfPicQTPart, AlfParamSet* & alfParamSet, Int64 &minRate, Int64 &minDist, Double &minCost);
202#else
203  Void decideBlockControl(Pel* pOrg, Pel* pDec, Pel* pRest, Int stride, AlfPicQTPart* alfPicQTPart, AlfParamSet* & alfParamSet, Int64 &minRate, Int64 &minDist, Double &minCost);
204#endif
205  Void copyPicQT(AlfPicQTPart* alfPicQTPartDest, AlfPicQTPart* alfPicQTPartSrc);
206  Void copyPixelsInOneRegion(Pel* imgDest, Pel* imgSrc, Int stride, Int yPos, Int height, Int xPos, Int width);
207  Void reDesignQT(AlfPicQTPart *alfPicQTPart, Int partIdx, Int partLevel);
208#if HHI_INTERVIEW_SKIP
209  Void setCUAlfCtrlFlags(UInt uiAlfCtrlDepth, Pel* imgOrg, Pel* imgDec, Pel* imgRest, Pel* imgUsed, Int stride, UInt64& ruiDist, std::vector<AlfCUCtrlInfo>& vAlfCUCtrlParam);
210  Void setCUAlfCtrlFlag(TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiAlfCtrlDepth, Pel* imgOrg, Pel* imgDec, Pel* imgRest, Pel* imgUsed, Int stride, UInt64& ruiDist, std::vector<UInt>& vCUCtrlFlag) ;
211#else
212  Void setCUAlfCtrlFlags(UInt uiAlfCtrlDepth, Pel* imgOrg, Pel* imgDec, Pel* imgRest, Int stride, UInt64& ruiDist, std::vector<AlfCUCtrlInfo>& vAlfCUCtrlParam);
213  Void setCUAlfCtrlFlag(TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, UInt uiAlfCtrlDepth, Pel* imgOrg, Pel* imgDec, Pel* imgRest, Int stride, UInt64& ruiDist, std::vector<UInt>& vCUCtrlFlag);
214#endif
215  Void xCopyDecToRestCUs( Pel* imgDec, Pel* imgRest, Int stride );
216  Void xCopyDecToRestCU( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth, Pel* imgDec, Pel* imgRest, Int stride );
217  Void calcCorrOneCompRegionChma(Pel* imgOrg, Pel* imgPad, Int stride, Int yPos, Int xPos, Int height, Int width, Double **eCorr, Double *yCorr, Bool isSymmCopyBlockMatrix); //!< Calculate correlations for chroma                                       
218  Void calcCorrOneCompRegionLuma(Pel* imgOrg, Pel* imgPad, Int stride, Int yPos, Int xPos, Int height, Int width, Double ***eCorr, Double **yCorr, Double *pixAcc, Bool isforceCollection, Bool isSymmCopyBlockMatrix);
219
220  //LCU-based mode decision
221#if HHI_INTERVIEW_SKIP
222  Void  executeLCUBasedModeDecision(AlfParamSet* alfParamSet, Int compIdx, Pel* pOrg, Pel* pDec, Pel* pRest, Pel* pUsed, Int stride, Int formatShift, AlfCorrData** alfCorrLCUs);
223#else
224  Void  executeLCUBasedModeDecision(AlfParamSet* alfParamSet, Int compIdx, Pel* pOrg, Pel* pDec, Pel* pRest, Int stride, Int formatShift, AlfCorrData** alfCorrLCUs);
225#endif
226  Void  decideLCUALFUnitParam(Int compIdx, AlfUnitParam* alfUnitPic, Int lcuIdx, Int lcuPos, Int numLCUWidth, AlfUnitParam* alfUnitParams, AlfCorrData* alfCorr, std::vector<ALFParam*>& storedFilters, Int maxNumFilter, Double lambda, Bool isLeftUnitAvailable, Bool isUpUnitAvailable);
227  Void  getFiltOffAlfUnitParam(AlfUnitParam* alfFiltOffParam, Int lcuPos, AlfUnitParam* alfUnitPic, Bool isLeftUnitAvailable, Bool isUpUnitAvailable);
228  Int64 estimateFilterDistortion(Int compIdx, AlfCorrData* alfCorr, Int** coeff = NULL, Int filterSetSize = 1, Int* mergeTable = NULL, Bool doPixAccMerge = false);
229  Int   calculateAlfUnitRateRDO(AlfUnitParam* alfUnitParam, Int numStoredFilters = 0);
230#if HHI_INTERVIEW_SKIP
231  Int64 calcAlfLCUDist(Bool skipLCUBottomLines, Int compIdx, AlfLCUInfo& alfLCUInfo, Pel* picSrc, Pel* picCmp, Pel* picUsed, Int stride, Int formatShift) ;
232#else
233  Int64 calcAlfLCUDist(Bool skipLCUBottomLines, Int compIdx, AlfLCUInfo& alfLCUInfo, Pel* picSrc, Pel* picCmp, Int stride, Int formatShift);
234#endif
235  Void  reconstructOneAlfLCU(Int compIdx, AlfLCUInfo& alfLCUInfo, AlfUnitParam* alfUnitParam, Pel* picDec, Pel* picRest, Int stride, Int formatShift);
236  Void  copyOneAlfLCU(AlfLCUInfo& alfLCUInfo, Pel* picDst, Pel* picSrc, Int stride, Int formatShift);
237
238  //picture-based mode decision
239#if HHI_INTERVIEW_SKIP
240  Void executePicBasedModeDecision(AlfParamSet* alfParamSet, AlfPicQTPart* alfPicQTPart, Int compIdx, Pel* pOrg, Pel* pDec, Pel* pRest, Pel* pUsed, Int stride, Int formatShift, AlfCorrData** alfCorrLCUs);
241#else
242  Void executePicBasedModeDecision(AlfParamSet* alfParamSet, AlfPicQTPart* alfPicQTPart, Int compIdx, Pel* pOrg, Pel* pDec, Pel* pRest, Int stride, Int formatShift, AlfCorrData** alfCorrLCUs);
243#endif
244  Void creatPQTPart               (Int partLevel, Int partRow, Int partCol, Int parentPartIdx, Int partCUXS, Int partCUXE, Int partCUYS, Int partCUYE);
245  Void resetPQTPart               ();
246  Int  convertLevelRowCol2Idx     (Int level, Int row, Int col);
247  Void convertIdx2LevelRowCol     (Int idx, Int *level, Int *row, Int *col);
248  Void executeModeDecisionOnePart (AlfPicQTPart *alfPicQTPart, AlfCorrData** alfPicLCUCorr, Int partIdx, Int partLevel);
249  Void decideQTPartition          (AlfPicQTPart* alfPicQTPart, AlfCorrData** alfPicLCUCorr, Int partIdx, Int partLevel, Double &cost, Int64 &dist, Int64 &rate);
250  Void patchAlfUnitParams(AlfPicQTPart* alfPicQTPart, Int partIdx, AlfUnitParam* alfUnitPic);
251  Void checkMerge(Int compIdx, AlfUnitParam* alfUnitPic);
252  Void transferToAlfParamSet(Int compIdx, AlfUnitParam* alfUnitPic, AlfParamSet* & alfParamSet);
253  Int  calculateAlfParamSetRateRDO(Int compIdx, AlfParamSet* alfParamSet, std::vector<AlfCUCtrlInfo>* alfCUCtrlParam);
254  // ALF on/off control related functions
255  Void xCreateTmpAlfCtrlFlags   ();
256  Void xDestroyTmpAlfCtrlFlags  ();
257  Void xCopyTmpAlfCtrlFlagsTo   ();
258  Void xCopyTmpAlfCtrlFlagsFrom ();
259  Void getCtrlFlagsFromCU(AlfLCUInfo* pcAlfLCU, std::vector<UInt> *pvFlags, Int iAlfDepth, UInt uiMaxNumSUInLCU);
260  Void xEncodeCUAlfCtrlFlags  (std::vector<AlfCUCtrlInfo> &vAlfCUCtrlParam);
261  Void xEncodeCUAlfCtrlFlag   ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth);
262  // functions related to filtering
263  Void xFilterCoefQuickSort   ( Double *coef_data, Int *coef_num, Int upper, Int lower );
264  Void xQuantFilterCoef       ( Double* h, Int* qh, Int tap, int bit_depth );
265  // distortion / misc functions
266#if HHI_INTERVIEW_SKIP
267  UInt64 xCalcSSD             ( Pel* pOrg, Pel* pCmp, Pel* pUsed, Int iWidth, Int iHeight, Int iStride );
268#else
269  UInt64 xCalcSSD             ( Pel* pOrg, Pel* pCmp, Int iWidth, Int iHeight, Int iStride );
270#endif
271  Int64 xFastFiltDistEstimation(Double** ppdE, Double* pdy, Int* piCoeff, Int iFiltLength); //!< Estimate filtering distortion by correlation values and filter coefficients
272
273  /// code filter coefficients
274  UInt xcodeFiltCoeff(Int **filterCoeffSymQuant, Int filter_shape, Int varIndTab[], Int filters_per_fr_best, ALFParam* ALFp);
275  Void xfindBestFilterVarPred(double **ySym, double ***ESym, double *pixAcc, Int **filterCoeffSym, Int **filterCoeffSymQuant,Int filter_shape, Int *filters_per_fr_best, Int varIndTab[], Pel **imgY_rec, Pel **varImg, Pel **maskImg, Pel **imgY_pad, double lambda_val, Int numMaxFilters = NO_FILTERS);
276  double xfindBestCoeffCodMethod(int **filterCoeffSymQuant, int filter_shape, int sqrFiltLength, int filters_per_fr, double errorForce0CoeffTab[NO_VAR_BINS][2], double lambda);
277  Int xsendAllFiltersPPPred(int **FilterCoeffQuant, int filter_shape, int sqrFiltLength, int filters_per_group, int createBistream, ALFParam* ALFp);
278  Int xcodeAuxInfo(int filters_per_fr, int varIndTab[NO_VAR_BINS], int filter_shape, ALFParam* ALFp);
279  Int xcodeFilterCoeff(int **pDiffQFilterCoeffIntPP, int filter_shape, int sqrFiltLength, int filters_per_group, int createBitstream);
280  Int lengthGolomb(int coeffVal, int k);
281  Int lengthPredFlags(int force0, int predMethod, int codedVarBins[NO_VAR_BINS], int filters_per_group, int createBitstream);
282  Int lengthFilterCoeffs(int sqrFiltLength, int filters_per_group, int pDepthInt[], int **FilterCoeff, int kMinTab[], int createBitstream);
283  Void predictALFCoeffLumaEnc(ALFParam* pcAlfParam, Int **pfilterCoeffSym, Int filter_shape); //!< prediction of luma ALF coefficients
284  //cholesky related
285  Int   xGauss( Double **a, Int N );
286  Double findFilterCoeff(double ***EGlobalSeq, double **yGlobalSeq, double *pixAccGlobalSeq, int **filterCoeffSeq,int **filterCoeffQuantSeq, int intervalBest[NO_VAR_BINS][2], int varIndTab[NO_VAR_BINS], int sqrFiltLength, int filters_per_fr, int *weights, double errorTabForce0Coeff[NO_VAR_BINS][2]);
287  Double QuantizeIntegerFilterPP(Double *filterCoeff, Int *filterCoeffQuant, Double **E, Double *y, Int sqrFiltLength, Int *weights);
288  Void roundFiltCoeff(int *FilterCoeffQuan, double *FilterCoeff, int sqrFiltLength, int factor);
289  double mergeFiltersGreedy(double **yGlobalSeq, double ***EGlobalSeq, double *pixAccGlobalSeq, int intervalBest[NO_VAR_BINS][2], int sqrFiltLength, int noIntervals);
290  double calculateErrorAbs(double **A, double *b, double y, int size);
291  double calculateErrorCoeffProvided(double **A, double *b, double *c, int size);
292  Void add_b(double *bmerged, double **b, int start, int stop, int size);
293  Void add_A(double **Amerged, double ***A, int start, int stop, int size);
294  Int  gnsSolveByChol(double **LHS, double *rhs, double *x, int noEq);
295  Void gnsBacksubstitution(double R[ALF_MAX_NUM_COEF][ALF_MAX_NUM_COEF], double z[ALF_MAX_NUM_COEF], int R_size, double A[ALF_MAX_NUM_COEF]);
296  Void gnsTransposeBacksubstitution(double U[ALF_MAX_NUM_COEF][ALF_MAX_NUM_COEF], double rhs[], double x[],int order);
297  Int  gnsCholeskyDec(double **inpMatr, double outMatr[ALF_MAX_NUM_COEF][ALF_MAX_NUM_COEF], int noEq);
298
299public:
300  TEncAdaptiveLoopFilter          ();
301  virtual ~TEncAdaptiveLoopFilter () {}
302
303  Void startALFEnc(TComPic* pcPic, TEncEntropy* pcEntropyCoder); //!< allocate temporal memory
304  Void endALFEnc(); //!< destroy temporal memory
305#if ALF_CHROMA_LAMBDA
306#if HHI_INTERVIEW_SKIP
307  Void ALFProcess( AlfParamSet* alfParamSet, std::vector<AlfCUCtrlInfo>* alfCtrlParam, Double lambdaLuma, Double lambdaChroma, Bool bInterviewSkip);
308#else
309  Void ALFProcess( AlfParamSet* alfParamSet, std::vector<AlfCUCtrlInfo>* alfCtrlParam, Double lambdaLuma, Double lambdaChroma);
310#endif
311#else
312#if HHI_INTERVIEW_SKIP
313  Void ALFProcess( AlfParamSet* alfParamSet, std::vector<AlfCUCtrlInfo>* alfCtrlParam, Double lambda, Bool bInterviewSkip);
314#else
315  Void ALFProcess( AlfParamSet* alfParamSet, std::vector<AlfCUCtrlInfo>* alfCtrlParam, Double lambda);
316#endif
317#endif
318  Void initALFEnc(Bool isAlfParamInSlice, Bool isPicBasedEncode, Int numSlices, AlfParamSet* & alfParams, std::vector<AlfCUCtrlInfo>* & alfCUCtrlParam);
319  Void uninitALFEnc(AlfParamSet* & alfParams, std::vector<AlfCUCtrlInfo>* & alfCUCtrlParam);
320  Void resetPicAlfUnit();
321  Void setAlfCoefInSlice(Bool b) {m_alfCoefInSlice = b;}
322  Void setALFEncodePassReduction (Int iVal) {m_iALFEncodePassReduction = iVal;} //!< set N-pass encoding. 0: 16(14)-pass encoding, 1: 1-pass encoding, 2: 2-pass encoding
323
324  Void setALFMaxNumberFilters    (Int iVal) {m_iALFMaxNumberFilters = iVal;} //!< set ALF Max Number of Filters
325
326  Void createAlfGlobalBuffers(); //!< create ALF global buffers
327  Void initPicQuadTreePartition(Bool isPicBasedEncode);
328  Void destroyAlfGlobalBuffers(); //!< destroy ALF global buffers
329  Void PCMLFDisableProcess (TComPic* pcPic);
330};
331
332//! \}
333
334#endif
Note: See TracBrowser for help on using the repository browser.