Opus FEC小结

  前向纠错也叫前向纠错码(Forward Error Correction,简称FEC),是增加数据通讯可信度的方法。在单向通讯信道中,一旦错误被发现,其接收器将无权再请求传输。FEC 是利用数据进行传输冗余信息的方法,当传输中出现错误,将允许接收器再建数据。


  FEC通过冗余编码的方式将当前帧数据冗余一些到后一帧数据,因此当发现当前帧丢失,可以通过后一帧数据恢复。

int opus_decode ( OpusDecoderst, const unsigned chardata, opus_int32len, opus_int16 pcm, int frame_size,int decode_fec )

opus_decode可以通过放空包或者打开的FEC的情况下尝试恢复数据。

当data为NULL时,len应该为0, 此时opus尝试解一帧pcm数据,猜出这一帧数据;

当decode_fec为1时,使用FEC机制,尝试恢复前一帧数据;否则编码当前帧;


罗列以下三种情况并例举伪代码:

1. 前一帧与当前帧均正常, 前一帧数据正常解码;

opus_decode(decoder, previous_frame, frame_size, pcm, pcm_size, 0);

2. 前一帧丢失,当前帧正常,可以通过打开FEC的方式解码当前帧,尝试恢复前一帧;

opus_decode(decoder, current_frame, frame_size, pcm, pcm_size, 1);

3. 前一帧与当前帧均丢失,通过放空包的方式,尝试猜出前一帧数据;

opus_decoder(decoder, NULL, 0, pcm, pcm_size, 0);


因此可以通过预先缓存一帧数据的方式进行解码,每次收到一帧数据后,解码前一帧,此时需要考虑上述三种情况决定放入何种数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值