From d86e3f6dade53d5ca3b23a5c72c550b8f0583f91 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Fri, 3 Jan 2025 16:53:06 -0500 Subject: Audio buffer, mixer and sink improvements Signed-off-by: Andrew Opalach --- src/liana/client.c | 4 +++- src/liana/list.c | 2 +- src/liana/server.c | 5 +---- src/liana/vcr.c | 6 +++--- 4 files changed, 8 insertions(+), 9 deletions(-) (limited to 'src/liana') diff --git a/src/liana/client.c b/src/liana/client.c index f1d2a61..daf32b0 100644 --- a/src/liana/client.c +++ b/src/liana/client.c @@ -158,6 +158,7 @@ static bool connection_callback(void *userdata, struct nn_packet_stream *stream) }; client->callback(client->userdata, LIANA_CLIENT_RESUME_AT, NULL, &time); if (client->mask == 0) { + al_assert(client->connection_id == 0); al_log_warn("liana", "Handling reconnect on unconfigured client."); } else { client->callback(client->userdata, LIANA_CLIENT_RECONNECTED, NULL, NULL); @@ -167,7 +168,8 @@ static bool connection_callback(void *userdata, struct nn_packet_stream *stream) stream->packet_sent_callback = packet_sent_callback; struct nn_packet *packet = nn_packet_create(); nn_packet_write_u32(packet, client->id); - nn_packet_write_u32(packet, client->connection_id); + //nn_packet_write_u32(packet, client->connection_id); + nn_packet_write_u32(packet, 0); nn_packet_write_s32(packet, client->mask); nn_packet_write_u64(packet, client->pos); if (client->mask == 0) { diff --git a/src/liana/list.c b/src/liana/list.c index 218c51e..3c8a9c0 100644 --- a/src/liana/list.c +++ b/src/liana/list.c @@ -633,7 +633,7 @@ static void handle_clear(struct lia_list *list) static void run_queue(struct lia_list *list) { if (!list->cmd) { - if (list->queue.size == 0) return; + if (al_array_is_empty(list->queue)) return; al_array_pop_at(list->queue, 0, list->cmd); } struct lia_list_cmd *cmd = list->cmd; diff --git a/src/liana/server.c b/src/liana/server.c index 3b7bc2d..87bcf57 100644 --- a/src/liana/server.c +++ b/src/liana/server.c @@ -4,7 +4,6 @@ #include "handler.h" #include "handlers.h" #include "list.h" -#include "vcr.h" static inline u32 get_incremental_id(struct lia_server *server) { @@ -167,9 +166,7 @@ static void handle_connection(struct lia_node_connection *conn, struct nn_packet stream->packet_sent_callback = data_packet_sent_callback; stream->packets_sent_callback = data_packets_sent_callback; stream->connection_closed_callback = data_connection_closed_callback; -#ifndef VCR_BUFFER_WHOLE_FILE nn_thread_create(&conn->thread, handler_thread, conn); -#endif } } @@ -202,7 +199,7 @@ static void signal_callback(void *userdata) struct nn_packet_stream *stream = conn->stream; if (!conn->errored) { conn->id = get_incremental_id(server); - nn_packet_pool_init(&conn->pool, 512, server->loop, packet_pool_callback, conn); + nn_packet_pool_init(&conn->pool, 1024, server->loop, packet_pool_callback, conn); al_array_push(node->connections, conn); handle_connection(conn, packet); } else { diff --git a/src/liana/vcr.c b/src/liana/vcr.c index c12c422..06f0fe4 100644 --- a/src/liana/vcr.c +++ b/src/liana/vcr.c @@ -103,6 +103,8 @@ static nn_thread_result NNWT_THREADCALL vcr_track_thread(void *userdata) bool success = track->client->handle_packet(track->client, packet); if (!success) { al_log_error("liana", "Error handling packet, exiting track thread."); + return_entire_cache(track); + track->cache.disabled = true; nn_packet_cache_unlock(&track->cache); nn_mutex_unlock(&track->mutex); return 0; @@ -186,7 +188,7 @@ void lia_vcr_add_track(struct lia_vcr *vcr, struct lia_vcr_track *track) bool lia_vcr_is_empty(struct lia_vcr *vcr) { - return vcr->tracks.size == 0; + return al_array_is_empty(vcr->tracks); } static struct lia_vcr_track *get_track_from_index(struct lia_vcr *vcr, s32 index) @@ -347,9 +349,7 @@ void lia_vcr_flush(struct lia_vcr *vcr) al_array_foreach(vcr->tracks, i, track) { if (VCR_TRACK_THREADED(track)) { vcr_track_close_internal(track); -#ifndef VCR_BUFFER_WHOLE_FILE return_entire_cache(track); -#endif al_atomic_store(u8)(&track->buffered, 0, AL_ATOMIC_RELAXED); track->client->flush(track->client); nn_packet_cache_enable(&track->cache); -- cgit v1.2.3-101-g0448