From: Anton Khirnov <anton@khirnov.net> To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org> Subject: Re: [FFmpeg-devel] [PATCH 13/13 v3] fftools/ffmpeg: convert to a threaded architecture Date: Fri, 01 Dec 2023 20:49:52 +0100 Message-ID: <170146019227.8914.6674790290782283298@lain.khirnov.net> (raw) In-Reply-To: <ZWn60HH9Ui7//JZY@phare.normalesup.org> Quoting Nicolas George (2023-12-01 16:25:04) > Anton Khirnov (12023-12-01): > > http://lists.ffmpeg.org/pipermail/ffmpeg-devel/2023-November/316787.html > > So not Wednesday but Tursday three weeks ago. The Wednesday email was the one I linked to two emails ago. Here it is again: http://lists.ffmpeg.org/pipermail/ffmpeg-devel/2023-November/317536.html > I did not agree that the current code was broken. > > > The current code is broken because its output depends on the order in > > which the frames from different inputs arrive at the filtergraph. It > > just so happens that it is deterministically broken currently. After > > this patchset it becomes non-deterministically broken, which forces me > > to do something about it. > > That is not true. The current code works and gives correct result if the > file is properly muxed: it cannot be said to be broken. I can definitely say it is broken and I already told you why. But if you want something more specific: * the output of your example with the current master changes depending on the number of decoder frame threads; my patch fixes that * in fate-filter-overlay-dvdsub-2397 subtitles appear two frames too early; again, my patch fixes that > > Your testcase offsets two streams by 60 seconds. > > Indeed. > > > That implies 60 seconds > > of buffering. You would get this same amount of bufering in the muxer if > > you did the same offsetting with transcoding or remuxing two streams > > from the same source. > > One can also avoid this buffering entirely by simply opening the file > > twice. > > You are wrong. You would be right if the offset had been in the opposite > direction. But in the case I chose, it is the subtitles stream that is > delayed, and 60 seconds of subtitles means a few dozens frames at most, > not many hundreds. > > Your change to the sub2video hearbeat makes it continuous, and turns the > few dozens frames into many hundreds: this is what is breaking. > > So I say it again: this test case is useful and currently works, include > it in your test case so that your patch series keeps the feature > working. > > I can consider sending a patch to add it to FATE, but not before Monday. > > Also, note that in the grand-parent message from the one you quoted > above, I gave you a solution to make it work. You told that it was > already what you did, but obviously it is not, so let us resolve this > misunderstanding. IIUC your suggestion was to send heartbeat packets from demuxer to decoder, then have the decoder forward them to filtergraph. That is EXACTLY what I'm doing in the final patch, see [1]. It also does not address this problem at all, because it is caused by the heartbeat processing code making decisions based on av_buffersrc_get_nb_failed_requests(), which fundamentally depends on what frames previously arrived on the video input. [1] https://git.khirnov.net/libav.git/tree/fftools/ffmpeg_demux.c?h=ffmpeg_threading#n527 https://git.khirnov.net/libav.git/tree/fftools/ffmpeg_dec.c?h=ffmpeg_threading#n406 -- Anton Khirnov _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
next prev parent reply other threads:[~2023-12-01 19:50 UTC|newest] Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top 2023-11-23 19:14 [FFmpeg-devel] [PATCH v2] ffmpeg CLI multithreading Anton Khirnov 2023-11-23 19:14 ` [FFmpeg-devel] [PATCH 01/13] lavfi/buffersink: avoid leaking peeked_frame on uninit Anton Khirnov 2023-11-23 22:16 ` Paul B Mahol 2023-11-27 9:45 ` Nicolas George 2023-11-23 19:14 ` [FFmpeg-devel] [PATCH 02/13] fftools/ffmpeg_filter: make sub2video heartbeat more robust Anton Khirnov 2023-11-27 9:40 ` Nicolas George 2023-11-27 9:42 ` Nicolas George 2023-11-27 13:02 ` Paul B Mahol 2023-11-27 13:49 ` Nicolas George 2023-11-27 14:08 ` Paul B Mahol 2023-11-29 10:18 ` Anton Khirnov 2023-11-23 19:14 ` [FFmpeg-devel] [PATCH 03/13] fftools/ffmpeg_filter: track input/output index in {Input, Output}FilterPriv Anton Khirnov 2023-11-23 19:14 ` [FFmpeg-devel] [PATCH 04/13] fftools/ffmpeg: make sure FrameData is writable when we modify it Anton Khirnov 2023-11-23 19:15 ` [FFmpeg-devel] [PATCH 05/13] fftools/ffmpeg_filter: move filtering to a separate thread Anton Khirnov 2023-11-24 22:56 ` Michael Niedermayer 2023-11-25 20:18 ` [FFmpeg-devel] [PATCH 05/13 v2] " Anton Khirnov 2023-11-25 20:23 ` [FFmpeg-devel] [PATCH 05/13] " James Almer 2023-11-23 19:15 ` [FFmpeg-devel] [PATCH 06/13] fftools/ffmpeg_filter: buffer sub2video heartbeat frames like other frames Anton Khirnov 2023-11-23 19:15 ` [FFmpeg-devel] [PATCH 07/13] fftools/ffmpeg_filter: reindent Anton Khirnov 2023-11-23 19:15 ` [FFmpeg-devel] [PATCH 08/13] fftools/ffmpeg_mux: add muxing thread private data Anton Khirnov 2023-11-23 19:15 ` [FFmpeg-devel] [PATCH 09/13] fftools/ffmpeg_mux: move bitstream filtering to the muxer thread Anton Khirnov 2023-11-23 19:15 ` [FFmpeg-devel] [PATCH 10/13] fftools/ffmpeg_demux: switch from AVThreadMessageQueue to ThreadQueue Anton Khirnov 2023-11-23 19:15 ` [FFmpeg-devel] [PATCH 11/13] fftools/ffmpeg_enc: move encoding to a separate thread Anton Khirnov 2023-11-23 19:15 ` [FFmpeg-devel] [PATCH 12/13] fftools/ffmpeg: add thread-aware transcode scheduling infrastructure Anton Khirnov 2023-11-23 19:15 ` [FFmpeg-devel] [PATCH 13/13] fftools/ffmpeg: convert to a threaded architecture Anton Khirnov 2023-11-24 22:26 ` Michael Niedermayer 2023-11-25 20:32 ` [FFmpeg-devel] [PATCH 13/13 v2] " Anton Khirnov 2023-11-30 13:08 ` Michael Niedermayer 2023-11-30 13:34 ` Anton Khirnov 2023-11-30 20:48 ` Michael Niedermayer 2023-12-01 11:15 ` [FFmpeg-devel] [PATCH 13/13 v3] " Anton Khirnov 2023-12-01 14:24 ` Nicolas George 2023-12-01 14:27 ` Anton Khirnov 2023-12-01 14:42 ` Nicolas George 2023-12-01 14:46 ` Anton Khirnov 2023-12-01 14:50 ` Nicolas George 2023-12-01 14:58 ` Anton Khirnov 2023-12-01 15:25 ` Nicolas George 2023-12-01 19:49 ` Anton Khirnov [this message] 2023-12-04 15:25 ` Nicolas George 2023-12-04 16:25 ` Anton Khirnov 2023-12-04 16:37 ` Nicolas George 2023-12-04 17:07 ` Anton Khirnov 2023-12-06 12:55 ` Nicolas George 2023-12-06 13:21 ` James Almer 2023-12-06 13:38 ` Nicolas George 2023-12-07 17:26 ` Paul B Mahol 2023-12-21 11:53 ` Paul B Mahol 2023-12-22 10:26 ` Anton Khirnov
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=170146019227.8914.6674790290782283298@lain.khirnov.net \ --to=anton@khirnov.net \ --cc=ffmpeg-devel@ffmpeg.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git