From 8f208c26b6fa1a9f3372679c047cab559c06e26b Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Mon, 14 Sep 2026 08:57:42 -0400 Subject: Server-side fixes from DIRECT_MODE testing Signed-off-by: Andrew Opalach --- src/liana/handlers/codec_client.c | 13 +++++-------- src/liana/handlers/codec_server.c | 13 ++----------- 2 files changed, 7 insertions(+), 19 deletions(-) (limited to 'src/liana/handlers') diff --git a/src/liana/handlers/codec_client.c b/src/liana/handlers/codec_client.c index 5c8e94d..f7bde35 100644 --- a/src/liana/handlers/codec_client.c +++ b/src/liana/handlers/codec_client.c @@ -92,7 +92,9 @@ static bool codec_client_handle_packet(struct lia_client_handler *handler, struc case CAMU_NORMAL: { if (codec->dec) { if (packet->opaque) { - success = push_packet(codec, (struct nn_buffer *)packet->opaque); + struct nn_buffer *buffer = (struct nn_buffer *)packet->opaque; + success = push_packet(codec, buffer); + packet->opaque = NULL; } else { struct nn_buffer buffer; nn_packet_read_buffer(packet, &buffer); @@ -126,10 +128,10 @@ static bool codec_client_handle_packet(struct lia_client_handler *handler, struc struct camu_codec_stream *stream = codec->handler.stream; AVRational time_base = stream->av.stream->time_base; pkt->pts += av_rescale_q(stream->duration, AV_TIME_BASE_Q, time_base); - // @TODO: Shift av_packet_free() to vcr. This leaks right now. #else av_packet_free_side_data(pkt); av_packet_free(&pkt); + packet->opaque = NULL; #endif break; } @@ -141,12 +143,7 @@ static bool codec_client_handle_packet(struct lia_client_handler *handler, struc // Restore packet rindex in case we reuse it. packet->rindex = rindex; - if (!success) { - codec->handler.callback(codec->handler.userdata, LIANA_CLIENT_ERRORED, codec->handler.stream, NULL); - return false; - } - - return true; + return success; } static void codec_client_flush(struct lia_client_handler *handler) diff --git a/src/liana/handlers/codec_server.c b/src/liana/handlers/codec_server.c index ddba182..592f592 100644 --- a/src/liana/handlers/codec_server.c +++ b/src/liana/handlers/codec_server.c @@ -35,9 +35,7 @@ static bool codec_server_init(struct lia_server_handler *handler, struct cch_han break; #ifdef CAMU_HAVE_FFMPEG case CAMU_FFMPEG_COMPAT: -#ifndef CAMU_DIRECT_MODE codec->packet.av.pkt = av_packet_alloc(); -#endif break; #endif } @@ -104,11 +102,6 @@ static bool codec_server_seek(struct lia_server_handler *handler, u64 pos) static void codec_server_step(struct lia_server_handler *handler) { struct lia_codec_server *codec = (struct lia_codec_server *)handler; -#ifdef CAMU_HAVE_FFMPEG -#ifdef CAMU_DIRECT_MODE - codec->packet.av.pkt = av_packet_alloc(); -#endif -#endif codec->handler.status = codec->demux->get_packet(codec->demux, &codec->packet); } @@ -139,11 +132,11 @@ static void codec_server_write_packet(struct lia_server_handler *handler, struct nn_packet_write_s32(packet, pkt->stream_index); nn_packet_write_u8(packet, codec->packet.mode); #ifdef CAMU_DIRECT_MODE - packet->opaque = pkt; + packet->opaque = av_packet_clone(pkt); #else nn_packet_write_av_packet(packet, pkt); - av_packet_unref(pkt); #endif + av_packet_unref(pkt); break; } #endif @@ -168,9 +161,7 @@ static void codec_server_free(struct lia_server_handler **handler) break; #ifdef CAMU_HAVE_FFMPEG case CAMU_FFMPEG_COMPAT: -#ifndef CAMU_DIRECT_MODE av_packet_free(&codec->packet.av.pkt); -#endif break; #endif } -- cgit v1.2.3-101-g0448