[opus] FEC and Stereo

Jean-Marc Valin
Fri, 27 Jan 2017 17:24:47 -0000

On 27/01/17 12:16 PM, Jon Lederman wrote:
> When you say that with fec enabled, the threshold is increased, do
> you mean the bitrate - i.e., you need higher bitrate with fec enabled
> to suppress crosstalk?

Correct. Another effect I forgot to mention is that Using FEC will
actually force SILK/hybrid rather than CELT, so it's possible that
disabling FEC makes you use CELT, which tends to have wider stereo
separation for lower bitrates.

> Also, can you make any recommendations to decide whether to use fec
> or not?  We are trying to tune the parameters appropriately.  Audio
> quality and reduction of crosstalk are critical for us.

In general, I would say that if you know the decoder is able to use FEC,
then you should enable it in the encoder. The encoder will decide by
itself when to actually use it depending on bitrate and other
parameters. As for reducing cross-talk, I guess it comes down to the
*reason* you want to reduce cross-talk. Normally the encoder will
whatever will result in the best quality, so it must be thinking that
reducing cross-talk is good. Now, if your reason is that your two
channels carry completely independent information, then the fix would be
to simply code two separate channels. It's hard to say more considering
that you haven't said anything about your signals and why the stereo
separation is so important for you.

Cheers,

	Jean-Marc

> Thanks again.
>
> Jon
>
> Sent from my iPhone
>
>> On Jan 27, 2017, at 11:38 AM, Jean-Marc Valin <jmvalin at
jmvalin.ca>
>> wrote:
>>
>> Hi Jon,
>>
>>> On 27/01/17 08:31 AM, Jon Lederman wrote: We are trying to use
>>> Opus in a VoIP environment for sending stereo audio.  We have
>>> noticed a phenomenon where when FEC is enabled and
>>> packet_loss_percentage>0, that there is a mixing of audio from
>>> the left channel into the right channel and vice versa.  That is,
>>> rather than hearing each channel in its pristine form as it was
>>> in the file, there is a combination of right and left channels
>>> that is heard on the left and right playback.
>>>
>>> First, is this the correct behavior?  If so, why does this
>>> occur?
>>
>> It is the correct behaviour, at least to some extent. Opus may
>> deliberately introduces cross-talk between the channels to make
>> the signal easier to code when it doesn't have enough bits to do a
>> good enough job with the original stereo audio. If you increase the
>> bitrate, then that cross-talk with be reduce and eventually
>> disappear. Now the only difference that FEC does is that it
>> increases the threshold for the cross-talk.
>>
>>> Finally, is there a way to prevent this other than disabling FEC
>>> (which we don’t want).
>>
>> Well, obviously if you're not going to use the FEC, then you
>> shouldn't waste bits to encode it.
>>
>> Cheers,
>>
>> Jean-Marc _______________________________________________ opus
>> mailing list opus at xiph.org
>> http://lists.xiph.org/mailman/listinfo/opus