[opus] [Patch] Non-diegetic support for channel mapping 254

Jean-Marc Valin jmvalin at jmvalin.ca
Tue Apr 25 17:07:31 UTC 2017

On 25/04/17 10:12 AM, Drew Allen wrote:
> We assume that the input file is ordered first by ACN ambisonic channels
> followed by a (possible) stereo track, and we want to swap the order for
> the API in order to couple the stereo for coding.

Well, if you look at section 5.1.1 of RFC7845:

       The 'coupled stream
       count' field indicates that the decoders for the first M Opus
       streams are to be initialized for stereo (two-channel) output,
       and the remaining (N - M) decoders are to be initialized for mono
       (a single channel) only.

In other words, it says that in the file itself (regardless of what you
do in the API), you need to have the stereo channels first, followed by
the mono channels. Where the channels go in the API itself is another
question and you're free to put the non-diegetic stereo at the end for that.

> The mapping code
> appears to be working on files I've tested it on so far.

Well, even if you get the mapping wrong, it's still going to work. It's
just that your non-diegetic stream will be made from two mono streams
and two of your directional channels will be coupled. That's one of the
limitations of simple testing, since it's not going to catch these kinds
of errors.


More information about the opus mailing list