From c037f2f1ba3a2d3114575323550f456e66695edf Mon Sep 17 00:00:00 2001 From: Marton Balint Date: Sat, 15 Apr 2017 20:30:51 +0200 Subject: [PATCH] ffmpeg; check return code of avcodec_send_frame when flushing encoders Fixes Coverity CID 1404841. Signed-off-by: Marton Balint --- ffmpeg.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/ffmpeg.c b/ffmpeg.c index 143322c321..75f5e592a9 100644 --- a/ffmpeg.c +++ b/ffmpeg.c @@ -1904,8 +1904,6 @@ static void flush_encoders(void) if (enc->codec_type != AVMEDIA_TYPE_VIDEO && enc->codec_type != AVMEDIA_TYPE_AUDIO) continue; - avcodec_send_frame(enc, NULL); - for (;;) { const char *desc = NULL; AVPacket pkt; @@ -1927,7 +1925,17 @@ static void flush_encoders(void) pkt.size = 0; update_benchmark(NULL); - ret = avcodec_receive_packet(enc, &pkt); + + while ((ret = avcodec_receive_packet(enc, &pkt)) == AVERROR(EAGAIN)) { + ret = avcodec_send_frame(enc, NULL); + if (ret < 0) { + av_log(NULL, AV_LOG_FATAL, "%s encoding failed: %s\n", + desc, + av_err2str(ret)); + exit_program(1); + } + } + update_benchmark("flush_%s %d.%d", desc, ost->file_index, ost->index); if (ret < 0 && ret != AVERROR_EOF) { av_log(NULL, AV_LOG_FATAL, "%s encoding failed: %s\n",