JitterBuffer webrtc

 JitterBuffer主要有三个FrameList:free,incomplete,decodable,分别表示空闲Frame,处于组帧状态的Frame和可解码Frame。每个FrameList的元素是FrameBuffer,FrameBuffer表示一帧数据。网络上过来的RTP Packet在FrameBuffer里进行组帧。FrameBuffer中具体包含一个PacketList,RTP中的媒体数据都存放到这里。新一帧数据到来时,JitterBuffer从free列表中取出一个FrameBuffer进行组帧,然后放到incomplete列表中,组帧完成后放到decodable列表中。组帧的过程有worker线程完成,decoder线程会周期性从decodable列表中取帧进行解码。

        帧的大小会体现在FrameBuffer的PacketList的大小上,而JitterBuffer的大小则体现当前缓存在JitterBuffer中的帧的多少。如果解码能力不足,较多的帧将会缓存在decodable列表中;如果接收到大size的帧,该帧会在incomplete列表中停留较长时间。JitterBuffer是接收端延迟的一个重要原因。

猜你喜欢

转载自blog.csdn.net/wxl1986622/article/details/75212055