From 846bd3d1b7bcec3653aa9d662f559235c4689e1b Mon Sep 17 00:00:00 2001 From: Andrew Opalach Date: Sat, 15 Mar 2025 20:40:38 -0400 Subject: Sink refactor wip Dangling target won't stay around. I have a couple of ideas about how to massively simplify the handling of ended entries. Signed-off-by: Andrew Opalach --- src/codec/ffmpeg/avio.c | 4 ++-- src/codec/ffmpeg/decoder.c | 8 ++------ src/codec/ffmpeg/decoder.h | 4 +--- src/codec/ffmpeg/demuxer.c | 5 +++-- 4 files changed, 8 insertions(+), 13 deletions(-) (limited to 'src/codec/ffmpeg') diff --git a/src/codec/ffmpeg/avio.c b/src/codec/ffmpeg/avio.c index 143bc1f..855a4de 100644 --- a/src/codec/ffmpeg/avio.c +++ b/src/codec/ffmpeg/avio.c @@ -2,10 +2,10 @@ #include "../../cache/handle.h" -s32 camu_avio_read(void *data, u8 *buf, s32 buf_size) +s32 camu_avio_read(void *data, u8 *buf, s32 size) { struct cch_handle *handle = (struct cch_handle *)data; - return cch_handle_read(handle, buf, buf_size); + return cch_handle_read(handle, buf, size); } s64 camu_avio_seek(void *data, s64 offset, s32 whence) diff --git a/src/codec/ffmpeg/decoder.c b/src/codec/ffmpeg/decoder.c index 5f4de67..dfabe05 100644 --- a/src/codec/ffmpeg/decoder.c +++ b/src/codec/ffmpeg/decoder.c @@ -11,15 +11,11 @@ #ifdef CAMU_FF_DECODER_HWACCEL #if defined CAMU_RENDERER_VULKAN static const char *hwdevces[] = { "vulkan" }; -#elif defined CAMU_RENDERER_DX11 +#elif defined NAUNET_ON_WINDOWS static const char *hwdevces[] = { "d3d11va" }; #elif defined CAMU_RENDERER_OPENGL -#ifdef NAUNET_ON_WINDOWS -static const char *hwdevces[] = { "d3d11va" }; -#else static const char *hwdevces[] = { "vaapi" }; #endif -#endif static s32 get_buffer2(AVCodecContext *context, AVFrame *pic, s32 flags) { @@ -277,7 +273,7 @@ static bool ff_decoder_init(struct camu_decoder *dec, struct camu_renderer *rend } const char *long_name = codec->long_name ? codec->long_name : codec->name; - s64 kbps = codecpar->bit_rate > 0 ? codecpar->bit_rate / 1000L : 0L; + s64 kbps = codecpar->bit_rate > 0 ? codecpar->bit_rate / 1000 : 0; al_log_info("ff_decoder", "Codec: %s (%s) %lldkbps.", codec->name, long_name, kbps); av->callback = callback; diff --git a/src/codec/ffmpeg/decoder.h b/src/codec/ffmpeg/decoder.h index f698a6d..aa9eb57 100644 --- a/src/codec/ffmpeg/decoder.h +++ b/src/codec/ffmpeg/decoder.h @@ -5,15 +5,13 @@ #include "../codec.h" -#ifndef CAMU_SINK_NO_VIDEO //#define CAMU_FF_DECODER_HWACCEL -#endif struct camu_ff_decoder { struct camu_decoder dec; AVCodecContext *codec_context; - struct camu_renderer *renderer; #ifdef CAMU_FF_DECODER_HWACCEL + struct camu_renderer *renderer; array(const AVCodec *) supported_hw_codecs; array(enum AVHWDeviceType) supported_hw_devices; AVBufferRef *hw_context; diff --git a/src/codec/ffmpeg/demuxer.c b/src/codec/ffmpeg/demuxer.c index 5cb3ceb..9764f58 100644 --- a/src/codec/ffmpeg/demuxer.c +++ b/src/codec/ffmpeg/demuxer.c @@ -54,8 +54,9 @@ static bool ff_demuxer_init(struct camu_demuxer *demux, struct cch_handle *handl // FFmpeg says the avio protocol configures "buffers and access patterns". // I think we already do enough buffering but, better access patterns for // network streams sounds like something we want. - if (avformat_open_input(&av->format_context, "file:", NULL, &opts) < 0) { - al_log_error("ff_demuxer", "Failed to open input."); + s32 ret = avformat_open_input(&av->format_context, "file:", NULL, &opts); + if (ret < 0) { + al_log_error("ff_demuxer", "Failed to open input (%s).", av_err2str(ret)); av_dict_free(&opts); goto err; } -- cgit v1.2.3-101-g0448