From 0ff054e9b4dff4e254ebfa4d718c4183c32d5bee Mon Sep 17 00:00:00 2001 From: Martin Piatka Date: Tue, 24 Aug 2021 16:01:53 +0200 Subject: [PATCH] ring_buffer: add ring_get_available_write_size() --- src/utils/ring_buffer.c | 6 ++++++ src/utils/ring_buffer.h | 6 ++++++ 2 files changed, 12 insertions(+) diff --git a/src/utils/ring_buffer.c b/src/utils/ring_buffer.c index a85392fe1..8afbdb4d1 100644 --- a/src/utils/ring_buffer.c +++ b/src/utils/ring_buffer.c @@ -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, diff --git a/src/utils/ring_buffer.h b/src/utils/ring_buffer.h index ede79d1e0..ace179d83 100644 --- a/src/utils/ring_buffer.h +++ b/src/utils/ring_buffer.h @@ -1,6 +1,7 @@ /** * @file utils/ring_buffer.h * @author Martin Pulec + * @author Martin Piatka */ /* * 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