[opus] FEC and Stereo

Jon Lederman
Fri, 27 Jan 2017 17:29:41 -0000

Hi Jean-Marc,

Thank you.  Yes, we do need both channels independent.  So, if we encode each
channel separately, we will be sacrificing the compression ratio we would
achieve with stereo encoding, correct?

So, based on what you say here is my understanding.  Please confirm this is
correct or not:

1) If we use fec, we can reduce cross-talk but increasing bitrate.  However,
that should result in higher packet loss due to higher bitrate.
2) If we don’t use fec, we can have no crosstalk.  However, then we have
significant chance of packet loss.
3) We could encode each channel separately.  In this case, we would have no
crosstalk, but we would have a lower compression rate/efficiency.

Thanks.

-Jon

> On Jan 27, 2017, at 12:24 PM, Jean-Marc Valin <jmvalin at jmvalin.ca>
wrote:
>
> 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