Message ID | tencent_8DB305684BB3F3136575CD29060EB5E55305@qq.com |
---|---|
State | New |
Headers | show |
Series | [FFmpeg-devel] fftools/ffmpeg_mux: fix regression with muxer EOF | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
Quoting Zhao Zhili (2023-04-21 18:58:09) > From: Zhao Zhili <zhilizhao@tencent.com> > > Regression introduced by b40856. > > Fix #10327. The commit message is entirely useless, it tells the reader nothing about what the problem is or how it is fixed. > --- > fftools/ffmpeg_mux.c | 11 ++++++++--- > 1 file changed, 8 insertions(+), 3 deletions(-) > > diff --git a/fftools/ffmpeg_mux.c b/fftools/ffmpeg_mux.c > index a2e8873ad2..b4b4dab8fd 100644 > --- a/fftools/ffmpeg_mux.c > +++ b/fftools/ffmpeg_mux.c > @@ -214,9 +214,14 @@ static void *muxer_thread(void *arg) > ost = of->streams[stream_idx]; > ret = sync_queue_process(mux, ost, ret < 0 ? NULL : pkt, &stream_eof); > av_packet_unref(pkt); > - if (ret == AVERROR_EOF && stream_eof) > - tq_receive_finish(mux->tq, stream_idx); > - else if (ret < 0) { > + if (ret == AVERROR_EOF) { > + if (stream_eof) { > + tq_receive_finish(mux->tq, stream_idx); > + } else { > + ret = 0; > + break; All the other exit paths from the loop have a log message saying why it happened, this one should as well.
diff --git a/fftools/ffmpeg_mux.c b/fftools/ffmpeg_mux.c index a2e8873ad2..b4b4dab8fd 100644 --- a/fftools/ffmpeg_mux.c +++ b/fftools/ffmpeg_mux.c @@ -214,9 +214,14 @@ static void *muxer_thread(void *arg) ost = of->streams[stream_idx]; ret = sync_queue_process(mux, ost, ret < 0 ? NULL : pkt, &stream_eof); av_packet_unref(pkt); - if (ret == AVERROR_EOF && stream_eof) - tq_receive_finish(mux->tq, stream_idx); - else if (ret < 0) { + if (ret == AVERROR_EOF) { + if (stream_eof) { + tq_receive_finish(mux->tq, stream_idx); + } else { + ret = 0; + break; + } + } else if (ret < 0) { av_log(mux, AV_LOG_ERROR, "Error muxing a packet\n"); break; }
From: Zhao Zhili <zhilizhao@tencent.com> Regression introduced by b40856. Fix #10327. --- fftools/ffmpeg_mux.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-)