📄 mbdatactrl.h
字号:
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 + -