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

📄 framemng.h

📁 JMVM MPEG MVC/3DAV 测试平台 国际通用标准
💻 H
📖 第 1 页 / 共 2 页
字号:
                {
                  return iter;
                }
              }
              return end();
            }

            Void setRefFrameListFGSMVCView( RefPicList<Frame*>& rcRefFrameList, 
                                                 SliceHeader& rcSH, enum ListIdx eListIdx ) // memory 
            {
              Bool bAnchor =rcSH.getAnchorPicFlag() ;
              UInt n = rcSH.getSPS().getSpsMVC()->getNumRefsForListX(rcSH.getViewId(), eListIdx, bAnchor);
                      
              for( UInt ui = 0; ui < n; ui++)
              {
                for( iterator iter = begin(); iter != end(); iter++ )
                {
                  FrameUnit* pcFU = (*iter);
                  if( pcFU->isUsed() && !pcFU->getBaseRep() ) //JVT-S036 lsj 
                  {
                    if((/*pcFU->getFGSPicBuffer() || */pcFU->getPicBuffer()) && 
                      rcSH.getSPS().getSpsMVC()->getViewIDByViewIndex(rcSH.getViewId(), ui, eListIdx, bAnchor)== pcFU->getFrame().getViewId() 
					&& rcSH.getPoc() == pcFU->getFrame().getPOC() && pcFU->getFrame().getInterViewFlag()) //JVT-W056   
											
                    {
                      rcRefFrameList.add(  & pcFU->getFrame()  ); //				  rcRefFrameList.add(  &( pcFU->getFGSPicBuffer() ? pcFU->getFGSFrame() : pcFU->getFrame() ) );
                    }
                  }
                }
              }        
            }

            Void setRefFrameListFGSMVCViewNonRef(RefPicList<Frame*>& rcRefFrameList, 
                                                 SliceHeader& rcSH, enum ListIdx eListIdx ) //memory 
            {
              Bool bAnchor =rcSH.getAnchorPicFlag() ;
              UInt n = rcSH.getSPS().getSpsMVC()->getNumRefsForListX(rcSH.getViewId(), eListIdx, bAnchor);

              for( UInt ui = 0; ui < n; ui++)
              {
                for( iterator iter = begin(); iter != end(); iter++ )
                {
                  FrameUnit* pcFU = (*iter);
                  if((/*pcFU->getFGSPicBuffer() || */pcFU->getPicBuffer()) && 
                     rcSH.getSPS().getSpsMVC()->getViewIDByViewIndex(rcSH.getViewId(), ui, eListIdx, bAnchor) == pcFU->getFrame().getViewId() 
                     && rcSH.getPoc() == pcFU->getFrame().getPOC() ) 
                  {
                    //rcRefFrameList.add(  &( pcFU->getFGSPicBuffer() ? pcFU->getFGSFrame() : pcFU->getFrame() ) );
                    rcRefFrameList.add(  & pcFU->getFrame() ); // memory
                  }
                }
              }        
            }
//JVT-V043  }}
          };

  typedef FUList::iterator          FUIter;
  typedef FUList::reverse_iterator  FURIter;

  class FrameUnitBuffer
  {
  public:
    FrameUnitBuffer();
    ~FrameUnitBuffer();
    ErrVal init( YuvBufferCtrl* pcYuvFullPelBufferCtrl, YuvBufferCtrl* pcYuvHalfPelBufferCtrl );
    ErrVal uninit();
    ErrVal getFrameUnit( FrameUnit*& rpcFrameUnit );
    ErrVal releaseFrameUnit( FrameUnit* pcFrameUnit );
    YuvBufferCtrl* getYuvFullPelBufferCtrl()  { return m_pcYuvFullPelBufferCtrl;  }

  protected:
    FUList            m_cFreeList;
    YuvBufferCtrl*    m_pcYuvFullPelBufferCtrl;
    YuvBufferCtrl*    m_pcYuvHalfPelBufferCtrl;
  };

  class PocOrder
  {
  public:
    Int operator() ( const Frame* pcFrame1, const Frame* pcFrame2 )
    {
      return pcFrame1->getPOC() < pcFrame2->getPOC();
    }
  };

protected:
  FrameMng              ();
	virtual ~FrameMng     ();

public:

          FrameUnit*  getCurrentFrameUnit   () { return m_pcCurrentFrameUnit; }
          IntFrame*   getRefinementIntFrame () { return m_pcRefinementIntFrame; }
          IntFrame*   getRefinementIntFrame2() { return m_pcRefinementIntFrameSpatial; }
          IntFrame*   getPredictionIntFrame()  { return m_pcPredictionIntFrame; }
  
          ErrVal			xSlidingWindowUpdateBase    ( UInt mCurrFrameNum); //JVT-S036 
          ErrVal			xMMCOUpdateBase				( SliceHeader* rcSH ); //JVT-S036 

          ErrVal initSlice( SliceHeader *rcSH );
          ErrVal initSPS( const SequenceParameterSet& rcSPS );


          ErrVal initFrame( SliceHeader& rcSH, PicBuffer* pcPicBuffer );

  
          ErrVal initPic( SliceHeader& rcSH );

          static  ErrVal  create          ( FrameMng*& rpcFrameMng );
          static  UInt    MaxRefFrames    ( UInt uiLevel, UInt uiNumMbs );
          ErrVal storePicture( const SliceHeader& rcSH );

