📄 umc_fifo_buf.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-2005 Intel Corporation. All Rights Reserved.//*/#ifndef __FIFO_BUFFER_CLASS_H__#define __FIFO_BUFFER_CLASS_H__#include <string.h> // for memset function#include "vm_debug.h"#include "vm_types.h"#include "umc_semaphore.h"#include "umc_mutex.h"#include "umc_structures.h"#include "umc_dynamic_cast.h"namespace UMC{ class FifoBuffer { DYNAMIC_CAST_DECL_BASE(FifoBuffer) protected: vm_byte* m_pcBuffers; vm_var32 m_uiBufSize; vm_var32 m_uiBufNum; vm_var32 m_uiHead; vm_var32 m_uiTail; vm_var32 m_uiBufInFifo; Semaphore m_InBufSema; Semaphore m_OutBufSema; Mutex m_AccessMut; bool m_bInBufLocked; bool m_bOutBufLocked; struct sFrmHdr{ vm_var32 uiSize; vm_sizet ullIndex; }; public: FifoBuffer(): m_pcBuffers(NULL), m_uiBufSize(0), m_uiBufNum(0), m_uiHead(0), m_uiTail(0), m_uiBufInFifo(0), m_bInBufLocked(false), m_bOutBufLocked(false) {} ~FifoBuffer(); Status Init( const vm_var32 uiBufSize, const vm_var32 uiBufNum ); Status GetInBuf(vm_byte** ppucHead); Status ReleaseInBuf(vm_var32 uiBufSize, vm_sizet ullIndex); Status GetOutBuf(vm_byte** ppucTail, vm_var32& ruiDataSize, vm_sizet& rullIndex); Status ReleaseOutBuf(); inline vm_var32 GetBufSize(); inline vm_var32 GetFreeBufNum(); inline vm_var32 GetFilledBufNum(); void Close(); Status Reset(); };} // namespace UMCvm_var32UMC::FifoBuffer::GetBufSize(){ return m_uiBufSize - sizeof(vm_var32); }vm_var32UMC::FifoBuffer::GetFreeBufNum(){ m_AccessMut.Lock(); vm_var32 uiRes = m_uiBufNum - m_uiBufInFifo - 2; m_AccessMut.Unlock(); return uiRes;}vm_var32UMC::FifoBuffer::GetFilledBufNum(){ m_AccessMut.Lock(); vm_var32 uiRes = m_uiBufInFifo; m_AccessMut.Unlock(); return uiRes;}#endif // __FIFO_BUFFER_CLASS_H__
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -