📄 umc_vc1_enc_deblocking.h
字号:
/* /////////////////////////////////////////////////////////////////////////////
//
// INTEL CORPORATION PROPRIETARY INFORMATION
// This software is supplied under the terms of a license agreement or
// nondisclosure agreement with Intel Corporation and may not be copied
// or disclosed except in accordance with the terms of that agreement.
// Copyright(c) 2007 Intel Corporation. All Rights Reserved.
//
//
// VC-1 (VC1) encoder, functions for deblocking
//
*/
#include "umc_defs.h"
#if defined (UMC_ENABLE_VC1_VIDEO_ENCODER)
#include "umc_vc1_enc_mb.h"
#include "umc_vc1_common_defs.h"
namespace UMC_VC1_ENCODER
{
void GetInternalBlockEdge(VC1EncoderMBInfo *pCur,
eTransformType* BlockTSTypes,
Ipp8u& YFlagUp, Ipp8u& YFlagBot, Ipp8u& UFlagH, Ipp8u& VFlagH,
Ipp8u& YFlagL, Ipp8u& YFlagR, Ipp8u& UFlagV, Ipp8u& VFlagV);
typedef void (*fGetExternalEdge)(VC1EncoderMBInfo *pPred, VC1EncoderMBInfo *pCur,bool bVer,
Ipp8u& YFlag, Ipp8u& UFlag, Ipp8u& VFlag);
typedef void (*fGetInternalEdge)(VC1EncoderMBInfo *pCur, Ipp8u& YFlagV, Ipp8u& YFlagH);
extern fGetExternalEdge GetExternalEdge[2][2]; //4 MV, VTS
extern fGetInternalEdge GetInternalEdge[2][2]; //4 MV, VTS
//------------------------------ VS Transforming -----------------------------------------//
inline void DeblockingVSTLumaHor(Ipp8u *pMB, Ipp32u step, Ipp32s quant,Ipp32u innerEdge, Ipp32u bottomExEge, Ipp32u addTopEdge, Ipp32u addBottomEdge)
{
IPP_STAT_START_TIME(m_IppStat->IppStartTime);
_own_FilterDeblockingLuma_HorEdge_VC1_8u_C1IR (pMB+8*step, quant, step,innerEdge);
_own_FilterDeblockingLuma_HorEdge_VC1_8u_C1IR (pMB+16*step, quant, step,bottomExEge);
_own_FilterDeblockingLuma_HorEdge_VC1_8u_C1IR (pMB+4*step, quant, step,addTopEdge);
_own_FilterDeblockingLuma_HorEdge_VC1_8u_C1IR (pMB+12*step, quant, step,addBottomEdge);
IPP_STAT_END_TIME(m_IppStat->IppStartTime, m_IppStat->IppEndTime, m_IppStat->IppTotalTime);
}
inline void DeblockingVSTChromaHor(Ipp8u *pMB, Ipp32u step, Ipp32s quant,Ipp32u bottomExEge, Ipp32u addEdge)
{
IPP_STAT_START_TIME(m_IppStat->IppStartTime);
_own_FilterDeblockingChroma_HorEdge_VC1_8u_C1IR(pMB+8*step, quant, step,bottomExEge);
_own_FilterDeblockingChroma_HorEdge_VC1_8u_C1IR(pMB+4*step, quant, step,addEdge);
IPP_STAT_END_TIME(m_IppStat->IppStartTime, m_IppStat->IppEndTime, m_IppStat->IppTotalTime);
}
inline void DeblockingVSTLumaVer(Ipp8u *pMB, Ipp32u step, Ipp32s quant,Ipp32u innerEdge, Ipp32u rightExEge,Ipp32u addLeftEdge, Ipp32u addRigthEdge)
{
IPP_STAT_START_TIME(m_IppStat->IppStartTime);
_own_FilterDeblockingLuma_VerEdge_VC1_8u_C1IR ( pMB+8 , quant,step,innerEdge);
_own_FilterDeblockingLuma_VerEdge_VC1_8u_C1IR ( pMB+16 ,quant,step,rightExEge);
_own_FilterDeblockingLuma_VerEdge_VC1_8u_C1IR ( pMB+4 ,quant,step,addLeftEdge);
_own_FilterDeblockingLuma_VerEdge_VC1_8u_C1IR ( pMB+12 ,quant,step,addRigthEdge);
IPP_STAT_END_TIME(m_IppStat->IppStartTime, m_IppStat->IppEndTime, m_IppStat->IppTotalTime);
}
inline void DeblockingVSTChromaVer(Ipp8u *pMB, Ipp32u step, Ipp32s quant,Ipp32u rigthtExEge, Ipp32u addEdge)
{
IPP_STAT_START_TIME(m_IppStat->IppStartTime);
_own_FilterDeblockingChroma_HorEdge_VC1_8u_C1IR(pMB+8, quant,step, rigthtExEge);
_own_FilterDeblockingChroma_HorEdge_VC1_8u_C1IR(pMB+4, quant,step, addEdge);
IPP_STAT_END_TIME(m_IppStat->IppStartTime, m_IppStat->IppEndTime, m_IppStat->IppTotalTime);
}
// last
inline void DeblockingVSTLumaHorLast(Ipp8u *pMB, Ipp32u step, Ipp32s quant,Ipp32u innerEdge, Ipp32u /*bottomExEge*/, Ipp32u addTopEdge, Ipp32u addBottomEdge)
{
IPP_STAT_START_TIME(m_IppStat->IppStartTime);
_own_FilterDeblockingLuma_HorEdge_VC1_8u_C1IR (pMB+8*step, quant,step,innerEdge);
_own_FilterDeblockingLuma_HorEdge_VC1_8u_C1IR (pMB+4*step, quant,step, addTopEdge);
_own_FilterDeblockingLuma_HorEdge_VC1_8u_C1IR (pMB+12*step, quant,step, addBottomEdge);
IPP_STAT_END_TIME(m_IppStat->IppStartTime, m_IppStat->IppEndTime, m_IppStat->IppTotalTime);
}
inline void DeblockingVSTChromaHorLast(Ipp8u *pMB, Ipp32u step, Ipp32s quant,Ipp32u /*bottomExEge*/, Ipp32u addEdge)
{
IPP_STAT_START_TIME(m_IppStat->IppStartTime);
_own_FilterDeblockingChroma_HorEdge_VC1_8u_C1IR(pMB+4*step,quant,step,addEdge);
IPP_STAT_END_TIME(m_IppStat->IppStartTime, m_IppStat->IppEndTime, m_IppStat->IppTotalTime);
}
inline void DeblockingVSTLumaVerLast(Ipp8u *pMB, Ipp32u step, Ipp32s quant,Ipp32u innerEdge, Ipp32u /*rightExEge*/,Ipp32u addLeftEdge, Ipp32u addRigthEdge)
{
IPP_STAT_START_TIME(m_IppStat->IppStartTime);
_own_FilterDeblockingLuma_VerEdge_VC1_8u_C1IR ( pMB+8 , quant,step,innerEdge);
_own_FilterDeblockingLuma_VerEdge_VC1_8u_C1IR ( pMB+4 ,quant,step,addLeftEdge);
_own_FilterDeblockingLuma_VerEdge_VC1_8u_C1IR ( pMB+12 ,quant,step,addRigthEdge);
IPP_STAT_END_TIME(m_IppStat->IppStartTime, m_IppStat->IppEndTime, m_IppStat->IppTotalTime);
}
inline void DeblockingVSTChromaVerLast(Ipp8u *pMB, Ipp32u step, Ipp32s quant,Ipp32u /*rigthtExEge*/, Ipp32u addEdge)
{
IPP_STAT_START_TIME(m_IppStat->IppStartTime);
_own_FilterDeblockingChroma_HorEdge_VC1_8u_C1IR(pMB+4,quant,step,addEdge);
IPP_STAT_END_TIME(m_IppStat->IppStartTime, m_IppStat->IppEndTime, m_IppStat->IppTotalTime);
}
//------------------------------ NO VS Transforming -----------------------------------------//
inline void DeblockingNOVSTLumaHor(Ipp8u *pMB, Ipp32u step, Ipp32s quant,Ipp32u innerEdge, Ipp32u bottomExEge, Ipp32u /*addTopEdge*/, Ipp32u /*addBottomEdge*/)
{
IPP_STAT_START_TIME(m_IppStat->IppStartTime);
_own_FilterDeblockingLuma_HorEdge_VC1_8u_C1IR (pMB+8*step, quant,step,innerEdge);
_own_FilterDeblockingLuma_HorEdge_VC1_8u_C1IR (pMB+16*step, quant,step, bottomExEge);
IPP_STAT_END_TIME(m_IppStat->IppStartTime, m_IppStat->IppEndTime, m_IppStat->IppTotalTime);
}
inline void DeblockingNOVSTChromaHor(Ipp8u *pMB, Ipp32u step, Ipp32s quant,Ipp32u bottomExEge, Ipp32u /*addEdge*/)
{
IPP_STAT_START_TIME(m_IppStat->IppStartTime);
_own_FilterDeblockingChroma_HorEdge_VC1_8u_C1IR(pMB+8*step, quant,step,bottomExEge);
IPP_STAT_END_TIME(m_IppStat->IppStartTime, m_IppStat->IppEndTime, m_IppStat->IppTotalTime);
}
inline void DeblockingNOVSTLumaVer(Ipp8u *pMB, Ipp32u step, Ipp32s quant,Ipp32u innerEdge, Ipp32u rightExEge,Ipp32u /*addLeftEdge*/, Ipp32u /*addRigthEdge*/)
{
IPP_STAT_START_TIME(m_IppStat->IppStartTime);
_own_FilterDeblockingLuma_VerEdge_VC1_8u_C1IR ( pMB+8 , quant,step,innerEdge);
_own_FilterDeblockingLuma_VerEdge_VC1_8u_C1IR ( pMB+16, quant,step,rightExEge);
IPP_STAT_END_TIME(m_IppStat->IppStartTime, m_IppStat->IppEndTime, m_IppStat->IppTotalTime);
}
inline void DeblockingNOVSTChromaVer(Ipp8u *pMB, Ipp32u step, Ipp32s quant,Ipp32u rigthtExEge, Ipp32u /*addEdge*/)
{
IPP_STAT_START_TIME(m_IppStat->IppStartTime);
_own_FilterDeblockingChroma_VerEdge_VC1_8u_C1IR(pMB+8, quant,step, rigthtExEge);
IPP_STAT_END_TIME(m_IppStat->IppStartTime, m_IppStat->IppEndTime, m_IppStat->IppTotalTime);
}
// last
inline void DeblockingNOVSTLumaHorLast(Ipp8u *pMB, Ipp32u step, Ipp32s quant,Ipp32u innerEdge, Ipp32u /*bottomExEge*/, Ipp32u /*addTopEdge*/, Ipp32u /*addBottomEdge*/)
{
IPP_STAT_START_TIME(m_IppStat->IppStartTime);
_own_FilterDeblockingLuma_HorEdge_VC1_8u_C1IR (pMB+8*step, quant,step, innerEdge);
IPP_STAT_END_TIME(m_IppStat->IppStartTime, m_IppStat->IppEndTime, m_IppStat->IppTotalTime);
}
inline void DeblockingNOVSTChromaHorLast(Ipp8u* /*pMB*/, Ipp32u /*step*/, Ipp32s /*quant*/,Ipp32u /*bottomExEge*/, Ipp32u /*addEdge*/)
{
;
}
inline void DeblockingNOVSTLumaVerLast(Ipp8u *pMB, Ipp32u step, Ipp32s quant,Ipp32u innerEdge, Ipp32u /*rightExEge*/,Ipp32u /*addLeftEdge*/, Ipp32u /*addRigthEdge*/)
{
IPP_STAT_START_TIME(m_IppStat->IppStartTime);
_own_FilterDeblockingLuma_VerEdge_VC1_8u_C1IR ( pMB+8 , quant,step,innerEdge);
IPP_STAT_END_TIME(m_IppStat->IppStartTime, m_IppStat->IppEndTime, m_IppStat->IppTotalTime);
}
inline void DeblockingNOVSTChromaVerLast(Ipp8u* /*pMB*/, Ipp32u /*step*/, Ipp32s /*quant*/,Ipp32u /*rigthtExEge*/, Ipp32u /*addEdge*/)
{
}
typedef void (*fDeblockingLumaHor) (Ipp8u *pMB, Ipp32u step, Ipp32s quant,Ipp32u innerEdge, Ipp32u bottomExEge, Ipp32u addTopEdge, Ipp32u addBottomEdge);
typedef void (*fDeblockingChromaHor) (Ipp8u *pMB, Ipp32u step, Ipp32s quant,Ipp32u bottomExEge, Ipp32u addEdge);
typedef void (*fDeblockingVSTLumaVer) (Ipp8u *pMB, Ipp32u step, Ipp32s quant,Ipp32u innerEdge, Ipp32u rightExEge,Ipp32u addLeftEdge, Ipp32u addRigthEdge);
typedef void (*fDeblockingVSTChromaVer)(Ipp8u *pMB, Ipp32u step, Ipp32s quant,Ipp32u rigthtExEge, Ipp32u addEdge);
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -