Hello, Is FEC supposed to work in NARROWBAND mode ?(with maxaveragebitrate=12000; maxplaybackrate=8000 ) ?I am having some confusing results, it appears that FEC is enabled in the encoder, but the decoder cannot find any packet with FEC. I am also wondering if this piece of code is correct (webrtc): /* The following is to parse the LBRR flags. */? if (opus_packet_parse(payload, payload_length_bytes, NULL, frame_data,? ? ? ? ? ? ? ? ? ? ? ? frame_sizes, NULL) < 0) {? ? return 0;? } ? if (frame_sizes[0] <= 1) {? ? return 0;? } ? for (n = 0; n < channels; n++) {? ? if (frame_data[0][0] & (0x80 >> ((n + 1) * (frames + 1) - 1)))? ? ? return 1;? } Is this the way to detect is an Opus-encoded packet has FEC info about the previous packet ? Does Opus support FEC n+2 too, like SILK ? Thank you for this great codec! Regards,Dragos Oancea -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.xiph.org/pipermail/opus/attachments/20150205/d5b35f50/attachment.htm
At this bitrate the encoder likely decides that it's better to put all the bits in the normal packet than use FEC. When you enable FEC it steals a lot of bits from the non-FEC content. Also, the use of FEC depends on the reported percentage of packet loss. The more loss there is, the lower the threshold for enabling FEC. Overall, the encoder attempt to make the best decision on a packet-per-packet basis as to whether FEC is useful considering the bit-rate, percentage of loss, and the exact audio content. Cheers, Jean-Marc On 05/02/15 11:46 AM, Dragos Oancea wrote:> Hello, > > Is FEC supposed to work in NARROWBAND mode (with > maxaveragebitrate=12000; maxplaybackrate=8000 ) ? > I am having some confusing results, it appears that FEC is enabled in > the encoder, but the decoder cannot find any packet with FEC. > > I am also wondering if this piece of code is correct (webrtc): > > /* The following is to parse the LBRR flags. */ > if (opus_packet_parse(payload, payload_length_bytes, NULL, frame_data, > frame_sizes, NULL) < 0) { > return 0; > } > > if (frame_sizes[0] <= 1) { > return 0; > } > > for (n = 0; n < channels; n++) { > if (frame_data[0][0] & (0x80 >> ((n + 1) * (frames + 1) - 1))) > return 1; > } > > Is this the way to detect is an Opus-encoded packet has FEC info about > the previous packet ? > > Does Opus support FEC n+2 too, like SILK ? > > Thank you for this great codec! > > Regards, > Dragos Oancea > > > > > > > > _______________________________________________ > opus mailing list > opus at xiph.org > http://lists.xiph.org/mailman/listinfo/opus >
Hi, Thank you very much for your answer. So the size of the audio payload would be the same with or without FEC ??I have tested with OPUS_SET_PACKET_LOSS_PERC(20) , I imagined that at this packet loss there should be a lot of FEC , even if i'mtesting in NARROWBAND mode. Regards,Dragos Oancea From: Jean-Marc Valin <jmvalin at mozilla.com> To: Dragos Oancea <droancea at yahoo.com>; "opus at xiph.org" <opus at xiph.org> Sent: Friday, February 6, 2015 1:57 PM Subject: Re: [opus] VOIP: FEC and NARROWBAND At this bitrate the encoder likely decides that it's better to put all the bits in the normal packet than use FEC. When you enable FEC it steals a lot of bits from the non-FEC content. Also, the use of FEC depends on the reported percentage of packet loss. The more loss there is, the lower the threshold for enabling FEC. Overall, the encoder attempt to make the best decision on a packet-per-packet basis as to whether FEC is useful considering the bit-rate, percentage of loss, and the exact audio content. Cheers, ??? Jean-Marc On 05/02/15 11:46 AM, Dragos Oancea wrote:> Hello, > > Is FEC supposed to work in NARROWBAND mode? (with > maxaveragebitrate=12000; maxplaybackrate=8000 ) ? > I am having some confusing results, it appears that FEC is enabled in > the encoder, but the decoder cannot find any packet with FEC. > > I am also wondering if this piece of code is correct (webrtc): > > /* The following is to parse the LBRR flags. */ >? if (opus_packet_parse(payload, payload_length_bytes, NULL, frame_data, >? ? ? ? ? ? ? ? ? ? ? ? frame_sizes, NULL) < 0) { >? ? return 0; >? } > >? if (frame_sizes[0] <= 1) { >? ? return 0; >? } > >? for (n = 0; n < channels; n++) { >? ? if (frame_data[0][0] & (0x80 >> ((n + 1) * (frames + 1) - 1))) >? ? ? return 1; >? } > > Is this the way to detect is an Opus-encoded packet has FEC info about > the previous packet ? > > Does Opus support FEC n+2 too, like SILK ? > > Thank you for this great codec! > > Regards, > Dragos Oancea > > > > > > > > _______________________________________________ > opus mailing list > opus at xiph.org > http://lists.xiph.org/mailman/listinfo/opus >-------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.xiph.org/pipermail/opus/attachments/20150210/8bbb2fa1/attachment.htm