From patchwork Fri Sep 23 23:18:54 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lynne X-Patchwork-Id: 38204 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:3b1c:b0:96:9ee8:5cfd with SMTP id c28csp791793pzh; Fri, 23 Sep 2022 16:19:03 -0700 (PDT) X-Google-Smtp-Source: AMsMyM4EqW4/Wts/WfL8IpT65rA2yohiaFACVwKuaCrQBlxEryoiBr9dl44R9get5Kjg6S0IrZjI X-Received: by 2002:a17:907:75c7:b0:779:bf7:9be7 with SMTP id jl7-20020a17090775c700b007790bf79be7mr9132797ejc.432.1663975143348; Fri, 23 Sep 2022 16:19:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1663975143; cv=none; d=google.com; s=arc-20160816; b=0VBfzaDHlAx20r2kEwpMlTO6Zn9ex1k6AtAGjC5Ka2GpnLHXGXrbr54yL0Xa672cwn LVBO6BWd6G5aDWeUWmlUwl6KdsjXkjqyg2m1BnCrSmqw03EY/lMwL+6ENQSAcfl6Y3jQ IJ/ya3ga28xltAIvpkS18lbOPMli6WBzj48mO/mfdvBVlYAvOkNaYKfoOf8JaUQ9nsE6 5HbVZr56LNG9UgQb7VP/r1mpXWg5568PUA9AbhNch0GeUg/MfyI3EtDCoZlsBanpVayJ /1igOWXsp61z/LSBHoZBc5FuI6sCKlx3M//q/O5TrtIClWaw0kuNMnqhpN0CFuKW6C3F FGYA== 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 :mime-version:references:in-reply-to:message-id:to:from:date :dkim-signature:delivered-to; bh=THNwkYtyaJxGONL0EHyO2Ko/S6snm6UlqhJ9LB/CSMQ=; b=m1g80uIkOpMF9a5wcPbFH8H0cY+sPM8dm1OFAlojLWzeIuhDym+aqFHra9lP/3Byq3 TCHEL0C3UTTXbZQOUYY0Ye39NkL8w4WAL72ULbuz9yYU44atKjp9SoTWvxzAqHEKhHhO 4MudLc9QxoibxCqhiK6TWkAZmBt3y5XInetJ2QG2NX1vw+prl0dOVP/601EvG4XVUHx+ E8g4VlEfyX+8SuFGhNKa8I1aiuib7mUTIsIF7TrdPfrBLdzBaPxTAkg0Der2nNKm1SlO F8kDxyj86rAr2CwIHVHr+yrVKh4nuwCDtch6glarSCKYqM2Y5st46HiBwiZwAEow9sVf +2Lg== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@lynne.ee header.s=s1 header.b="U3ALqST/"; 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=NONE dis=NONE) header.from=lynne.ee Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id hc41-20020a17090716a900b007823f12eaf7si7829612ejc.510.2022.09.23.16.19.03; Fri, 23 Sep 2022 16:19:03 -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=@lynne.ee header.s=s1 header.b="U3ALqST/"; 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=NONE dis=NONE) header.from=lynne.ee Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2195768BBAB; Sat, 24 Sep 2022 02:19:01 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from w4.tutanota.de (w4.tutanota.de [81.3.6.165]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 70B5B68BB67 for ; Sat, 24 Sep 2022 02:18:54 +0300 (EEST) Received: from w3.tutanota.de (unknown [192.168.1.164]) by w4.tutanota.de (Postfix) with ESMTP id 299D5106016E for ; Fri, 23 Sep 2022 23:18:54 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; t=1663975134; s=s1; d=lynne.ee; h=From:From:To:To:Subject:Subject:Content-Description:Content-ID:Content-Type:Content-Type:Content-Transfer-Encoding:Cc:Date:Date:In-Reply-To:In-Reply-To:MIME-Version:MIME-Version:Message-ID:Message-ID:Reply-To:References:References:Sender; bh=VtN3OIV+VgUO9ihCVzwaFy7YRloGVeXBmmJiZwMTVW0=; b=U3ALqST/M3XJKUFjVyoxOG5ujHnfeOq8rPkVLgDDVAHFq0THf810Yxm1m8g/XK2X vhCRets0yfXo9JJ7IrSZNIoSRnKRZc7DVbrxl5kUTjeFFWej61MSVQViK5Oduly6iwZ BbzwtQtTIU7H6/4YBRrDkv39FvDq89kRxMMFBHO9VqHBnPhsbtB0obXsqf//8D9IjUO SqO/W2IGLdGCidverCE+GBhc6xOS8dm++xEilopwTzKGU2ocdas9xzFkLYS2n+WZG8U MCwTrUgVjRu0+JA+FWH3v8DRxqkNDV4OtqlpVl8IfF/uUrzDFx72zfqZM6A0XEN2rcg N01IN+qeMA== Date: Sat, 24 Sep 2022 01:18:54 +0200 (CEST) From: Lynne To: FFmpeg development discussions and patches Message-ID: In-Reply-To: References: MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/6] vorbisdec: convert to lavu/tx 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: 1mbbP+gdLCNi Patch attached. From 1334c8c26a8d1c3f8e2aa98b902b2dab6e524a84 Mon Sep 17 00:00:00 2001 From: Lynne Date: Sat, 24 Sep 2022 01:07:15 +0200 Subject: [PATCH 4/6] vorbisdec: convert to lavu/tx --- libavcodec/vorbisdec.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/libavcodec/vorbisdec.c b/libavcodec/vorbisdec.c index 0d04e7c2c4..44c76d0da2 100644 --- a/libavcodec/vorbisdec.c +++ b/libavcodec/vorbisdec.c @@ -29,6 +29,7 @@ #include #include +#include "libavutil/tx.h" #include "libavutil/avassert.h" #include "libavutil/float_dsp.h" @@ -36,7 +37,6 @@ #include "avcodec.h" #include "codec_internal.h" #include "decode.h" -#include "fft.h" #include "get_bits.h" #include "vorbis.h" #include "vorbisdsp.h" @@ -129,7 +129,8 @@ typedef struct vorbis_context_s { VorbisDSPContext dsp; AVFloatDSPContext *fdsp; - FFTContext mdct[2]; + AVTXContext *tx[2]; + av_tx_fn tx_fn[2]; uint8_t first_frame; int64_t initial_pts; uint32_t version; @@ -201,8 +202,8 @@ static void vorbis_free(vorbis_context *vc) av_freep(&vc->residues); av_freep(&vc->modes); - ff_mdct_end(&vc->mdct[0]); - ff_mdct_end(&vc->mdct[1]); + av_tx_uninit(&vc->tx[0]); + av_tx_uninit(&vc->tx[1]); if (vc->codebooks) for (i = 0; i < vc->codebook_count; ++i) { @@ -961,6 +962,8 @@ static int vorbis_parse_setup_hdr(vorbis_context *vc) static int vorbis_parse_id_hdr(vorbis_context *vc) { + int ret; + const float mdct_scale = -1.0f; GetBitContext *gb = &vc->gb; unsigned bl0, bl1; @@ -1008,8 +1011,14 @@ static int vorbis_parse_id_hdr(vorbis_context *vc) vc->previous_window = -1; - ff_mdct_init(&vc->mdct[0], bl0, 1, -1.0); - ff_mdct_init(&vc->mdct[1], bl1, 1, -1.0); + if ((ret = av_tx_init(&vc->tx[0], &vc->tx_fn[0], AV_TX_FLOAT_MDCT, 1, 1 << (bl0 - 1), + &mdct_scale, 0))) + return ret; + + if ((ret = av_tx_init(&vc->tx[1], &vc->tx_fn[1], AV_TX_FLOAT_MDCT, 1, 1 << (bl1 - 1), + &mdct_scale, 0))) + return ret; + vc->fdsp = avpriv_float_dsp_alloc(vc->avctx->flags & AV_CODEC_FLAG_BITEXACT); if (!vc->fdsp) return AVERROR(ENOMEM); @@ -1584,7 +1593,8 @@ static inline int vorbis_residue_decode(vorbis_context *vc, vorbis_residue *vr, static int vorbis_parse_audio_packet(vorbis_context *vc, float **floor_ptr) { GetBitContext *gb = &vc->gb; - FFTContext *mdct; + AVTXContext *tx; + av_tx_fn tx_fn; int previous_window = vc->previous_window; unsigned mode_number, blockflag, blocksize; int i, j; @@ -1706,12 +1716,13 @@ static int vorbis_parse_audio_packet(vorbis_context *vc, float **floor_ptr) // Dotproduct, MDCT - mdct = &vc->mdct[blockflag]; + tx = vc->tx[blockflag]; + tx_fn = vc->tx_fn[blockflag]; for (j = vc->audio_channels-1;j >= 0; j--) { ch_res_ptr = vc->channel_residues + res_chan[j] * blocksize / 2; vc->fdsp->vector_fmul(floor_ptr[j], floor_ptr[j], ch_res_ptr, blocksize / 2); - mdct->imdct_half(mdct, ch_res_ptr, floor_ptr[j]); + tx_fn(tx, ch_res_ptr, floor_ptr[j], sizeof(float)); } // Overlap/add, save data for next overlapping -- 2.37.2.609.g9ff673ca1a