From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.ffmpeg.org (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTPS id A98764FA60 for ; Tue, 24 Jun 2025 19:25:30 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id 6DF6068D3B3; Tue, 24 Jun 2025 22:23:59 +0300 (EEST) Received: from iq.passwd.hu (iq.passwd.hu [217.27.212.140]) by ffbox0-bg.ffmpeg.org (Postfix) with ESMTP id C6C3B68D3AA for ; Tue, 24 Jun 2025 22:23:54 +0300 (EEST) Received: from localhost (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id 7E8E2E9EF1; Tue, 24 Jun 2025 21:21:07 +0200 (CEST) X-Virus-Scanned: amavisd-new at passwd.hu Received: from iq.passwd.hu ([127.0.0.1]) by localhost (iq.passwd.hu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id QI732nQ_xTRe; Tue, 24 Jun 2025 21:21:06 +0200 (CEST) Received: from bluegene.passwd.hu (localhost [127.0.0.1]) by iq.passwd.hu (Postfix) with ESMTP id ED154E9FA2; Tue, 24 Jun 2025 21:21:05 +0200 (CEST) From: Marton Balint To: ffmpeg-devel@ffmpeg.org Date: Tue, 24 Jun 2025 21:23:07 +0200 Message-ID: <20250624192318.7430-9-cus@passwd.hu> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250624192318.7430-1-cus@passwd.hu> References: <20250624192318.7430-1-cus@passwd.hu> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 09/12] avfilter/buffersink: keep requesting frames if one activation of the graph does not provide one X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Marton Balint Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: A frame graph activation might not produce a frame in the requested sink, so keep on requesting a frame there unless we encounter a filter activation with buffersrc empty error. This makes av_buffersink_get_frame(_flags) work according to its documentation which claims that EAGAIN is only returned if additional frames must be inserted into the graph. Fate changes are because audio frames will have different sizes at segment boundaries, but content is the same. Signed-off-by: Marton Balint --- libavfilter/buffersink.c | 7 ++++++- tests/ref/fate/filter-asegment-samples-absolute | 6 ++++-- tests/ref/fate/filter-asegment-samples-relative | 6 ++++-- tests/ref/fate/filter-asegment-timestamps-absolute | 3 ++- tests/ref/fate/filter-asegment-timestamps-relative | 3 ++- 5 files changed, 18 insertions(+), 7 deletions(-) diff --git a/libavfilter/buffersink.c b/libavfilter/buffersink.c index fb33ad59c5..50a7da2756 100644 --- a/libavfilter/buffersink.c +++ b/libavfilter/buffersink.c @@ -113,6 +113,7 @@ static int get_frame_internal(AVFilterContext *ctx, AVFrame *frame, int flags, i int status, ret; AVFrame *cur_frame; int64_t pts; + int buffersrc_empty = 0; if (buf->peeked_frame) return return_or_keep_frame(buf, frame, buf->peeked_frame, flags); @@ -132,7 +133,11 @@ static int get_frame_internal(AVFilterContext *ctx, AVFrame *frame, int flags, i } else if (li->frame_wanted_out) { ret = ff_filter_graph_run_once(ctx->graph); if (ret == FFERROR_BUFFERSRC_EMPTY) { - // Do nothing for now... + buffersrc_empty = 1; + } else if (ret == AVERROR(EAGAIN)) { + if (buffersrc_empty) + return ret; + ff_inlink_request_frame(inlink); } else if (ret < 0) { return ret; } diff --git a/tests/ref/fate/filter-asegment-samples-absolute b/tests/ref/fate/filter-asegment-samples-absolute index 4090459aa7..ba9e9e269a 100644 --- a/tests/ref/fate/filter-asegment-samples-absolute +++ b/tests/ref/fate/filter-asegment-samples-absolute @@ -16,9 +16,11 @@ 0, 0, 0, 4096, 16384, 0x02ebe66b 0, 4096, 4096, 4096, 16384, 0x35bfe081 0, 8192, 8192, 1808, 7232, 0xa585202c -1, 10000, 10000, 6384, 25536, 0x17309ccf +1, 10000, 10000, 2288, 9152, 0x319ac07d +1, 12288, 12288, 4096, 16384, 0xd389dc43 1, 16384, 16384, 3616, 14464, 0x67e82600 -2, 20000, 20000, 4576, 18304, 0x4bc89a8b +2, 20000, 20000, 480, 1920, 0x24bfb749 +2, 20480, 20480, 4096, 16384, 0x378ee333 2, 24576, 24576, 4096, 16384, 0xabf6df0f 2, 28672, 28672, 4096, 16384, 0xedefe76f 2, 32768, 32768, 4096, 16384, 0x02ebe66b diff --git a/tests/ref/fate/filter-asegment-samples-relative b/tests/ref/fate/filter-asegment-samples-relative index 4090459aa7..ba9e9e269a 100644 --- a/tests/ref/fate/filter-asegment-samples-relative +++ b/tests/ref/fate/filter-asegment-samples-relative @@ -16,9 +16,11 @@ 0, 0, 0, 4096, 16384, 0x02ebe66b 0, 4096, 4096, 4096, 16384, 0x35bfe081 0, 8192, 8192, 1808, 7232, 0xa585202c -1, 10000, 10000, 6384, 25536, 0x17309ccf +1, 10000, 10000, 2288, 9152, 0x319ac07d +1, 12288, 12288, 4096, 16384, 0xd389dc43 1, 16384, 16384, 3616, 14464, 0x67e82600 -2, 20000, 20000, 4576, 18304, 0x4bc89a8b +2, 20000, 20000, 480, 1920, 0x24bfb749 +2, 20480, 20480, 4096, 16384, 0x378ee333 2, 24576, 24576, 4096, 16384, 0xabf6df0f 2, 28672, 28672, 4096, 16384, 0xedefe76f 2, 32768, 32768, 4096, 16384, 0x02ebe66b diff --git a/tests/ref/fate/filter-asegment-timestamps-absolute b/tests/ref/fate/filter-asegment-timestamps-absolute index b3f72c958a..5807194fc8 100644 --- a/tests/ref/fate/filter-asegment-timestamps-absolute +++ b/tests/ref/fate/filter-asegment-timestamps-absolute @@ -24,7 +24,8 @@ 0, 32768, 32768, 4096, 16384, 0x02ebe66b 0, 36864, 36864, 4096, 16384, 0x35bfe081 0, 40960, 40960, 3140, 12560, 0x13b5698a -1, 44100, 44100, 5052, 20208, 0xadc32273 +1, 44100, 44100, 956, 3824, 0xee464a2f +1, 45056, 45056, 4096, 16384, 0xe92bd835 1, 49152, 49152, 4096, 16384, 0x1126dca3 1, 53248, 53248, 4096, 16384, 0x9647edcf 1, 57344, 57344, 4096, 16384, 0x5cc345aa diff --git a/tests/ref/fate/filter-asegment-timestamps-relative b/tests/ref/fate/filter-asegment-timestamps-relative index b3f72c958a..5807194fc8 100644 --- a/tests/ref/fate/filter-asegment-timestamps-relative +++ b/tests/ref/fate/filter-asegment-timestamps-relative @@ -24,7 +24,8 @@ 0, 32768, 32768, 4096, 16384, 0x02ebe66b 0, 36864, 36864, 4096, 16384, 0x35bfe081 0, 40960, 40960, 3140, 12560, 0x13b5698a -1, 44100, 44100, 5052, 20208, 0xadc32273 +1, 44100, 44100, 956, 3824, 0xee464a2f +1, 45056, 45056, 4096, 16384, 0xe92bd835 1, 49152, 49152, 4096, 16384, 0x1126dca3 1, 53248, 53248, 4096, 16384, 0x9647edcf 1, 57344, 57344, 4096, 16384, 0x5cc345aa -- 2.43.0 _______________________________________________ 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".