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

📄 umc_h264_deblock.h

📁 这是在PCA下的基于IPP库示例代码例子,在网上下了IPP的库之后,设置相关参数就可以编译该代码.
💻 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 + -