Steps to reproduce:
1. ./configure --enable-debug=3 --disable-libx264 && make install
2. ffmpeg -i input.mp4 -profile:v baseline output.mp4 -y
you will see a crash like this:
[mpeg4 @ 0x5555575854c0] [Eval @ 0x7fffffffbf80] Undefined constant or missing
'(' in 'baseline'
[mpeg4 @ 0x5555575854c0] Unable to parse option value "baseline"
[mpeg4 @ 0x5555575854c0] Error setting option profile to value baseline.
Thread 1 "ffmpeg" received signal SIGSEGV, Segmentation fault.
root cause:
If the codec has FF_CODEC_CAP_INIT_CLEANUP flag, and avcodec_open2 got an error
before avctx->codec->init,
the ff_mpv_encode_end will face a null s->avctx.
---
libavcodec/mpegvideo_enc.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/libavcodec/mpegvideo_enc.c b/libavcodec/mpegvideo_enc.c
index 09697d89c8..a79309d1b9 100644
--- a/libavcodec/mpegvideo_enc.c
+++ b/libavcodec/mpegvideo_enc.c
@@ -1078,9 +1078,10 @@ av_cold int ff_mpv_encode_end(AVCodecContext *avctx)
av_frame_free(&s->tmp_frames[i]);
ff_free_picture_tables(&s->new_picture);
- ff_mpeg_unref_picture(s->avctx, &s->new_picture);
-
- av_freep(&s->avctx->stats_out);
+ if (s->avctx) {
+ ff_mpeg_unref_picture(s->avctx, &s->new_picture);
+ av_freep(&s->avctx->stats_out);
+ }
av_freep(&s->ac_stats);
if(s->q_chroma_intra_matrix != s->q_intra_matrix )
av_freep(&s->q_chroma_intra_matrix);
--
2.17.1
_______________________________________________
ffmpeg-devel mailing list
[email protected]
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
To unsubscribe, visit link above, or email
[email protected] with subject "unsubscribe".