原文见:https://en.wikipedia.org/wiki/Packet_loss_concealment
英语不好,错误的地方希望指正!
Packet loss concealment (PLC) is a technique to mask the effects ofpacket loss inVoIP communications. Because the voice signal is sent as packets on a VoIP network, they may travel different routes to get to destination. At the receiver a packet might arrive very late, corrupted or simply might not arrive. One of the cases in which the last situation could happen is where a packet is rejected by a server which has a full buffer and cannot accept any more data. In a VoIP connection, error-control techniques such asARQ are not feasible and the receiver should be able to cope with packet loss.
大概意思:plc是一个隐藏丢包影响的技术,语音信号被分成包在VOIP网络中传输,在传输中会经过不同的路由到达目的地,有的包会很晚达到,有的包不会达到,其中一个最坏的情况是服务器buffer满了而不能再接收数据。在voip连接中,ARQ容错技术是不可行的,并且接收方能够应对这种丢包情况
PLC techniques
- Zero insertion: the lost speech frames are replaced with zero
- Waveform substitution: the missing gap is reconstructed by repeating a portion of already received speech. The simplest form of this would be to repeat the last received frame. Other techniques account forfundamental frequency, gap duration etc. Waveform substitution methods are popular because of their simplicity to understand and implement. An example of such an algorithm is proposed inITU recommendation G.711 Appendix I.
- Model-based methods: an increasing number ofalgorithms that take advantage of speech models of interpolating and extrapolating speech gaps are being introduced and developed.
这段大概意思是:
plc丢包处理技术分类:
zero Insertion:用0替换丢失的帧
Waveform substitution :用已接受的一段数据来重复构建丢失的数据,最简单的方式就是重复最后接受的帧,其他还有根据基本频率、时间间隙等波形技术,由于它易于实现,ITU在G711中实现了一个这种算法的例子
Model-based methods: :基于模型的方法。
在freeswitch中就引用了这个技术,可一个通过下面方法设置开启:
<
action
application
=
"set"
data
=
"rtp_jitter_buffer_plc=true"
/>
需要注意的是这个方法需要在开启jittle-buffer之前调用,如果开启了jittle-buffer,这个功能也会自动开启。
<
action
application
=
"set"
data
=
"jitterbuffer_msec=60:200:20"
/>