Re: [codec] Ambisonics in an Ogg Opus Container

Marc Lavallée <> Sun, 29 May 2016 14:43 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 1288C12B076 for <>; Sun, 29 May 2016 07:43:11 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -2.601
X-Spam-Status: No, score=-2.601 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_LOW=-0.7, SPF_PASS=-0.001] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id PebGQ7E0jFcm for <>; Sun, 29 May 2016 07:43:06 -0700 (PDT)
Received: from ( []) (using TLSv1 with cipher DHE-RSA-CAMELLIA256-SHA (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id A1D5112B031 for <>; Sun, 29 May 2016 07:43:06 -0700 (PDT)
X-IronPort-Anti-Spam-Filtered: true
X-IronPort-AV: E=Sophos;i="5.13,465,1427774400"; d="scan'208";a="239857012"
Received: from (HELO ([]) by with ESMTP/TLS/DHE-RSA-AES256-SHA; 29 May 2016 10:43:04 -0400
Received: from telecino (unknown []) by (Postfix) with ESMTPS id 9E6AC5582 for <>; Sun, 29 May 2016 10:42:33 -0400 (EDT)
Date: Sun, 29 May 2016 10:42:33 -0400
From: Marc =?UTF-8?B?TGF2YWxsw6ll?= <>
Message-ID: <20160529104233.1bfbda09@telecino>
In-Reply-To: <>
References: <> <> <>
X-Mailer: Claws Mail 3.9.3 (GTK+ 2.24.23; x86_64-pc-linux-gnu)
MIME-Version: 1.0
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: 7bit
Archived-At: <>
Subject: Re: [codec] Ambisonics in an Ogg Opus Container
X-Mailman-Version: 2.1.17
Precedence: list
List-Id: Codec WG <>
List-Unsubscribe: <>, <>
List-Archive: <>
List-Post: <>
List-Help: <>
List-Subscribe: <>, <>
X-List-Received-Date: Sun, 29 May 2016 14:43:11 -0000

On Sat, 28 May 2016 22:35:42 -0700,
Mark Harris <> wrote:

> I support this work.

I also support this work, with enthusiasm (that's why I registered to
the codec list). 

I tried Opus for "ambisonics on the web" more than a year ago, to
experiment with online binaural decoding. It worked very well, but I
had to modify the encoder to uncouple channels, and I finally chose AAC
for compatibility reasons. It's about time that Opus becomes widely
adopted and supported as a standard, especially for multi-channel
streams. Maybe the situation is better now, as browsers matured (to be

I would suggest to not include decoding of Ambisonics streams in the
Opus decoders. Exceptions would be decoding/down-mixing to mono
and stereo, as defaults for compatibility reasons, but in a carefully
unobtrusive way; users of Opus for Ambisonics should easily have access
to all channels, even if the Opus decoder (and the system) wants to
"help" them.

Even mono and stereo are special cases in Ambisonics; one of the most
popular usage of Ambisonics is to explore the soundfield with virtual
directional microphones, something that could be used to explore
so-called "360 videos" with desktop speakers (without dedicated "VR"

Support for mixed-order is important too, mostly for horizontal-only
Ambisonics streams, because horizontal-only surround is still dominant,
and also because humans have more "spatial resolution" on the horizontal
plane; therefore, providing low vertical resolution is acceptable in
many playback situations; for example: 6 channels supports horizontal
at 2nd order and vertical at 1th order.

I think that what's only required is channel uncoupling and metadata
about the Ambisonics stream; everything else should be the
responsibility of the Ambisonics encoders and decoders. 

Normalisation is not the responsibility of a codec. It is used for
Ambisonics format conversion (ex: A to B, FuMa to Ambix). That said,
gain factors could be included to maximize dynamics, but it is
unrelated to Ambisonics.

Opus for Ambisonics, as a standard for the distribution of compressed
"VR audio", would be excellent.