ring_buffer: add ring_get_available_write_size()

This commit is contained in:
Martin Piatka
2021-08-24 16:01:53 +02:00
parent a834e19180
commit 0ff054e9b4
2 changed files with 12 additions and 0 deletions

View File

@@ -130,6 +130,12 @@ int ring_get_current_size(struct ring_buffer * ring)
return (ring->end - ring->start + ring->len) % ring->len;
}
int ring_get_available_write_size(struct ring_buffer * ring){
/* Ring buffer needs at least one free byte, otherwise start == end
* and the ring would appear empty */
return ring_get_size(ring) - ring_get_current_size(ring) - 1;
}
struct audio_buffer_api ring_buffer_fns = {
(void (*)(void *)) ring_buffer_destroy,
(int (*)(void *, char *, int)) ring_buffer_read,

View File

@@ -1,6 +1,7 @@
/**
* @file utils/ring_buffer.h
* @author Martin Pulec <martin.pulec@cesnet.cz>
* @author Martin Piatka <piatka@cesnet.cz>
*/
/*
* Copyright (c) 2011-2019 CESNET, z. s. p. o.
@@ -76,6 +77,11 @@ void ring_buffer_flush(struct ring_buffer *ring);
*/
int ring_get_current_size(struct ring_buffer * ring);
/**
* Returns size available for writing
*/
int ring_get_available_write_size(struct ring_buffer * ring);
extern struct audio_buffer_api ring_buffer_fns;
#ifdef __cplusplus