Files
Frame-rate-optimization/Middlewares/circular_buffer.h
2026-04-09 10:14:20 +08:00

42 lines
1.4 KiB
C

#ifndef __CIRC_BUF__
#define __CIRC_BUF__
#ifdef __cplusplus
extern "C" {
#endif
#define MIN(a, b) (((a) > (b)) ? (b) : (a))
#define MAX(a, b) (((a) > (b)) ? (a) : (b))
typedef struct CIRC_BUF {
unsigned int Size;
unsigned int Header;
unsigned int Tailer;
unsigned char *Buffer;
} CircBuf_t;
unsigned long long IsPowerOf2 (unsigned long long Num);
unsigned long RoundUp_PowerOf2 (unsigned long Num);
unsigned long RoundDown_PowerOf2(unsigned long Num);
int CircBuf_Init(CircBuf_t *CBuf, unsigned char *Buff, unsigned int Size);
int CircBuf_Alloc (CircBuf_t *CBuf, unsigned int Size);
void CircBuf_Free (CircBuf_t *CBuf);
unsigned int CircBuf_Push (CircBuf_t *CBuf, unsigned char *data, unsigned int LenToPush);
unsigned int CircBuf_Pop (CircBuf_t *CBuf, unsigned char *data, unsigned int LenToPop);
unsigned int CircBuf_PopOneChar (CircBuf_t *CBuf, unsigned char *data);
unsigned char CircBuf_At(CircBuf_t *CBuf, unsigned int offset);
unsigned int CircBuf_Read(CircBuf_t *CBuf, unsigned char *data, unsigned int LenToRead);
void CircBuf_Drop(CircBuf_t *CBuf, unsigned int LenToDrop);
unsigned int CircBuf_GetAvalaibleSize (CircBuf_t *CBuf);
unsigned int CircBuf_GetUsedSize (CircBuf_t *CBuf);
unsigned int CircBuf_IsEmpty (CircBuf_t *CBuf);
unsigned int CircBuf_IsFull (CircBuf_t *CBuf);
#ifdef __cplusplus
}
#endif
#endif