EasyDarwin Rtsp流转发(二)
2016-07-17 22:30
435 查看
出差一周~
接第一篇:
在 QTSSCallbacks::QTSS_ReflectRTPTrackData 中:
for (; fCurrentModule < numModules; fCurrentModule++)
{
QTSSModule* theModule = QTSServerInterface::GetModule(QTSSModule::kRTSPRelayingDataRole, fCurrentModule);
(void)theModule->CallDispatch(QTSS_RTSPRelayingData_Role, &packetParams);
}
GetMoudle从 sModuleArray中获取QTSSModule对象。
调用CallDispatch 进行数据的分发,具体的数据 packetParams。
(fDispatchFunc)(inRole, inParams) ==QTSSOnDemandRelayModuleDispatch
这个函数主要是一个swicth 语句,根据上面传下来的 QTSS_RTSPRelayingData_Role 调用了 ProcessRelayRTPData 进行具体的流对象处理
RTSPRelaySession* relaySes = (RTSPRelaySession*)inParams->inRTSPSession;
取出 theSession ,theSession中至少包含一组流。
theStream = theSession->GetStreamByIndex(inIndex);
循环取出每一组流,分别调用PushPacket
在pushpacket 中,计算时间并且调用 Bool16 ReflectorSocket::ProcessPacket 送入 theSender->fPacketQueue.EnQueue(&thePacket->fQueueElem);队列中。至此这个线程完成所以工作。
fSockets->GetSocketA() RTP
fSockets->GetSocketB() RTCP
接第一篇:
在 QTSSCallbacks::QTSS_ReflectRTPTrackData 中:
for (; fCurrentModule < numModules; fCurrentModule++)
{
QTSSModule* theModule = QTSServerInterface::GetModule(QTSSModule::kRTSPRelayingDataRole, fCurrentModule);
(void)theModule->CallDispatch(QTSS_RTSPRelayingData_Role, &packetParams);
}
GetMoudle从 sModuleArray中获取QTSSModule对象。
调用CallDispatch 进行数据的分发,具体的数据 packetParams。
(fDispatchFunc)(inRole, inParams) ==QTSSOnDemandRelayModuleDispatch
这个函数主要是一个swicth 语句,根据上面传下来的 QTSS_RTSPRelayingData_Role 调用了 ProcessRelayRTPData 进行具体的流对象处理
RTSPRelaySession* relaySes = (RTSPRelaySession*)inParams->inRTSPSession;
取出 theSession ,theSession中至少包含一组流。
theStream = theSession->GetStreamByIndex(inIndex);
循环取出每一组流,分别调用PushPacket
在pushpacket 中,计算时间并且调用 Bool16 ReflectorSocket::ProcessPacket 送入 theSender->fPacketQueue.EnQueue(&thePacket->fQueueElem);队列中。至此这个线程完成所以工作。
fSockets->GetSocketA() RTP
fSockets->GetSocketB() RTCP
相关文章推荐
- 基于ffmpeg,实现采集屏幕或摄像头以后向EasyDarwin推流
- HTML页面跳转的5种方法
- relativelayout实现梅花布局
- Hadoop之——HDFS冗余数据块的自动删除
- Java类库及其组织结构
- POJ 1185 炮兵阵地 (状态压缩dp)
- Dialog
- Python 基础练习01
- 东湖
- jsDOM编程-拖拽层
- C语言的体系结构--main函数存在的必然性(听杨力祥老师的课)
- vi编辑器开发步骤
- SPI详解
- 数据结构(二)非线性结构之二叉树
- 数组中重复的数字 java
- RxJava 与 Retrofit 结合的最佳实践
- css 边框
- C语言的体系结构--main函数存在的必然性(听杨力祥老师的课)
- R绘图学习笔记
- 创建和操作表