From bbf3314165182e402ff25acccddc004a87f81ef0 Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Mon, 12 Feb 2024 21:09:10 -0500 Subject: Initial cmc implementation, sink fixes Signed-off-by: Andrew Opalach --- src/libsink/sink.c | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) (limited to 'src/libsink') diff --git a/src/libsink/sink.c b/src/libsink/sink.c index 55485b0..3468a48 100644 --- a/src/libsink/sink.c +++ b/src/libsink/sink.c @@ -321,18 +321,24 @@ static void audio_buffer_callback(void *userdata, u8 op) aki_mutex_unlock(&entry->sink->mutex); break; case CAMU_BUFFER_CORK: + bmu_vcr_stream_cork(entry->audio.stream); + /* queue_cmd(entry->sink, (struct camu_sink_cmd){ .op = CORK, .value.i = CAMU_SINK_AUDIO, .opaque = entry }); + */ break; case CAMU_BUFFER_UNCORK: + bmu_vcr_stream_uncork(entry->audio.stream); + /* queue_cmd(entry->sink, (struct camu_sink_cmd){ .op = UNCORK, .value.i = CAMU_SINK_AUDIO, .opaque = entry }); + */ break; case CAMU_BUFFER_PAUSED: queue_cmd(entry->sink, (struct camu_sink_cmd){ @@ -378,18 +384,24 @@ static void video_buffer_callback(void *userdata, u8 op) aki_mutex_unlock(&entry->sink->mutex); break; case CAMU_BUFFER_CORK: + bmu_vcr_stream_cork(entry->video.stream); + /* queue_cmd(entry->sink, (struct camu_sink_cmd){ .op = CORK, .value.i = CAMU_SINK_VIDEO, .opaque = entry }); + */ break; case CAMU_BUFFER_UNCORK: + bmu_vcr_stream_uncork(entry->video.stream); + /* queue_cmd(entry->sink, (struct camu_sink_cmd){ .op = UNCORK, .value.i = CAMU_SINK_VIDEO, .opaque = entry }); + */ break; case CAMU_BUFFER_EOF: queue_cmd(entry->sink, (struct camu_sink_cmd){ @@ -636,7 +648,6 @@ static bool buffer_command_callback(void *userdata, struct aki_rpc_connection *c return false; } - static bool set_command_callback(void *userdata, struct aki_rpc_connection *conn, struct aki_packet *packet, struct aki_packet *rpacket) { @@ -694,6 +705,8 @@ static bool queue_command_callback(void *userdata, struct aki_rpc_connection *co sink->queued = ensure_entry_buffered_internal(sink, &addr, port, node_id); aki_mutex_unlock(&sink->mutex); + aki_packet_free(packet); + return false; } @@ -802,8 +815,8 @@ void camu_sink_close(struct camu_sink *sink) struct camu_sink_entry *entry; al_array_foreach(sink->entries, i, entry) { bmu_client_close(&entry->client); - al_array_remove_at_iter(sink->entries, i); } + sink->entries.size = 0; aki_mutex_unlock(&sink->mutex); } -- cgit v1.2.3-101-g0448