From patchwork Sat Dec 2 17:46:59 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andrew D'Addesio X-Patchwork-Id: 6509 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.161.94 with SMTP id m30csp2568477jah; Sat, 2 Dec 2017 09:47:58 -0800 (PST) X-Google-Smtp-Source: AGs4zMbIIDeiTM9lYrA+cdHNbhlotiGDxRyMpIemgn5rZ9j0WUIQfOnde1hvCDwiLyh4dEqlqhof X-Received: by 10.28.104.6 with SMTP id d6mr3508583wmc.101.1512236878249; Sat, 02 Dec 2017 09:47:58 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1512236878; cv=none; d=google.com; s=arc-20160816; b=MXLtc7VhG6g/EdbD1mi58/joe5MqXJOU0cpXJtzWMqRLLGf1ncQ7ExW15dD8n4HZjm LrGrz87J/MBLMUkQ1sF/wugnpGZ7KNG8mDnCUwX9DET/78H7FRvAVkClWJIW93jl3gbb imx/8NHcbWw21aJdvp9wSVv63qDyS0cjy844YnP6p79UO6xhzm6ikyj9Q6ekP9QluFR3 q0yfkf3gTWpNLkm77qJcz6zvrV6wDkEvxZQ9pmASfmHfFvdXOaQzErCA1NvYO266odXs 1Shf38p11r9JHRALr3MFLhPyJL2RQlgvbiYe084mEgFqYi8voIoLGhvRGXTimTTO+HMC tIaA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:mime-version:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:references:in-reply-to:message-id:date :to:from:dkim-signature:delivered-to:arc-authentication-results; bh=K4kt9tn/ciUurYdToYbXC3mD85jXAcwXKPLP+/F4UIU=; b=rIaHZ/kCrWmn+hFs8D7uFaJJqBMTvjwqze4/7YL8+FQi5vC/ak0Ermqb+W6MyKjx21 Y+XJQ+mbA2KbKVOHJxKSwl5pQ+iVywBpcqtL9nR9NOZ3TESNJEUu71JVRc8yv49SMwBE s27j5RfWjhFQ/nxuyAjKVwhADFIe9B/stDgnT/6/bTEjVNRXFaIm7quHbbMKHjWiEyeS PpvygWEHA1W3jTY5JrLOVsm3FScw1pqQIHFZPMQLssvhmQcOpdwWhWLPetiqnzZv6UyI rh5cRusH6olBrrNMVqXmpc1M3YP33dgZLgHDxoWAd5NNq67ZPAKtoyAkMmDaOP2iTbXY uBUA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=E53e1Rvo; 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=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w21si7137774wrb.38.2017.12.02.09.47.57; Sat, 02 Dec 2017 09:47:58 -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 header.s=20161025 header.b=E53e1Rvo; 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=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 83D7A68A56E; Sat, 2 Dec 2017 19:47:51 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-oi0-f68.google.com (mail-oi0-f68.google.com [209.85.218.68]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E0D2268A3FC for ; Sat, 2 Dec 2017 19:47:44 +0200 (EET) Received: by mail-oi0-f68.google.com with SMTP id w125so9171926oie.7 for ; Sat, 02 Dec 2017 09:47:49 -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:in-reply-to:references; bh=Al95XJGzU5cmLx6MW53hCIy9iGhKxcrF3RYPyJ2KXjM=; b=E53e1Rvo/brqXcJyEwJkAFK8ZnaI5JSWP60u0E68xoWka25QsvoaSjMGAaLmc3tP2W jvNqxu/urTh5YJEyxnAA9QaIJsOQHynY8MfKVqWR+o4i934Igp+LZd4GISSCeiJnf42Y AWMfGu+pOZ77WHwxsu5e3FTbWGA6fyKyyRkhA1fm+vb5bL6ARzknObwFEFTHza2Y5+Cw h4Q/hX+l4kXuD7aBWT0MuYty60vmmr4JTJMCbyJTlLw/f4xuxdGwksdyd7919WPhQI+D 0Tlcvj1Z9PBXD6Gsg9/PxDOI25cLyrWPw3I5r55bLOjI8blq8AbgpW1DyBP+W/9N6WTr Ys6g== 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; bh=Al95XJGzU5cmLx6MW53hCIy9iGhKxcrF3RYPyJ2KXjM=; b=EdcNSRjL2gxAJOiUTRL2WUQ2RCWj1tAy+MCvrnVpLFx28naYAkz2RcfBwzsp4ZcZu2 lPUEsXFPVBOeoBKPWELWwi7teB20DF7kQ7WgqD4WigpZcmSL844Ol597EjICJVPMUwrV 5AgQKOnFN8uXQ6oqnqEOb3CVm8t3PpTAaRkWMra1PtSfhvuO3gtsWfPioNSlezfb4F/S NvDRIzj7uOhnpvnx+rQHjRPctRUTA8u0mkoed9RsEJ2PTfI3sPNq+CMVPC1sSv02lkuv yOE0H2L4YACEAah4CdFfriQl1GyYUE/F/u2SxsvDvJ1FBxYMSkcmdpgJq2rfoPkRaNVT J51w== X-Gm-Message-State: AJaThX4d58fc4LOvRdvJcwjWBwsN4KFI98aW7HMaD65N97UDsd8mkEYF fOSDXpMwUf53vkp7cNNpMHrXGA== X-Received: by 10.202.48.195 with SMTP id w186mr9602779oiw.341.1512236867706; Sat, 02 Dec 2017 09:47:47 -0800 (PST) Received: from localhost.localdomain ([2605:6000:1019:4a8:80a0:1945:efcc:4de5]) by smtp.gmail.com with ESMTPSA id n40sm4185398otb.54.2017.12.02.09.47.47 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sat, 02 Dec 2017 09:47:47 -0800 (PST) From: Andrew D'Addesio To: ffmpeg-devel@ffmpeg.org Date: Sat, 2 Dec 2017 11:46:59 -0600 Message-Id: <20171202174659.1064-4-modchipv12@gmail.com> X-Mailer: git-send-email 2.15.1.windows.2 In-Reply-To: <20171202174659.1064-1-modchipv12@gmail.com> References: <20171202174659.1064-1-modchipv12@gmail.com> Subject: [FFmpeg-devel] [PATCH 4/4] opus: Don't invert phase when downmixing to mono (per RFC8251) 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: Andrew D'Addesio MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" When decoding to downmixed mono, don't put the channels out of phase, as they will cancel out and create audible artifacts. (See RFC 8251 sec. 10.) Signed-off-by: Andrew D'Addesio --- libavcodec/opus_pvq.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/libavcodec/opus_pvq.c b/libavcodec/opus_pvq.c index 2f7aa74..f18c010 100644 --- a/libavcodec/opus_pvq.c +++ b/libavcodec/opus_pvq.c @@ -643,7 +643,13 @@ static av_always_inline uint32_t quant_band_template(CeltPVQ *pvq, CeltFrame *f, } } else { inv = (b > 2 << 3 && f->remaining2 > 2 << 3) ? ff_opus_rc_dec_log(rc, 2) : 0; + + /* Don't put the channels out of phase if we are decoding to downmixed + * mono as this subjectively sounds bad (RFC 8251 section 10). */ + if (f->channels == 1) + inv = 0; } + itheta = 0; } qalloc = opus_rc_tell_frac(rc) - tell;