From 60c41f7f48cbb83339354e45be7b3f6af2d5243c Mon Sep 17 00:00:00 2001 From: andreili Date: Tue, 29 Jul 2025 13:52:15 +0200 Subject: [PATCH] Fix for latest FFMpeg library. Signed-off-by: andreili --- output/http_ffmpeg.c | 2 +- util/ffmpeg/remuxer.c | 8 ++++---- util/ffmpeg/remuxer.h | 7 ++++--- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/output/http_ffmpeg.c b/output/http_ffmpeg.c index bf5a764..ac924ab 100644 --- a/output/http_ffmpeg.c +++ b/output/http_ffmpeg.c @@ -49,7 +49,7 @@ static int http_ffmpeg_read_from_buf(void *opaque, uint8_t *buf, int buf_size) return buf_size; } -static int http_ffmpeg_write_to_stream(void *opaque, uint8_t *buf, int buf_size) +static int http_ffmpeg_write_to_stream(void *opaque, const uint8_t *buf, int buf_size) { http_ffmpeg_status_t *status = opaque; if (!status->stream) diff --git a/util/ffmpeg/remuxer.c b/util/ffmpeg/remuxer.c index 76b8c56..30b2ecb 100644 --- a/util/ffmpeg/remuxer.c +++ b/util/ffmpeg/remuxer.c @@ -7,7 +7,7 @@ static AVRational time_base = {1, 1000LL * 1000LL}; static unsigned avio_ctx_buffer_size = 4096; -static int ffmpeg_remuxer_init_avcontext(AVFormatContext **context, ffmpeg_remuxer_t *remuxer, int output, int (*packet)(void *opaque, uint8_t *buf, int buf_size)) +static int ffmpeg_remuxer_init_avcontext(AVFormatContext **context, ffmpeg_remuxer_t *remuxer, int output, ffmpeg_write_packet packet_out, ffmpeg_read_packet packet_in) { uint8_t *buffer = NULL; AVIOContext *avio = NULL; @@ -20,7 +20,7 @@ static int ffmpeg_remuxer_init_avcontext(AVFormatContext **context, ffmpeg_remux buffer = av_malloc(buffer_size); if (!buffer) return AVERROR(ENOMEM); - avio = avio_alloc_context(buffer, buffer_size, output, remuxer->opaque, output ? NULL : packet, output ? packet : NULL, NULL); + avio = avio_alloc_context(buffer, buffer_size, output, remuxer->opaque, packet_in, packet_out, NULL); if (!avio) goto error; if (output && (ret = avformat_alloc_output_context2(context, NULL, remuxer->video_format, NULL)) < 0) @@ -106,9 +106,9 @@ int ffmpeg_remuxer_open(ffmpeg_remuxer_t *remuxer) remuxer->packet = av_packet_alloc(); if (!remuxer->packet) return AVERROR(ENOMEM); - if ((ret = ffmpeg_remuxer_init_avcontext(&remuxer->input_context, remuxer, 0, remuxer->read_packet)) < 0) + if ((ret = ffmpeg_remuxer_init_avcontext(&remuxer->input_context, remuxer, 0, NULL, remuxer->read_packet)) < 0) return ret; - if ((ret = ffmpeg_remuxer_init_avcontext(&remuxer->output_context, remuxer, 1, remuxer->write_packet)) < 0) + if ((ret = ffmpeg_remuxer_init_avcontext(&remuxer->output_context, remuxer, 1, remuxer->write_packet, NULL)) < 0) return ret; if ((ret = avformat_open_input(&remuxer->input_context, NULL, input_format, &remuxer->input_opts)) < 0) return ret; diff --git a/util/ffmpeg/remuxer.h b/util/ffmpeg/remuxer.h index 4a5c5a9..872d2bb 100644 --- a/util/ffmpeg/remuxer.h +++ b/util/ffmpeg/remuxer.h @@ -10,15 +10,16 @@ #define FFMPEG_DATA_PACKET_EOF -1 #endif -typedef int (*ffmpeg_data_packet)(void *opaque, uint8_t *buf, int buf_size); +typedef int (*ffmpeg_read_packet)(void *opaque, uint8_t *buf, int buf_size); +typedef int (*ffmpeg_write_packet)(void *opaque, const uint8_t *buf, int buf_size); typedef struct ffmpeg_remuxer_s { const char *name; const char *input_format; const char *video_format; void *opaque; - ffmpeg_data_packet read_packet; - ffmpeg_data_packet write_packet; + ffmpeg_read_packet read_packet; + ffmpeg_write_packet write_packet; unsigned read_buffer_size; unsigned write_buffer_size;