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

📄 sliceheaderbase.h

📁 jsvm开发代码包括抽样,编码,抽取,解码等一系列功能,可以做工具或研究用
💻 H
📖 第 1 页 / 共 4 页
字号:

    ErrVal write( HeaderSymbolWriteIf*  pcWriteIf,  UInt uiNumber ) const;
    ErrVal read ( HeaderSymbolReadIf*   pcReadIf,   UInt uiNumber );

//TMM_WP
    ErrVal setPredWeightsAndFlags( const Int iLumaScale, 
                                   const Int iChromaScale, 
                                   const Double(*pafWeight)[3], 
                                   Double fDiscardThr );

    ErrVal setOffsets(  const Double(*pafOffsets)[3] );
//TMM_WP
    ErrVal copy ( const PredWeightTable& rcPredWeightTable );
  };

  class H264AVCCOMMONLIB_API DeblockingFilterParameter
  {
  public:
    DeblockingFilterParameter( UInt uiDisableDeblockingFilterIdc  = 0,
                               Int  iSliceAlphaC0Offset           = 0,
                               Int  iSliceBetaOffset              = 0 )
    : m_uiDisableDeblockingFilterIdc( uiDisableDeblockingFilterIdc )
    , m_iSliceAlphaC0Offset         ( iSliceAlphaC0Offset )
    , m_iSliceBetaOffset            ( iSliceBetaOffset )
    {
    }

   	ErrVal write( HeaderSymbolWriteIf*  pcWriteIf, bool enhancedLayerFlag ) const; //V032, added enhanced layer indicator
    ErrVal read ( HeaderSymbolReadIf*   pcReadIf, bool enhancedLayerFlag  ); //V032, added enhanced layer indicator

    DeblockingFilterParameter* getCopy()  const
    {
      return new DeblockingFilterParameter( m_uiDisableDeblockingFilterIdc, m_iSliceAlphaC0Offset, m_iSliceBetaOffset );
    }
    
    Void setDisableDeblockingFilterIdc( UInt uiDisableDeblockingFilterIdc ) { m_uiDisableDeblockingFilterIdc = uiDisableDeblockingFilterIdc; }
    Void setSliceAlphaC0Offset        ( Int  iSliceAlphaC0Offset )          { AOT_DBG( 1 & iSliceAlphaC0Offset);  m_iSliceAlphaC0Offset = iSliceAlphaC0Offset; }
    Void setSliceBetaOffset           ( Int  iSliceBetaOffset )             { AOT_DBG( 1 & iSliceBetaOffset);     m_iSliceBetaOffset = iSliceBetaOffset; }

    UInt getDisableDeblockingFilterIdc()  const { return m_uiDisableDeblockingFilterIdc;}
    Int  getSliceAlphaC0Offset()          const { return m_iSliceAlphaC0Offset;}
    Int  getSliceBetaOffset()             const { return m_iSliceBetaOffset;}

  private:
    UInt m_uiDisableDeblockingFilterIdc;
    Int  m_iSliceAlphaC0Offset;
    Int  m_iSliceBetaOffset;
  };

  class H264AVCCOMMONLIB_API DeblockingFilterParameterScalable
  {
  public:
    DeblockingFilterParameterScalable( )
    {
    }
    DeblockingFilterParameterScalable( const DeblockingFilterParameter& cDeblockingFilterParameter, 
                                       const DeblockingFilterParameter& cInterlayerDeblockingFilterParameter)
    : m_cDeblockingFilterParameter              ( cDeblockingFilterParameter )
    , m_cInterlayerDeblockingFilterParameter    ( cInterlayerDeblockingFilterParameter )
    {
    }
    DeblockingFilterParameterScalable* getCopy()  const
    {
      return new DeblockingFilterParameterScalable( m_cDeblockingFilterParameter, m_cInterlayerDeblockingFilterParameter );
    }
    // Access to the parameters
    DeblockingFilterParameter& getDeblockingFilterParameter       ()                 {return m_cDeblockingFilterParameter;}
    const DeblockingFilterParameter& getDeblockingFilterParameter () const           {return m_cDeblockingFilterParameter;}
    
    DeblockingFilterParameter& getInterlayerDeblockingFilterParameter       ()       {return m_cInterlayerDeblockingFilterParameter;}
    const DeblockingFilterParameter& getInterlayerDeblockingFilterParameter () const {return m_cInterlayerDeblockingFilterParameter;}

    // Access to the "normal" parameters
    UInt getDisableDeblockingFilterIdc()  const { return getDeblockingFilterParameter().getDisableDeblockingFilterIdc();}
    Int  getSliceAlphaC0Offset()          const { return getDeblockingFilterParameter().getSliceAlphaC0Offset();}
    Int  getSliceBetaOffset()             const { return getDeblockingFilterParameter().getSliceBetaOffset();}
  private:
    DeblockingFilterParameter m_cDeblockingFilterParameter;
    DeblockingFilterParameter m_cInterlayerDeblockingFilterParameter;
  };
  


