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

📄 umc_vc1_enc_deblocking.h

📁 audio-video-codecs.rar语音编解码器
💻 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 + -