From patchwork Wed Oct 3 11:03:47 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul B Mahol X-Patchwork-Id: 10591 Delivered-To: ffmpegpatchwork@gmail.com Received: by 2002:ab0:73d2:0:0:0:0:0 with SMTP id m18csp4047645uaq; Wed, 3 Oct 2018 04:04:33 -0700 (PDT) X-Google-Smtp-Source: ACcGV61Ru/s07tLg5ChT+8+DqWqZKQhMUJAQtoiE31EItgVlwdJgOXe9TGneub1R459nXjKMqzS+ X-Received: by 2002:a1c:dc0a:: with SMTP id t10-v6mr1071532wmg.105.1538564672989; Wed, 03 Oct 2018 04:04:32 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1538564672; cv=none; d=google.com; s=arc-20160816; b=n5aYd6WmZl6IepcBS7LCkA6FR19ct1PzNe75r7YrHMYvGPVAe/S7L3Cil+5wI9kfvF Ozynobz4qOH2QZvCed72r5Usc7uj6eX3g/8A2nXAueUr72F8JpTvZ0uxu9+zCUIv6uDa PuWXCDLYfhmRkX8CJycVfl/pMtBVONj7MjjMZOm8Lij8eXyJMPb6IO9QaZC7Ek9mSEgD FQKlIeQbu6LWhFkSTfytjqrxWlY4n1gA+RdfSH0LKA8mjEO9kQqtdysaAxQ1fvvbBRKQ 9Tk/YFGq/5KU2kRUvdCIlq0x2KKRLsYuOMbJUAIa8UVuE76RrnrdbaIXtGRe05MxDvWi gyTQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to; bh=c3k/FaA7fZD4muMv0O1EG/t2bHFF1EGXjQBedz+rQes=; b=MLzHTw+k9I/FVsMWoyEaXCvhE27mpvIjr7yV6mWA1C1QdS4d2WsK0ZSqRqG34Ww+hy qRyfucLeW4rvbA9pOXrrgaYkiXNZU4as7L6w6wAgrHADPMsOoRrBraLggZ4an1Z5ovNB ZGP+Op9PqctaEtnPfpYLOnPw6cKks+BX8WYnWG8Wmxt0dXOBqMHz3rbhLocFvUOpzxEh VhCT9IZWarzw0fszYaLsHWAbQqHlndtMioimwer4+CnJQGpL/wlnFI68RP3vPoGb9Khu UVDtwMeg2YBnGCAzCGHIi3DeocXsEQon5i2kaIZzDWuUAFahemBjgk/32tzBl4EvC/+7 PfBw== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=nwjj8UzW; 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 f195-v6si1189002wmd.6.2018.10.03.04.04.32; Wed, 03 Oct 2018 04:04:32 -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=20161025 header.b=nwjj8UzW; 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 CF06768A44E; Wed, 3 Oct 2018 14:03:47 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f66.google.com (mail-ed1-f66.google.com [209.85.208.66]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A4A0D68A425 for ; Wed, 3 Oct 2018 14:03:39 +0300 (EEST) Received: by mail-ed1-f66.google.com with SMTP id j62-v6so4920268edd.7 for ; Wed, 03 Oct 2018 04:03:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id:in-reply-to:references; bh=ounu9nkSdr0wGPWoF5FwW68v9/xfZkOlrm6bJ7NlO14=; b=nwjj8UzWKnoh/U4Ikb7JSycexdzpJtFqtQzd1JDkoEV00BFyakFDMHu7V0ZV1xKFcu PdBoXIIkK2lf5/8oVY3cBwLRMs+8pQEUYekZl5qwG+3LHCiWVehPZyp8oX9Nh6yiXK89 P7BuIAjNhE6KuegPVF63Ba8Amsqjacj2NzscQNHtaDoVwTFbDb/8UMrYGnWeWqw2CzZR iR2hepGsi9X7v/RttN7p3rSz4bEHkzEfWOagJSWjVZTATGMpF6TEjBi8QDmXnpF2bowH PEZ1U2yParzWq2KB1Z6OKqPM5/X1Gc2PB/sgJC0RHBxvzpu/kD4kya1o/xmLxOEJ+Y+N 5diA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:in-reply-to :references; bh=ounu9nkSdr0wGPWoF5FwW68v9/xfZkOlrm6bJ7NlO14=; b=tIKqQFEJf3vGFfobeHO+BbyQKvi6UHrl/Jsnm1vbhf94OFIHfxClg/OkdPmkmnRGy4 7op41Y6A9CrTZoO9mQXwB3+wQqMi1XClG2Q9lzxgoPQoySykmmeFXmabob3MpGcBs53L LYUlody5V9CJLDlMpANaVvN6yDzMQnJv7iaCBR2lgTD0/jnvLKr6MB13mUuTNBsi9E3y /ijRzMbtM9+k7d9bynX0yNoqS1CNNovZpOnZ+jSglWWMo3sUaxF0tEP++uD11SGm2CuV IVfJjnaKWq6V5LdDjb18pHK0OG6ft214KCRwHZEH3XdHgGQWCuyunTGj4F6iHlht5yDD PnWA== X-Gm-Message-State: ABuFfohTJgva6EFGY9UGdLwTWdq8TwyapOcZPJ/PDD6Hk+KR4Euvu7Sc TOcYW+yPd6pLtOVBklUTHKSqWdwa X-Received: by 2002:a50:9247:: with SMTP id j7-v6mr1725330eda.124.1538564638615; Wed, 03 Oct 2018 04:03:58 -0700 (PDT) Received: from localhost.localdomain ([94.250.174.60]) by smtp.gmail.com with ESMTPSA id k42-v6sm401263ede.94.2018.10.03.04.03.57 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Wed, 03 Oct 2018 04:03:58 -0700 (PDT) From: Paul B Mahol To: ffmpeg-devel@ffmpeg.org Date: Wed, 3 Oct 2018 13:03:47 +0200 Message-Id: <20181003110347.22904-4-onemda@gmail.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181003110347.22904-1-onemda@gmail.com> References: <20181003110347.22904-1-onemda@gmail.com> Subject: [FFmpeg-devel] [PATCH 4/4] avfilter/af_afir: use internal lavfi queue X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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 MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Paul B Mahol --- libavfilter/af_afir.c | 46 ++++++++++++------------------------------- 1 file changed, 13 insertions(+), 33 deletions(-) diff --git a/libavfilter/af_afir.c b/libavfilter/af_afir.c index bdca9033cf..a36f1881e3 100644 --- a/libavfilter/af_afir.c +++ b/libavfilter/af_afir.c @@ -25,7 +25,6 @@ #include -#include "libavutil/audio_fifo.h" #include "libavutil/common.h" #include "libavutil/float_dsp.h" #include "libavutil/intreadwrite.h" @@ -279,9 +278,9 @@ end: static int convert_coeffs(AVFilterContext *ctx) { AudioFIRContext *s = ctx->priv; - int i, ch, n, N; + int ret, i, ch, n, N; - s->nb_taps = av_audio_fifo_size(s->fifo); + s->nb_taps = ff_inlink_queued_samples(ctx->inputs[1]); if (s->nb_taps <= 0) return AVERROR(EINVAL); @@ -320,15 +319,15 @@ static int convert_coeffs(AVFilterContext *ctx) return AVERROR(ENOMEM); } - s->in[1] = ff_get_audio_buffer(ctx->inputs[1], s->nb_taps); - if (!s->in[1]) - return AVERROR(ENOMEM); - s->buffer = ff_get_audio_buffer(ctx->inputs[0], s->part_size * 3); if (!s->buffer) return AVERROR(ENOMEM); - av_audio_fifo_read(s->fifo, (void **)s->in[1]->extended_data, s->nb_taps); + ret = ff_inlink_consume_samples(ctx->inputs[1], s->nb_taps, s->nb_taps, &s->in[1]); + if (ret < 0) + return ret; + if (ret == 0) + return AVERROR_BUG; if (s->response) draw_response(ctx, s->video); @@ -394,19 +393,13 @@ static int convert_coeffs(AVFilterContext *ctx) return 0; } -static int read_ir(AVFilterLink *link, AVFrame *frame) +static int check_ir(AVFilterLink *link, AVFrame *frame) { AVFilterContext *ctx = link->dst; AudioFIRContext *s = ctx->priv; - int nb_taps, max_nb_taps, ret; + int nb_taps, max_nb_taps; - ret = av_audio_fifo_write(s->fifo, (void **)frame->extended_data, - frame->nb_samples); - av_frame_free(&frame); - if (ret < 0) - return ret; - - nb_taps = av_audio_fifo_size(s->fifo); + nb_taps = ff_inlink_queued_samples(link); max_nb_taps = s->max_ir_len * ctx->outputs[0]->sample_rate; if (nb_taps > max_nb_taps) { av_log(ctx, AV_LOG_ERROR, "Too big number of coefficients: %d > %d.\n", nb_taps, max_nb_taps); @@ -430,19 +423,12 @@ static int activate(AVFilterContext *ctx) if (!s->eof_coeffs) { AVFrame *ir = NULL; - if ((ret = ff_inlink_consume_frame(ctx->inputs[1], &ir)) > 0) { - ret = read_ir(ctx->inputs[1], ir); - if (ret < 0) - return ret; - } + ret = check_ir(ctx->inputs[1], ir); if (ret < 0) return ret; - if (ff_inlink_acknowledge_status(ctx->inputs[1], &status, &pts)) { - if (status == AVERROR_EOF) { - s->eof_coeffs = 1; - } - } + if (ff_outlink_get_status(ctx->inputs[1]) == AVERROR_EOF) + s->eof_coeffs = 1; if (!s->eof_coeffs) { if (ff_outlink_frame_wanted(ctx->outputs[0])) @@ -566,10 +552,6 @@ static int config_output(AVFilterLink *outlink) outlink->channel_layout = ctx->inputs[0]->channel_layout; outlink->channels = ctx->inputs[0]->channels; - s->fifo = av_audio_fifo_alloc(ctx->inputs[1]->format, ctx->inputs[1]->channels, 1024); - if (!s->fifo) - return AVERROR(ENOMEM); - s->sum = av_calloc(outlink->channels, sizeof(*s->sum)); s->coeff = av_calloc(ctx->inputs[1]->channels, sizeof(*s->coeff)); s->block = av_calloc(ctx->inputs[0]->channels, sizeof(*s->block)); @@ -630,8 +612,6 @@ static av_cold void uninit(AVFilterContext *ctx) av_frame_free(&s->in[1]); av_frame_free(&s->buffer); - av_audio_fifo_free(s->fifo); - av_freep(&s->fdsp); for (int i = 0; i < ctx->nb_outputs; i++)