📄 syncfifo.h
字号:
/*
* H.264/AVC Streaming Server(HSS), ver 1.0
* Copyright (c) KCC-Eoun Information Center
*
* File: SyncFifo.h
* Description: Declare the fifo buffer.
*
* The Initial Writer of Original Code is Song Chol.Jo
*
* $Log: SyncFifo.h, v $
* Revision 1.0 2006-08-10 Song Chol.Jo
* Initial version
*/
#if !defined(_SYNCFIFO_H_)
#define _SYNCFIFO_H_
/************************************************************************/
/* Define */
/************************************************************************/
#define DEFAULT_CHUNK_NUM 256
#define DEFAULT_CHUNK_SIZE 4096
#define DEFAULT_EMPTY_JITTER_NUM 5
#define DEFAULT_FULL_JITTER_NUM 0
#define ERROR_CODE 0xFFFFFFFF
#include <windows.h>
/************************************************************************/
/* Typedef */
/************************************************************************/
/* fifo chunk.
*/
//##ModelId=4753B7E90215
typedef struct _tagFIFOCHUNK
{
struct _tagFIFOCHUNK *pNextChunk;
struct _tagFIFOCHUNK *pPrevChunk;
UINT nID;
UINT nPos;
UINT nSize;
UINT nTime;
BOOL bIsEndChunk;
BOOL bIsUsing;
}FIFOCHUNK, *PFIFOCHUNK;
/************************************************************************/
/* Declaration CSyncFifo class */
/************************************************************************/
//##ModelId=4753B7E90242
class CSyncFifo
{
public:
//##ModelId=4753B7E90251
CSyncFifo( UINT nChunkSize = DEFAULT_CHUNK_SIZE,
UINT nChunkNum = DEFAULT_CHUNK_NUM,
UINT nEmptyJitterNum = DEFAULT_EMPTY_JITTER_NUM,
UINT nFullJitterNum = DEFAULT_FULL_JITTER_NUM,
BOOL bIsPushInfinite = TRUE,
BOOL bIsPopInifinite = TRUE );
//##ModelId=4753B7E90261
virtual ~CSyncFifo();
// Operations
public:
//##ModelId=4753B7E90263
PVOID GetPushBuffer(UINT nSize);
//##ModelId=4753B7E90265
void Push(UINT nSize, UINT nTime);
//##ModelId=4753B7E90272
UINT GetPopTime();
//##ModelId=4753B7E90273
PVOID Pop(UINT * nSize, UINT *nTime = NULL);
//##ModelId=4753B7E90276
HANDLE GetEventHandle();
//##ModelId=4753B7E90280
void RestoreFullJitterNum();
//##ModelId=4753B7E90281
void RestoreEmptyJitterNum();
//##ModelId=4753B7E90282
void SetFullJitterNum(UINT nFullJitterNum);
//##ModelId=4753B7E90284
void SetEmptyJitterNum(UINT nEmptyJitterNum);
//##ModelId=4753B7E90286
void Empty();
//##ModelId=4753B7E90290
BOOL IsJitterEmpty();
//##ModelId=4753B7E90291
BOOL IsJitterFull();
//##ModelId=4753B7E90292
BOOL CheckIsBuffering(UINT &nPercent);
private:
//##ModelId=4753B7E90294
BOOL InitFifo( UINT nChunkSize,
UINT nChunkNum,
UINT nEmptyJitterNum,
UINT nFullJitterNum,
BOOL bIsPushInfinite,
BOOL bIsPopInfinite );
//##ModelId=4753B7E902A3
void RemoveFifo();
//##ModelId=4753B7E902A4
void InsertFifoChunk();
// Attributes
public:
//##ModelId=4753B7E902A5
BOOL m_bIsPushInfinite;
//##ModelId=4753B7E902AF
BOOL m_bIsPopInfinite;
//##ModelId=4753B7E902B0
UINT m_nCurChunkNum;
private:
//##ModelId=4753B7E902B1
UINT m_nChunkSize;
//##ModelId=4753B7E902BF
PVOID m_pFifoMem;
//##ModelId=4753B7E902C1
PFIFOCHUNK m_pPopChunk;
//##ModelId=4753B7E902CF
PFIFOCHUNK m_pPushChunk;
//##ModelId=4753B7E902D4
PFIFOCHUNK m_pInitChunk;
//##ModelId=4753B7E902DE
HANDLE m_hNotUseFifoEvent;
//##ModelId=4753B7E902DF
HANDLE m_hNotFullEvent;
//##ModelId=4753B7E902EE
HANDLE m_hNotEmptyEvent;
//##ModelId=4753B7E902EF
UINT m_nFifoSize;
//##ModelId=4753B7E902FD
UINT m_nFreeMem;
//##ModelId=4753B7E902FE
UINT m_nEndFreeMem;
//##ModelId=4753B7E902FF
UINT m_nCurFifoChunkNum;
//##ModelId=4753B7E9030D
UINT m_nEmptyJitterNum;
//##ModelId=4753B7E9030E
UINT m_nRestoreEmptyJitterNum;
//##ModelId=4753B7E9031C
UINT m_nFullJitterNum;
//##ModelId=4753B7E9031D
UINT m_nRestoreFullJitterNum;
//##ModelId=4753B7E9032C
BOOL m_bPushFirst;
//##ModelId=4753B7E9032D
BOOL m_bPopFirst;
};
#endif // !defined(_SYNCFIFO_H_)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -