Skip to content

Commit

Permalink
media_utils: fix segfault when stopping a recording
Browse files Browse the repository at this point in the history
  • Loading branch information
Megamouse committed Jan 12, 2024
1 parent 17aeefe commit 9dd0a2e
Show file tree
Hide file tree
Showing 3 changed files with 4 additions and 15 deletions.
1 change: 0 additions & 1 deletion rpcs3/Emu/Cell/Modules/cellAdec.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -371,7 +371,6 @@ class AudioDecoder : public ppu_thread
}
if (ctx)
{
avcodec_close(ctx);
avcodec_free_context(&ctx);
}
if (io_buf)
Expand Down
1 change: 0 additions & 1 deletion rpcs3/Emu/Cell/Modules/cellVdec.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,6 @@ struct vdec_context final

~vdec_context()
{
avcodec_close(ctx);
avcodec_free_context(&ctx);
sws_freeContext(sws);
}
Expand Down
17 changes: 4 additions & 13 deletions rpcs3/util/media_utils.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -302,22 +302,13 @@ namespace utils
if (sws)
sws_freeContext(sws);
if (audio.context)
{
avcodec_close(audio.context);
avcodec_free_context(&audio.context);
}
if (video.context)
{
avcodec_close(video.context);
avcodec_free_context(&video.context);
}
// AVCodec is managed by libavformat, no need to free it
// see: https://stackoverflow.com/a/18047320
if (format_context)
{
avformat_close_input(&format_context);
avformat_free_context(format_context);
}
//if (stream)
// av_free(stream);
if (kill_callback)
Expand Down Expand Up @@ -1266,9 +1257,9 @@ namespace utils
{
media_log.error("video_encoder: avformat_write_header failed. Error: %d='%s'", err, av_error_to_string(err));

if (int err = avio_close(av.format_context->pb); err != 0)
if (int err = avio_closep(&av.format_context->pb); err != 0)
{
media_log.error("video_encoder: avio_close failed. Error: %d='%s'", err, av_error_to_string(err));
media_log.error("video_encoder: avio_closep failed. Error: %d='%s'", err, av_error_to_string(err));
}

has_error = true;
Expand Down Expand Up @@ -1645,9 +1636,9 @@ namespace utils
media_log.error("video_encoder: av_write_trailer failed. Error: %d='%s'", err, av_error_to_string(err));
}

if (int err = avio_close(av.format_context->pb); err != 0)
if (int err = avio_closep(&av.format_context->pb); err != 0)
{
media_log.error("video_encoder: avio_close failed. Error: %d='%s'", err, av_error_to_string(err));
media_log.error("video_encoder: avio_closep failed. Error: %d='%s'", err, av_error_to_string(err));
}
});
}
Expand Down

0 comments on commit 9dd0a2e

Please sign in to comment.