31static inline void mpix_ring_init(
struct mpix_ring *ring, uint8_t *buf,
size_t size)
33 memset(ring, 0x00,
sizeof(*ring));
38static inline bool mpix_ring_is_full(
struct mpix_ring *ring)
43static inline bool mpix_ring_is_empty(
struct mpix_ring *ring)
48static inline size_t mpix_ring_headroom(
struct mpix_ring *ring)
62 if (mpix_ring_is_empty(ring)) {
71static inline size_t mpix_ring_tailroom(
struct mpix_ring *ring)
85 if (mpix_ring_is_full(ring)) {
94static inline size_t mpix_ring_peekroom(
struct mpix_ring *ring)
114 if (mpix_ring_is_full(ring) && ring->
tail <= ring->
peek) {
120 if (mpix_ring_is_full(ring) && ring->
peek < ring->
head) {
129static inline size_t mpix_ring_total_used(
struct mpix_ring *ring)
143 if (mpix_ring_is_full(ring)) {
152static inline uint8_t *mpix_ring_write(
struct mpix_ring *ring,
size_t size)
154 uint8_t *data = ring->
data + ring->
head;
156 if (mpix_ring_headroom(ring) < size) {
165static inline uint8_t *mpix_ring_read(
struct mpix_ring *ring,
size_t size)
167 uint8_t *data = ring->
data + ring->
tail;
169 if (mpix_ring_tailroom(ring) < size) {
178static inline uint8_t *mpix_ring_peek(
struct mpix_ring *ring,
size_t size)
180 uint8_t *data = ring->
data + ring->
peek;
182 if (mpix_ring_peekroom(ring) < size) {
Ring buffer of pixels.
Definition ring.h:16
bool full
Definition ring.h:28
uint8_t * data
Definition ring.h:18
size_t peek
Definition ring.h:26
size_t head
Definition ring.h:22
size_t size
Definition ring.h:20
size_t tail
Definition ring.h:24