Opus FEC小结

来源:互联网 发布:淘宝店售后客服用语 编辑:程序博客网 时间:2024/06/14 13:32

  前向纠错也叫前向纠错码(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);


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

原创粉丝点击