📄 uvlcreader.h
字号:
B8x8Idx c8x8Idx,
UInt uiScanIndex,
Bool& rbLast,
UInt& ruiNumCoefRead );
ErrVal RQdecodeTCoeffRef_8x8 ( MbDataAccess& rcMbDataAccess,
MbDataAccess& rcMbDataAccessBase,
B8x8Idx c8x8Idx,
UInt uiScanIndex,
UInt uiCtx );
ErrVal RQdecodeNewTCoeff_Luma ( MbDataAccess& rcMbDataAccess,
MbDataAccess& rcMbDataAccessBase,
ResidualMode eResidualMode,
Bool b8x8,
LumaIdx cIdx,
UInt uiScanIndex,
Bool& rbLast,
UInt& ruiNumCoefRead );
ErrVal RQdecodeTCoeffRef_Luma ( MbDataAccess& rcMbDataAccess,
MbDataAccess& rcMbDataAccessBase,
LumaIdx cIdx,
UInt uiScanIndex,
UInt uiCtx );
ErrVal RQdecodeNewTCoeff_Chroma ( MbDataAccess& rcMbDataAccess,
MbDataAccess& rcMbDataAccessBase,
ResidualMode eResidualMode,
ChromaIdx cIdx,
UInt uiScanIndex,
Bool& rbLast,
UInt& ruiNumCoefRead );
ErrVal RQdecodeTCoeffRef_Chroma ( MbDataAccess& rcMbDataAccess,
MbDataAccess& rcMbDataAccessBase,
ResidualMode eResidualMode,
ChromaIdx cIdx,
UInt uiScanIndex,
UInt uiCtx );
ErrVal RQdecodeBCBP_4x4 ( MbDataAccess& rcMbDataAccess,
MbDataAccess& rcMbDataAccessBase,
Bool b8x8,
LumaIdx cIdx,
UInt& ruiSymbol );
ErrVal RQdecodeBCBP_ChromaDC( MbDataAccess& rcMbDataAccess,
MbDataAccess& rcMbDataAccessBase,
ChromaIdx cIdx,
UInt& ruiSymbol );
ErrVal RQdecodeBCBP_ChromaAC( MbDataAccess& rcMbDataAccess,
MbDataAccess& rcMbDataAccessBase,
ChromaIdx cIdx,
UInt& ruiSymbol );
ErrVal RQdecodeCBP_Chroma ( MbDataAccess& rcMbDataAccess,
MbDataAccess& rcMbDataAccessBase,
UInt& ruiSymbol );
ErrVal RQdecodeCBP_ChromaAC ( MbDataAccess& rcMbDataAccess,
MbDataAccess& rcMbDataAccessBase,
UInt& ruiSymbol );
ErrVal RQdecodeCBP_8x8 ( MbDataAccess& rcMbDataAccess,
MbDataAccess& rcMbDataAccessBase,
B8x8Idx c8x8Idx );
ErrVal RQdecodeEobOffsets_Luma ();
ErrVal RQdecodeEobOffsets_Chroma();
ErrVal RQdecodeBestCodeTableMap ( UInt uiMaxH );
ErrVal RQupdateVlcTable ();
ErrVal RQvlcFlush ();
ErrVal RQcompSepAlign ();
Bool RQpeekCbp4x4( MbDataAccess& rcMbDataAccessBase, LumaIdx cIdx);
Void RQsetTruncatedFlag ( Bool bTruncated ) { m_bTruncated = bTruncated; }
ErrVal RQreset ( const SliceHeader& rcSliceHeader );
ErrVal RQdecodeTCoeffsRef ( TCoeff* piCoeff,
TCoeff* piCoeffBase,
const UChar* pucScan,
UInt uiScanIndex,
UInt uiCtx );
ErrVal RQupdateVlcTable ( UInt uiNumFrags );
ErrVal RQdecodeSigCoeff ( TCoeff* piCoeff,
TCoeff* piCoeffBase,
ResidualMode eResidualMode,
const UChar* pucScan,
Bool bFirstSigRunCode,
UInt uiCycle,
UInt uiStartScanIdx,
UInt uiLastScanIdx,
Bool& rbEndOfBlock,
TCoeff& riCoeff,
UInt& ruiRun );
ErrVal RQinitFragments ( const SliceHeader& rcSliceHeader,
UInt& uiNumFrags,
Bool bCAF );
ErrVal RQreleaseFragments ();
MbSymbolReadIf* RQactivateFragment( UInt uiFragIdx )
{
if( uiFragIdx < m_uiNumFragments ) {
m_uiCurrentFragment = uiFragIdx;
if( uiFragIdx == 0 )
return this;
else
return m_apcFragmentReaders[uiFragIdx];
}
else
return 0;
}
ErrVal xInitFragments ( const SliceHeader& rcSliceHeader,
UChar** ppucFragBuffers,
UInt* puiFragLengthInBits,
UInt uiNumFragments );
Void xSetParentFlag ( Bool bParentFlag )
{
m_bParentFlag = bParentFlag;
}
private:
ErrVal xGetFlag ( UInt& ruiCode );
ErrVal xGetCode ( UInt& ruiCode, UInt uiLength );
ErrVal xGetUvlcCode ( UInt& ruiVal );
ErrVal xGetSvlcCode ( Int& riVal );
ErrVal xGetRefFrame ( Bool bWriteBit, UInt& uiRefFrame, ListIdx eLstIdx );
ErrVal xGetMotionPredFlag( Bool& rbFlag );
ErrVal xGetMvd ( Mv& cMv );
ErrVal xPredictNonZeroCnt( MbDataAccess& rcMbDataAccess, LumaIdx cIdx, UInt& uiCoeffCount, UInt& uiTrailingOnes );
ErrVal xPredictNonZeroCnt( MbDataAccess& rcMbDataAccess, ChromaIdx cIdx, UInt& uiCoeffCount, UInt& uiTrailingOnes );
ErrVal xGetTrailingOnes16( UInt uiLastCoeffCount, UInt& uiCoeffCount, UInt& uiTrailingOnes );
ErrVal xCodeFromBitstream2D( const UChar* aucCode, const UChar* aucLen, UInt uiWidth, UInt uiHeight, UInt& uiVal1, UInt& uiVal2 );
ErrVal xCodeFromBitstream2Di( const UInt* auiCode, const UInt* auiLen, UInt uiWidth, UInt uiHeight, UInt& uiVal1, UInt& uiVal2 );
ErrVal xGetRunLevel( Int* aiLevelRun, UInt uiCoeffCnt, UInt uiTrailingOnes, UInt uiMaxCoeffs, UInt& uiTotalRun );
ErrVal xGetLevelVLC0( Int& iLevel );
ErrVal xGetLevelVLCN( Int& iLevel, UInt uiVlcLength );
ErrVal xGetRun( UInt uiVlcPos, UInt& uiRun );
ErrVal xGetTotalRun16( UInt uiVlcPos, UInt& uiTotalRun );
ErrVal xGetTotalRun4( UInt& uiVlcPos, UInt& uiTotalRun );
ErrVal xGetTrailingOnes4( UInt& uiCoeffCount, UInt& uiTrailingOnes );
ErrVal xRQdecodeEobOffsets ( UInt* pauiShift, UInt uiLen );
ErrVal xGetGolomb(UInt& uiSymbol, UInt uiK);
ErrVal xGetSigRunCode( UInt& uiSymbol, UInt uiTableIdx );
ErrVal xGetUnaryCode( UInt& uiSymbol );
ErrVal xGetCodeCB1( UInt& uiSymbol );
ErrVal xGetCodeCB2( UInt& uiSymbol );
ErrVal xGetSigRunTabCode(UInt& uiTab);
ErrVal xDecodeMonSeq ( UInt* auiSeq,
UInt uiStart,
UInt uiLen );
ErrVal xRQdecodeSigMagGreater1( TCoeff* piCoeff,
TCoeff* piCoeffBase,
const UChar* pucScan,
UInt uiTermSym,
UInt uiStart,
UInt uiStop,
UInt uiStride = 1 );
protected:
BitReadBuffer* m_pcBitReadBuffer;
UInt m_uiBitCounter;
UInt m_uiPosCounter;
Bool m_bRunLengthCoding;
UInt m_uiRun;
UInt m_uiCbpStats[3][2];
UInt m_uiCbp8x8;
UInt m_uiCbpStat4x4[2];
UInt m_uiCurrCbp4x4;
UcSymGrpReader* m_pSymGrp;
Bool m_bTruncated;
// new variables for switching bitstream inputs
Bool m_bParentFlag;
UvlcReader* m_apcFragmentReaders[MAX_NUM_PD_FRAGMENTS];
BitReadBuffer* m_apcFragBitBuffers [MAX_NUM_PD_FRAGMENTS];
UcSymGrpReader* m_apcFragSymGrps [MAX_NUM_PD_FRAGMENTS];
UInt m_uiNumFragments;
UInt m_uiCurrentFragment;
static UInt m_auiShiftLuma[16];
static UInt m_auiShiftChroma[16];
static UInt m_auiBestCodeTab[16];
};
class UcSymGrpReader
{
public:
UcSymGrpReader( UvlcReader* pParent );
ErrVal Init();
ErrVal Flush();
ErrVal xFetchSymbol( UvlcReader* pcUvlcReader, UInt uiBaseSign, TCoeff* piCoeffPtr, Char* pcTraceString );
Bool UpdateVlc();
UInt GetCode() { return m_uiCode; }
Void setCodedFlag(UInt uiFlag) { m_uiCodedFlag = uiFlag; }
protected:
UInt m_auiSymCount[3];
UInt m_uiTable;
UInt m_uiCodedFlag;
UInt m_uiCode;
UInt m_uiLen;
UInt m_auiSymbolBuf[CAVLC_SYMGRP_SIZE];
};
H264AVC_NAMESPACE_END
#endif // !defined(AFX_UVLCREADER_H__EA98D347_89D5_4D2D_B6D5_FB3A374CD295__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -