session->AutoRunRealPlayThread

session中的m_cRealPlayPool,m_cTalkPool,

m_cRePlayPool全部是否为空

销毁接受流线程

创建接收线程

streamDataProc()

有一个不为空

全空

P2P_Client_RecvFrameDataV2

获取流数据

P2P_Client_RecvFrameDataV2根据sessionid获取流数据

或者P2P_Client_RecvAudioDatav2获取音频数据

lpDataBuf1,nOutBuf1Size ,lpDataBuf2,nOutBuf2Size

偏移lpDataBuf1的数据获取通道号wChannel

和数据类型wDataType

根据wDataType作不同的处理

CloudSdk_TranRealVideoData,预览流

CloudSdk_TranRealAudioData,预览音频流

继续偏移lpDataBuf1获取帧类型wFrameType

区分智能与非智能帧,查找对应通道号和码流类型对应的m_cRealPlayPool里的节点

通过m_fpStreamDataCallBack回调给上层

如果上层回调返回非succ,while会间隔10ms一直补发这一帧数据,直到上层返回succ,

此时整个流回调线程都会被卡住。

CloudSdk_TranHistoryVideoData:回放历史流

CloudSdk_TranHistrtoryAudioData:回放音频流

偏移4位获取回放id

根据回放id查找m_cReplayPool里面的节点

存在节点回调流数据给上层

上层返回的结果非succ 就会间隔20ms补发本次的帧数据 直到接收完成

CloudSdk_TranTalkData:语音对讲

偏移获取通道号 其他内容同上

AutoRunRealPlayThread()

AutoRunRealPlayThread()

2019-08-09 15:40:04 0 8
这里是评论

相关推荐