// CU data structure class class TComDataCU { private: // ------------------------------------------------------------------------------------------------------------------- // class pointers // ------------------------------------------------------------------------------------------------------------------- TComPic* m_pcPic; ///< picture class pointer TComSlice* m_pcSlice; ///< slice header pointer // ------------------------------------------------------------------------------------------------------------------- // CU description // ------------------------------------------------------------------------------------------------------------------- UInt m_ctuRsAddr; ///< CTU (also known as LCU) address in a slice (Raster-scan address, as opposed to tile-scan/encoding order). UInt m_absZIdxInCtu; ///< absolute address in a CTU. It‘s Z scan order UInt m_uiCUPelX; ///< CU position in a pixel (X) UInt m_uiCUPelY; ///< CU position in a pixel (Y) UInt m_uiNumPartition; ///< total number of minimum partitions in a CU UChar* m_puhWidth; ///< array of widths UChar* m_puhHeight; ///< array of heights UChar* m_puhDepth; ///< array of depths Int m_unitSize; ///< size of a "minimum partition" // ------------------------------------------------------------------------------------------------------------------- // CU data // ------------------------------------------------------------------------------------------------------------------- Bool* m_skipFlag; ///< array of skip flags SChar* m_pePartSize; ///< array of partition sizes SChar* m_pePredMode; ///< array of prediction modes SChar* m_crossComponentPredictionAlpha[MAX_NUM_COMPONENT]; ///< array of cross-component prediction alpha values Bool* m_CUTransquantBypass; ///< array of cu_transquant_bypass flags SChar* m_phQP; ///< array of QP values UChar* m_ChromaQpAdj; ///< array of chroma QP adjustments (indexed). when value = 0, cu_chroma_qp_offset_flag=0; when value>0, indicates cu_chroma_qp_offset_flag=1 and cu_chroma_qp_offset_idx=value-1 UInt m_codedChromaQpAdj; UChar* m_puhTrIdx; ///< array of transform indices UChar* m_puhTransformSkip[MAX_NUM_COMPONENT]; ///< array of transform skipping flags UChar* m_puhCbf[MAX_NUM_COMPONENT]; ///< array of coded block flags (CBF) TComCUMvField m_acCUMvField[NUM_REF_PIC_LIST_01]; ///< array of motion vectors. TCoeff* m_pcTrCoeff[MAX_NUM_COMPONENT]; ///< array of transform coefficient buffers (0->Y, 1->Cb, 2->Cr) #if ADAPTIVE_QP_SELECTION TCoeff* m_pcArlCoeff[MAX_NUM_COMPONENT]; ///< ARL coefficient buffer (0->Y, 1->Cb, 2->Cr) Bool m_ArlCoeffIsAliasedAllocation; ///< ARL coefficient buffer is an alias of the global buffer and must not be free()‘d #endif Pel* m_pcIPCMSample[MAX_NUM_COMPONENT]; ///< PCM sample buffer (0->Y, 1->Cb, 2->Cr) // ------------------------------------------------------------------------------------------------------------------- // neighbour access variables // ------------------------------------------------------------------------------------------------------------------- TComDataCU* m_pCtuAboveLeft; ///< pointer of above-left CTU. TComDataCU* m_pCtuAboveRight; ///< pointer of above-right CTU. TComDataCU* m_pCtuAbove; ///< pointer of above CTU. TComDataCU* m_pCtuLeft; ///< pointer of left CTU TComDataCU* m_apcCUColocated[NUM_REF_PIC_LIST_01]; ///< pointer of temporally colocated CU‘s for both directions TComMvField m_cMvFieldA; ///< motion vector of position A TComMvField m_cMvFieldB; ///< motion vector of position B TComMvField m_cMvFieldC; ///< motion vector of position C TComMv m_cMvPred; ///< motion vector predictor
时间: 2024-11-03 21:21:26