From patchwork Sun Feb 13 19:40:32 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 34266 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6838:14aa:0:0:0:0 with SMTP id bz10csp4954940nkb; Sun, 13 Feb 2022 11:40:10 -0800 (PST) X-Google-Smtp-Source: ABdhPJxEtE2P7zEJ0UOaJkGZQSOUcDSHOP4U93sc0dCRby+Ra5+9ditKScZVj0ITQBi+/u6gdRer X-Received: by 2002:a17:907:29c3:: with SMTP id ev3mr4945117ejc.694.1644781209829; Sun, 13 Feb 2022 11:40:09 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644781209; cv=none; d=google.com; s=arc-20160816; b=kU/S7rIoDIoe9fKE9VUmreuOce/Fm2h5Me44KkEG7FLjJVMWbsJmcmx1XP2724a8+C FWZUs+Up6iGH28sZ07ZL6LdHfUUbEFbLHWqDzH+Xvk6VVKcfsHkNj9Yql1FublrE7LqV cPXRB841wbNWgzzePbwZd3AZxCV/HAUxJpKJKnvAlUT7caGxOyXnUYJPEcFdWd3ejZ5U oNBhf38qBCEFG0D2P/QujRs/9aQHJGRtja+0FePYcv09JaHYuoTmdSl0AxpFmhomBi5n b3ZhaC3evOZHSktJJ+KdWWe+W4+kND70QTuwyDTFjP3xg4eIiwHh/TFAAt7lHqMwyQfU MRzg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=VdRfeT8FRLNIRJzfma4MOtH3v5PrYwMEhbOtmRw+fuo=; b=xEDlDWT/23fSZqWaIv3Y0e49F060XMPfvbgNLsYAQHEYGhU68DVUfT9MkeF0jiSqiP XPxBzTjBKCHtO2AU3LA43pvFUw2Jf+HCrPMSZI7bzktb+cdsyHikxPrqCtonpzuWaEr9 PWrY9T97F/OAnhEKI2smS4SMSOkwLDTNrE8XAoYPpWS7lA7/XX03Lv+js6NWRIfG4Iu6 nOuCz2sZL+bGPZbpbOGmatWKsZUaZ+9VzApPDeRLK+uZsx4O1HvNyZm8XJUgmoBGarc8 BZ4chF/nsWFmtixB28Sflj004K4LEOh8zKplBvO5BhlxMR5lbkAAYtacbBGHqJjlZtSl 0FlQ== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="p/RTmsOZ"; 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 ds15si3564262ejc.143.2022.02.13.11.40.09; Sun, 13 Feb 2022 11:40:09 -0800 (PST) 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=20210112 header.b="p/RTmsOZ"; 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 6835568B1C8; Sun, 13 Feb 2022 21:40:05 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E40A168B0C3 for ; Sun, 13 Feb 2022 21:39:58 +0200 (EET) Received: by mail-ej1-f52.google.com with SMTP id k25so33388564ejp.5 for ; Sun, 13 Feb 2022 11:39:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=+yUIgseEOcpCJvkOmf6bzhRUfPjOT6tHXwNqFg84nnQ=; b=p/RTmsOZ+nRzFk0p7qIXJLFygN+yJgjGUWqWu3AS7ExYWywhVj3g8dw4131P9gkr74 wv6h7XJ7VQvFRGARa1CYXt3Nk3vnhIUGaFJCFRecq+KfesZz8qnOKuF80qKmc4BjirUs Gr2y1Vc4dfq+Z9ohccBjaMpwY/LIbYcWQEas9PL4spTpQDU2Tcmp7s33OoWqGjl+40hU jwlWTiMjNtSH+RIKZdOyPSz50KwsVNMlyKeEO+MoNW4hqHIYUsf1e6HKQCuuJIKJV8cR 7rgPty6wXgMPW3f+QnvxFWaZJlGubDlR1lsnnn9hBQrRYsMVU7+KfRQQFJ10W7e4pOVh Iz4A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:from:to:subject:date:message-id:mime-version :content-transfer-encoding; bh=+yUIgseEOcpCJvkOmf6bzhRUfPjOT6tHXwNqFg84nnQ=; b=iBsFFRhAV/Rj5Fi/3v59JXIyM58UdGLQcG72WJoXRYfgqyQqa0ZoRmw7aKFW3kI7gN o/WLZ0ZSckgTVopmX5AmonPj/9sytvVxxAPoKnJRYg+SQdI7dbNt93wOITSr/zt/nQ8F 8mU81W8UyFUL+j65sbI2wZR/DJ6lrdoNNXP6fDH8YoN+ptQExejOc/y3JkiTDe9UzVbD lgiNci2vSs4zJAaBDGGqu6BCRO2kjQ0IXn9H3VkRgLZir1xb4wEreqmu2veq4Js6Yrn2 XaWI9bB0sehwLlWLKgNS7PH3sbA80t2G6ydfCc5Yx0Q3aUTqR9uYUqMVjeFJoyu5Lbid OWYg== X-Gm-Message-State: AOAM531sHM8fIn4vLnbWksnby6sKkcRMluFt7Bd7W0T9MViZpklpWLzU ZMwBY2bZip3gbdeoRuO49/wRaCANERs= X-Received: by 2002:a17:906:72c5:: with SMTP id m5mr8849849ejl.63.1644781198351; Sun, 13 Feb 2022 11:39:58 -0800 (PST) Received: from localhost.localdomain ([95.168.120.42]) by smtp.gmail.com with ESMTPSA id oz24sm467866ejb.168.2022.02.13.11.39.57 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Feb 2022 11:39:57 -0800 (PST) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Sun, 13 Feb 2022 20:40:32 +0100 Message-Id: <20220213194032.1562740-1-onemda@gmail.com> X-Mailer: git-send-email 2.33.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH] avfilter/af_aderivative: add timeline support 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: xXRv3UTe4JbM Signed-off-by: Paul B Mahol --- libavfilter/af_aderivative.c | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/libavfilter/af_aderivative.c b/libavfilter/af_aderivative.c index baa272d609..ca8af6cec8 100644 --- a/libavfilter/af_aderivative.c +++ b/libavfilter/af_aderivative.c @@ -16,6 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ +#include "libavutil/opt.h" #include "audio.h" #include "avfilter.h" #include "internal.h" @@ -103,8 +104,18 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) AVFilterContext *ctx = inlink->dst; ADerivativeContext *s = ctx->priv; AVFilterLink *outlink = ctx->outputs[0]; - AVFrame *out = ff_get_audio_buffer(outlink, in->nb_samples); + AVFrame *out; + if (ctx->is_disabled) { + if (s->prev) + av_samples_set_silence(s->prev->extended_data, 0, 1, + s->prev->channels, + s->prev->format); + + return ff_filter_frame(outlink, in); + } + + out = ff_get_audio_buffer(outlink, in->nb_samples); if (!out) { av_frame_free(&in); return AVERROR(ENOMEM); @@ -149,23 +160,33 @@ static const AVFilterPad aderivative_outputs[] = { }, }; +static const AVOption aderivative_options[] = { + { NULL } +}; + +AVFILTER_DEFINE_CLASS_EXT(aderivative, "aderivative/aintegral", aderivative_options); + const AVFilter ff_af_aderivative = { .name = "aderivative", .description = NULL_IF_CONFIG_SMALL("Compute derivative of input audio."), .priv_size = sizeof(ADerivativeContext), + .priv_class = &aderivative_class, .uninit = uninit, FILTER_INPUTS(aderivative_inputs), FILTER_OUTPUTS(aderivative_outputs), FILTER_SAMPLEFMTS(AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_S32P, AV_SAMPLE_FMT_DBLP), + .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL, }; const AVFilter ff_af_aintegral = { .name = "aintegral", .description = NULL_IF_CONFIG_SMALL("Compute integral of input audio."), .priv_size = sizeof(ADerivativeContext), + .priv_class = &aderivative_class, .uninit = uninit, FILTER_INPUTS(aderivative_inputs), FILTER_OUTPUTS(aderivative_outputs), FILTER_SAMPLEFMTS(AV_SAMPLE_FMT_FLTP, AV_SAMPLE_FMT_DBLP), + .flags = AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL, };