//  ErrVal storeFGSPicture( PicBuffer* pcPicBuffer );
  ErrVal setRefPicLists( SliceHeader& rcSH, Bool bDoNotRemap );
  ErrVal  destroy                 ();
  ErrVal  init                    ( YuvBufferCtrl* pcYuvFullPelBufferCtrl, YuvBufferCtrl* pcYuvHalfPelBufferCtrl = NULL, QuarterPelFilter* pcQuarterPelFilter = NULL );
  ErrVal  uninit                  ();
  ErrVal  RefreshOrederedPOCList  (); //JVT-S036 
  ErrVal  setPicBufferLists       ( PicBufferList& rcPicBufferOutputList, PicBufferList& rcPicBufferUnusedList );
  ErrVal  outputAll               ();
  ErrVal  getRecYuvBuffer         ( YuvPicBuffer*& rpcRecYuvBuffer );

  FrameUnit*        getReconstructedFrameUnit( Int iPoc );

  YuvBufferCtrl*    getYuvFullPelBufferCtrl() { return m_cFrameUnitBuffer.getYuvFullPelBufferCtrl();  }
  //void    SetCodeAsVFrameFlag(const bool flag) { m_codeAsVFrame = flag; }
  //bool    CodeAsVFrameP() const {return m_codeAsVFrame; }


protected:
  ErrVal            xCheckMissingFrameNums( SliceHeader& rcSH );

  ErrVal            xSetReferenceLists          ( SliceHeader& rcSH );
  ErrVal            xSetReferenceListsMVC       ( SliceHeader& rcSH );
  ErrVal            xClearListsIDR              ( const SliceHeader& rcSH );
  ErrVal            xManageMemory               ( const SliceHeader& rcSH );
  ErrVal            xSlidingWindowUpdate        ();
  ErrVal            xStoreCurrentPicture        ( const SliceHeader& rcSH );                // MMCO 6
  ErrVal            xReferenceListRemapping     ( SliceHeader& rcSH, ListIdx eListIdx );
  ErrVal            xMmcoMarkShortTermAsUnused( const FrameUnit* pcCurrFrameUnit, UInt uiDiffOfPicNums );
  ErrVal            xMmcoMarkShortTermAsUnusedBase( const FrameUnit* pcCurrFrameUnit, UInt uiDiffOfPicNums ); //JVT-S036 

          ErrVal            xSetOutputListMVC              ( FrameUnit* pcFrameUnit, UInt uiNumOfViews );

          private:
          UInt              xSortPocOrderedList                 ();
          ErrVal            xSetInitialReferenceListPFrame      ( SliceHeader& rcSH );
          ErrVal            xSetInitialReferenceListBFrame      ( SliceHeader& rcSH );
          __inline ErrVal   xRemoveFromRefList( FUList& rcFUList, FUIter iter );
          __inline ErrVal   xRemoveFromRefList( FUList& rcFUList );
          __inline ErrVal   xRemove           ( FrameUnit* pcFrameUnit );
          __inline ErrVal   xAddToFreeList    ( FrameUnit* pcFrameUnit );
          __inline ErrVal   xAddToFreeList    ( FUList& rcFUList );
          __inline Bool     xFindAndErase     ( FUList& rcFUList, FrameUnit* pcFrameUnit );

          ErrVal            xMmcoMarkShortTermAsUnusedMVC( const FrameUnit* pcCurrFrameUnit, UInt uiDiffOfPicNums, UInt uiCurrViewId );
          ErrVal            xDumpRefList( ListIdx eListIdx, SliceHeader& rcSH );
          ErrVal            xSetBFrameListMVC ( SliceHeader& rcSH); 
          ErrVal            xSetPFrameListMVC ( SliceHeader& rcSH); 
private:
  Bool              m_bInitDone;
  QuarterPelFilter* m_pcQuarterPelFilter;
  UInt              m_uiPrecedingRefFrameNum;

  PicBufferList     m_cPicBufferOutputList;
  PicBufferList     m_cPicBufferUnusedList;
  FrameUnit*        m_pcOriginalFrameUnit;
  FrameUnit*        m_pcCurrentFrameUnit;
  FrameUnit*		m_pcCurrentFrameUnitBase; //JVT-S036 

  RefPicList<Frame*>     m_cPocOrderedFrameList;

  Int               m_iEntriesInDPB;
  Int               m_iMaxEntriesinDPB;

  UInt              m_uiNumRefFrames;
  UInt              m_uiMaxFrameNumCurr;
  UInt              m_uiMaxFrameNumPrev;
  FUList            m_cShortTermList;
  FUList            m_cNonRefList;
  FUList            m_cOrderedPOCList;

  FrameUnitBuffer   m_cFrameUnitBuffer;

  static UInt       m_uiDBPMemory[256];
  IntFrame*         m_pcRefinementIntFrame;
  IntFrame*         m_pcRefinementIntFrameSpatial;
  IntFrame*         m_pcPredictionIntFrame;
  Bool                m_codeAsVFrame;
  UInt              m_uiLastViewId;
        };

#if defined( WIN32 )
# pragma warning( default: 4251 )
#endif



H264AVC_NAMESPACE_END


#endif // !defined(AFX_FRAMEMNG_H__FCFD4695_2766_4D95_BFD2_B2496827BC03__INCLUDED_)

⌨️ 快捷键说明

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