From patchwork Mon Jan 22 15:16:29 2018 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: mrdegier@gmail.com X-Patchwork-Id: 7388 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.2.156.27 with SMTP id q27csp3082281jak; Mon, 22 Jan 2018 07:17:18 -0800 (PST) X-Google-Smtp-Source: AH8x225SDQBm2VvZi7Rht6MihlAc7WuLBHJuptSMhY4FeM+JkCeDmNcyKyhsC8zQXkgGRssIjtJP X-Received: by 10.223.209.74 with SMTP id b10mr4493439wri.102.1516634238618; Mon, 22 Jan 2018 07:17:18 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1516634238; cv=none; d=google.com; s=arc-20160816; b=xczwJdLUHL89qmQAYOkOwzl/Yz646UtAGbqf7t7JwvzlGE1RxVm3LU7gCw/LnfZ2ND qAKt0xHKC6nho9tpugrQJyiSww8DvQ3TsWLRNlscfrTFioTtwaB5MjycDIkm9nKUiTec 4Qfq+EVDD+MUaO9sN9y9PIS44nuyluJnkTBIXZmt438NseMBF4MZR6V46R4Uk9TotK5g yXpaq5ySxPwxuasr2XUf+jjC1wTTE2Kc60XmlfMp2/Uzq1mSXTPzFWfYUO68mYO6xTbK ZmUBuWEOidokVtU9WoqCQmMLmeqBOEa3REnVN0V3Vu1bRSLTLHBpySUcb/x9nUTP70hr BPgA== 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:message-id:date:to:from:dkim-signature :delivered-to:arc-authentication-results; bh=aNJE8agsLWQ72cbfE5hT+ccq+rSq+nl5IHesBKC79zU=; b=Huy7Ok2HepKDc84RWVjtDQ9frU1WaTOUUeB9zs+yZTF4MtSiXMVqnImCo1m2K36qvg 3aLC/JTPEhlD/hVDrJ6xy8pfwQ5KCt3+4hXLpsRnpSesva/6Dm09GV8gjnor8fxreRMT XNN8yXe/+ZXh3epyXV1OLIWjPRaOlRH0PmmQObw7LkxkNQhDN2d/dBriI76lawnbfNkT p2Fxmue8v1bxy970CEcH9rb2GBLh9wIwwB18RTQg3ObNGfP1sL9tVzIpN+RbCVDoxntR MGRRNDKRuC9sNOGz8ghSeDyvGUSY1gUvp+juE8uwNP37dItU6UmUvl4hDMEhHpORMY1V HHsA== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20161025 header.b=U7eY/bgw; 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 a10si560169wrd.388.2018.01.22.07.17.17; Mon, 22 Jan 2018 07:17:18 -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=U7eY/bgw; 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 37258689E70; Mon, 22 Jan 2018 17:17:14 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-wm0-f65.google.com (mail-wm0-f65.google.com [74.125.82.65]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 822DC689CF6 for ; Mon, 22 Jan 2018 17:17:07 +0200 (EET) Received: by mail-wm0-f65.google.com with SMTP id f3so17546376wmc.1 for ; Mon, 22 Jan 2018 07:17:09 -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=aXfzHv+VCWmzlJQuKf/X0EFZtX6Pc0TiH3dN18Dp2/I=; b=U7eY/bgwdJIXwHn5JPobPOrmzlDAE0cSesehI0HDN2s2yvQ9b33YTt0Oxawg5GRP0i D8oLt2sAeckfcTal64BcRODCWSoP+hN/n632sLQ+rsCATeszZ0RsVMJDZJuwUVBW6kPk Ss7mGOZuReVPqCjnFVw+y0kGimLdvXgT0i/PZ/c0bqcCUtViTqdviKAwiZLZcvZirq+m rzmTWUIeCmo+/dArqdbLaLehnpXic8OPeUC/g/qNYd7Jbirp3svrJ0gtbSVg0ewnC+vr q8nBALeevM86rFAYLkeIf3qWG8Bx9DybbW9rcJeIvidqP/UhbMfasAyyx6nLC2OIMDnq dTaA== 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=aXfzHv+VCWmzlJQuKf/X0EFZtX6Pc0TiH3dN18Dp2/I=; b=DGruWgkBICJQ59sHVMdY/kZBh/gAgmBSHq1CcCK+w7RzZSstp78iaOzmqGAe1x44Bz LJNC6OFMk/lyWyCfblQSC9kVXa1lU9+ZDjQcrHueVJEiJ600a2bUsN+JueuMSa9dgolc NmwdVh55DVxLMkpUhFGidR9uoImmvylgOy9yXC4sEEOMDouq4kWfhG+kX4pwRtR+kqfV Q7eMaAIJt2vmDaiJVTV+7ajkuQpdl1npkg8R3+MtpicfpeQ95j/Ck1a0LLhnT1UtKc2f srTxeahjjPAWQwAvaF0SNZ91zppqdfGXnS1VnshyG5M0+/jgb3Oaies72R5bzdxE1KwG L19Q== X-Gm-Message-State: AKwxyte/3qiCo8EJemj468koDRhByfSbiBnselvkZMfut/2w72lzUcdh sNgKiKdAsTFpbgkWgjDm/B/fYKJt X-Received: by 10.80.181.93 with SMTP id z29mr13929366edd.223.1516634228907; Mon, 22 Jan 2018 07:17:08 -0800 (PST) Received: from yoyodyne.local.net ([80.82.202.196]) by smtp.gmail.com with ESMTPSA id l60sm9243981edl.83.2018.01.22.07.16.53 (version=TLS1 cipher=AES128-SHA bits=128/128); Mon, 22 Jan 2018 07:16:54 -0800 (PST) From: mrdegier@gmail.com To: ffmpeg-devel@ffmpeg.org Date: Mon, 22 Jan 2018 16:16:29 +0100 Message-Id: <20180122151629.40821-1-mrdegier@gmail.com> X-Mailer: git-send-email 2.16.1 Subject: [FFmpeg-devel] [PATCH] libopus: support disabling phase inversion. 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: Menno MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" From: Menno Signed-off-by: Menno --- doc/encoders.texi | 5 +++++ libavcodec/libopusenc.c | 14 ++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/doc/encoders.texi b/doc/encoders.texi index 6a410a8cb6..5cd8b1a064 100644 --- a/doc/encoders.texi +++ b/doc/encoders.texi @@ -981,6 +981,11 @@ Other values include 0 for mono and stereo, 1 for surround sound with masking and LFE bandwidth optimizations, and 255 for independent streams with an unspecified channel layout. +@item disable_phase_inversion (N.A.) (requires libopus >= 1.2) +If set to 1, disables the use of phase inversion for intensity stereo, +improving the quality of mono downmixes, but slightly reducing normal stereo +quality. The default is 0 (phase inversion enabled). + @end table @anchor{libshine} diff --git a/libavcodec/libopusenc.c b/libavcodec/libopusenc.c index b449497d15..3ad10502fc 100644 --- a/libavcodec/libopusenc.c +++ b/libavcodec/libopusenc.c @@ -39,6 +39,9 @@ typedef struct LibopusEncOpts { int packet_size; int max_bandwidth; int mapping_family; +#ifdef OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST + int disable_phase_inversion; +#endif } LibopusEncOpts; typedef struct LibopusEncContext { @@ -154,6 +157,14 @@ static int libopus_configure_encoder(AVCodecContext *avctx, OpusMSEncoder *enc, "Unable to set maximum bandwidth: %s\n", opus_strerror(ret)); } +#ifdef OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST + ret = opus_multistream_encoder_ctl(enc, + OPUS_SET_PHASE_INVERSION_DISABLED(opts->disable_phase_inversion)); + if (ret != OPUS_OK) + av_log(avctx, AV_LOG_WARNING, + "Unable to disable phase inversion: %s\n", + opus_strerror(ret)); +#endif return OPUS_OK; } @@ -530,6 +541,9 @@ static const AVOption libopus_options[] = { { "on", "Use variable bit rate", 0, AV_OPT_TYPE_CONST, { .i64 = 1 }, 0, 0, FLAGS, "vbr" }, { "constrained", "Use constrained VBR", 0, AV_OPT_TYPE_CONST, { .i64 = 2 }, 0, 0, FLAGS, "vbr" }, { "mapping_family", "Channel Mapping Family", OFFSET(mapping_family), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 255, FLAGS, "mapping_family" }, +#ifdef OPUS_SET_PHASE_INVERSION_DISABLED_REQUEST + { "disable_phase_inversion", "Disable phase inversion", OFFSET(disable_phase_inversion), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, 1, FLAGS }, +#endif { NULL }, };