From f9b2dfdd8cec7e4c381ce0fb2c2a7549312c0152 Mon Sep 17 00:00:00 2001 From: Pedro Date: Mon, 28 Apr 2025 01:16:50 -0300 Subject: [PATCH] examples : fix deprecated FFmpeg functions (#3073) * Fix deprecated FFmpeg functions and free packet * avcodec_free_context --- examples/ffmpeg-transcode.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/examples/ffmpeg-transcode.cpp b/examples/ffmpeg-transcode.cpp index 82566445..1fae58a4 100644 --- a/examples/ffmpeg-transcode.cpp +++ b/examples/ffmpeg-transcode.cpp @@ -194,7 +194,7 @@ static int decode_audio(struct audio_buffer *audio_buf, s16 **data, int *size) AVIOContext *avio_ctx; AVStream *stream; AVCodecContext *codec; - AVPacket packet; + AVPacket *packet; AVFrame *frame; struct SwrContext *swr; u8 *avio_ctx_buffer; @@ -279,7 +279,11 @@ static int decode_audio(struct audio_buffer *audio_buf, s16 **data, int *size) return -1; } - av_init_packet(&packet); + packet=av_packet_alloc(); + if (!packet) { + LOG("Error allocating the packet\n"); + return -1; + } frame = av_frame_alloc(); if (!frame) { LOG("Error allocating the frame\n"); @@ -289,8 +293,8 @@ static int decode_audio(struct audio_buffer *audio_buf, s16 **data, int *size) /* iterate through frames */ *data = NULL; *size = 0; - while (av_read_frame(fmt_ctx, &packet) >= 0) { - avcodec_send_packet(codec, &packet); + while (av_read_frame(fmt_ctx, packet) >= 0) { + avcodec_send_packet(codec, packet); err = avcodec_receive_frame(codec, frame); if (err == AVERROR(EAGAIN)) @@ -301,10 +305,11 @@ static int decode_audio(struct audio_buffer *audio_buf, s16 **data, int *size) /* Flush any remaining conversion buffers... */ convert_frame(swr, codec, frame, data, size, true); + av_packet_free(&packet); av_frame_free(&frame); swr_free(&swr); //avio_context_free(); // todo? - avcodec_close(codec); + avcodec_free_context(&codec); avformat_close_input(&fmt_ctx); avformat_free_context(fmt_ctx);