📄 ipubuffermanager.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 + -