diff mbox series

[FFmpeg-devel] fftools/ffmpeg_mux: fix regression with muxer EOF

Message ID tencent_8DB305684BB3F3136575CD29060EB5E55305@qq.com
State New
Headers show
Series [FFmpeg-devel] fftools/ffmpeg_mux: fix regression with muxer EOF | expand

Checks

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

Commit Message

Zhao Zhili April 21, 2023, 4:58 p.m. UTC
From: Zhao Zhili <zhilizhao@tencent.com>

Regression introduced by b40856.

Fix #10327.
---
 fftools/ffmpeg_mux.c | 11 ++++++++---
 1 file changed, 8 insertions(+), 3 deletions(-)

Comments

Anton Khirnov April 22, 2023, 12:16 p.m. UTC | #1
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 mbox series

Patch

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;
         }