From patchwork Mon Sep 14 05:27:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 22370 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 7E9E744BBDB for ; Mon, 14 Sep 2020 08:49:44 +0300 (EEST) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 596C168BBD5; Mon, 14 Sep 2020 08:49:44 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f68.google.com (mail-ej1-f68.google.com [209.85.218.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D6F0D68B8E3 for ; Mon, 14 Sep 2020 08:49:37 +0300 (EEST) Received: by mail-ej1-f68.google.com with SMTP id nw23so21394118ejb.4 for ; Sun, 13 Sep 2020 22:49:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=uvMt9vckLgeDY4kXfgmvobJ+qRzpnBv3bdYG+DBRACc=; b=kOKGx988FTgSoeI1OyUZJJmE5yDlgQQLVoKwmdTt/ZAABcZD2KGo1CgRz3KhjaSkrB tHNw69z6AHVsQpbXYPBTdUV7ksaQ7vJLAseI20xmFpOrrMviIGt8Ob/+ekhb8E3oBlLb 9IkRbzpZltDiX9oYWclymnKLcwDLHxAQG55eHfTlcvyZt3FmpmfLzoN78oFfbTXHggxZ EMZrbV+2BlBcBgpQUsUEtXLToRNRDQVRPBrqlugt626H2rEx/maMHPpUezdNdJpClI4u NrkQCfUswcYanNUxsDU9aDS23uGIhajC3nQ23s3NT224RTvp7iYDNl4uKCNyOMmSuZy0 EAIg== 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:in-reply-to :references:mime-version:content-transfer-encoding; bh=uvMt9vckLgeDY4kXfgmvobJ+qRzpnBv3bdYG+DBRACc=; b=iXjNnEzUFwl2Dv+X1FQ3l6nskgWav2hTKmdF616D53+QJnFUWgZYsDC5Y4Mi6S62x6 iZ9yKnk43ib4ZE1IQ6LljSTEQ9VfnVNcUgZ/TTWagi/rQjZ8gloclOz98iD4tTpuo/Q1 AEs1Jys5kml+jNG+8Nqh4BSTl6CPhzJ823NAsH2bypquFX5KqP7OvADPh1aKW1Ktjy14 FHPWc93sNa9CuEbouK9PLoX/IoVYLXGwyHX+rLup0pTxscT4zruBNsSFSiBmNohMkST+ vPc3WZEguRoF3SiECLzM4vpPuAHJxnxdbsnHj0uVlOn1rYWGyoU/qv0fUKbAM/ImQn85 aDRQ== X-Gm-Message-State: AOAM531fhhB5i2HW0KMn3BdRfHRPlgX8qMJMeVjVO4PD4d+OBpt+EA6p tp/swXTpfMmr1mr0H/KhZZbBmPfZ7/w= X-Google-Smtp-Source: ABdhPJy3W3iA1ZLMi2VaGxs03qHHmEbnUJcI9E/bd8OaiNmLlJTkGlCqCAYxK+OblQhE/8VnF/oUVQ== X-Received: by 2002:aa7:c1c3:: with SMTP id d3mr15666475edp.228.1600061299718; Sun, 13 Sep 2020 22:28:19 -0700 (PDT) Received: from sblaptop.fritz.box (ipbcc1fb0f.dynamic.kabel-deutschland.de. [188.193.251.15]) by smtp.gmail.com with ESMTPSA id f4sm8251421edm.76.2020.09.13.22.28.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 13 Sep 2020 22:28:19 -0700 (PDT) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 14 Sep 2020 07:27:28 +0200 Message-Id: <20200914052747.124118-5-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20200913025753.274772-1-andreas.rheinhardt@gmail.com> References: <20200913025753.274772-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 21/40] avcodec/atrac1: Avoid indirection when calling float dsp function 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Do this by only keeping the only function pointer from the AVFloatDSPContext that is needed lateron. Signed-off-by: Andreas Rheinhardt --- libavcodec/atrac1.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/libavcodec/atrac1.c b/libavcodec/atrac1.c index 4cfb1061c5..b2a2d5e6a1 100644 --- a/libavcodec/atrac1.c +++ b/libavcodec/atrac1.c @@ -80,7 +80,8 @@ typedef struct AT1Ctx { DECLARE_ALIGNED(32, float, high)[512]; float* bands[3]; FFTContext mdct_ctx[3]; - AVFloatDSPContext *fdsp; + void (*vector_fmul_window)(float *dst, const float *src0, + const float *src1, const float *win, int len); } AT1Ctx; /** size of the transform in samples in the long mode for each QMF band */ @@ -140,8 +141,8 @@ static int at1_imdct_block(AT1SUCtx* su, AT1Ctx *q) at1_imdct(q, &q->spec[pos], &su->spectrum[0][ref_pos + start_pos], nbits, band_num); /* overlap and window */ - q->fdsp->vector_fmul_window(&q->bands[band_num][start_pos], prev_buf, - &su->spectrum[0][ref_pos + start_pos], ff_sine_32, 16); + q->vector_fmul_window(&q->bands[band_num][start_pos], prev_buf, + &su->spectrum[0][ref_pos + start_pos], ff_sine_32, 16); prev_buf = &su->spectrum[0][ref_pos+start_pos + 16]; start_pos += block_size; @@ -324,8 +325,6 @@ static av_cold int atrac1_decode_end(AVCodecContext * avctx) ff_mdct_end(&q->mdct_ctx[1]); ff_mdct_end(&q->mdct_ctx[2]); - av_freep(&q->fdsp); - return 0; } @@ -333,6 +332,7 @@ static av_cold int atrac1_decode_end(AVCodecContext * avctx) static av_cold int atrac1_decode_init(AVCodecContext *avctx) { AT1Ctx *q = avctx->priv_data; + AVFloatDSPContext *fdsp; int ret; avctx->sample_fmt = AV_SAMPLE_FMT_FLTP; @@ -360,10 +360,11 @@ static av_cold int atrac1_decode_init(AVCodecContext *avctx) ff_atrac_generate_tables(); - q->fdsp = avpriv_float_dsp_alloc(avctx->flags & AV_CODEC_FLAG_BITEXACT); - if (!q->fdsp) { + fdsp = avpriv_float_dsp_alloc(avctx->flags & AV_CODEC_FLAG_BITEXACT); + if (!fdsp) return AVERROR(ENOMEM); - } + q->vector_fmul_window = fdsp->vector_fmul_window; + av_free(fdsp); q->bands[0] = q->low; q->bands[1] = q->mid;