Re: [codec] Comments on draft-ietf-codec-ambisonics-01

"Timothy B. Terriberry" <> Mon, 13 March 2017 23:07 UTC

Return-Path: <>
Received: from localhost (localhost []) by (Postfix) with ESMTP id 409BF129BEB for <>; Mon, 13 Mar 2017 16:07:06 -0700 (PDT)
X-Virus-Scanned: amavisd-new at
X-Spam-Flag: NO
X-Spam-Score: -6.9
X-Spam-Status: No, score=-6.9 tagged_above=-999 required=5 tests=[BAYES_00=-1.9, RCVD_IN_DNSWL_HI=-5] autolearn=ham autolearn_force=no
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id X1hlWWOIHZyU for <>; Mon, 13 Mar 2017 16:07:04 -0700 (PDT)
Received: from ( []) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by (Postfix) with ESMTPS id 8794D129BCE for <>; Mon, 13 Mar 2017 16:06:55 -0700 (PDT)
Received: from localhost (localhost6.localdomain []) by (Postfix) with ESMTP id 60C84C1792; Mon, 13 Mar 2017 23:06:55 +0000 (UTC)
X-Virus-Scanned: amavisd-new at
Received: from ([]) by localhost ( []) (amavisd-new, port 10024) with ESMTP id YEi3ODegR-xn; Mon, 13 Mar 2017 23:06:55 +0000 (UTC)
Received: from [] ( []) (Authenticated sender: by (Postfix) with ESMTPSA id 3951CC1764; Mon, 13 Mar 2017 23:06:55 +0000 (UTC)
Message-ID: <>
Date: Mon, 13 Mar 2017 16:06:55 -0700
From: "Timothy B. Terriberry" <>
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:29.0) Gecko/20100101 SeaMonkey/2.26
MIME-Version: 1.0
To: Jean-Marc Valin <>, Jan Skoglund <>, Jean-Marc Valin <>, Drew Allen <>, Mark Harris <>, "" <>
References: <> <> <> <> <> <> <> <> <> <> <> <> <>
In-Reply-To: <>
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 7bit
Archived-At: <>
Subject: Re: [codec] Comments on draft-ietf-codec-ambisonics-01
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: Mon, 13 Mar 2017 23:07:06 -0000

Jean-Marc Valin wrote:
> For family 3, if you already have a Cx(N+M) weight matrix, then the
> mapping table becomes completely redundant.

I think the issue boils down to whether it's worth it to have a table of 
size C to allow a matrix of size Kx(N+M) instead of Cx(N+M) in the 
headers where D is some number smaller than C (probably D=N+M). If more 
than 80% of your matrix is filled with zeros (100 out of 121 rows for 
10th order with only horizontal channels), that could be seen as a 
little wasteful.

That said, we very intentionally chose the direction of the channel 
mapping table for RFC 7845: one value per output channel that says which 
decoded channel to use. That makes it impossible to send multiple 
decoded channels (mixed channels after multiplying by the weight matrix 
in this draft) to the same speaker (ACN number in this draft). As Mark 
Harris points out, this is a failure case the current draft doesn't 
specify how to deal with. By doing the mapping in the same direction as 
RFC 7845, the worst failure case is that someone specifies a channel 
index larger than what's actually available, but that's easily 
detectable (i.e., you can tell without having to look at any other 
values in the mapping table). You also don't need to handle the diegetic 
channels separately. There is a special case for silent channels, but as 
a benefit it become easy (O(1)) to tell if a channel isn't used.

Having the mapping work in this direction would also be more consistent 
with Channel Mapping Family 2.