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

📄 pfclass.h

📁 freescale i.mx31 BSP CE5.0全部源码
💻 H
字号:
//
//  Copyright (C) 2004, Freescale Semiconductor, Inc. All Rights Reserved
//  THIS SOURCE CODE IS CONFIDENTIAL AND PROPRIETARY AND MAY NOT
//  BE USED OR DISTRIBUTED WITHOUT THE WRITTEN PERMISSION OF
//  Freescale Semiconductor, Inc.
//
//------------------------------------------------------------------------------
//
//  File:  PfClass.h
//
//  Common definitions for IPU's Post-Filtering module
//
//------------------------------------------------------------------------------
#include "IpuModuleInterfaceClass.h"
#include "display_vf.h"
#include "IpuBufferManager.h"

#ifndef __PFCLASS_H__
#define __PFCLASS_H__

//------------------------------------------------------------------------------
// Defines

#define PF_FUNCTION_ENTRY() \
    DEBUGMSG(ZONE_FUNCTION, (TEXT("++%s\r\n"), __WFUNCTION__))
#define PF_FUNCTION_EXIT() \
    DEBUGMSG(ZONE_FUNCTION, (TEXT("--%s\r\n"), __WFUNCTION__))

#ifdef DEBUG
// Debug zone bit positions
#define ZONEID_INIT       0
#define ZONEID_DEINIT     1
#define ZONEID_IOCTL      2
#define ZONEID_DEVICE     3

#define ZONEID_INFO       12
#define ZONEID_FUNCTION   13
#define ZONEID_WARN       14
#define ZONEID_ERROR      15

// Debug zone masks
#define ZONEMASK_INIT     (1<<ZONEID_INIT)
#define ZONEMASK_DEINIT   (1<<ZONEID_DEINIT)
#define ZONEMASK_IOCTL    (1<<ZONEID_IOCTL)
#define ZONEMASK_DEVICE   (1<<ZONEID_DEVICE)

#define ZONEMASK_INFO     (1<<ZONEID_INFO)
#define ZONEMASK_FUNCTION (1<<ZONEID_FUNCTION)
#define ZONEMASK_WARN     (1<<ZONEID_WARN)
#define ZONEMASK_ERROR    (1<<ZONEID_ERROR)

// Debug zone args to DEBUGMSG
#define ZONE_INIT         DEBUGZONE(ZONEID_INIT)
#define ZONE_DEINIT       DEBUGZONE(ZONEID_DEINIT)
#define ZONE_IOCTL        DEBUGZONE(ZONEID_IOCTL)
#define ZONE_DEVICE       DEBUGZONE(ZONEID_DEVICE)

#define ZONE_INFO         DEBUGZONE(ZONEID_INFO)
#define ZONE_FUNCTION     DEBUGZONE(ZONEID_FUNCTION)
#define ZONE_WARN         DEBUGZONE(ZONEID_WARN)
#define ZONE_ERROR        DEBUGZONE(ZONEID_ERROR)
#endif

#define PF_MIN_WIDTH                16
#define PF_MIN_HEIGHT               16
#define PF_MAX_WIDTH                1024
#define PF_MAX_HEIGHT               1024

#define PF_MAX_PAUSE_ROW            63

// Maximum downscaling resize ratio
#define PF_MAX_DOWNSIZE_RATIO       8    

#define PF_EOF_EVENT                L"PF EOF Interrupt"

//------------------------------------------------------------------------------
// Types

#ifdef __cplusplus
extern "C" {
#endif


// IDMAC Channel configuration structure
typedef struct pfIDMACChannelParamsStruct
{
    UINT8                 iFormatCode;
    UINT32                iLineStride;
    UINT8                 iBitsPerPixelCode;
    UINT8                 iPixelBurstCode;
    UINT16                iHeight;
    UINT16                iWidth;
} pfIDMACChannelParams, *pPfIDMACChannelParams;


//------------------------------------------------------------------------------
// Functions
class PfClass : public IpuModuleInterfaceClass
{
    public:
        PfClass();
        ~PfClass();

        BOOL PfConfigure(pPfConfigData);

        BOOL  PfStartChannel(pPfStartParams);

        DWORD PfResume(UINT32 h264_pause_row);

    private:
        BOOL PfInit(void);
        void PfDeinit(void);
        BOOL PfStopChannel(void);
        BOOL PfInitDisplayCharacteristics(void);
        void writeDMAChannelParam(int, int, int, unsigned int);
        void controlledWriteDMAChannelParam(int, int, int, unsigned int);
        void PfIDMACChannelConfig(UINT8, pPfIDMACChannelParams);
        void PfEnable(void);
        void PfDisable(void);
        void PfClearInterruptStatus(DWORD);
        static void PfIntrThread(LPVOID);
        void PfISRLoop(UINT32);

        BOOL m_bConfigured;

        pfMode m_pfMode;

        HANDLE  m_hPfIntrEvent;

        BOOL m_bPauseEnabled;

        // Event variable
        HANDLE  m_hEOFEvent;

        // Thread handles
        HANDLE  m_hPfISRThread;

        // Misc.

        // If TRUE, the PF channel has been 
        // stopped, so we should wait for the current frame to 
        // be completed, and be sure to not re-enable the channel.
        BOOL    m_bRunning;
};

#ifdef __cplusplus
}
#endif

#endif  // __PFCLASS_H__

⌨️ 快捷键说明

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