From patchwork Tue Dec 20 23:01:40 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: "Ronald S. Bultje" X-Patchwork-Id: 1875 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.65.86 with SMTP id o83csp1956182vsa; Tue, 20 Dec 2016 15:01:50 -0800 (PST) X-Received: by 10.28.54.214 with SMTP id y83mr1864843wmh.45.1482274910693; Tue, 20 Dec 2016 15:01:50 -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 lg5si24865943wjc.131.2016.12.20.15.01.50; Tue, 20 Dec 2016 15:01:50 -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=@gmail.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=NONE 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 9674168A218; Wed, 21 Dec 2016 01:01:48 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f193.google.com (mail-qk0-f193.google.com [209.85.220.193]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DBDA068A1F8 for ; Wed, 21 Dec 2016 01:01:42 +0200 (EET) Received: by mail-qk0-f193.google.com with SMTP id u25so6072766qki.2 for ; Tue, 20 Dec 2016 15:01:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id; bh=eDqepr0PRPlSUv2WUG2044HEBwBHbSjhtxJcXEXcP6k=; b=uieEd0Nhv8i7LQeHdPV+lJ1PFxdxEcBBd49b2HV+HJ0BYYWUR7wVArM12Y4MKdzMf7 uknWjForW3taUemUtdVEsY9G1xcnHsqhl4CZa6vIaVfiQkUp+fIrCV8tIzPF/9FHvid7 mxqBzrGrnbkr6cxD0NuBVF+L7kvYLPSqeXBVrOTavsq7d19KfzfQvW+pU0t0Wp57jQrD FPvDwpJCXMrEHJ/L+nC2qq52zyxKZw4Yi30LnvSDDoZfTAW0Q9c90NXFu0j7PTxTottW fiadiXMYEwYfuUHyOXVoI8iTE4zF5sDtkhRwiNLeLCEIaXPw4zKTBIqYUbWC/4xvKiMq BGDA== 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=eDqepr0PRPlSUv2WUG2044HEBwBHbSjhtxJcXEXcP6k=; b=suemNTcjuyx8LWTyngObizCEQv4IXX6aicyuCRL98XxI534n8lWIXXS1m6rD31xfHZ aUoFXujNIhk5d0mbnpYoaBtm+s3004MhMSCNYdYXA+jTmyEvE/IsXFFipaPwcz3XQjRe Zv/vWvKn3woQPnHNbB9q7y9YbHo5aIQstII+nAXHpeiCp6GMuoYOBMwpVrcmCRz/tz/t zXGe97JxpGXkYLqlZPRO6LFBvsC5AdnbVYMskxPOqjRU2G8e2UTbN6bPSuqS6L4H6cKE d8dRSZdGCWI46ZJVbIzommRkvCGYKPVTmJtb6kB+RT5w/g2DL/CZvGsxab0Df+4Wd07Z 6EHQ== X-Gm-Message-State: AIkVDXI83P8Q/8kyEad1Rax076P4PLBPLb5/uqfHQir16baVzTOwsac80mxh+hbkXkcw9Q== X-Received: by 10.55.0.65 with SMTP id 62mr1938424qka.106.1482274901664; Tue, 20 Dec 2016 15:01:41 -0800 (PST) Received: from localhost.localdomain ([65.206.95.146]) by smtp.gmail.com with ESMTPSA id q62sm10741839qkb.46.2016.12.20.15.01.40 (version=TLS1 cipher=AES128-SHA bits=128/128); Tue, 20 Dec 2016 15:01:41 -0800 (PST) From: "Ronald S. Bultje" To: ffmpeg-devel@ffmpeg.org Date: Tue, 20 Dec 2016 18:01:40 -0500 Message-Id: <1482274900-23137-1-git-send-email-rsbultje@gmail.com> X-Mailer: git-send-email 2.8.1 Subject: [FFmpeg-devel] [PATCH] wmavoice: protect against zero-energy in adaptive gain control. 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: "Ronald S. Bultje" MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Otherwise the scale factor becomes NaN, resulting in corrupt output. Fixes #5426. --- libavcodec/wmavoice.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/libavcodec/wmavoice.c b/libavcodec/wmavoice.c index 90dfe20..cd5958c 100644 --- a/libavcodec/wmavoice.c +++ b/libavcodec/wmavoice.c @@ -512,7 +512,8 @@ static void adaptive_gain_control(float *out, const float *in, speech_energy += fabsf(speech_synth[i]); postfilter_energy += fabsf(in[i]); } - gain_scale_factor = (1.0 - alpha) * speech_energy / postfilter_energy; + gain_scale_factor = postfilter_energy == 0.0 ? 0.0 : + (1.0 - alpha) * speech_energy / postfilter_energy; for (i = 0; i < size; i++) { mem = alpha * mem + gain_scale_factor;