Browse Source

ffmpeg; check return code of avcodec_send_frame when flushing encoders

Fixes Coverity CID 1404841.

Signed-off-by: Marton Balint <cus@passwd.hu>
tags/n3.4
Marton Balint 8 years ago
parent
commit
c037f2f1ba
1 changed files with 11 additions and 3 deletions
  1. +11
    -3
      ffmpeg.c

+ 11
- 3
ffmpeg.c View File

@@ -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",


Loading…
Cancel
Save