⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sequenceparameterset.h

📁 JMVM MPEG MVC/3DAV 测试平台 国际通用标准
💻 H
📖 第 1 页 / 共 2 页
字号:
        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 + -