📄 umc_h264_bs.h
字号:
//// INTEL CORPORATION PROPRIETARY INFORMATION// This software is supplied under the terms of a license agreement or// nondisclosure agreement with Intel Corporation and may not be copied// or disclosed except in accordance with the terms of that agreement.// Copyright (c) 2004 - 2005 Intel Corporation. All Rights Reserved.//#ifndef CSBSX_H__#define CSBSX_H__#include "umc_h264_pub.h"#include "umc_base_bitstream.h"namespace UMC{// LossRecovery return statustypedef enum{ BSLR_STATUS_ERROR, // Loss recovery did not detect lost packet, or // couldn't recover. BSLR_STATUS_OK, // Loss recovery detected lost packet and recovered BSLR_STATUS_EOS // Loss recovery detected lost packet but end of // stream encountered (i.e. no more packet avail.)} BSLR_Status;// ---------------------------------------------------------------------------// CH264pBs : CBaseBitstream - Tromso bitstream class// ---------------------------------------------------------------------------class CH264pBs : public CBaseBitstream{private: //H264_FID m_fid; // stream type Ipp8u* m_pbsRBSPBase; // Points to beginning of previous // "Raw Byte Sequence Payload"public: CH264pBs( /*const H264_FID fid,*/ Ipp8u* const pb, const Ipp32u maxsize, Status &plr); CH264pBs( /*const H264_FID fid,*/ Status &plr); ~CH264pBs(); void Reset(); void Reset( Ipp8u* const pb, const Ipp32u maxsize); void ResetRBSP(); Ipp32u EndOfNAL( Ipp8u* const pout, Ipp8u const uIDC, NAL_Unit_Type const uUnitType); Status PutSliceHeader(H264SliceHeader const slice_hdr, H264PicParamSet const pic_parms, H264SeqParamSet const seq_parms, EnumPicClass const ePictureClass); Status PutSeqParms(H264SeqParamSet const seq_parms); Status PutPicParms(const H264PicParamSet & pic_parms, const H264SeqParamSet & seq_parms); Status PutPicDelimiter(EnumPicCodType PicCodType); void PutDQUANT( const Ipp32u quant, const Ipp32u quant_prev); Status PutNumCoeffAndTrailingOnes( Ipp32u uVLCSelect, bool bChromaDC, Ipp32u uNumCoeff, Ipp32u uNumTrailingOnes, Ipp32u TrOneSigns); Status PutLevels( Ipp16s* iLevels, Ipp32u uNumLevels, Ipp32u uTrailingOnes); Status PutTotalZeros( Ipp32u uTotalZeros, Ipp32u uTotalCoeffs, bool bChromaDC); Status PutRuns( Ipp8u* uRuns, Ipp32u uTotalZeros, Ipp32u uTotalCoeffs);#if defined SPLIT_INTO_FIELDS Status MBFieldModeInfo_CABAC(int mb_field,int field_available_left,int field_available_above);#endif // SPLIT_INTO_FIELDS Status MBSkipFlagInfo_CABAC(EnumSliceType SliceType,T_EncodeMBData *cur_mb, T_EncodeMBData *left_mb, T_EncodeMBData *top_mb,bool skip_flag); Status MBTypeInfo_CABAC(EnumSliceType SliceType,int mb_type_cur,MB_Type type_cur, MB_Type type_left,MB_Type type_above ); Status SubTypeInfo_CABAC(EnumSliceType SliceType,int type); Status ChromaIntraPredMode_CABAC(int mode,int left_p, int top_p); Status IntraPredMode_CABAC(int mode); Status MVD_CABAC(int vector,int left_p,int top_p,int contextbase); Status DQuant_CABAC(int deltaQP,int left_c); Status CBP_BIT_CABAC (bool cbpbit, int ctxbase,int ctxindex); Status CBP_CABAC(T_EncodeMBData *curMB, T_EncodeMBData *leftMB,T_EncodeMBData *topMB); Status ResidualBlock_CABAC (T_Block_CABAC_Data *c_data, bool frame_mb); Status CodedBlockFlagLuma(T_EncodeMBData *curMB, T_EncodeMBData *leftMB,T_EncodeMBData *topMB,int block_num,int type, bool cbpbit); Status CodedBlockFlagLumaDC(T_EncodeMBData *curMB, T_EncodeMBData *leftMB,T_EncodeMBData *topMB, bool cbpbit); Status CodedBlockFlagChromaDC(T_EncodeMBData *curMB, T_EncodeMBData *leftMB,T_EncodeMBData *topMB,int block_num,bool cbpbit); Status CodedBlockFlagChroma(T_EncodeMBData *curMB, T_EncodeMBData *leftMB,T_EncodeMBData *topMB,int block_num,bool cbpbit);private: void PutPSC(); void PutSSC(); void PutTR(const Ipp32u tr); void PutPQUANT(const Ipp32u pquant); void PutDBQ(const Ipp32u dbq);};} //namespace UMC#endif // CSBSX_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -