From patchwork Sun Apr 2 23:32:20 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kyle Swanson X-Patchwork-Id: 3252 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.44.195 with SMTP id s186csp2957990vss; Sun, 2 Apr 2017 16:40:07 -0700 (PDT) X-Received: by 10.223.174.241 with SMTP id y104mr13884029wrc.79.1491176406992; Sun, 02 Apr 2017 16:40:06 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id b32si17504560wrb.279.2017.04.02.16.40.06; Sun, 02 Apr 2017 16:40:06 -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=@ylo-ph.20150623.gappssmtp.com; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B8BE1688286; Mon, 3 Apr 2017 02:40:02 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-io0-f171.google.com (mail-io0-f171.google.com [209.85.223.171]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D237568071E for ; Mon, 3 Apr 2017 02:39:55 +0300 (EEST) Received: by mail-io0-f171.google.com with SMTP id z13so65966425iof.2 for ; Sun, 02 Apr 2017 16:39:57 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=ylo-ph.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:date:message-id; bh=JNHdPqd6+Y35PA7CmrG60NR1JyCgHf8DpN2qLiq1UfE=; b=ADFuaEajzEEHLup/P2NGlLAoCVm4973OQu0JUsRaiMfrEyXoCsKebzTR/1b466ypbP 3k5FnmNbGOYvu1ZOQ8UKZ1CtNFaPkklMlNDkRgh8o7fMIIqsktOaY0ErCXMbkALcH+ZJ fSOtjlPo/60+2AMrUKcgE5Rc+feOJ8MJ90syPnaXVJGnXv0KBX+rNBe1RwhKA9xH5nlc Dku+1oBLAlbfIOWsRgdRF68JeU144ocPXeaI9Qo/AmaYOuXfhd59n8nfKrHhN+dKlaXP ISyAZOFIlzIlrOC5GgUOccGHIYbII1bMQLh0GAFcgPck/rIf1LWo9NdvSug2Ms+5L1KO YXnQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id; bh=JNHdPqd6+Y35PA7CmrG60NR1JyCgHf8DpN2qLiq1UfE=; b=Wk1wJLjmrnMFOE5p+kmLafGfE4yIEL9m+mmbUV3t6Akrk6fSN3jzrdDNa69WcHdT98 6zG/Tzy4BplZwOnDy8O7mzs9BgcvLtEKXDTXNcAgYDoLnWcb1npd/3mjORaejjYQ49xL 7DWS7Rg8aB653dgJl3pJWkFG+ymxIqZPy4/vwWrQmrYFijA4C1xhNq21e/8yD680LYRL sZOc8mZXWjsMoKjt+GzDqWMmEQchRUxlPYQGvEwcKgm/Rt75HZZShAYTruqwXxKzS7Ml yRmvDGLSohgW59xWf6nn6J1gGqWObo/VpU5LCQt2X7m0MSzgX/zKwKeCWUH13SQ+/M19 qEVw== X-Gm-Message-State: AFeK/H1JmSyTuHqNvhO5QYoOfCLRkmvTKqA871al6I/s65ogy+nxMTGwKOU2m8gENMh+6Q== X-Received: by 10.107.136.41 with SMTP id k41mr15236243iod.160.1491175947058; Sun, 02 Apr 2017 16:32:27 -0700 (PDT) Received: from kswansonOSX.lan (c-68-46-110-28.hsd1.mn.comcast.net. [68.46.110.28]) by smtp.gmail.com with ESMTPSA id p140sm4984925itc.27.2017.04.02.16.32.26 (version=TLS1 cipher=AES128-SHA bits=128/128); Sun, 02 Apr 2017 16:32:26 -0700 (PDT) From: Kyle Swanson To: ffmpeg-devel@ffmpeg.org Date: Sun, 2 Apr 2017 18:32:20 -0500 Message-Id: <20170402233220.77422-1-k@ylo.ph> X-Mailer: git-send-email 2.10.1 Subject: [FFmpeg-devel] [PATCH] avfilter/af_loudnorm: do not upsample during second-pass linear normalization 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 Cc: Kyle Swanson MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Signed-off-by: Kyle Swanson --- libavfilter/af_loudnorm.c | 58 +++++++++++++++++++++++++++-------------------- 1 file changed, 34 insertions(+), 24 deletions(-) diff --git a/libavfilter/af_loudnorm.c b/libavfilter/af_loudnorm.c index 9d91c76..e3e815e 100644 --- a/libavfilter/af_loudnorm.c +++ b/libavfilter/af_loudnorm.c @@ -682,6 +682,7 @@ static int request_frame(AVFilterLink *outlink) static int query_formats(AVFilterContext *ctx) { + LoudNormContext *s = ctx->priv; AVFilterFormats *formats; AVFilterChannelLayouts *layouts; AVFilterLink *inlink = ctx->inputs[0]; @@ -707,15 +708,17 @@ static int query_formats(AVFilterContext *ctx) if (ret < 0) return ret; - formats = ff_make_format_list(input_srate); - if (!formats) - return AVERROR(ENOMEM); - ret = ff_formats_ref(formats, &inlink->out_samplerates); - if (ret < 0) - return ret; - ret = ff_formats_ref(formats, &outlink->in_samplerates); - if (ret < 0) - return ret; + if (s->frame_type != LINEAR_MODE) { + formats = ff_make_format_list(input_srate); + if (!formats) + return AVERROR(ENOMEM); + ret = ff_formats_ref(formats, &inlink->out_samplerates); + if (ret < 0) + return ret; + ret = ff_formats_ref(formats, &outlink->in_samplerates); + if (ret < 0) + return ret; + } return 0; } @@ -754,21 +757,6 @@ static int config_input(AVFilterLink *inlink) init_gaussian_filter(s); - s->frame_type = FIRST_FRAME; - - if (s->linear) { - double offset, offset_tp; - offset = s->target_i - s->measured_i; - offset_tp = s->measured_tp + offset; - - if (s->measured_tp != 99 && s->measured_thresh != -70 && s->measured_lra != 0 && s->measured_i != 0) { - if ((offset_tp <= s->target_tp) && (s->measured_lra <= s->target_lra)) { - s->frame_type = LINEAR_MODE; - s->offset = offset; - } - } - } - if (s->frame_type != LINEAR_MODE) { inlink->min_samples = inlink->max_samples = @@ -790,6 +778,27 @@ static int config_input(AVFilterLink *inlink) return 0; } +static av_cold int init(AVFilterContext *ctx) +{ + LoudNormContext *s = ctx->priv; + s->frame_type = FIRST_FRAME; + + if (s->linear) { + double offset, offset_tp; + offset = s->target_i - s->measured_i; + offset_tp = s->measured_tp + offset; + + if (s->measured_tp != 99 && s->measured_thresh != -70 && s->measured_lra != 0 && s->measured_i != 0) { + if ((offset_tp <= s->target_tp) && (s->measured_lra <= s->target_lra)) { + s->frame_type = LINEAR_MODE; + s->offset = offset; + } + } + } + + return 0; +} + static av_cold void uninit(AVFilterContext *ctx) { LoudNormContext *s = ctx->priv; @@ -914,6 +923,7 @@ AVFilter ff_af_loudnorm = { .priv_size = sizeof(LoudNormContext), .priv_class = &loudnorm_class, .query_formats = query_formats, + .init = init, .uninit = uninit, .inputs = avfilter_af_loudnorm_inputs, .outputs = avfilter_af_loudnorm_outputs,