diff options
| author | Mistivia <i@mistivia.com> | 2025-09-13 11:46:38 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-09-13 11:46:38 +0800 |
| commit | 4864500034260f43261a1cc86b7d9bce0d541e07 (patch) | |
| tree | 499a54bae8e90d8d80047bc26d0d34f1246a6dc0 /ringbuf.h | |
| parent | 603df4bdbeee6ae09e61f05eed0c05ed430eee1b (diff) | |
add transmuxer
Diffstat (limited to 'ringbuf.h')
| -rw-r--r-- | ringbuf.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/ringbuf.h b/ringbuf.h new file mode 100644 index 0000000..09e0306 --- /dev/null +++ b/ringbuf.h @@ -0,0 +1,44 @@ +#ifndef RINGBUF_H_ +#define RINGBUF_H_ + +#include <stdint.h> +#include <stdlib.h> +#include <stdbool.h> +#include <pthread.h> + +typedef struct { + uint8_t *buffer; + size_t head; + size_t tail; + size_t max; + bool full_flag; + bool finished_flag; + + pthread_mutex_t mutex; + pthread_cond_t not_empty_cond; + pthread_cond_t not_full_cond; +} RingBuffer; + +void RingBuffer_init(RingBuffer *self, size_t size); + +void RingBuffer_destroy(RingBuffer *self); + +size_t RingBuffer_size(RingBuffer *self); + +size_t RingBuffer_space(RingBuffer *self); + +size_t RingBuffer_write(RingBuffer *self, const uint8_t *data, size_t len); + +bool RingBuffer_write_word16le(RingBuffer *self, uint16_t x); +bool RingBuffer_write_word24le(RingBuffer *self, uint32_t x); +bool RingBuffer_write_word32le(RingBuffer *self, uint32_t x); +bool RingBuffer_write_word16be(RingBuffer *self, uint16_t x); +bool RingBuffer_write_word24be(RingBuffer *self, uint32_t x); +bool RingBuffer_write_word32be(RingBuffer *self, uint32_t x); +bool RingBuffer_write_char(RingBuffer *self, uint8_t x); + +size_t RingBuffer_read(RingBuffer *self, uint8_t *data, size_t len); + +void RingBuffer_end(RingBuffer *self); + +#endif
\ No newline at end of file |
