[opus] FEC and Stereo

Jean-Marc Valin jmvalin at jmvalin.ca
Fri Jan 27 18:28:17 UTC 2017

On 27/01/17 01:24 PM, Jon Lederman wrote:
> One other question I was wondering about.  Is the reason that we hear
> the crosstalk with fec and packet loss percentage>0 is that Opus uses
> information from the left channel to try to error correct the right
> channel and vice versa?  I am trying to understand the origin of the
> crosstalk.

Sorry, I cannot answer that question unless you're specific about what
you're doing... speech or music, independent channels or not, bitrate,
other settings, ...

The Opus encoder makes many decisions and they depend on all the config
parameters and on the signal it's encoding.


> Thanks. -Jon
>> On Jan 27, 2017, at 12:29 PM, Jon Lederman <jon at soniccloud.com>
>> wrote:
>> [This sender failed our fraud detection checks and may not be who
>> they appear to be. Learn about spoofing at
>> http://aka.ms/LearnAboutSpoofing]
>> 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
>> _______________________________________________ opus mailing list 
>> opus at xiph.org http://lists.xiph.org/mailman/listinfo/opus

More information about the opus mailing list