From 49b31c2b43b9853bc3a347be7d914e27839d1f61 Mon Sep 17 00:00:00 2001 From: iive Date: Sun, 1 May 2011 20:21:00 +0000 Subject: [PATCH] vd_ffmpeg.c: fix one case of "-lavdopts vstats" crashing Fix segfault with -lavdopts vstats and some codecs. The vstats option relies on avctx->coded_frame being filled. Unfortunately not all codecs do that (e.g. VP8) thus causing NULL dereference. FFmpeg code seems to always check if coded_frame != NULL, so we should do the same. git-svn-id: svn://svn.mplayerhq.hu/mplayer/trunk@33347 b3059339-0415-0410-9bf9-f77b7e298cf2 --- libmpcodecs/vd_ffmpeg.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/libmpcodecs/vd_ffmpeg.c b/libmpcodecs/vd_ffmpeg.c index 5460d20fd1..c8463d5c34 100644 --- a/libmpcodecs/vd_ffmpeg.c +++ b/libmpcodecs/vd_ffmpeg.c @@ -389,7 +389,7 @@ static void uninit(sh_video_t *sh){ vd_ffmpeg_ctx *ctx = sh->context; AVCodecContext *avctx = ctx->avctx; - if(sh->opts->lavc_param.vstats){ + if (sh->opts->lavc_param.vstats && avctx->coded_frame) { int i; for(i=1; i<32; i++){ mp_msg(MSGT_DECVIDEO, MSGL_INFO, "QP: %d, count: %d\n", i, ctx->qp_stat[i]); @@ -784,6 +784,9 @@ static struct mp_image *decode(struct sh_video *sh, void *data, int len, AVFrame *pic= avctx->coded_frame; double quality=0.0; + if (!pic) + break; + if(!fvstats) { time_t today2; struct tm *today;