darwin之发送rtp包流程

1.重识ReflectStream

ReflectStream负责rtsp中的一路流反射,负责一路流的 rtcp,rtp两种数据包的接收和发送 。

UDPSocketPair管理rtp,rtcp包数据源 :fSocketA负责接收 rtp包 ,fSocketB接收 rtcp包。

ReflectorSender负责发送数据包: fRTPSender负责发送rtp包,fRTCPSender负责发送rtcp包  。

ReflectorOutput**数组负责管理当前流对应的客户端(接收流 )列表:ReflectorSender遍历ReflectorOutput**数组依次发送数据包。



2.通过什么机制来发送数据 ?


ReflectorSocket本身是一个task,在其Run函数中用来驱动发送数据包。

ReflectorSocket在获取到数据包后,会立即调用signal方法。

在Run中,由ReflectSender调用ReflectPackets发送数据包。


ReflectSender遍历ReflectStream维护的水桶客户端,将其发送出去。实际发送数据的接口放在了水桶内部:Writepacket.



以上只是提供了 发送数据的一种驱动方式 ,但是 实际发送数据由谁负责 ,并没有 体现 。

实际发送数据的是由RTPStream来负责 。

水桶内部:Writepacket如何与 RTPStream关联呢 ?

水桶(RTPSessionOutput)内部维护了RTPSession(在setup时建立两者关联),在Writepacket中会遍历所有RTPSession中的RTPStream,由RTPStream的Write函数将数据包发送出去。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

sunxiaopengsun

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值