gstreamer中的rtpjitterbuffer

本文介绍了GStreamer中的rtpjitterbuffer组件,它在rtpbin中起到关键作用,包括RTP包的重排序、丢包处理和重传请求。rtpjitterbuffer还具备重复包检测、延迟估计等功能,并详细阐述了其内部机制和处理流程,涉及主线程、定时器线程和数据推送线程的工作原理。
摘要由CSDN通过智能技术生成

1. 简介:

    rtpjitterbuffer在gstreamer中是比较重要的一个组件,gstreamer中对rtp处理的组合组件rtpbin中就包含了rtpjitterbuffer,rtpjitterbuffer在rtpbin整个处理中起到了至关重要的作用,包括了对rtp包的乱序重排,丢包重传请求事件的激活等。

2. 功能:

    rtpjitterbuffer在gstreamer中并不单纯是对时间抖动的计算,还有其他如下功能:

    1) 重复包判断并丢弃

    2) 乱序包重排

    3) 延迟计算估计

    4) 网络丢包或包延迟处理,包括了丢包的重传请求事件的触发及其时间间隔控制、丢包向下游的事件处理。

3. 组件内部机制

    rtpjitterbuffer内部主要有三个线程:

    1) 主线程,接受上游包的处理线程,包括rtp和rtcp包的处理。

    2) 定时器线程,当丢包发生时,会给对应包添加一个定时器,超时后对这个包进行对应处理(重传或者不重传),如果在定时器到来之前收到这个包,会移除对应的定时器。

    3) 数据推送线程,当rtpjitterbuffer工作在PUSH模式下时候,会额外开辟一个线程用来进行数据的推送。

4. 简单流程

    1) 当上游有数据到来时,会通过注册的chain函数进行包的处理,这里主要讨论RTP包,函数为gst_rtp_jitter_buffer_chain。

    2) 当该包连续,则会添加该序号包,类型为BUFFER的item到jbuf中,在jbuf中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值