📄 sliceheaderbase.h
字号:
//===== get parameters =====
NalRefIdc getNalRefIdc () const { return m_eNalRefIdc; }
NalUnitType getNalUnitType () const { return m_eNalUnitType; }
UInt getLayerId () const { return m_uiLayerId; }
UInt getTemporalLevel () const { return m_uiTemporalLevel; }
UInt getQualityLevel () const { return m_uiQualityLevel; }
UInt getFirstMbInSlice () const { return m_uiFirstMbInSlice; }
SliceType getSliceType () const { return m_eSliceType; }
UInt getPicParameterSetId () const { return m_uiPicParameterSetId; }
UInt getFrameNum () const { return m_uiFrameNum; }
UInt getNumMbsInSlice () const { return m_uiNumMbsInSlice; }
Bool getFgsComponentSep () const { return m_bFgsComponentSep; }
UInt getIdrPicId () const { return m_uiIdrPicId; }
UInt getPicOrderCntLsb () const { return m_uiPicOrderCntLsb; }
Int getDeltaPicOrderCntBottom () const { return m_iDeltaPicOrderCntBottom; }
Int getDeltaPicOrderCnt (UInt ui) const { return m_aiDeltaPicOrderCnt[ui]; }
Bool getBasePredWeightTableFlag () const { return m_bBasePredWeightTableFlag; }
UInt getLumaLog2WeightDenom () const { return m_uiLumaLog2WeightDenom; }
UInt getChromaLog2WeightDenom () const { return m_uiChromaLog2WeightDenom; }
const PredWeightTable& getPredWeightTable (ListIdx e) const { return m_acPredWeightTable[e]; }
PredWeightTable& getPredWeightTable (ListIdx e) { return m_acPredWeightTable[e]; }
const PredWeight& getPredWeight (ListIdx e,
UInt ui) const { return m_acPredWeightTable[e].get(ui-1); }
PredWeight& getPredWeight (ListIdx e,
UInt ui) { return m_acPredWeightTable[e].get(ui-1); }
//TMM_WP
ErrVal copyWeightedPred(PredWeightTable& pcPredWeightTable, UInt uiLumaLogWeightDenom,
UInt uiChromaWeightDenom, ListIdx eListIdx, Bool bDecoder);
//TMM_WP
Bool getDirectSpatialMvPredFlag () const { return m_bDirectSpatialMvPredFlag; }
Bool getKeyPictureFlag () const { return m_bKeyPictureFlag; }
Bool getKeyPicFlagScalable () const { return m_bKeyPicFlagScalable; } //JVT-S036 lsj
UInt getBaseLayerId () const { return m_uiBaseLayerId; }
UInt getBaseQualityLevel () const { return m_uiBaseQualityLevel; }
Bool getAdaptivePredictionFlag () const { return m_bAdaptivePredictionFlag; }
Bool getNumRefIdxActiveOverrideFlag() const { return m_bNumRefIdxActiveOverrideFlag; }
UInt getNumRefIdxActive ( ListIdx e ) const { return m_auiNumRefIdxActive[e]; }
const RplrBuffer& getRplrBuffer ( ListIdx e ) const { return m_acRplrBuffer [e]; }
RplrBuffer& getRplrBuffer ( ListIdx e ) { return m_acRplrBuffer [e]; }
UInt getNumRefIdxUpdate ( UInt ui,
ListIdx e ) const { return m_aauiNumRefIdxActiveUpdate[ui][e]; }
Bool getNoOutputOfPriorPicsFlag () const { return m_bNoOutputOfPriorPicsFlag; }
Bool getAdaptiveRefPicBufferingFlag() const { return m_bAdaptiveRefPicBufferingModeFlag; }
Bool getAdaptiveRefPicMarkingFlag () const { return m_bAdaptiveRefPicMarkingModeFlag; } //JVT-S036 lsj
const MmcoBuffer& getMmcoBuffer () const { return m_cMmmcoBuffer; }
MmcoBuffer& getMmcoBuffer () { return m_cMmmcoBuffer; }
//JVT-S036 lsj start
const MmcoBuffer& getMmcoBaseBuffer () const { return m_cMmmcoBaseBuffer; }
MmcoBuffer& getMmcoBaseBuffer () { return m_cMmmcoBaseBuffer; }
//JVT-S036 lsj end
//TMM_EC {{
Void setDefualtMmcoBuffer(UInt uiDecompositionStages, Bool Number2)
{
m_cMmmcoBuffer.clear();
UInt uiCount=0;
UInt uiGopSize = 1 << uiDecompositionStages;
for( Int iIndex=uiGopSize/2-2;iIndex>=0;iIndex-- )
{
m_cMmmcoBuffer.set( uiCount++, Mmco(MMCO_SHORT_TERM_UNUSED,iIndex));
}
if(!Number2)m_cMmmcoBuffer.set(uiCount++,Mmco(MMCO_SHORT_TERM_UNUSED,uiGopSize/2));
else m_cMmmcoBuffer.set(uiCount++,Mmco(MMCO_SHORT_TERM_UNUSED,uiGopSize-1));
m_cMmmcoBuffer.set(uiCount++,Mmco(MMCO_END));
return ;
}
UInt getCabacInitIdc () const { return m_uiCabacInitIdc; }
Int getSliceQpDelta () const { return m_iSliceQpDelta; }
const DeblockingFilterParameter& getDeblockingFilterParameter () const { return m_cDeblockingFilterParameter; }
DeblockingFilterParameter& getDeblockingFilterParameter () { return m_cDeblockingFilterParameter; }
UInt getLog2MaxSliceGroupChangeCycle(UInt uiPicSizeInMapUnits) const {return UInt(ceil( (log ( uiPicSizeInMapUnits*(getPPS().getSliceGroupChangeRateMinus1()+1.)+ 1. ))/log(2.) ));};
UInt getSliceGroupChangeCycle() const {return m_uiSliceGroupChangeCycle;}
FMO* getFMO() const { return m_pcFMO;}
Int getNumMbInSlice();
UInt getBaseWeightZeroBaseBlock() { return m_uiBaseWeightZeroBaseBlock; }
UInt getBaseWeightZeroBaseCoeff() { return m_uiBaseWeightZeroBaseCoeff; }
Void setBaseWeightZeroBaseBlock(UInt ui)
{
m_uiBaseWeightZeroBaseBlock = (ui >= AR_FGS_MAX_BASE_WEIGHT - 1)
? AR_FGS_MAX_BASE_WEIGHT : ui;
}
Void setBaseWeightZeroBaseCoeff(UInt ui)
{
m_uiBaseWeightZeroBaseCoeff = (ui >= AR_FGS_MAX_BASE_WEIGHT - 1)
? AR_FGS_MAX_BASE_WEIGHT : ui;
}
Void setArFgsUsageFlag ( Bool b ) { m_bArFgsUsageFlag = b; }
Bool getArFgsUsageFlag () { return m_bArFgsUsageFlag; }
Void setFgsEntropyOrderFlag ( Bool b ) { m_bFgsEntropyOrderFlag = b; }
Bool getFgsEntropyOrderFlag () { return m_bFgsEntropyOrderFlag; }
Void setLowPassFgsMcFilter ( UInt ui ) { m_uiLowPassFgsMcFilter = ui; }
UInt getLowPassFgsMcFilter () { return m_uiLowPassFgsMcFilter; }
//{{Variable Lengh NAL unit header data with priority and dead substream flag
//France Telecom R&D- (nathalie.cammas@francetelecom.com)
UInt getSimplePriorityId () { return m_uiSimplePriorityId;}
Bool getDiscardableFlag () { return m_bDiscardableFlag;}
Bool getReservedZeroBit () { return m_bReservedZeroBit;} //JVT-S036 lsj
//}}Variable Lengh NAL unit header data with priority and dead substream flag
//JVT-P031
Bool getFragmentedFlag () {return m_bFragmentedFlag;}
UInt getFragmentOrder () {return m_uiFragmentOrder;}
Bool getLastFragmentFlag () {return m_bLastFragmentFlag;}
Void setFragmentedFlag (Bool b) {m_bFragmentedFlag = b;}
Void setFragmentOrder (UInt ui) {m_uiFragmentOrder = ui;}
Void setLastFragmentFlag (Bool b) {m_bLastFragmentFlag = b;}
//~JVT-P031
Bool getBaseLayerUsesConstrainedIntraPred() const { return m_bBaseLayerUsesConstrainedIntraPred; }
UInt getRedundantPicCnt () { return m_uiRedundantPicCnt; } // JVT-Q054 Red. Picture
//===== set parameters =====
Void setAVCCompatible ( Bool Flag ) { m_eAVCCompatible = Flag;} //JVT-S036 lsj
Void setNalRefIdc ( NalRefIdc e ) { m_eNalRefIdc = e; }
Void setNalUnitType ( NalUnitType e ) { m_eNalUnitType = e; }
Void setLayerId ( UInt ui ) { m_uiLayerId = ui; }
Void setTemporalLevel ( UInt ui ) { m_uiTemporalLevel = ui; }
Void setQualityLevel ( UInt ui ) { m_uiQualityLevel = ui; }
Void setFirstMbInSlice ( UInt ui ) { m_uiFirstMbInSlice = ui; }
Void setSliceType ( SliceType e ) { m_eSliceType = e; }
Void setPicParameterSetId ( UInt ui ) { m_uiPicParameterSetId = ui; }
Void setFrameNum ( UInt ui ) { m_uiFrameNum = ui; }
Void setNumMbsInSlice ( UInt ui ) { m_uiNumMbsInSlice = ui; }
Void setFgsComponentSep ( Bool b ) { m_bFgsComponentSep = b; }
Void setIdrPicId ( UInt ui ) { m_uiIdrPicId = ui; }
Void setPicOrderCntLsb ( UInt ui ) { m_uiPicOrderCntLsb = ui; }
Void setDeltaPicOrderCntBottom ( Int i ) { m_iDeltaPicOrderCntBottom = i; }
Void setDeltaPicOrderCnt ( UInt ui,
Int i ) { m_aiDeltaPicOrderCnt[ui] = i; }
Void setBasePredWeightTableFlag ( Bool b ) { m_bBasePredWeightTableFlag = b; }
Void setLumaLog2WeightDenom ( UInt ui ) { m_uiLumaLog2WeightDenom = ui; }
Void setChromaLog2WeightDenom ( UInt ui ) { m_uiChromaLog2WeightDenom = ui; }
Void setDirectSpatialMvPredFlag ( Bool b ) { m_bDirectSpatialMvPredFlag = b; }
Void setKeyPictureFlag ( Bool b ) { m_bKeyPictureFlag = b; }
Void setKeyPicFlagScalable ( Bool b ) { m_bKeyPicFlagScalable = b; } //JVT-S036 lsj
Void setBaseLayerId ( UInt ui ) { m_uiBaseLayerId = ui; }
Void setBaseQualityLevel ( UInt ui ) { m_uiBaseQualityLevel = ui; }
Void setAdaptivePredictionFlag ( Bool b ) { m_bAdaptivePredictionFlag = b; }
Void setNumRefIdxActiveOverrideFlag( Bool b ) { m_bNumRefIdxActiveOverrideFlag = b; }
Void setNumRefIdxActive ( ListIdx e,
UInt ui ) { m_auiNumRefIdxActive[e] = ui; }
Void setNumRefIdxUpdate ( UInt ui,
ListIdx e,
UInt p ) { m_aauiNumRefIdxActiveUpdate[ui][e] = p; }
Void setNoOutputOfPriorPicsFlag ( Bool b ) { m_bNoOutputOfPriorPicsFlag = b; }
Void setAdaptiveRefPicBufferingFlag( Bool b ) { m_bAdaptiveRefPicBufferingModeFlag = b; }
Void setAdaptiveRefPicMarkingFlag (Bool b ) { m_bAdaptiveRefPicMarkingModeFlag = b; }//JVT-S036 lsj
Void setCabacInitIdc ( UInt ui ) { m_uiCabacInitIdc = ui; }
Void setSliceQpDelta ( Int i ) { m_iSliceQpDelta = i; }
Void setSliceHeaderQp ( Int i ) { setSliceQpDelta( i - m_rcPPS.getPicInitQp() ); }
//{{Variable Lengh NAL unit header data with priority and dead substream flag
//France Telecom R&D- (nathalie.cammas@francetelecom.com)
Void setSimplePriorityId (UInt ui) { m_uiSimplePriorityId = ui;}
Void setDiscardableFlag (Bool b) { m_bDiscardableFlag = b;}
Void setReservedZeroBit (Bool b) { m_bReservedZeroBit = b;} //JVT-S036 lsj
//}}Variable Lengh NAL unit header data with priority and dead substream flag
Void setBaseLayerUsesConstrainedIntraPred( Bool b ) { m_bBaseLayerUsesConstrainedIntraPred = b; }
Void setSliceGroupChangeCycle(UInt uiSliceGroupChangeCycle){m_uiSliceGroupChangeCycle = uiSliceGroupChangeCycle;};
ErrVal FMOInit();
// TMM_EC {{
Bool getTrueSlice() const { return m_bTrueSlice;}
Void setTrueSlice( Bool bTrueSlice) { m_bTrueSlice = bTrueSlice;}
ERROR_CONCEAL m_eErrorConceal;
Bool m_bTrueSlice;
// TMM_EC }}
Void setRedundantPicCnt (UInt ui ) { m_uiRedundantPicCnt = ui; } // JVT-Q054 Red. Picture
protected:
ErrVal xReadH264AVCCompatible ( HeaderSymbolReadIf* pcReadIf );
ErrVal xReadScalable ( HeaderSymbolReadIf* pcReadIf );
ErrVal xWriteScalable ( HeaderSymbolWriteIf* pcWriteIf ) const;
ErrVal xWriteH264AVCCompatible ( HeaderSymbolWriteIf* pcWriteIf ) const;
protected:
const PictureParameterSet& m_rcPPS;
const SequenceParameterSet& m_rcSPS;
Bool m_eAVCCompatible; //JVT-S036 lsj
NalRefIdc m_eNalRefIdc;
NalUnitType m_eNalUnitType;
UInt m_uiLayerId;
UInt m_uiTemporalLevel;
UInt m_uiQualityLevel;
UInt m_uiFirstMbInSlice;
SliceType m_eSliceType;
UInt m_uiPicParameterSetId;
UInt m_uiFrameNum;
UInt m_uiNumMbsInSlice;
Bool m_bFgsComponentSep;
UInt m_uiIdrPicId;
UInt m_uiPicOrderCntLsb;
Int m_iDeltaPicOrderCntBottom;
Int m_aiDeltaPicOrderCnt[2];
Bool m_bBasePredWeightTableFlag;
UInt m_uiLumaLog2WeightDenom;
UInt m_uiChromaLog2WeightDenom;
PredWeightTable m_acPredWeightTable[2];
Bool m_bDirectSpatialMvPredFlag;
Bool m_bKeyPictureFlag;
Bool m_bKeyPicFlagScalable; //JVT-S036 lsj
UInt m_uiBaseLayerId;
UInt m_uiBaseQualityLevel;
UInt m_uiBaseFragmentOrder;
Bool m_bAdaptivePredictionFlag;
Bool m_bNumRefIdxActiveOverrideFlag;
UInt m_auiNumRefIdxActive[2];
RplrBuffer m_acRplrBuffer [2];
UInt m_aauiNumRefIdxActiveUpdate[MAX_TEMP_LEVELS][2];
Bool m_bNoOutputOfPriorPicsFlag;
Bool m_bAdaptiveRefPicBufferingModeFlag;
//JVT-S036 lsj start
Bool m_bAdaptiveRefPicMarkingModeFlag;
UInt m_bMemoryManagementControlOperation;
UInt m_bDifferenceOfPicNumsMinus1;
UInt m_bLongTermPicNum;
MmcoBuffer m_cMmmcoBaseBuffer;
//JVT-S036 lsj end
MmcoBuffer m_cMmmcoBuffer;
UInt m_uiCabacInitIdc;
Int m_iSliceQpDelta;
DeblockingFilterParameter m_cDeblockingFilterParameter;
UInt m_uiSliceGroupChangeCycle;
FMO* m_pcFMO;
Bool m_bBaseLayerUsesConstrainedIntraPred;
//{{Variable Lengh NAL unit header data with priority and dead substream flag
//France Telecom R&D- (nathalie.cammas@francetelecom.com)
UInt m_uiSimplePriorityId;
Bool m_bDiscardableFlag;
Bool m_bReservedZeroBit; //JVT-S036 lsj
//}}Variable Lengh NAL unit header data with priority and dead substream flag
//JVT-P031
Bool m_bFragmentedFlag;
UInt m_uiFragmentOrder;
Bool m_bLastFragmentFlag;
//~JVT-P031
UInt m_uiRedundantPicCnt; // JVT-Q054 Red. Picture
// TMM_ESS {
public:
Int getLeftOffset () const { return m_iScaledBaseLeftOffset; }
Int getRightOffset () const { return m_iScaledBaseRightOffset; }
Int getTopOffset () const { return m_iScaledBaseTopOffset; }
Int getBottomOffset () const { return m_iScaledBaseBottomOffset; }
Int getBaseChromaPhaseX () const { return (Int)m_uiBaseChromaPhaseXPlus1-1; }
Int getBaseChromaPhaseY () const { return (Int)m_uiBaseChromaPhaseYPlus1-1; }
Void setLeftOffset ( Int i ) { m_iScaledBaseLeftOffset = i; }
Void setRightOffset ( Int i ) { m_iScaledBaseRightOffset = i; }
Void setTopOffset ( Int i ) { m_iScaledBaseTopOffset = i; }
Void setBottomOffset ( Int i ) { m_iScaledBaseBottomOffset = i; }
Void setBaseChromaPhaseX ( Int i) { m_uiBaseChromaPhaseXPlus1 = i+1; }
Void setBaseChromaPhaseY ( Int i) { m_uiBaseChromaPhaseYPlus1 = i+1; }
Void Print ( );
protected:
UInt m_uiBaseChromaPhaseXPlus1;
UInt m_uiBaseChromaPhaseYPlus1;
Int m_iScaledBaseLeftOffset;
Int m_iScaledBaseTopOffset;
Int m_iScaledBaseRightOffset;
Int m_iScaledBaseBottomOffset;
// TMM_ESS }
Bool m_bArFgsUsageFlag;
Bool m_bFgsEntropyOrderFlag;
UInt m_uiLowPassFgsMcFilter;
UInt m_uiBaseWeightZeroBaseBlock;
UInt m_uiBaseWeightZeroBaseCoeff;
};
#define IS_KEY_PICTURE(pcSH) ( (pcSH)->getKeyPictureFlag() )
#if defined( WIN32 )
# pragma warning( default: 4251 )
# pragma warning( default: 4275 )
#endif
typedef SliceHeaderBase::PredWeight PW;
H264AVC_NAMESPACE_END
#endif // !defined(AFX_SLICEHEADERBASE_H__2CC1FD0F_CACB_4799_84BE_FC5FC9B9C245__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -