1 | |
---|
2 | |
---|
3 | /** \file TDecCu.h |
---|
4 | \brief CU decoder class (header) |
---|
5 | */ |
---|
6 | |
---|
7 | #ifndef __TDECCU__ |
---|
8 | #define __TDECCU__ |
---|
9 | |
---|
10 | #if _MSC_VER > 1000 |
---|
11 | #pragma once |
---|
12 | #endif // _MSC_VER > 1000 |
---|
13 | |
---|
14 | #include "../TLibCommon/TComTrQuant.h" |
---|
15 | #include "../TLibCommon/TComPrediction.h" |
---|
16 | #include "TDecEntropy.h" |
---|
17 | |
---|
18 | // ==================================================================================================================== |
---|
19 | // Class definition |
---|
20 | // ==================================================================================================================== |
---|
21 | |
---|
22 | /// CU decoder class |
---|
23 | class TDecCu |
---|
24 | { |
---|
25 | private: |
---|
26 | UInt m_uiMaxDepth; ///< max. number of depth |
---|
27 | TComYuv** m_ppcYuvResi; ///< array of residual buffer |
---|
28 | TComYuv** m_ppcYuvReco; ///< array of prediction & reconstruction buffer |
---|
29 | TComYuv** m_ppcYuvResPred; ///< residual prediction buffer |
---|
30 | TComDataCU** m_ppcCU; ///< CU data array |
---|
31 | |
---|
32 | // access channel |
---|
33 | TComTrQuant* m_pcTrQuant; |
---|
34 | TComPrediction* m_pcPrediction; |
---|
35 | TDecEntropy* m_pcEntropyDecoder; |
---|
36 | |
---|
37 | public: |
---|
38 | TDecCu(); |
---|
39 | virtual ~TDecCu(); |
---|
40 | |
---|
41 | /// initialize access channels |
---|
42 | Void init ( TDecEntropy* pcEntropyDecoder, TComTrQuant* pcTrQuant, TComPrediction* pcPrediction ); |
---|
43 | |
---|
44 | /// create internal buffers |
---|
45 | Void create ( UInt uiMaxDepth, UInt uiMaxWidth, UInt uiMaxHeight ); |
---|
46 | |
---|
47 | /// destroy internal buffers |
---|
48 | Void destroy (); |
---|
49 | |
---|
50 | /// decode CU information |
---|
51 | Void decodeCU ( TComDataCU* pcCU, UInt& ruiIsLast ); |
---|
52 | |
---|
53 | /// reconstruct CU information |
---|
54 | Void decompressCU ( TComDataCU* pcCU ); |
---|
55 | |
---|
56 | protected: |
---|
57 | |
---|
58 | Void xDecodeCU ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); |
---|
59 | Void xDecompressCU ( TComDataCU* pcCU, TComDataCU* pcCUCur, UInt uiAbsPartIdx, UInt uiDepth ); |
---|
60 | |
---|
61 | Void xReconInter ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); |
---|
62 | |
---|
63 | Void xReconIntraQT ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); |
---|
64 | Void xIntraRecLumaBlk ( TComDataCU* pcCU, UInt uiTrDepth, UInt uiAbsPartIdx, TComYuv* pcRecoYuv, TComYuv* pcPredYuv, TComYuv* pcResiYuv ); |
---|
65 | Void xIntraRecChromaBlk ( TComDataCU* pcCU, UInt uiTrDepth, UInt uiAbsPartIdx, TComYuv* pcRecoYuv, TComYuv* pcPredYuv, TComYuv* pcResiYuv, UInt uiChromaId ); |
---|
66 | Void xIntraRecQT ( TComDataCU* pcCU, UInt uiTrDepth, UInt uiAbsPartIdx, TComYuv* pcRecoYuv, TComYuv* pcPredYuv, TComYuv* pcResiYuv ); |
---|
67 | |
---|
68 | Void xDecodeInterTexture ( TComDataCU* pcCU, UInt uiAbsPartIdx, UInt uiDepth ); |
---|
69 | Void xDecodeIntraTexture ( TComDataCU* pcCU, UInt uiPartIdx, Pel* piReco, Pel* pPred, Pel* piResi, UInt uiStride, TCoeff* pCoeff, UInt uiWidth, UInt uiHeight, UInt uiCurrDepth ); |
---|
70 | Void xRecurIntraInvTransChroma( TComDataCU* pcCU, UInt uiAbsPartIdx, Pel* piResi, Pel* piPred, Pel* piReco, UInt uiStride, TCoeff* piCoeff, UInt uiWidth, UInt uiHeight, UInt uiTrMode, UInt uiCurrTrMode, TextType eText ); |
---|
71 | |
---|
72 | Void xCopyToPic ( TComDataCU* pcCU, TComPic* pcPic, UInt uiZorderIdx, UInt uiDepth ); |
---|
73 | |
---|
74 | #if LM_CHROMA |
---|
75 | Void xIntraLumaRecQT ( TComDataCU* pcCU, UInt uiTrDepth, UInt uiAbsPartIdx, TComYuv* pcRecoYuv, TComYuv* pcPredYuv, TComYuv* pcResiYuv ); |
---|
76 | Void xIntraChromaRecQT ( TComDataCU* pcCU, UInt uiTrDepth, UInt uiAbsPartIdx, TComYuv* pcRecoYuv, TComYuv* pcPredYuv, TComYuv* pcResiYuv ); |
---|
77 | #endif |
---|
78 | }; |
---|
79 | |
---|
80 | #endif |
---|
81 | |
---|