📄 umc_h264_deblock.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) 2004 - 2005 Intel Corporation. All Rights Reserved.//#ifndef DCDBLOCK_H__#define DCDBLOCK_H__#include "umc_h264_pub.h"#include "umc_h264_core_enc.h"// filter functionsnamespace UMC{// Function to filter all vertical or horizontal edges of a 16x16 MB,// luma (16 4 pixel edges) and chroma (4 edges per plane).typedef void T_EdgeFilter( Ipp8u *pY, // pointer to upper left pixel of luma Ipp8u *pV, // pointer to upper left pixel of chroma V Ipp8u *pU, // pointer to upper left pixel of chroma U Ipp32u uPitch, const Ipp8u *pClip, // array of 24 clip values for for the 16 luma edges // in top to bottom (V) or left to right (H) order // and the 4 chroma edges (2 clip values per edge). // clip==0xff indicates no filter const Ipp8u *alpha, // array of 4 (outer,inner,outer chroma,inner chroma) const Ipp8u *beta, // array of 4 (outer,inner,outer chroma,inner chroma) bool bOuterStrong, // nonzero if use strong filter for outer (MB) edge bool bIsVerticalEdge // vertical or horizontal);T_EdgeFilter C_EdgeFilter;class DeblockingFilter{public: // Constructor DeblockingFilter(); // Destructor ~DeblockingFilter(); // Initialize frame pointers to start of frame info and pixels void Start_Frame( T_EncodeMBData *pMBInfoBase, // for macroblock 0 const SliceData *pSliceDataBase, // for slice 0 Ipp32u uWidth, Ipp32u uHeight, Ipp32u uPitch, Ipp8u *pYPlane, // start of frame luma data Ipp8u *pVPlane, Ipp8u *pUPlane ); // Apply deblocking filter to a segment of a frame of YUV12 format. // Begins at specified frame position, filters specified number of 16x16 macroblocks. Status DeblockSegment(Ipp32u uFirstMB, Ipp32u uLumaOffset, Ipp32u uNumMB);private: // frame-independent variables Ipp32u m_uWidth; Ipp32u m_uHeight; Ipp32u m_uPitch; Ipp32u m_uNumMBPerRow; Ipp32u m_uTotalNumMB; // 24 clip level buffer for 16 luma V or H edges and 4 // chroma V or H edges (2 levels per chroma edge). // For weak filter set to 0xff to signal do not // filter the edge. Ipp8u *m_pBlockClipValAllocated; Ipp8u *m_pBlockClipVal; // 8-byte aligned // The following are required to accomodate the differing MB Info definitions // for the decoder and encoder. //Ipp32u m_MBInfoSize; //Ipp32u m_MBInfo_Type_Offset; // type must be Ipp8u //Ipp32u m_MBInfo_cbp_Offset; // cbp must be Ipp32u //Ipp32u m_MBInfo_QP_Offset; // QP must be Ipp8u //Ipp32u m_MBInfo_mvdelta_Offset; // mvdelta must be Ipp32u //Ipp32u m_SliceID_Offset; // type must be Ipp16u // variables initialized each frame //const Ipp8u *m_pMBInfoBase; T_EncodeMBData *m_pMBInfoBase; Ipp8u *m_pYPlane; // start of planes Ipp8u *m_pVPlane; Ipp8u *m_pUPlane; const SliceData *m_pFilterSliceData; // processor-specific filter function pointer //T_EdgeFilter *m_pEdgeFilter;};} //namespace UMC#endif // DCDBLOCK_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -