diff --git a/deps/media-playback/media-playback/decode.c b/deps/media-playback/media-playback/decode.c index 5ec6959a9..eb921374f 100644 --- a/deps/media-playback/media-playback/decode.c +++ b/deps/media-playback/media-playback/decode.c @@ -113,7 +113,8 @@ static int mp_open_codec(struct mp_decode *d, bool hw) return ret; fail: - avcodec_close(c); + avcodec_free_context(&c); + #if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(57, 40, 101) av_free(d->decoder); #endif @@ -220,13 +221,10 @@ void mp_decode_free(struct mp_decode *d) av_frame_unref(d->hw_frame); av_free(d->hw_frame); } - if (d->decoder) { -#if LIBAVFORMAT_VERSION_INT >= AV_VERSION_INT(57, 40, 101) + + if (d->decoder) avcodec_free_context(&d->decoder); -#else - avcodec_close(d->decoder); -#endif - } + if (d->sw_frame) { av_frame_unref(d->sw_frame); av_free(d->sw_frame); diff --git a/libobs/graphics/graphics-ffmpeg.c b/libobs/graphics/graphics-ffmpeg.c index 84f72d68a..3c26c319b 100644 --- a/libobs/graphics/graphics-ffmpeg.c +++ b/libobs/graphics/graphics-ffmpeg.c @@ -72,11 +72,7 @@ static bool ffmpeg_image_open_decoder_context(struct ffmpeg_image *info) static void ffmpeg_image_free(struct ffmpeg_image *info) { -#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 48, 101) avcodec_free_context(&info->decoder_ctx); -#else - avcodec_close(info->decoder_ctx); -#endif avformat_close_input(&info->fmt_ctx); } diff --git a/plugins/obs-ffmpeg/ffmpeg-mux/ffmpeg-mux.c b/plugins/obs-ffmpeg/ffmpeg-mux/ffmpeg-mux.c index e6f4b0f87..3ce1e7977 100644 --- a/plugins/obs-ffmpeg/ffmpeg-mux/ffmpeg-mux.c +++ b/plugins/obs-ffmpeg/ffmpeg-mux/ffmpeg-mux.c @@ -150,6 +150,7 @@ static void free_avformat(struct ffmpeg_mux *ffm) if (ffm->audio_infos) { for (int i = 0; i < ffm->num_audio_streams; ++i) avcodec_free_context(&ffm->audio_infos[i].ctx); + free(ffm->audio_infos); } diff --git a/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c b/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c index cbcb9ac31..fc9fe6bfb 100644 --- a/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c +++ b/plugins/obs-ffmpeg/obs-ffmpeg-audio-encoders.c @@ -124,8 +124,10 @@ static void enc_destroy(void *data) if (enc->samples[0]) av_freep(&enc->samples[0]); + if (enc->context) - avcodec_close(enc->context); + avcodec_free_context(&enc->context); + if (enc->aframe) av_frame_free(&enc->aframe); diff --git a/plugins/obs-ffmpeg/obs-ffmpeg-nvenc.c b/plugins/obs-ffmpeg/obs-ffmpeg-nvenc.c index 63570c68a..28dfacbb1 100644 --- a/plugins/obs-ffmpeg/obs-ffmpeg-nvenc.c +++ b/plugins/obs-ffmpeg/obs-ffmpeg-nvenc.c @@ -358,7 +358,7 @@ static void nvenc_destroy(void *data) flush_remaining_packets(enc); av_packet_free(&enc->packet); - avcodec_close(enc->context); + avcodec_free_context(&enc->context); av_frame_unref(enc->vframe); av_frame_free(&enc->vframe); da_free(enc->buffer); diff --git a/plugins/obs-ffmpeg/obs-ffmpeg-output.c b/plugins/obs-ffmpeg/obs-ffmpeg-output.c index 192789ea9..372b393bf 100644 --- a/plugins/obs-ffmpeg/obs-ffmpeg-output.c +++ b/plugins/obs-ffmpeg/obs-ffmpeg-output.c @@ -457,11 +457,7 @@ static inline bool open_output_file(struct ffmpeg_data *data) static void close_video(struct ffmpeg_data *data) { -#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 48, 101) avcodec_free_context(&data->video_ctx); -#else - avcodec_close(data->video->codec); -#endif av_frame_unref(data->vframe); // This format for some reason derefs video frame @@ -481,13 +477,8 @@ static void close_audio(struct ffmpeg_data *data) if (data->samples[idx][0]) av_freep(&data->samples[idx][0]); - if (data->audio_infos[idx].ctx) { -#if LIBAVCODEC_VERSION_INT >= AV_VERSION_INT(57, 48, 101) + if (data->audio_infos[idx].ctx) avcodec_free_context(&data->audio_infos[idx].ctx); -#else - avcodec_close(data->audio_infos[idx].stream->codec); -#endif - } if (data->aframe[idx]) av_frame_free(&data->aframe[idx]); } diff --git a/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c b/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c index 22f0f0950..ee2f46e32 100644 --- a/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c +++ b/plugins/obs-ffmpeg/obs-ffmpeg-vaapi.c @@ -329,7 +329,7 @@ static void vaapi_destroy(void *data) flush_remaining_packets(enc); av_packet_free(&enc->packet); - avcodec_close(enc->context); + avcodec_free_context(&enc->context); av_frame_unref(enc->vframe); av_frame_free(&enc->vframe); av_buffer_unref(&enc->vaframes_ref);