protected:
	SliceHeaderBase         ( const SequenceParameterSet& rcSPS,
                            const PictureParameterSet&  rcPPS );
	virtual ~SliceHeaderBase();


public:

  SliceHeaderBase& operator = ( const SliceHeaderBase& rcSHB );
  
  ErrVal    read    ( HeaderSymbolReadIf*   pcReadIf  );
  ErrVal    write   ( HeaderSymbolWriteIf*  pcWriteIf ) const;


  //===== get properties =====
  Bool                              isH264AVCCompatible           ()  const { return ( m_eNalUnitType == NAL_UNIT_CODED_SLICE  ||
                                                                                       m_eNalUnitType == NAL_UNIT_CODED_SLICE_IDR ); }
  Bool                              isIdrNalUnit                  ()  const { return ( m_eNalUnitType == NAL_UNIT_CODED_SLICE_IDR || 
                                                                                       m_eNalUnitType == NAL_UNIT_CODED_SLICE_IDR_SCALABLE ); }
  Int                               getPicQp                      ()  const { return m_rcPPS.getPicInitQp() + getSliceQpDelta(); }
	UInt                              getMbInPic                    ()  const { const UInt uiMbInPic = m_rcSPS.getMbInFrame(); return getFieldPicFlag() ? uiMbInPic/2 : uiMbInPic; }
  
  //===== get parameter sets =====
  const PictureParameterSet&        getPPS                        ()  const { return m_rcPPS; }
  const SequenceParameterSet&       getSPS                        ()  const { return m_rcSPS; }


  //===== get parameters =====
  NalRefIdc                         getNalRefIdc                  ()  const { return m_eNalRefIdc; }
	Bool                              isNalRefIdc                   ()  const { return m_eNalRefIdc != NAL_REF_IDC_PRIORITY_LOWEST; }
  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; }
  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]; }
 //TMM_INTERLACE{
  const PredWeight&                 getPredWeight        (ListIdx e,
                                                          UInt   ui,
														  Bool   bFieldFlag)  const { return ( (bFieldFlag) ? (m_acPredWeightTable[e].get((ui-1)/2)) : (m_acPredWeightTable[e].get(ui-1)) ); }
  PredWeight&                       getPredWeight        (ListIdx e,
                                                          UInt   ui,
														  Bool   bFieldFlag) { return ( (bFieldFlag) ? (m_acPredWeightTable[e].get((ui-1)/2)) : (m_acPredWeightTable[e].get(ui-1)) ); }
//TMM_INTERLACE}
//TMM_WP
  ErrVal copyWeightedPred(PredWeightTable& pcPredWeightTable, UInt uiLumaLogWeightDenom,
                          UInt uiChromaWeightDenom, ListIdx eListIdx, Bool bDecoder);
//TMM_WP

  Bool                              getAVCRewriteFlag ()              const { return m_bAVCRewriteFlag; }
  Bool                              getDirectSpatialMvPredFlag    ()  const { return m_bDirectSpatialMvPredFlag; }
  Bool                              getUseBasePredictionFlag      ()  const { return m_bUseBasePredictionFlag; }
  Bool                              getStoreBaseRepresentationFlag()  const { return m_bStoreBaseRepresentationFlag; }
  UInt                              getBaseLayerId                ()  const { if (m_bLayerBaseFlag) return MSYS_UINT_MAX; 
                                                                                               else return m_uiBaseLayerId; }
  UInt                              getBaseQualityLevel           ()  const { return m_uiBaseQualityLevel; }
  Bool                              getAdaptivePredictionFlag     ()  const { return m_bAdaptivePredictionFlag; }
  //JVT-U160 LMI {
  Bool                              getAdaptiveResPredictionFlag  ()  const { return m_bAdaptiveResPredictionFlag; }
  Bool                              getAdaptiveMotPredictionFlag  ()  const { return m_bAdaptiveMotPredictionFlag; }
  Bool                              getDefaultBaseModeFlag         ()  const { return m_bDefaultBaseModeFlag; }
  Bool                              getDefaultMotPredictionFlag   ()  const { return m_bDefaultMotPredictionFlag; }
  //JVT-U160 LMI }
  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;
