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

📄 mbdatactrl.h

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

  ErrVal        xUninitVBLUpsampleData( ResizeParameters*   pcParameters,
                                        UInt                uiConfig );

  ErrVal xInitVBLPelOrig( MbDataCtrl*         pcBaseMbDataCtrl,
                             UInt                uiConfig,
                             Int                 iMbX,
                             Int                 iMbY,
                             Int                 iScaledBaseOrigX,
                             Int                 iScaledBaseOrigY,  
                             Int                 aiPelOrig[2],
                             UInt&               ruiBLMbOffset);

protected:
  DynBuf<Bool>        m_cMbProcessed;
  DynBuf<DFPScalable*>        m_cpDFPBuffer;
  MbTransformCoeffs*  m_pcMbTCoeffs;
  MbMotionData*       m_apcMbMotionData[2];
  MbMotionData*       m_apcMbMotionDataBase[2];
  MbMvData*           m_apcMbMvdData[2];
  MbData*             m_pcMbData;
  MbDataAccess*       m_pcMbDataAccess;

  UChar               m_ucLastMbQp;
  UInt                m_uiMbStride;
  UInt                m_uiMbOffset;
  Int                 m_iMbPerLine;
  Int                 m_iMbPerColumn;
  UInt                m_uiSize;
  UInt                m_uiMbProcessed;
  UInt                m_uiSliceId;
	Int                 m_iColocatedOffset;
  ProcessingState     m_eProcessingState;
  const MbDataCtrl*   m_pcMbDataCtrl0L1;
  Bool                m_bUseTopField;
  Bool                m_bPicCodedField;
  Bool                m_bInitDone;
  Bool                m_bDirect8x8InferenceFlag;
  Bool                m_bBuildInterlacePred;
  SliceHeader*        m_pcSliceHeader;
  UChar*        m_pacFgsBQMbQP;
  UInt*         m_pauiFgsBQMbCbp;
  UInt*         m_pauiFgsBQBCBP;
  Bool*         m_pabFgsBQ8x8Trafo;
  

};



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

  Void          clear               ();
  ErrVal        init                ( SliceHeader*  pcSliceHeader,
                                      MbDataCtrl*   pcMbDataCtrl,
                                      Double        dLambda );
  ErrVal        init                ( SliceHeader*  pcSliceHeader );

  Double        getLambda           ()  { return  m_dLambda;            }
	SliceHeader*  getSliceHeader      ( PicType ePicType = FRAME ) { return ( ePicType==BOT_FIELD ) ? m_pcSliceHeaderBot : m_pcSliceHeader;	}

  MbDataCtrl*   getMbDataCtrl       ()  { return  m_pcMbDataCtrl;       }
  Bool          isInitialized       ()  { return  m_pcMbDataCtrl != 0;  }

  ErrVal        setMbDataCtrl       ( MbDataCtrl* pcMbDataCtrl )
  {
    m_pcMbDataCtrl = pcMbDataCtrl;
    return Err::m_nOK;
  }

  ErrVal        setSliceHeader      ( SliceHeader* pcSliceHeader,
		                                  PicType      ePicType = FRAME )
  {
		if( ePicType==BOT_FIELD )
		{
			m_pcSliceHeaderBot = pcSliceHeader;
		}
		else
  {
    m_pcSliceHeader = pcSliceHeader;
		}

    return Err::m_nOK;
  }

  ErrVal        activateMbDataCtrlForQpAndCbp( Bool bNormalMbDataCtrl )
  {
    // restore the state first
    if( m_bIsNormalMbDataCtrl != bNormalMbDataCtrl )
    {
      switchFGSLayerQpAndCbp();
    }
    m_bIsNormalMbDataCtrl = bNormalMbDataCtrl;

    return Err::m_nOK;
  }

  ErrVal        saveMbDataQpAndCbp()
  {
    // should not happen, not designed so general
    ROT( ! m_bIsNormalMbDataCtrl );
    storeFGSLayerQpAndCbp();
    return Err::m_nOK;
  }

  IntFrame*     getBaseLayerRec     ()  { return  m_pcBaseLayerRec;     }
  IntFrame*     getBaseLayerSbb     ()  { return  m_pcBaseLayerSbb;     }
  MbDataCtrl*   getBaseLayerCtrl    ()  { return  m_pcBaseLayerCtrl;    }
  MbDataCtrl*   getBaseLayerCtrlField ()  { return  m_pcBaseLayerCtrlField;    }
  ControlData*  getBaseCtrlData     ()  { return  m_pcBaseCtrlData;     }
  UInt          getUseBLMotion      ()  { return  m_uiUseBLMotion;      }
  Void          setBaseLayerRec     ( IntFrame*   pcBaseLayerRec  )   { m_pcBaseLayerRec    = pcBaseLayerRec;   }
  Void          setBaseLayerSbb     ( IntFrame*   pcBaseLayerSbb  )   { m_pcBaseLayerSbb    = pcBaseLayerSbb;   }
  Void          setBaseLayerCtrl    ( MbDataCtrl* pcBaseLayerCtrl )   { m_pcBaseLayerCtrl   = pcBaseLayerCtrl;  }
  Void          setBaseLayerCtrlField ( MbDataCtrl* pcBaseLayerCtrl )   { m_pcBaseLayerCtrlField = pcBaseLayerCtrl;  }
  Void          setBaseCtrlData     ( ControlData*pcBaseCtrlData  )   { m_pcBaseCtrlData    = pcBaseCtrlData;   }
  Void          setUseBLMotion      ( UInt        uiUseBLMotion   )   { m_uiUseBLMotion     = uiUseBLMotion;    }

  Void          setLambda           ( Double d ) { m_dLambda = d; }

  Void          setScalingFactor    ( Double  d ) { m_dScalingFactor      = d; }
  Double        getScalingFactor    ()  const     { return m_dScalingFactor;      }

  Void          setBaseLayer        ( UInt  uiBaseLayerId, UInt  uiBaseLayerIdMotion )
  {
    m_uiBaseLayerId = uiBaseLayerId; m_uiBaseLayerIdMotion = uiBaseLayerIdMotion; 
  }

  UInt          getBaseLayerId    () { return m_uiBaseLayerId; }
  UInt          getBaseLayerIdMotion()  { return m_uiBaseLayerIdMotion; }

