经过一段时间实验,关于自适应编码得到些成果,但还有很多问题,现把我的做法贴出来,欢迎高手指教!
原理:
网络传输的反馈信息是通过RTCP包中的RR(接受者报告)包得到。通过RR包中的累积丢包数等反馈信息可以计算出当前的传输丢包率。当丢包率低于预先设定的最小值时,增加编码输出速率。当丢包率大于设定的最大值时,降低编码输出速率。当网络拥塞时,发送速率乘性减小,降低对所需带宽的要求。同时设置最小发送码率,保证发送端所需的最小带宽。当网络空闲时,线性增加发送码率。同时设置最大发送码率,保证发送端不会过度占用资源。当网络负载正常时不作任何调整。
丢包率计算:
(1) 计算该发送时隙丢失的数据包数L(n):前端一个发送时隙前后接收的两个RR包中包丢失的累计数之差就是该发送时隙丢失的数据包数,即
L(n)=C(n) - C(n-I)
其中C(n)是第n个发送时隙后共丢失的数据包数。
(2) 计算该时隙中应收到的数据包的数R(n):两个接收数据包中的最高序列号扩展的差就是接收者在该时隙中应收到的数据包数,即
R(n)=H(n) - H(n-1),
其中H(n)是第n个发送时隙后收到的数据包的最高序列号。
(3) 计算该时隙中数据包丢失比例F(n):L(n)与R(n)之比即在该时隙中数据包丢失比例,即
F(n)=L(n)/R(n);
(4) 计算该时隙中数据包的丢失比率,就是每秒钟的丢包数f(n):数据包的丢失比率等于丢失比例除以两个RR中NTP时间戳的差,即
f(n) = F(n) / ( NTP(n) - NTP(n-1) )
关于时间戳如何取得&#