📄 mbmvdata.h
字号:
m_acRefPic[ m_auiBlk2Part[ eParIdx ] ].setFrame( pcRefFrame );
}
const RefPic& getRefPic( ParIdx8x8 eParIdx ) const { return m_acRefPic[ m_auiBlk2Part[ eParIdx ] ]; }
const RefPic& getRefPic( LumaIdx cIdx ) const { return m_acRefPic[ m_auiBlk2Part[ cIdx.b4x4() ] ]; }
Void getMvRef ( Mv& rcMv, SChar& rscRef, LumaIdx cIdx ) const;
Void getMv3D ( Mv3D& rcMv3D, LumaIdx cIdx ) const;
Void getMvRefNeighbour( Mv& rcMv, SChar& rscRef, LumaIdx cIdx ) const;
Void getMv3DNeighbour ( Mv3D& rcMv3D, LumaIdx cIdx ) const;
ErrVal save( FILE* pFile );
ErrVal load( FILE* pFile );
ErrVal upsampleMotion( const MbMotionData& rcMbMvData, Par8x8 ePar8x8 );
// TMM_ESS {
ErrVal upsampleMotionNonDyad( SChar* pscBl4x4RefIdx , Mv* acBl4x4Mv , ResizeParameters* pcParameters );
ErrVal upsampleMotionNonDyad( SChar* scBl8x8RefIdx , Mv* acBl4x4Mv , ResizeParameters* pcParameters , Mv deltaMv[4] );
// TMM_ESS }
private:
Bool xGetMotPredFlag ( UInt uiPos ) const
{
return ( ( m_usMotPredFlags & (1 << uiPos) ) >> uiPos ? true : false );
}
Void xSetMotPredFlag ( Bool bFlag, UInt uiPos )
{
AOF(uiPos<16);
m_usMotPredFlags &= ~(UShort)(1<<uiPos);
ROFVS( bFlag );
m_usMotPredFlags += (1<<uiPos);
}
private:
MbMotionData( const MbMotionData& ) {}
private:
static const UInt m_auiBlk2Part[16];
public:
SChar m_ascRefIdx[4];
RefPic m_acRefPic [4];
UShort m_usMotPredFlags;
};
#if defined( WIN32 )
# pragma warning( default: 4251 )
#endif
__inline
Void MbMotionData::setRefIdx( SChar scRefIdx )
{
m_ascRefIdx[ 0 ] = m_ascRefIdx[ 1 ] = m_ascRefIdx[ 2 ] = m_ascRefIdx[ 3 ] = scRefIdx;
}
__inline
Void MbMotionData::setRefIdx( SChar scRefIdx, ParIdx16x8 eParIdx )
{
m_ascRefIdx[ m_auiBlk2Part[eParIdx] ] = scRefIdx;
m_ascRefIdx[ m_auiBlk2Part[eParIdx]+1 ] = scRefIdx;
}
__inline
Void MbMotionData::setRefIdx( SChar scRefIdx, ParIdx8x16 eParIdx )
{
m_ascRefIdx[ m_auiBlk2Part[eParIdx] ] = scRefIdx;
m_ascRefIdx[ m_auiBlk2Part[eParIdx]+2 ] = scRefIdx;
}
__inline Void MbMotionData::setRefIdx( SChar scRefIdx, ParIdx8x8 eParIdx )
{
m_ascRefIdx[ m_auiBlk2Part[eParIdx] ] = scRefIdx;
}
__inline Void MbMvData::setAllMv( const Mv& rcMv )
{
const register Mv cMv = rcMv;
m_acMv[ 0 ] = cMv;
m_acMv[ 1 ] = cMv;
m_acMv[ 2 ] = cMv;
m_acMv[ 3 ] = cMv;
m_acMv[ 4 ] = cMv;
m_acMv[ 5 ] = cMv;
m_acMv[ 6 ] = cMv;
m_acMv[ 7 ] = cMv;
m_acMv[ 8 ] = cMv;
m_acMv[ 9 ] = cMv;
m_acMv[ 10 ] = cMv;
m_acMv[ 11 ] = cMv;
m_acMv[ 12 ] = cMv;
m_acMv[ 13 ] = cMv;
m_acMv[ 14 ] = cMv;
m_acMv[ 15 ] = cMv;
}
__inline Void MbMvData::setAllMv( const Mv& rcMv, ParIdx16x8 eParIdx )
{
Mv* pcMv = m_acMv + eParIdx;
const register Mv cMv = rcMv;
pcMv[ 0 ] = cMv;
pcMv[ 1 ] = cMv;
pcMv[ 2 ] = cMv;
pcMv[ 3 ] = cMv;
pcMv[ 4 ] = cMv;
pcMv[ 5 ] = cMv;
pcMv[ 6 ] = cMv;
pcMv[ 7 ] = cMv;
}
__inline Void MbMvData::setAllMv( const Mv& rcMv, ParIdx8x16 eParIdx )
{
Mv* pcMv = m_acMv + eParIdx;
const register Mv cMv = rcMv;
pcMv[ 0 ] = cMv;
pcMv[ 1 ] = cMv;
pcMv[ 4 ] = cMv;
pcMv[ 5 ] = cMv;
pcMv[ 8 ] = cMv;
pcMv[ 9 ] = cMv;
pcMv[ 12 ] = cMv;
pcMv[ 13 ] = cMv;
}
__inline Void MbMvData::setAllMv( const Mv& rcMv, ParIdx8x8 eParIdx )
{
Mv* pcMv = m_acMv + eParIdx;
const register Mv cMv = rcMv;
pcMv[ 0 ] = cMv;
pcMv[ 1 ] = cMv;
pcMv[ 4 ] = cMv;
pcMv[ 5 ] = cMv;
}
__inline Void MbMvData::setAllMv( const Mv& rcMv, ParIdx8x8 eParIdx, SParIdx8x4 eSParIdx )
{
Mv* pcMv = m_acMv + eParIdx + eSParIdx;
const register Mv cMv = rcMv;
pcMv[ 0 ] = cMv;
pcMv[ 1 ] = cMv;
}
__inline Void MbMvData::setAllMv( const Mv& rcMv, ParIdx8x8 eParIdx, SParIdx4x8 eSParIdx )
{
Mv* pcMv = m_acMv + eParIdx + eSParIdx;
const register Mv cMv = rcMv;
pcMv[ 0 ] = cMv;
pcMv[ 4 ] = cMv;
}
__inline Void MbMvData::setAllMv( const Mv& rcMv, ParIdx8x8 eParIdx, SParIdx4x4 eSParIdx )
{
Mv* pcMv = m_acMv + eParIdx + eSParIdx;
pcMv[ 0 ] = rcMv;
}
__inline Void MbMotionData::setMotPredFlag( Bool bFlag )
{
xSetMotPredFlag( bFlag, 0 );
xSetMotPredFlag( bFlag, 1 );
xSetMotPredFlag( bFlag, 2 );
xSetMotPredFlag( bFlag, 3 );
xSetMotPredFlag( bFlag, 4 );
xSetMotPredFlag( bFlag, 5 );
xSetMotPredFlag( bFlag, 6 );
xSetMotPredFlag( bFlag, 7 );
xSetMotPredFlag( bFlag, 8 );
xSetMotPredFlag( bFlag, 9 );
xSetMotPredFlag( bFlag, 10 );
xSetMotPredFlag( bFlag, 11 );
xSetMotPredFlag( bFlag, 12 );
xSetMotPredFlag( bFlag, 13 );
xSetMotPredFlag( bFlag, 14 );
xSetMotPredFlag( bFlag, 15 );
}
__inline Void MbMotionData::setMotPredFlag( Bool bFlag, ParIdx16x8 eParIdx )
{
UInt ui = eParIdx;
xSetMotPredFlag( bFlag, ui+ 0 );
xSetMotPredFlag( bFlag, ui+ 1 );
xSetMotPredFlag( bFlag, ui+ 2 );
xSetMotPredFlag( bFlag, ui+ 3 );
xSetMotPredFlag( bFlag, ui+ 4 );
xSetMotPredFlag( bFlag, ui+ 5 );
xSetMotPredFlag( bFlag, ui+ 6 );
xSetMotPredFlag( bFlag, ui+ 7 );
}
__inline Void MbMotionData::setMotPredFlag( Bool bFlag, ParIdx8x16 eParIdx )
{
UInt ui = eParIdx;
xSetMotPredFlag( bFlag, ui+ 0 );
xSetMotPredFlag( bFlag, ui+ 1 );
xSetMotPredFlag( bFlag, ui+ 4 );
xSetMotPredFlag( bFlag, ui+ 5 );
xSetMotPredFlag( bFlag, ui+ 8 );
xSetMotPredFlag( bFlag, ui+ 9 );
xSetMotPredFlag( bFlag, ui+12 );
xSetMotPredFlag( bFlag, ui+13 );
}
__inline Void MbMotionData::setMotPredFlag( Bool bFlag, ParIdx8x8 eParIdx )
{
UInt ui = eParIdx;
xSetMotPredFlag( bFlag, ui+ 0 );
xSetMotPredFlag( bFlag, ui+ 1 );
xSetMotPredFlag( bFlag, ui+ 4 );
xSetMotPredFlag( bFlag, ui+ 5 );
}
__inline Void MbMotionData::setMotPredFlag( Bool bFlag, LumaIdx cIdx )
{
xSetMotPredFlag( bFlag, cIdx.b4x4() );
}
__inline Void MbMvData::setMv( const Mv& rcMv, LumaIdx cIdx )
{
m_acMv[ cIdx.b4x4() ] = rcMv;
}
__inline Void MbMotionData::getMvRef( Mv& rcMv, SChar& rscRef, LumaIdx cIdx ) const
{
rcMv = m_acMv[ cIdx.b4x4() ];
rscRef = m_ascRefIdx[ m_auiBlk2Part[ cIdx.b4x4() ] ];
}
__inline Void MbMotionData::getMv3D( Mv3D& rcMv3D, LumaIdx cIdx ) const
{
rcMv3D.set( m_acMv[ cIdx.b4x4() ], m_ascRefIdx[ m_auiBlk2Part[ cIdx.b4x4()] ] );
}
__inline Void MbMotionData::getMvRefNeighbour( Mv& rcMv, SChar& rscRef, LumaIdx cIdx ) const
{
rcMv = m_acMv[ cIdx.b4x4() ];
rscRef = m_ascRefIdx[ m_auiBlk2Part[ cIdx.b4x4()] ];
}
__inline Void MbMotionData::getMv3DNeighbour( Mv3D& rcMv3D, LumaIdx cIdx ) const
{
rcMv3D.set( m_acMv[ cIdx.b4x4() ], m_ascRefIdx[ m_auiBlk2Part[ cIdx.b4x4()] ] );
}
H264AVC_NAMESPACE_END
#endif // !defined(AFX_MBMVDATA_H__06960F25_0FB8_4A65_935D_B06282FFDF6E__INCLUDED_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -