📄 sequenceparameterset.h
字号:
AOF(j<m_num_anchor_refs_list0[i] && j >=0)
m_anchor_ref_list0[i][j] = value;
}
else if (list_no==1) {
AOF(j<m_num_anchor_refs_list1[i] && j >=0)
m_anchor_ref_list1[i][j] = value;
}
}
UInt getAnchorRefForListX(int i,int j, int list_no) const
{
AOF(i< MAX_VIEWS && i >=0)
if (list_no==0){
AOF(j<m_num_anchor_refs_list0[i] && j >=0)
return m_anchor_ref_list0[i][j];
}
else if (list_no==1){
AOF(j<m_num_anchor_refs_list1[i] && j >=0)
return m_anchor_ref_list1[i][j];
}
else
return 0;
}
Void setNonAnchorRefForListX(int i,int j, int list_no, UInt value)
{
AOF(i< MAX_VIEWS && i >=0)
AOF(list_no==0 || list_no==1)
if (list_no==0) {
#if JMVM_ONLY // JVT-Y042
if ( non_anchor_single_loop_decoding_flag )
AOF(j<m_num_non_anchor_refs_sld_list0[i] && j >=0)
else
AOF(j<m_num_non_anchor_refs_list0[i] && j >=0)
#else
AOF(j<m_num_non_anchor_refs_list0[i] && j >=0)
#endif
m_non_anchor_ref_list0[i][j] = value;
}
else if (list_no==1) {
#if JMVM_ONLY // JVT-Y042
if ( non_anchor_single_loop_decoding_flag )
AOF(j<m_num_non_anchor_refs_sld_list1[i] && j >=0)
else
AOF(j<m_num_non_anchor_refs_list1[i] && j >=0)
#else
AOF(j<m_num_non_anchor_refs_list1[i] && j >=0)
#endif
m_non_anchor_ref_list1[i][j] = value;
}
}
UInt getNonAnchorRefForListX(int i,int j, int list_no) const
{
AOF(i< MAX_VIEWS && i >=0)
if (list_no==0){
#if JMVM_ONLY // JVT-Y042
if ( non_anchor_single_loop_decoding_flag )
AOF(j<m_num_non_anchor_refs_sld_list0[i] && j >=0)
else
AOF(j<m_num_non_anchor_refs_list0[i] && j >=0)
#else
AOF(j<m_num_non_anchor_refs_list0[i] && j >=0)
#endif
return m_non_anchor_ref_list0[i][j];
}
else if (list_no==1){
#if JMVM_ONLY // JVT-Y042
if ( non_anchor_single_loop_decoding_flag )
AOF(j<m_num_non_anchor_refs_sld_list1[i] && j >=0)
else
AOF(j<m_num_non_anchor_refs_list1[i] && j >=0)
#else
AOF(j<m_num_non_anchor_refs_list1[i] && j >=0)
#endif
return m_non_anchor_ref_list1[i][j];
} else
return 0;
}
//JVT-V043
UInt getNumRefsForListX(UInt uiCurrViewId, ListIdx eListIdx, Bool bAnchor) const
{
if ( bAnchor )
return getNumAnchorRefsForListX( uiCurrViewId, eListIdx);
else
return getNumNonAnchorRefsForListX (uiCurrViewId, eListIdx);
}
UInt getViewIDByViewIndex (UInt uiCurrViewId, UInt uiViewIdx, ListIdx eListIdx, Bool bAnchor)
{
if( bAnchor )
return getAnchorRefForListX( uiCurrViewId, uiViewIdx, eListIdx);
else
return getNonAnchorRefForListX (uiCurrViewId, uiViewIdx, eListIdx);
}
//JVT-V054
Void setViewCodingOrder(std::string cViewOrder)
{
char ch[400];
char *pch;
UInt count = 0;
memcpy(ch, cViewOrder.c_str(), cViewOrder.size());
ch[cViewOrder.size()] = '\0';
pch = strtok(ch, "-");
while(pch != NULL)
{
m_uiViewCodingOrder[count++] = atoi(pch);
pch = strtok(NULL, "-");
}
}
int m_num_views_minus_1; // ue(v)
int *m_num_anchor_refs_list0; // ue(v)
int *m_num_anchor_refs_list1; // ue(v)
int *m_num_non_anchor_refs_list0; // ue(v)
int *m_num_non_anchor_refs_list1; // ue(v)
#if JMVM_ONLY // JVT-Y042
int *m_num_non_anchor_refs_sld_list0; // ue(v)
int *m_num_non_anchor_refs_sld_list1; // ue(v)
#endif
UInt **m_anchor_ref_list0; // u(v)
UInt **m_anchor_ref_list1; // u(v)
UInt **m_non_anchor_ref_list0; // u(v)
UInt **m_non_anchor_ref_list1; // u(v)
//JVT-V054
UInt *m_uiViewCodingOrder;
Bool m_bInitDone;
#if JMVM_ONLY // JVT-W081
UInt m_uiMotionSkipEnable;
// UInt getMotionSkipMode() const { return m_uiMotionSkipEnable;}
// Void setMotionSkipMode(UInt motionSkipFlag) {m_uiMotionSkipEnable=motionSkipFlag;}
Bool non_anchor_single_loop_decoding_flag; // JVT-Y042
#endif // JVT-W081
};
class H264AVCCOMMONLIB_API SequenceParameterSet
{
protected:
typedef struct
{
Bool bValid;
UInt uiMaxMbPerSec;
UInt uiMaxFrameSize;
UInt uiMaxDPBSizeX2;
UInt uiMaxBitRate;
UInt uiMaxCPBSize;
UInt uiMaxVMvRange;
UInt uiMinComprRatio;
UInt uiMaxMvsPer2Mb;
} LevelLimit;
SequenceParameterSet ();
virtual ~SequenceParameterSet ();
public:
SpsMvcExtension *SpsMVC;
SpsMvcExtension * getSpsMVC() const {return SpsMVC;};
static ErrVal create ( SequenceParameterSet*& rpcSPS );
ErrVal destroy ();
static UInt getLevelIdc ( UInt uiMbY, UInt uiMbX, UInt uiOutFreq, UInt uiMvRange, UInt uiNumRefPic );
UInt getMaxDPBSize () const;
NalUnitType getNalUnitType () const { return m_eNalUnitType; }
UInt getLayerId () const { return m_uiLayerId; }
Profile getProfileIdc () const { return m_eProfileIdc;}
Bool getConstrainedSet0Flag () const { return m_bConstrainedSet0Flag; }
Bool getConstrainedSet1Flag () const { return m_bConstrainedSet1Flag; }
Bool getConstrainedSet2Flag () const { return m_bConstrainedSet2Flag; }
Bool getConstrainedSet3Flag () const { return m_bConstrainedSet3Flag; }
UInt getLevelIdc () const { return m_uiLevelIdc;}
UInt getSeqParameterSetId () const { return m_uiSeqParameterSetId;}
Bool getSeqScalingMatrixPresentFlag () const { return m_bSeqScalingMatrixPresentFlag; }
const ScalingMatrix& getSeqScalingMatrix () const { return m_cSeqScalingMatrix; }
UInt getLog2MaxFrameNum () const { return m_uiLog2MaxFrameNum;}
UInt getPicOrderCntType () const { return m_uiPicOrderCntType;}
UInt getLog2MaxPicOrderCntLsb () const { return m_uiLog2MaxPicOrderCntLsb;}
Bool getDeltaPicOrderAlwaysZeroFlag () const { return m_bDeltaPicOrderAlwaysZeroFlag;}
Int getOffsetForNonRefPic () const { return m_iOffsetForNonRefPic;}
Int getOffsetForTopToBottomField () const { return m_iOffsetForTopToBottomField;}
UInt getNumRefFramesInPicOrderCntCycle () const { return m_uiNumRefFramesInPicOrderCntCycle; }
Int getOffsetForRefFrame ( UInt ui ) const { return m_aiOffsetForRefFrame[ui]; }
UInt getNumRefFrames () const { return m_uiNumRefFrames;}
Bool getRequiredFrameNumUpdateBehaviourFlag() const { return m_bRequiredFrameNumUpdateBehaviourFlag;}
UInt getFrameWidthInMbs () const { return m_uiFrameWidthInMbs;}
UInt getFrameHeightInMbs () const { return m_uiFrameHeightInMbs;}
Bool getDirect8x8InferenceFlag () const { return m_bDirect8x8InferenceFlag;}
UInt getMbInFrame () const { return m_uiFrameWidthInMbs * m_uiFrameHeightInMbs;}
Bool getInitState () const { return m_bInitDone; }
Bool getFGSCodingMode () const { return m_bFGSCodingMode; }
UInt getGroupingSize () const { return m_uiGroupingSize; }
UInt getPosVect ( UInt uiNum ) const { return m_uiPosVect[uiNum]; }
Void setNalUnitType ( NalUnitType e ) { m_eNalUnitType = e; }
Void setLayerId ( UInt ui ) { m_uiLayerId = ui; }
Void setProfileIdc ( Profile e ) { m_eProfileIdc = e; }
Void setConstrainedSet0Flag ( Bool b ) { m_bConstrainedSet0Flag = b; }
Void setConstrainedSet1Flag ( Bool b ) { m_bConstrainedSet1Flag = b; }
Void setConstrainedSet2Flag ( Bool b ) { m_bConstrainedSet2Flag = b; }
Void setConstrainedSet3Flag ( Bool b ) { m_bConstrainedSet3Flag = b; }
Void setLevelIdc ( UInt ui ) { m_uiLevelIdc = ui; }
Void setSeqParameterSetId ( UInt ui ) { m_uiSeqParameterSetId = ui; }
Void setSeqScalingMatrixPresentFlag ( Bool b ) { m_bSeqScalingMatrixPresentFlag = b; }
Void setLog2MaxFrameNum ( UInt ui ) { m_uiLog2MaxFrameNum = ui; }
Void setPicOrderCntType ( UInt ui ) { m_uiPicOrderCntType = ui; }
Void setLog2MaxPicOrderCntLsb ( UInt ui ) { m_uiLog2MaxPicOrderCntLsb = ui; }
Void setDeltaPicOrderAlwaysZeroFlag ( Bool b ) { m_bDeltaPicOrderAlwaysZeroFlag = b; }
Void setOffsetForNonRefPic ( Int i ) { m_iOffsetForNonRefPic = i; }
Void setOffsetForTopToBottomField ( Int i ) { m_iOffsetForTopToBottomField = i; }
Void setNumRefFramesInPicOrderCntCycle ( UInt ui ) { m_uiNumRefFramesInPicOrderCntCycle = ui; }
Void setOffsetForRefFrame ( UInt ui,
Int i ) { m_aiOffsetForRefFrame[ui] = i; }
Void setNumRefFrames ( UInt ui ) { m_uiNumRefFrames = ui; }
Void setRequiredFrameNumUpdateBehaviourFlag( Bool b ) { m_bRequiredFrameNumUpdateBehaviourFlag = b; }
Void setFrameWidthInMbs ( UInt ui ) { m_uiFrameWidthInMbs = ui; }
Void setFrameHeightInMbs ( UInt ui ) { m_uiFrameHeightInMbs = ui; }
Void setDirect8x8InferenceFlag ( Bool b ) { m_bDirect8x8InferenceFlag = b; }
Void setInitState ( Bool b ) { m_bInitDone = b; }
Void setFGSCodingMode ( Bool b ) { m_bFGSCodingMode = b; }
Void setGroupingSize ( UInt ui ) { m_uiGroupingSize = ui; }
Void setPosVect ( UInt uiNum, UInt uiVect) { m_uiPosVect[uiNum] = uiVect; }
ErrVal write( HeaderSymbolWriteIf* pcWriteIf ) const;
ErrVal read ( HeaderSymbolReadIf* pcReadIf,
NalUnitType eNalUnitType );
// TMM_ESS {
Void setResizeParameters ( const ResizeParameters * params );
Void getResizeParameters ( ResizeParameters * params ) const;
Void setExtendedSpatialScalability ( UInt ui ) { m_uiExtendedSpatialScalability = ui ;}
UInt getExtendedSpatialScalability () const { return m_uiExtendedSpatialScalability; }
// TMM_ESS }
UInt getCurrentViewId() {return m_uiCurrentViewId;}
Void setCurrentViewId(UInt ui) {m_uiCurrentViewId = ui;}
protected:
static ErrVal xGetLevelLimit ( const LevelLimit*& rpcLevelLimit,
Int iLevelIdc );
ErrVal xReadFrext ( HeaderSymbolReadIf* pcReadIf );
ErrVal xWriteFrext ( HeaderSymbolWriteIf* pcWriteIf ) const;
protected:
Bool m_bInitDone;
NalUnitType m_eNalUnitType;
UInt m_uiLayerId;
Profile m_eProfileIdc;
Bool m_bConstrainedSet0Flag;
Bool m_bConstrainedSet1Flag;
Bool m_bConstrainedSet2Flag;
Bool m_bConstrainedSet3Flag;
UInt m_uiLevelIdc;
UInt m_uiSeqParameterSetId;
Bool m_bSeqScalingMatrixPresentFlag;
ScalingMatrix m_cSeqScalingMatrix;
UInt m_uiLog2MaxFrameNum;
UInt m_uiPicOrderCntType;
UInt m_uiLog2MaxPicOrderCntLsb;
Bool m_bDeltaPicOrderAlwaysZeroFlag;
Int m_iOffsetForNonRefPic;
Int m_iOffsetForTopToBottomField;
UInt m_uiNumRefFramesInPicOrderCntCycle;
Int m_aiOffsetForRefFrame[64];
UInt m_uiNumRefFrames;
Bool m_bRequiredFrameNumUpdateBehaviourFlag;
UInt m_uiFrameWidthInMbs;
UInt m_uiFrameHeightInMbs;
Bool m_bDirect8x8InferenceFlag;
// TMM_ESS {
UInt m_uiExtendedSpatialScalability;
UInt m_uiChromaPhaseXPlus1;
UInt m_uiChromaPhaseYPlus1;
Int m_iScaledBaseLeftOffset;
Int m_iScaledBaseTopOffset;
Int m_iScaledBaseRightOffset;
Int m_iScaledBaseBottomOffset;
// TMM_ESS }
// VW {
UInt m_auiNumRefIdxUpdateActiveDefault[2];
// VW }
Bool m_bFGSCodingMode;
UInt m_uiGroupingSize;
UInt m_uiPosVect[16];
UInt m_uiCurrentViewId;
private:
static const LevelLimit m_aLevelLimit[52];
};
H264AVC_NAMESPACE_END
#endif // !defined(AFX_SEQUENCEPARAMETERSET_H__66281283_5BFB_429A_B722_6DDE7A11D086__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -