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

📄 umc_h264_deblocking_tools.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) 2003-2007 Intel Corporation. All Rights Reserved.
//
//
*/

#ifndef __UMC_H264_DEBLOCKING_TOOLS_H
#define __UMC_H264_DEBLOCKING_TOOLS_H

#include <ippi.h>
#include "vm_event.h"
#include "vm_thread.h"
#include "umc_structures.h"
#include "umc_h264_video_encoder.h"
#include "umc_h264_core_enc.h"

using namespace UMC;
namespace UMC_H264_ENCODER
{

// forward declaration

template <class PixType, class CoeffsType> class H264EncoderThreadedDeblockingTools
{
public:
    // Default constructor
    H264EncoderThreadedDeblockingTools (void);
    // Destructor
    virtual ~H264EncoderThreadedDeblockingTools (void);

    // Initialize object
    Status Initialize(H264CoreEncoder<PixType, CoeffsType> *pEncoder);

    // Deblock slice by two thread
    void DeblockSliceTwoThreaded(Ipp32u uFirstMB, Ipp32u unumMBs,
                                 typename H264CoreEncoder<PixType, CoeffsType>::DeblockingFunction pDeblocking);

    // Deblock slice asynchronous
    void WaitEndOfSlice(void);
    void DeblockSliceAsync(Ipp32u uFirstMB, Ipp32u unumMBs, typename H264CoreEncoder<PixType, CoeffsType>::DeblockingFunction pDeblocking);

    Ipp32u m_nMBAFF;                                            // (Ipp32u) MBAFF flag

    // Release object
    void Release(void);

    // Additional deblocking thread
    static
    Ipp32u VM_THREAD_CALLCONVENTION DeblockSliceSecondThread(void *p);
    static
    Ipp32u VM_THREAD_CALLCONVENTION DeblockSliceAsyncSecondThread(void *p);

    H264CoreEncoder<PixType, CoeffsType> *m_pDecoder;           // (H264CoreEncoder *) pointer to decoder-owner

    vm_thread m_hDeblockingSliceSecondThread;                   // (vm_thread) handle to deblocking slice second thread
    vm_thread m_hDeblockingSliceAsyncSecondThread;              // (vm_thread) handle to deblocking slice second thread

    vm_event m_hBeginFrame;                                     // (vm_event) event to begin of deblocking frame
    vm_event m_hBeginSlice;                                     // (vm_event) event to begin of deblocking slice
    vm_event m_hBeginRow;                                       // (vm_event) event to begin of deblocking row
    vm_event m_hDoneBorder;                                     // (vm_event) event of border macroblock is complete
    vm_event m_hDoneRow;                                        // (vm_event) event of row is complete
    vm_event m_hDoneSlice;                                      // (vm_event) event of slice is complete

    bool m_bQuit;                                               // (bool) quit flag
    Ipp32u m_nFirstMB;                                          // (Ipp32u) first macroblock to deblock
    Ipp32u m_nNumMB;                                            // (Ipp32u) number of macroblock to deblock
    typename H264CoreEncoder<PixType,CoeffsType>::DeblockingFunction m_pDeblocking; // (H264CoreEncoder::DeblockingFunction) pointer to current deblocking function
};

} // namespace UMC_H264_ENCODER

#endif // UMC_H264_DEBLOCKING_TOOLS_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -