From patchwork Mon May 15 21:20:33 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: 41636 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:ba91:b0:105:feb:71f2 with SMTP id fb17csp1910116pzb; Mon, 15 May 2023 14:21:20 -0700 (PDT) X-Google-Smtp-Source: ACHHUZ4pQGyQGr5//7eIb5u/IDAzuIus6MZdgJ0K7IhNQs1Sc5ZXoj5fwpdv3LwzJ/UoZfjDBphT X-Received: by 2002:a17:906:dc93:b0:94f:a292:20cc with SMTP id cs19-20020a170906dc9300b0094fa29220ccmr33628021ejc.41.1684185679524; Mon, 15 May 2023 14:21:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1684185679; cv=none; d=google.com; s=arc-20160816; b=cz7nwnbDXNuYuiLu1A6dIJgmNSFjBApYDtqiqF93jg2s9TMF3flTZLV/bi2ElMT54m pprnyrMly312ceQeChjjrmKPAzH8p+xSGjpTuPHkNTbzXPnoX+MW8XD9gJt3Ur63ZFn1 VAL1wYLxDjrBMbteC1s9cJUwtOn4BTka+7ooS3xljWWgblYI/D2adTidCmm1Kv1siEQx ALn66Cy8FFM5AxWvinOYIT6emp35t0wStma/V+8hF73aDfFElBP8mmMOWTXU1GrMzsII 8mTvtL2N6YheO8Thx3mu8GO4UKbVpER0ohfodHvLPQ8alpQyHcAEN2+/5gPVkRaoPDCu SwuA== 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=kmsyH7JOIBepur39CEqHEE3IN6gWgbP7K+vKYFzkxsk=; b=QG+7Yd6plivokfSDFPMrpObEb9IwR2iIzkhEYU/g+gWl9JTtfgQKQW01O4yJhO3Vba l7ImT+xNgTZmEpEIaqqNT76spHGv1xqvncnXC8YZ5N151ui4WxMhf3YSbjSvsa70+Lst dnra7EcgH+PI/tn+JHlPztu4eqv/FvKod6QxV/zBpVuwRHo5QhrRuXIK0jKyMo36kfOW suUl/LCOgQPNa1KhsmnHuXa+YLeRNHq8yI6YsD0qB0xqDnLEXMKL+ghTvDttYHRJeQI2 PUpL3PMDa4HeGF5/P2h8wlgKicZvhUIZ6gdzTaYI54QmFQCaVMn7qVMYe9haK1iw2oAJ RlEA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20221208 header.b=B7fJnF7a; 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 sc19-20020a1709078a1300b0096a36b9c937si11075413ejc.22.2023.05.15.14.21.19; Mon, 15 May 2023 14:21:19 -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=20221208 header.b=B7fJnF7a; 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 6174868BFA0; Tue, 16 May 2023 00:21:16 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-vs1-f48.google.com (mail-vs1-f48.google.com [209.85.217.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B4B7068B2C3 for ; Tue, 16 May 2023 00:21:09 +0300 (EEST) Received: by mail-vs1-f48.google.com with SMTP id ada2fe7eead31-435ff65df88so3248596137.1 for ; Mon, 15 May 2023 14:21:09 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20221208; t=1684185668; x=1686777668; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=IeZHPEIQsCtN5oHkFxLNlDAH8qbjWmVnt4003mmFXBA=; b=B7fJnF7a9s0qs64kqNwzctM9vYquoFi14iryxEhzGLd5jkcOzueTVQP+1FBbCHtfQd 8pJQZpwQW6+tXp/+sTXQTWd3AgD68XznIZjHDQDxgOL495z85+tGVr+Qis801ASGn8RJ j5XywjRbu1P+d9ihcghOYiLBS0gYiAn5ja1aSko4WW181Wku8lE0t8QfD2Q269DCIBz8 2dSHJEZG7J2NPF0wRm1o+tHdUTQPk41KsldDHf2JK8SkonDusvr1AIF5UvEoFuwYlxN+ oMP7iTQ2dpu4JHQ6Syo9gB2DeVMj+S7QaTccMSfM/pqCXSu1knUn1FjGGKMNkrG8VpVf XLLg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20221208; t=1684185668; x=1686777668; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=IeZHPEIQsCtN5oHkFxLNlDAH8qbjWmVnt4003mmFXBA=; b=F+N+17C4t71AkRyljRxjLDkQpIYkJqL8OEBElSA0pRNG8moEad0K9Z/ATrSoVQ2zkG i5mpsbWuXqSn4JVWdZf0fVlSj+k4jXUU2nSAA+MUK3h0+udu2PAMXToTlihcFJnx+oRx NN1oa140/DjsRKbrSD2fOuvwXBUAn7eW2rx+C5pYi7dxbC6GRKaqltp9/nF+BQhGglVf N+p6OxPkSy61vmjrGVl8yAPsqwkaizn0GqUZ9RQ1f4ba/sn//fE+wog2smxl0yRSeahV iwvJkp1siIkCWdi8qMfoKZjpu0mhlK/9xyX8NbJnqE0cfmONZW11RxwBOuoBkgOk+6ID 9uAg== X-Gm-Message-State: AC+VfDyJf8LC3sFXRIPMWIYHauaFgqN7VRzkohDKJ9YNmgen57O6XJS5 01Gqg/ePXW+dYzOTgpjs+JoPROQZTrXPUpwCq+Dwa6UA X-Received: by 2002:a67:f113:0:b0:42e:3861:9fa3 with SMTP id n19-20020a67f113000000b0042e38619fa3mr14384571vsk.18.1684185668204; Mon, 15 May 2023 14:21:08 -0700 (PDT) MIME-Version: 1.0 From: Paul B Mahol Date: Mon, 15 May 2023 23:20:33 +0200 Message-ID: To: FFmpeg development discussions and patches X-Content-Filtered-By: Mailman/MimeDel 2.1.29 Subject: [FFmpeg-devel] [PATCH] avfilter: add more usage of ff_null_get_*_buffer() 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: mp2TVLA8hrUo Attached. From 27c37fe14f6e631e581002ef8fa942095efe0338 Mon Sep 17 00:00:00 2001 From: Paul B Mahol Date: Mon, 15 May 2023 22:30:07 +0200 Subject: [PATCH 3/3] avfilter: add more usage of ff_null_get_*_buffer() Signed-off-by: Paul B Mahol --- libavfilter/af_aformat.c | 1 + libavfilter/af_anull.c | 1 + libavfilter/af_astats.c | 1 + libavfilter/f_loop.c | 1 + libavfilter/settb.c | 2 ++ libavfilter/trim.c | 1 + libavfilter/vf_fps.c | 1 + libavfilter/vf_null.c | 1 + libavfilter/vf_scale.c | 10 ++++++++++ libavfilter/vf_tpad.c | 10 ++++++++++ 10 files changed, 29 insertions(+) diff --git a/libavfilter/af_aformat.c b/libavfilter/af_aformat.c index a14e4c1240..ce061ffc56 100644 --- a/libavfilter/af_aformat.c +++ b/libavfilter/af_aformat.c @@ -180,6 +180,7 @@ static const AVFilterPad avfilter_af_aformat_inputs[] = { { .name = "default", .type = AVMEDIA_TYPE_AUDIO, + .get_buffer.audio = ff_null_get_audio_buffer, }, }; diff --git a/libavfilter/af_anull.c b/libavfilter/af_anull.c index 78c5faeb23..d0f32bac19 100644 --- a/libavfilter/af_anull.c +++ b/libavfilter/af_anull.c @@ -31,6 +31,7 @@ static const AVFilterPad avfilter_af_anull_inputs[] = { { .name = "default", .type = AVMEDIA_TYPE_AUDIO, + .get_buffer.audio = ff_null_get_audio_buffer, }, }; diff --git a/libavfilter/af_astats.c b/libavfilter/af_astats.c index f3f2bd743b..0354a20a8b 100644 --- a/libavfilter/af_astats.c +++ b/libavfilter/af_astats.c @@ -833,6 +833,7 @@ static const AVFilterPad astats_inputs[] = { .name = "default", .type = AVMEDIA_TYPE_AUDIO, .filter_frame = filter_frame, + .get_buffer.audio = ff_null_get_audio_buffer, }, }; diff --git a/libavfilter/f_loop.c b/libavfilter/f_loop.c index 33b66fa534..1ad9ef84be 100644 --- a/libavfilter/f_loop.c +++ b/libavfilter/f_loop.c @@ -481,6 +481,7 @@ static const AVFilterPad inputs[] = { { .name = "default", .type = AVMEDIA_TYPE_VIDEO, + .get_buffer.video = ff_null_get_video_buffer, }, }; diff --git a/libavfilter/settb.c b/libavfilter/settb.c index 23cb02689b..7e5793b50c 100644 --- a/libavfilter/settb.c +++ b/libavfilter/settb.c @@ -169,6 +169,7 @@ static const AVFilterPad avfilter_vf_settb_inputs[] = { { .name = "default", .type = AVMEDIA_TYPE_VIDEO, + .get_buffer.video = ff_null_get_video_buffer, }, }; @@ -201,6 +202,7 @@ static const AVFilterPad avfilter_af_asettb_inputs[] = { { .name = "default", .type = AVMEDIA_TYPE_AUDIO, + .get_buffer.audio = ff_null_get_audio_buffer, }, }; diff --git a/libavfilter/trim.c b/libavfilter/trim.c index ee6e821cd2..d5181e2c49 100644 --- a/libavfilter/trim.c +++ b/libavfilter/trim.c @@ -195,6 +195,7 @@ static const AVFilterPad trim_inputs[] = { .type = AVMEDIA_TYPE_VIDEO, .filter_frame = trim_filter_frame, .config_props = config_input, + .get_buffer.video = ff_null_get_video_buffer, }, }; diff --git a/libavfilter/vf_fps.c b/libavfilter/vf_fps.c index 2bfb6d29e7..65a1eecb99 100644 --- a/libavfilter/vf_fps.c +++ b/libavfilter/vf_fps.c @@ -380,6 +380,7 @@ static const AVFilterPad avfilter_vf_fps_inputs[] = { { .name = "default", .type = AVMEDIA_TYPE_VIDEO, + .get_buffer.video = ff_null_get_video_buffer, }, }; diff --git a/libavfilter/vf_null.c b/libavfilter/vf_null.c index fa80e2a102..7bc201595d 100644 --- a/libavfilter/vf_null.c +++ b/libavfilter/vf_null.c @@ -30,6 +30,7 @@ static const AVFilterPad avfilter_vf_null_inputs[] = { { .name = "default", .type = AVMEDIA_TYPE_VIDEO, + .get_buffer.video = ff_null_get_video_buffer, }, }; diff --git a/libavfilter/vf_scale.c b/libavfilter/vf_scale.c index b0221e8538..6fb8d5ca94 100644 --- a/libavfilter/vf_scale.c +++ b/libavfilter/vf_scale.c @@ -988,6 +988,15 @@ static void *child_next(void *obj, void *prev) return NULL; } +static AVFrame *get_video_buffer(AVFilterLink *inlink, int w, int h) +{ + ScaleContext *s = inlink->dst->priv; + + return !s->sws ? + ff_null_get_video_buffer (inlink, w, h) : + ff_default_get_video_buffer(inlink, w, h); +} + #define OFFSET(x) offsetof(ScaleContext, x) #define FLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM #define TFLAGS AV_OPT_FLAG_VIDEO_PARAM|AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_RUNTIME_PARAM @@ -1053,6 +1062,7 @@ static const AVFilterPad avfilter_vf_scale_inputs[] = { .name = "default", .type = AVMEDIA_TYPE_VIDEO, .filter_frame = filter_frame, + .get_buffer.video = get_video_buffer, }, }; diff --git a/libavfilter/vf_tpad.c b/libavfilter/vf_tpad.c index f0c065f0c3..420ff9aede 100644 --- a/libavfilter/vf_tpad.c +++ b/libavfilter/vf_tpad.c @@ -202,11 +202,21 @@ static av_cold void uninit(AVFilterContext *ctx) av_frame_free(&s->cache_stop); } +static AVFrame *get_video_buffer(AVFilterLink *inlink, int w, int h) +{ + TPadContext *s = inlink->dst->priv; + + return ((!s->eof && !s->pad_start) || ((s->pad_stop == 0 || s->stop_mode) && (s->pad_start == 0 || s->start_mode))) ? + ff_null_get_video_buffer (inlink, w, h) : + ff_default_get_video_buffer(inlink, w, h); +} + static const AVFilterPad tpad_inputs[] = { { .name = "default", .type = AVMEDIA_TYPE_VIDEO, .config_props = config_input, + .get_buffer.video = get_video_buffer, }, }; -- 2.39.1