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

📄 ipubuffermanager.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:  IpuBufferManager.h
//
//  Class definition for an object to manage multiple buffering
//  in the IDMAC of the IPU.
//
//------------------------------------------------------------------------------

#ifndef __IPUBUFFERMANAGER_H__
#define __IPUBUFFERMANAGER_H__

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


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

#ifdef __cplusplus
extern "C" {
#endif


typedef struct ipuBufferDataStruct
{
    UINT32* pPhysAddr;
    UINT32* pVirtAddr;
} ipuBufferData, *pIpuBufferData;

//------------------------------------------------------------------------------
// Functions
class IpuBufferManager
{
    public:
        IpuBufferManager();
        ~IpuBufferManager();

        BOOL AllocateBuffers(ULONG, ULONG);
        DWORD SetActiveBuffer(UINT32**, UINT32);
        BOOL SetFilledBuffer();
        BOOL DeleteBuffers();
        void ResetBuffers();
        UINT32* GetBufferFilled();

        UINT32 GetMaxBuffers(void);

        void PrintBufferInfo();

    private:
        CRITICAL_SECTION m_csLockBufferQueues;

        DWORD m_iNumBuffers;

        // Queue handles
        HANDLE m_hReadIdleQueue, m_hWriteIdleQueue;
        HANDLE m_hReadBusyQueue, m_hWriteBusyQueue;
        HANDLE m_hReadFilledQueue, m_hWriteFilledQueue;
};

#ifdef __cplusplus
}
#endif

#endif  // __IPUBUFFERMANAGER_H__

⌨️ 快捷键说明

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