// TMM_EC_FIX
  if(uiGopSize==1)
	{
		m_cMmmcoBuffer.set(uiCount++, Mmco(MMCO_SHORT_TERM_UNUSED,1));
		m_cMmmcoBuffer.set(uiCount++,Mmco(MMCO_END));
		return ;
	}

	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 DeblockingFilterParameterScalable&  getDeblockingFilterParameterScalable  ()  const { return m_cDeblockingFilterParameterScalable; }
  DeblockingFilterParameterScalable&        getDeblockingFilterParameterScalable  ()        { return m_cDeblockingFilterParameterScalable; }

  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)
  { 
    AOT( ui > AR_FGS_MAX_BASE_WEIGHT );
    m_uiBaseWeightZeroBaseBlock = (ui <= 1) ? 0 : ui; 
  }
  Void  setBaseWeightZeroBaseCoeff(UInt ui)
  {
    AOT( ui > AR_FGS_MAX_BASE_WEIGHT );
    m_uiBaseWeightZeroBaseCoeff = (ui <= 1) ? 0 : 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;  }
  

  UInt                              getSimplePriorityId			  ()	    { return m_uiPriorityId;}
  Bool                              getDiscardableFlag			  ()		{ return m_bDiscardableFlag;}

  //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
//JVT-T054{
  Void                              setBaseFragmentOrder          ( UInt        ui )  { m_uiBaseFragmentOrder               = ui; }           
//JVT-T054}
  Bool                              getFieldPicFlag               ()  const         { return m_bFieldPicFlag; }
  Bool                              getBottomFieldFlag            ()  const         { return m_bBottomFieldFlag; }
	UInt                              getPicOrderCntLsb             ()  const         { return m_uiPicOrderCntLsb; }
  Int                               getDeltaPicOrderCntBottom     ()  const         { return m_iDeltaPicOrderCntBottom; }
  Int                               getDeltaPicOrderCnt           ( UInt ui ) const {return m_aiDeltaPicOrderCnt[ui]; }
	PicType                           getPicType                    ()  const { return ( ! m_bFieldPicFlag ? FRAME : m_bBottomFieldFlag ? BOT_FIELD : TOP_FIELD ); }
  // JVT-U116 LMI {
  // JVT-V088 LMI
  Bool                              getTl0PicIdxPresentFlag     () const  { return m_bTl0PicIdxPresentFlag; }
  UInt                              getTl0PicIdx                () const  { return m_uiTl0PicIdx; }
  Bool                              getTl0PicIdxResetFlag       () const  { return m_bTl0PicIdxResetFlag; }
  UInt                              getPrevTl0PicIdx            () const  { return m_uiPrevTl0PicIdx; }
  UInt                              getNumTl0PicIdxUpdate       () const  { return m_uiNumTl0PicIdxUpdate; }
  Void                              setTl0PicIdxPresentFlag     ( Bool b ){ m_bTl0PicIdxPresentFlag = b; }
  Void                              setTl0PicIdx                ( UInt ui )  { m_uiTl0PicIdx = ui; }           
  Void                              setTl0PicIdxResetFlag       ( Bool b )   { m_bTl0PicIdxResetFlag = b; }
  Void                              setPrevTl0PicIdx            ( UInt ui )  { m_uiPrevTl0PicIdx = ui; }
  Void                              setNumTl0PicIdxUpdate       ( UInt ui )   { m_uiNumTl0PicIdxUpdate = ui; }

// JVT-U116 LMI }

  Bool                              getBaseLayerUsesConstrainedIntraPred() const { return m_bBaseLayerUsesConstrainedIntraPred; }
  UInt                              getRedundantPicCnt             ()       { return m_uiRedundantPicCnt; } // JVT-Q054 Red. Picture
  //JVT-U106 Behaviour at slice boundaries{
  Bool                              getCIUFlag()                  {   return m_bCIUFlag;}  
  void                              setCIUFlag                    ( Bool b ) {   m_bCIUFlag=b;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -