From 0060d4f3df9b264e4a4adb77da67336709b41b6b Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Tue, 4 Feb 2025 21:05:18 -0500 Subject: Audio buffer and sink fixes, unsigned width/height - Screen feature testing - Older FFmpeg support - Build configuration fixes Signed-off-by: Andrew Opalach --- src/liana/handlers/cdio.h | 7 ++++++- src/liana/handlers/cdio_client.c | 2 ++ src/liana/handlers/cdio_server.c | 2 +- src/liana/handlers/codec.h | 7 ++++++- src/liana/handlers/codec_client.c | 16 ++++++++-------- src/liana/handlers/codec_server.c | 6 +++--- src/liana/handlers/dvd.h | 11 ++++++++--- src/liana/handlers/dvd_server.c | 2 +- 8 files changed, 35 insertions(+), 18 deletions(-) (limited to 'src/liana/handlers') diff --git a/src/liana/handlers/cdio.h b/src/liana/handlers/cdio.h index 4c40986..3b0e991 100644 --- a/src/liana/handlers/cdio.h +++ b/src/liana/handlers/cdio.h @@ -2,6 +2,7 @@ #include "../handler.h" +#ifdef LIANA_SERVER struct lia_cdio_server { struct lia_server_handler handler; struct cch_handle *handle; @@ -10,9 +11,13 @@ struct lia_cdio_server { f64 pts; }; +struct lia_server_handler *lia_cdio_server_create(); +#endif + +#ifdef LIANA_CLIENT struct lia_cdio_client { struct lia_client_handler handler; }; -struct lia_server_handler *lia_cdio_server_create(); struct lia_client_handler *lia_cdio_client_create(void); +#endif diff --git a/src/liana/handlers/cdio_client.c b/src/liana/handlers/cdio_client.c index 665858f..6d61e59 100644 --- a/src/liana/handlers/cdio_client.c +++ b/src/liana/handlers/cdio_client.c @@ -1,3 +1,5 @@ +#include "../client.h" + #include "cdio.h" static bool cdio_client_init(struct lia_client_handler *handler, struct camu_renderer *renderer, diff --git a/src/liana/handlers/cdio_server.c b/src/liana/handlers/cdio_server.c index 01a9265..6ea1422 100644 --- a/src/liana/handlers/cdio_server.c +++ b/src/liana/handlers/cdio_server.c @@ -39,7 +39,7 @@ static void cdio_server_write_info(struct lia_server_handler *handler, struct nn nn_packet_write_s32(packet, cdio->fmt.channel_count); } -static void cdio_server_subscribe(struct lia_server_handler *handler, s32 mask) +static void cdio_server_subscribe(struct lia_server_handler *handler, u32 mask) { (void)handler; (void)mask; diff --git a/src/liana/handlers/codec.h b/src/liana/handlers/codec.h index 29d513b..696cbb8 100644 --- a/src/liana/handlers/codec.h +++ b/src/liana/handlers/codec.h @@ -5,6 +5,7 @@ #include "../server.h" #include "../handler.h" +#ifdef LIANA_SERVER struct lia_codec_server { struct lia_server_handler handler; struct camu_demuxer *demux; @@ -14,10 +15,14 @@ struct lia_codec_server { struct camu_codec_packet packet; }; +struct lia_server_handler *lia_codec_server_create(void); +#endif + +#ifdef LIANA_CLIENT struct lia_codec_client { struct lia_client_handler handler; struct camu_decoder *dec; }; -struct lia_server_handler *lia_codec_server_create(void); struct lia_client_handler *lia_codec_client_create(void); +#endif diff --git a/src/liana/handlers/codec_client.c b/src/liana/handlers/codec_client.c index 0aef69f..36e475e 100644 --- a/src/liana/handlers/codec_client.c +++ b/src/liana/handlers/codec_client.c @@ -1,5 +1,4 @@ #include "../../codec/codec.h" -#include "../../server/common.h" #ifdef CAMU_HAVE_FFMPEG #include "../../codec/ffmpeg/decoder.h" @@ -11,6 +10,7 @@ #include "../../codec/wuffs/decoder.h" #include "../vcr.h" +#include "../client.h" #include "codec.h" @@ -87,13 +87,13 @@ static bool codec_client_handle_packet(struct lia_client_handler *handler, struc switch (mode) { case CAMU_NORMAL: { if (codec->dec) { -#ifdef CAMU_DIRECT_MODE - success = push_packet(codec, (struct nn_buffer *)packet->opaque); -#else - struct nn_buffer buffer; - nn_packet_read_buffer(packet, &buffer); - success = push_packet(codec, &buffer); -#endif + if (packet->opaque) { + success = push_packet(codec, (struct nn_buffer *)packet->opaque); + } else { + struct nn_buffer buffer; + nn_packet_read_buffer(packet, &buffer); + success = push_packet(codec, &buffer); + } } else { success = true; } diff --git a/src/liana/handlers/codec_server.c b/src/liana/handlers/codec_server.c index dcbfe17..7868a42 100644 --- a/src/liana/handlers/codec_server.c +++ b/src/liana/handlers/codec_server.c @@ -63,8 +63,8 @@ static void codec_server_write_info(struct lia_server_handler *handler, struct n switch (stream->mode) { case CAMU_NORMAL: { struct camu_video_format *fmt = &stream->video.fmt; - nn_packet_write_s32(packet, fmt->width); - nn_packet_write_s32(packet, fmt->height); + nn_packet_write_u32(packet, fmt->width); + nn_packet_write_u32(packet, fmt->height); nn_packet_write_s32(packet, fmt->format); break; } @@ -78,7 +78,7 @@ static void codec_server_write_info(struct lia_server_handler *handler, struct n } } -static void codec_server_subscribe(struct lia_server_handler *handler, s32 mask) +static void codec_server_subscribe(struct lia_server_handler *handler, u32 mask) { struct lia_codec_server *codec = (struct lia_codec_server *)handler; codec->demux->subscribed = mask; diff --git a/src/liana/handlers/dvd.h b/src/liana/handlers/dvd.h index 4b71ec8..dd5ac0a 100644 --- a/src/liana/handlers/dvd.h +++ b/src/liana/handlers/dvd.h @@ -1,9 +1,10 @@ #pragma once -#include - #include "../handler.h" +#ifdef LIANA_SERVER +#include + struct lia_dvd_server { struct lia_server_handler handler; struct cch_handle *handle; @@ -11,9 +12,13 @@ struct lia_dvd_server { struct nn_buffer buffer; }; +struct lia_server_handler *lia_dvd_server_create(void); +#endif + +#ifdef LIANA_CLIENT struct lia_dvd_client { struct lia_client_handler handler; }; -struct lia_server_handler *lia_dvd_server_create(void); struct lia_client_handler *lia_dvd_client_create(void); +#endif diff --git a/src/liana/handlers/dvd_server.c b/src/liana/handlers/dvd_server.c index afb2c07..f564325 100644 --- a/src/liana/handlers/dvd_server.c +++ b/src/liana/handlers/dvd_server.c @@ -53,7 +53,7 @@ static void dvd_server_write_info(struct lia_server_handler *handler, struct nn_ (void)packet; } -static void dvd_server_subscribe(struct lia_server_handler *handler, s32 mask) +static void dvd_server_subscribe(struct lia_server_handler *handler, u32 mask) { (void)handler; (void)mask; -- cgit v1.2.3-101-g0448