> On Apr 23, 2023, at 17:42, Marton Balint <c...@passwd.hu> wrote: > > On Sun, 23 Apr 2023, Anton Khirnov wrote: > >> Quoting Marton Balint (2023-04-23 11:12:38) >>> >>> >>> On Sat, 22 Apr 2023, Anton Khirnov wrote: >>> >>>> Quoting Zhao Zhili (2023-04-22 14:56:34) >>>>> From: Zhao Zhili <zhiliz...@tencent.com> >>>>> >>>>> Fix #10327. >>>>> >>>>> Signed-off-by: Zhao Zhili <zhiliz...@tencent.com> >>>>> --- >>>>> fftools/ffmpeg_mux.c | 12 +++++++++--- >>>>> 1 file changed, 9 insertions(+), 3 deletions(-) >>>>> >>>>> diff --git a/fftools/ffmpeg_mux.c b/fftools/ffmpeg_mux.c >>>>> index a2e8873ad2..0e1a5d7dc5 100644 >>>>> --- a/fftools/ffmpeg_mux.c >>>>> +++ b/fftools/ffmpeg_mux.c >>>>> @@ -214,9 +214,15 @@ 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 { >>>>> + av_log(mux, AV_LOG_VERBOSE, "Muxer %s\n", >>>>> av_err2str(ret)); >>>> >>>> That seems unnecesarily convoluted, given that we _know_ the error to be >>>> EOF here. Also, please make it "Muxer returned EOF" to make it clear >>>> what exactly is the source of EOF. >>>> >>>> Otherwise ok, feel free to push with this change. >>> >>> This seems like yet another clash of AVERROR_EOF error codes coming from >>> different places with different semantics. For >>> av_interleaved_write_frame(), AVERROR_EOF is an error condition, so >>> file encoding should fail, >> >> Why should it fail? I'd think a muxer returning EOF is the way to signal >> non-error muxer-side termination. > > That would be an API change. AVERROR_EOF is not special in any way from other > error codes for av_interleaved_write_frame. A muxer cannot signal non-error > muxer side termination with existing API.
Sorry I have pushed before seeing your comments. It can happen in theory, but I’m not sure in which case muxer can return EOF and should be treated as a real error condition. A simple grep shows: $ grep 'AVERROR_EOF' libavformat/*enc.c libavformat/hlsenc.c: if (ret >= 0 || ret == AVERROR_EOF) <--- It changed ret to 0 afterwards. libavformat/webmdashenc.c: return AVERROR_EOF; <—-- More like a bug on the caller side than a real error. > > Regards, > Marton > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".