From a5e025e826789164569d2ff44a784cd3f953eaca Mon Sep 17 00:00:00 2001 From: Anton Khirnov Date: Tue, 22 Mar 2022 18:17:27 +0100 Subject: [PATCH] fftools/ffmpeg: move handling corrupt packets to the input thread --- fftools/ffmpeg.c | 7 ------- fftools/ffmpeg_demux.c | 11 +++++++++++ 2 files changed, 11 insertions(+), 7 deletions(-) diff --git a/fftools/ffmpeg.c b/fftools/ffmpeg.c index 6ff5432597..0682a6fcc5 100644 --- a/fftools/ffmpeg.c +++ b/fftools/ffmpeg.c @@ -3729,13 +3729,6 @@ static int process_input(int file_index) if (ist->discard) goto discard_packet; - if (pkt->flags & AV_PKT_FLAG_CORRUPT) { - av_log(NULL, exit_on_error ? AV_LOG_FATAL : AV_LOG_WARNING, - "%s: corrupt input packet in stream %d\n", is->url, pkt->stream_index); - if (exit_on_error) - exit_program(1); - } - if (debug_ts) { av_log(NULL, AV_LOG_INFO, "demuxer -> ist_index:%d type:%s " "next_dts:%s next_dts_time:%s next_pts:%s next_pts_time:%s pkt_pts:%s pkt_pts_time:%s pkt_dts:%s pkt_dts_time:%s duration:%s duration_time:%s off:%s off_time:%s\n", diff --git a/fftools/ffmpeg_demux.c b/fftools/ffmpeg_demux.c index 31b233c4f4..d15cee614d 100644 --- a/fftools/ffmpeg_demux.c +++ b/fftools/ffmpeg_demux.c @@ -165,6 +165,17 @@ static void *input_thread(void *arg) continue; } + if (pkt->flags & AV_PKT_FLAG_CORRUPT) { + av_log(NULL, exit_on_error ? AV_LOG_FATAL : AV_LOG_WARNING, + "%s: corrupt input packet in stream %d\n", + f->ctx->url, pkt->stream_index); + if (exit_on_error) { + av_packet_unref(pkt); + ret = AVERROR_INVALIDDATA; + break; + } + } + msg.pkt = av_packet_alloc(); if (!msg.pkt) { av_packet_unref(pkt);