// TMM_ESS {
  Void          setSpatialScalabilityType ( int iSST )   { m_iSpatialScalabilityType = iSST; }
  Int           getSpatialScalabilityType ()             { return m_iSpatialScalabilityType; }
  Void          setSpatialScalability ( Bool b )         { m_bSpatialScalability = b; }
  Bool          getSpatialScalability ()                 { return m_bSpatialScalability; }
// TMM_ESS }


  RefFrameList& getPrdFrameList     ( UInt uiList )   { return m_acPrdFrameList          [uiList]; }
  
  ErrVal        initFGSData             ( UInt uiNumMb );
  ErrVal        uninitFGSData           ();
  ErrVal        storeFGSLayerQpAndCbp   ();
  ErrVal        switchFGSLayerQpAndCbp  ();

  ErrVal        initBQData            ( UInt uiNumMb );
  ErrVal        uninitBQData          ();
  ErrVal        storeBQLayerQpAndCbp  ();
  ErrVal        switchBQLayerQpAndCbp ();

private:
  MbDataCtrl*   m_pcMbDataCtrl;
  SliceHeader*  m_pcSliceHeader;
  SliceHeader*  m_pcSliceHeaderBot;

  Double        m_dLambda;

  IntFrame*     m_pcBaseLayerRec;
  IntFrame*     m_pcBaseLayerSbb;
  MbDataCtrl*   m_pcBaseLayerCtrl;
  MbDataCtrl*   m_pcBaseLayerCtrlField;
  ControlData*  m_pcBaseCtrlData;
  UInt          m_uiUseBLMotion;

  Double        m_dScalingFactor;

  UInt          m_uiBaseLayerId;
  UInt          m_uiBaseLayerIdMotion;

  Int           m_iSpatialScalabilityType; // TMM_ESS
  Bool          m_bSpatialScalability;     // TMM_ESS  

  UChar*        m_pacFGSMbQP;
  UInt*         m_pauiFGSMbCbp;
  Bool*         m_pabFGS8x8Trafo;
  Bool          m_bIsNormalMbDataCtrl;

  //===== base quality data (CBP, QP, 8x8flag) =====
  UChar*        m_pacBQMbQP;
  UInt*         m_pauiBQMbCbp;
  Bool*         m_pabBQ8x8Trafo;
  MbMode*       m_paeBQMbMode;
  UShort*       m_pusBQFwdBwd;
  MbMotionData* m_paacBQMotionData[2];

  RefFrameList  m_acPrdFrameList[2];

};






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



H264AVC_NAMESPACE_END


#endif // !defined(AFX_MBDATACTRL_H__50D2B462_28AB_46CA_86AC_35502BD296BC__INCLUDED_)

⌨️ 快捷键说明

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