From patchwork Thu Nov 24 23:31:28 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Cadhalpun X-Patchwork-Id: 1554 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.90.1 with SMTP id o1csp36568vsb; Thu, 24 Nov 2016 15:31:39 -0800 (PST) X-Received: by 10.28.170.202 with SMTP id t193mr4332251wme.10.1480030299826; Thu, 24 Nov 2016 15:31:39 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id r67si10740925wma.17.2016.11.24.15.31.39; Thu, 24 Nov 2016 15:31:39 -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=@googlemail.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; dmarc=fail (p=QUARANTINE dis=NONE) header.from=googlemail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0573C6898DB; Fri, 25 Nov 2016 01:31:33 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wj0-f195.google.com (mail-wj0-f195.google.com [209.85.210.195]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2CADB68971F for ; Fri, 25 Nov 2016 01:31:26 +0200 (EET) Received: by mail-wj0-f195.google.com with SMTP id o2so317670wje.2 for ; Thu, 24 Nov 2016 15:31:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=googlemail.com; s=20120113; h=from:subject:to:references:message-id:date:user-agent:mime-version :in-reply-to; bh=t3lkpUMRESNEL7t7j/Y04Yjx2FLxd4NTRFTPAo0uwqM=; b=lshyysDpwfUbDJcWJtu7q6W6542+UXyDeqNZiKKiiXDcl6kLG6wK1ULW5AvrPY5Lx9 wQ24Q2fYLT0q9X7UF5B90QTDiP70rteXAuQn9ZyU4jAf/k7A5hWqRobCsH1TI/1hb9+O T96ffWP6qFeKSgcBqOapVgmUjdThcehFyIvJVHM5GzDnTr+x+JSxxx7qjRsr9YyLMNSN 8GFQjYfx4AsxuLLdjoodsk8a/f4WuhG01+IrdutI0ZaqQwaY0GSf6plLHOA7SQ2SpMRz m4a7wCRZ4UrEKkfu5oefBiYTqsCdBwmkKTpKM7klGt6rnRZuAlmJFa0jYHEdaTPGWGdI 1Mnw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:subject:to:references:message-id:date :user-agent:mime-version:in-reply-to; bh=t3lkpUMRESNEL7t7j/Y04Yjx2FLxd4NTRFTPAo0uwqM=; b=JIxB4shuSzhCjd8aT5iiVhtRjVe/9XJVJEw1/Kl7KAkLaWsaDgAA/XQGzvKq0Nj6BW lAIt8mEpmcMMV2jYvpvkrAjk6B6ISpYZDRy5VD9GUdQJkp6BndQ9Cr4eb5E+0kami4OO PHpyhr9ltMpMOH5CJWnljpvmQ7629q69ktWaTUQuVEX6M+7O3VCOhgkoAQ7zTqrW1Qj4 fdX0vJFEI+OHLNsFh9PXuXCqcd75aGwYqj79DpRAlfPYcUAfhmUikia5/zQg58W00tU6 zRpi/GEv387Qg6qKBrjgv41gKwu03G5Kz9XllgvOEpDc6u5z3ILln73uWxYvmGHqFlc3 hfBg== X-Gm-Message-State: AKaTC02/6gmx4jUdJ8qjuzGuhyZPQYLs7TSLV3yEdwNo6E3MzaTc6qFnknkSh48nRhUqKA== X-Received: by 10.194.179.135 with SMTP id dg7mr4353910wjc.219.1480030289622; Thu, 24 Nov 2016 15:31:29 -0800 (PST) Received: from [192.168.2.21] (p5B072C28.dip0.t-ipconnect.de. [91.7.44.40]) by smtp.googlemail.com with ESMTPSA id d65sm10566315wmh.11.2016.11.24.15.31.28 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Thu, 24 Nov 2016 15:31:28 -0800 (PST) From: Andreas Cadhalpun X-Google-Original-From: Andreas Cadhalpun To: ffmpeg-devel@ffmpeg.org References: <8e6e9b86-4fbf-3710-25f1-eb826182b381@googlemail.com> <20161123022206.GW4824@nb4> <20161124172924.GM4824@nb4> Message-ID: <411427cc-6dec-62cc-4795-0b7c57b47004@googlemail.com> Date: Fri, 25 Nov 2016 00:31:28 +0100 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Icedove/45.4.0 MIME-Version: 1.0 In-Reply-To: <20161124172924.GM4824@nb4> Subject: Re: [FFmpeg-devel] [PATCH] aacsbr_fixed: prevent sbr gain from being zero 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 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" On 24.11.2016 18:29, Michael Niedermayer wrote: > On Thu, Nov 24, 2016 at 01:15:54AM +0100, Andreas Cadhalpun wrote: >> On 23.11.2016 03:22, Michael Niedermayer wrote: >>> On Sun, Nov 13, 2016 at 09:29:11PM +0100, Andreas Cadhalpun wrote: >>>> It causes division by zero crashes. >>>> >>>> Signed-off-by: Andreas Cadhalpun >>>> --- >>>> libavcodec/aacsbr_fixed.c | 4 ++++ >>>> 1 file changed, 4 insertions(+) >>>> >>>> diff --git a/libavcodec/aacsbr_fixed.c b/libavcodec/aacsbr_fixed.c >>>> index b26314a..d2a7027 100644 >>>> --- a/libavcodec/aacsbr_fixed.c >>>> +++ b/libavcodec/aacsbr_fixed.c >>>> @@ -429,6 +429,10 @@ static void sbr_gain_calc(AACContext *ac, SpectralBandReplication *sbr, >>>> av_add_sf(FLOAT_1, sbr->e_curr[e][m]), >>>> av_add_sf(FLOAT_1, sbr->q_mapped[e][m])))); >>>> } >>>> + if (sbr->gain[e][m].mant == 0) { >>>> + sbr->gain[e][m] = FLOAT_1; >>>> + sbr->gain[e][m].exp = MIN_EXP; >>>> + } >>> >>> Why is this not not needed for the float code ? >> >> Because float can represent smaller absolute values than normalized SoftFloat. >> >>> is there a shortcomming in the SoftFloat code ? >> >> In a way, because the SoftFloat gets normalized, e.g.: >> * float: 2.16840434e-19 * 2.77555756e-17 / 10337.5293 = 5.82201677e-40 >> * SoftFloat: av_div_sf(av_mul_sf({mant = 536870912, exp = -61}, {mant = 536870912, exp = -54}), >> {mant = 677439305, exp = 14}) = {mant = 850858499, exp = -130} = FLOAT_0 > > hmm > does increasing the limits for SoftFloats exponent solve this ? Yes, patch is attached. > If that works and doesnt break anything it would be good to have > SoftFloat cover the range float has I'm not entirely sure about not breaking anything. For example the output of the softfloat test changes, but for some reason that test is not enabled anyway. Best regards, Andreas From e28c5828a62c583152834f661f9a15b572b07eee Mon Sep 17 00:00:00 2001 From: Andreas Cadhalpun Date: Fri, 25 Nov 2016 00:26:51 +0100 Subject: [PATCH] softfloat: decrease MIN_EXP to cover full float range floats are not necessarily normalized, so a normalized softfloat needs MIN_EXP lowered by 23 to cover that range. Signed-off-by: Andreas Cadhalpun --- libavutil/softfloat.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavutil/softfloat.h b/libavutil/softfloat.h index 48d0d59..fa91d1e 100644 --- a/libavutil/softfloat.h +++ b/libavutil/softfloat.h @@ -27,7 +27,7 @@ #include "avassert.h" #include "softfloat_tables.h" -#define MIN_EXP -126 +#define MIN_EXP -149 #define MAX_EXP 126 #define ONE_BITS 29 -- 2.10.2