From patchwork Sat Nov 4 19:07:38 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 44527 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3aa6:b0:181:818d:5e7f with SMTP id d38csp587339pzh; Sat, 4 Nov 2023 11:59:54 -0700 (PDT) X-Google-Smtp-Source: AGHT+IFchx5/RbWOstBO2id95CEUzDSnYVETYdK422r2lqaWkJ1p77BkE+r7m9YDJ7wdVw4p5W8A X-Received: by 2002:a17:907:1b02:b0:9ae:82b4:e309 with SMTP id mp2-20020a1709071b0200b009ae82b4e309mr10339931ejc.0.1699124394334; Sat, 04 Nov 2023 11:59:54 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1699124394; cv=none; d=google.com; s=arc-20160816; b=legUyyoXeAgbt98mr6JmG7nh73s/KNJJrYLx4a69gfZqvc891WJij3Kcd4iVejwk2H hwhhm7L5FEK8XOD2c+XXo+oCk/PmBC6Ai5n8+/ov/oTV3rc4BP0qoI7mshATW/wbc5ci 4o90Jb9GVjjDbTB2XVouWVrjmBnGgoQwkoiXd7TMg8s3JA1DNedmrN9BK4l6C/0Af/Df 6kA9FoZVusjzH2vpzpcsFyAPMp5CVdfePtcXIbxjRHSvkVU1N1x2i1ZwR32F3jMwm3gL FJ0//4ZSltFBq4qK+fZUjTkJKXTeISdfvNZ+du3YHK8LDxgbookz/O31RxZNx1M95Slc dFVQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:reply-to:list-subscribe:list-help:list-post :list-archive:list-unsubscribe:list-id:precedence:subject:to :message-id:date:from:mime-version:dkim-signature:delivered-to; bh=c55vIwHDsW2Gp+apLkphWbXCa/Y2aaqzoV9TT9XX7F0=; fh=e5zN9xSzcxLA6bGo3lF+CqTbY/oLwzApV03EO/RBfgQ=; b=ROr1RvEdvO9R91jQP3szTKHDVrUz8mlellSXtWzj7x0ycZ8/m8M6cazrSV5RAQBJhA 2GBToz7T1Wza9cQMk7Kp6xA0Nf4aPUbqH6GaGD8Y1+G0cvL5IWj+FzGEeN0kiLf1+6ZL 0kIP5hGxMqsz/rIs3oVftgZA8yuUO5eWZTUoVda44ScICKkuouJMeiTd3oeCDHr1J+ah JHIASWmSlMYZHeWP1aN63O4MLz6rIkKwk2le3z74X19/fxKtrhSROU8zBjOFrcjBKLnu bIzNR+rFZsjf9dyJSmfjOOcDEQHNMmjdo0+B0yj33PQtK4iKOQ0Z6a+eeMTxn6qK/ylz dp/g== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=KtWIljEc; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id f25-20020a50a6d9000000b0054356d8eb2esi2326341edc.58.2023.11.04.11.59.53; Sat, 04 Nov 2023 11:59:54 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20230601 header.b=KtWIljEc; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EC88568CE7A; Sat, 4 Nov 2023 20:59:50 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vs1-f45.google.com (mail-vs1-f45.google.com [209.85.217.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 28D2F68CA1F for ; Sat, 4 Nov 2023 20:59:44 +0200 (EET) Received: by mail-vs1-f45.google.com with SMTP id ada2fe7eead31-45efc08a6f3so169621137.0 for ; Sat, 04 Nov 2023 11:59:44 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1699124382; x=1699729182; darn=ffmpeg.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=gJdX+DVWcnx5V8I6uEQdDzNsXkU6Skg58D68efme84M=; b=KtWIljEcyo9Gz7XmVUeCHcrH7t9n3Vu4+8uEUShyzKXmEy1MToBDZefBLA+d80Zy/0 5mO+PvZ/Ye6KXMeGvt8jyMHgxtMPHbyOOIhA1K1C0cFBJvrT6f0ykfIU8tpe39k8Nh3y 8DzApf4Q89vYego5WdVwh465B+4cFyQM9hRpaGwi7dtyOQNH/9Eu81MME3trMT+upE1C pHiI4ZPQuyIDEozKPCyl8w6mY6vghvEMyUGwAaua+CnD8lrbwktvOKOqi/VEan/HmSr1 EgAsaydTKlu0GekKvUgDfDMh+o5J+3xAtcx0CMn7Gjq9Y/p4DbyvQu8jq0D6b7X20sxL a12w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699124382; x=1699729182; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=gJdX+DVWcnx5V8I6uEQdDzNsXkU6Skg58D68efme84M=; b=P+sRULOD9H7cMowjrp6seYIEj4gpzwrpz+1PhxvFSALMXCgp/1w4P0nAcZv5bJLaDj M7vw0Kz+KjEi0NSnevCySjfKLgey2CeS+/RWEO/BrL6ZFwBFVyYWXI5+Pexcu2TtfPeQ wajQ3o9hrbdo9F/gH8CYhQ/tQ1bMqOlihU3fqwJnVsCthqocX4E1qEJHh/sqLWlkqzHx IncT66y2BwYyilrFCTlI+RFlYaZQx9N+2VV+cYVFGPU58F/accqJ2gKR/UHIvRNriOyj hk+gUETk4eqDUJK/p3bgyT+38wxVlT3prsF8+19UzO9UecyL6p+YbM/3Nt44BA7plFlx h/vg== X-Gm-Message-State: AOJu0YzPrm9ywg29A/oTotp0PDha1kdsszzVr7arLNgRtH5uwckPMPO7 aXnYivTTv66jrD5OJxRzvV7Q7EbOD+dG0mmIO5nF24bhgBo= X-Received: by 2002:a67:b844:0:b0:45e:d31e:6e6e with SMTP id o4-20020a67b844000000b0045ed31e6e6emr922567vsh.33.1699124382428; Sat, 04 Nov 2023 11:59:42 -0700 (PDT) MIME-Version: 1.0 From: Paul B Mahol Date: Sat, 4 Nov 2023 20:07:38 +0100 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] avfilter/buffersrc: switch to activate 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: HU0kNQ+fVdFq Attached. From 31a6a78ebc3a3f8785ec7c8e5ffd4257c7eadec3 Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Fri, 27 Oct 2023 14:26:50 +0200 Subject: [PATCH] avfilter/buffersrc: switch to activate Fixes error when caller keeps adding frames into filtergraph that reached EOF by other means, for example EOF is signalled by other filter in filtergraph or by buffersink. Signed-off-by: Paul B Mahol --- libavfilter/buffersrc.c | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/libavfilter/buffersrc.c b/libavfilter/buffersrc.c index 453fc0fd5c..b0a905d455 100644 --- a/libavfilter/buffersrc.c +++ b/libavfilter/buffersrc.c @@ -36,6 +36,7 @@ #include "audio.h" #include "avfilter.h" #include "buffersrc.h" +#include "filters.h" #include "formats.h" #include "internal.h" #include "video.h" @@ -194,7 +195,7 @@ FF_ENABLE_DEPRECATION_WARNINGS if (!frame) return av_buffersrc_close(ctx, s->last_pts, flags); if (s->eof) - return AVERROR(EINVAL); + return AVERROR_EOF; s->last_pts = frame->pts + frame->duration; @@ -484,21 +485,28 @@ static int config_props(AVFilterLink *link) return 0; } -static int request_frame(AVFilterLink *link) +static int activate(AVFilterContext *ctx) { - BufferSourceContext *c = link->src->priv; + AVFilterLink *outlink = ctx->outputs[0]; + BufferSourceContext *c = ctx->priv; - if (c->eof) - return AVERROR_EOF; + if (!c->eof && ff_outlink_get_status(outlink)) { + c->eof = 1; + return 0; + } + + if (c->eof) { + ff_outlink_set_status(outlink, AVERROR_EOF, c->last_pts); + return 0; + } c->nb_failed_requests++; - return AVERROR(EAGAIN); + return FFERROR_NOT_READY; } static const AVFilterPad avfilter_vsrc_buffer_outputs[] = { { .name = "default", .type = AVMEDIA_TYPE_VIDEO, - .request_frame = request_frame, .config_props = config_props, }, }; @@ -507,7 +515,7 @@ const AVFilter ff_vsrc_buffer = { .name = "buffer", .description = NULL_IF_CONFIG_SMALL("Buffer video frames, and make them accessible to the filterchain."), .priv_size = sizeof(BufferSourceContext), - + .activate = activate, .init = init_video, .uninit = uninit, @@ -521,7 +529,6 @@ static const AVFilterPad avfilter_asrc_abuffer_outputs[] = { { .name = "default", .type = AVMEDIA_TYPE_AUDIO, - .request_frame = request_frame, .config_props = config_props, }, }; @@ -530,7 +537,7 @@ const AVFilter ff_asrc_abuffer = { .name = "abuffer", .description = NULL_IF_CONFIG_SMALL("Buffer audio frames, and make them accessible to the filterchain."), .priv_size = sizeof(BufferSourceContext), - + .activate = activate, .init = init_audio, .uninit = uninit, -- 2.42.0