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

📄 sequencestructure.h

📁 JMVM MPEG MVC/3DAV 测试平台 国际通用标准
💻 H
📖 第 1 页 / 共 2 页
字号:
                                                UInt&           ruiNumberOfParts );
  static  ErrVal  extractPart                 ( const String&   rcString,
                                                String&         rcPartString,
                                                UInt&           ruiStartPos );

private:
  static const String sm_cSetOfTypes;
  static const String sm_cSetOfDigits;
  static const String sm_cSetOfPartStart;
};




class SequenceStructure  
{
private:

  class FrameDescriptor
  {
  public:
    FrameDescriptor             ();
    ~FrameDescriptor            ();

    Void    uninit              ();
    ErrVal  init                ( const String&   rcString,
                                  UInt            uiLastAnchorFrameNumIncrement );
    ErrVal  reduceFramesSkipped ( UInt            uiNotCoded );

    ErrVal  check               ()  const;
    Bool    isIDR               ()  const;
    Bool    isSkipped           ()  const;
    Bool    isCoded             ()  const;
    Bool    isReference         ()  const;
    Bool    isAnchor            ()  const;
    Bool    isKeyPicture        ()  const;
    UInt    getIncrement        ()  const;
    UInt    getFramesSkipped    ()  const;

    ErrVal  setFrameSpec        ( FrameSpec&      rcFrameSpec,
                                  UInt            uiFrameNumOffset ) const;

  private:
    Bool        m_bInit;
    UChar       m_ucType;
    UInt        m_uiFrameNumIncrement;
    Bool        m_bAnchor;
    UInt        m_uiFramesSkipped;
    Bool        m_bKeyPicture;
    UInt        m_uiLayer;
    MmcoBuffer* m_pcMmcoBuf; 
    RplrBuffer* m_apcRplrBuf[2]; 
  };


  class SequencePart
  {
  public:
    SequencePart                        ()  {}
    virtual ~SequencePart               ()  {}

    virtual Void    uninit              ()                                      = 0;
    virtual ErrVal  init                ( const String& rcString)               = 0;
    virtual Void    reset               ()                                      = 0;
    virtual ErrVal  check               ()                                      = 0;

    virtual Bool    isFirstIDR          ()  const                               = 0;
    virtual UInt    getMinDPBSizeRef    ()  const                               = 0;
    virtual UInt    getMinDPBSizeNonRef ()  const                               = 0;

    virtual Bool    getNextFrameSpec    ( FrameSpec&    rcFrameSpec,
                                          UInt&         uiFrameNumPartOffset )  = 0;
  };


  class FrameSequencePart : public SequencePart
  {
  public:
    FrameSequencePart             ();
    virtual ~FrameSequencePart    ();

    Void    uninit                ();
    ErrVal  init                  ( const String& rcString );
    Void    reset                 ();
    ErrVal  check                 ();

    Bool    isFirstIDR            ()  const;
    UInt    getMinDPBSizeRef      ()  const;
    UInt    getMinDPBSizeNonRef   ()  const;
    
    Bool    getNextFrameSpec      ( FrameSpec&    rcFrameSpec,
                                    UInt&         uiFrameNumPartOffset );

  private:
    Bool              m_bInit;
    FrameDescriptor*  m_pacFrameDescriptor;
    UInt              m_uiNumberOfFrames;
    UInt              m_uiCurrentFrame;
    UInt              m_uiNumberOfRepetitions;
    UInt              m_uiCurrentRepetition;
    UInt              m_uiMinDPBSizeRef;
    UInt              m_uiMinDPBSizeNonRef;
  };


  class GeneralSequencePart : public SequencePart
  {
  public:
    GeneralSequencePart           ();
    virtual ~GeneralSequencePart  ();

    Void    uninit                ();    
    ErrVal  init                  ( const String& rcString );
    Void    reset                 ();
    ErrVal  check                 ();

    Bool    isFirstIDR            ()  const;
    UInt    getMinDPBSizeRef      ()  const;
    UInt    getMinDPBSizeNonRef   ()  const;

    Bool    getNextFrameSpec      ( FrameSpec&    rcFrameSpec,
                                    UInt&         uiFrameNumPartOffset );

  private:
    Bool              m_bInit;
    SequencePart**    m_papcSequencePart;
    UInt              m_uiNumberOfParts;
    UInt              m_uiCurrentPart;
    UInt              m_uiNumberOfRepetitions;
    UInt              m_uiCurrentRepetition;
    UInt              m_uiMinDPBSizeRef;
    UInt              m_uiMinDPBSizeNonRef;
  };


protected:
  SequenceStructure                 ();
  virtual ~SequenceStructure        ();

public:
  static ErrVal     create          ( SequenceStructure*& rpcSequenceStructure );
  ErrVal            destroy         ();
  ErrVal            uninit          ();
  ErrVal            init            ( const String&       rcString,
                                      UInt                uiNumberOfFrames );
  Void              reset           ();
  ErrVal            check           ();

  const FrameSpec&  getFrameSpec    ();
  const FrameSpec&  getNextFrameSpec();
  
  static  Bool      checkString     ( const String&       rcString );
  static  ErrVal    debugOutput     ( const String&       rcString,
                                      UInt                uiNumberOfFrames,
                                      FILE*               pcFile );


  UInt    getNumberOfTotalFrames    ()  const;
  UInt    getNumberOfIDRFrames      ()  const;
  UInt    getNumberOfIntraFrames    ()  const;
  UInt    getNumberOfInterFrames    ()  const;
  UInt    getNumberOfRefFrames      ()  const;
  UInt    getNumberOfCodedFrames    ()  const;
  UInt    getMaxAbsFrameDiffRef     ()  const;
  UInt    getMinDelay               ()  const;
  UInt    getNumTemporalLayers      ()  const;


private:
  Bool    xIsFirstIDR               ();
  Void    xInitParameters           ();
  ErrVal  xGetNextValidFrameSpec    ( FrameSpec&          rcFrameSpec,
                                      UInt                uiTotalFrames );

private:
  Bool                m_bInit;
  UInt                m_uiNumberOfTotalFrames;
  UInt                m_uiNumberOfFramesProcessed;
  UInt                m_uiFrameNumPartOffset;
  SequencePart*       m_pcSequencePart;
  FrameSpec           m_cFrameSpec;
  UInt                m_uiNumIDR;
  UInt                m_uiNumIntra;
  UInt                m_uiNumRef;
  UInt                m_uiNumCoded;
  UInt                m_uiMaxAbsFrameDiffRef;
  UInt                m_uiMinDelay;
  UInt                m_uiMaxLayer;
};



H264AVC_NAMESPACE_END

#endif // !defined(AFX_SEQUENCESTRUCTURE_H__268768B8_4D1D_484A_904E_586985833BAC__INCLUDED_)


⌨️ 快捷键说明

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