WebRTC代码走读(七):线程关系

转载注明出处http://blog.csdn.net/wanghorse


webrtc实际的ProcessThreadImpl线程主要有:
1. VoiceChannelTransport下的CreateThread(UdpSocketManagerPosixImpl::Run), 用于收发网络包
2. AudioTrackJni::PlayThreadProcess,用于播放
3. OpenSlesInput下的SLAndroidSimpleBufferQueueItf的内部线程,主要是抓取音频
4. VoiceEngine_startSend的线程OpenSlesInput::StartRecording,CreateThread(CbThread)创建硬件资源,用于处理硬件抓取的音频包
5. ViEChannel下的ThreadWrapper::CreateThread(ChannelDecodeThreadFunction),用于视频解码
6. VideoEngine_startRender的线程CreateThread(IncomingVideoStream::IncomingVideoStreamProcess),用来出来已经解码完成的视频数据
7. VideoEngine_startRender的线程CreateThread(VideoRenderAndroid::JavaRenderThreadProcess),用于硬件层面的Render
8. JAVA线程,调用ProvideCameraFrame
9. VideoEngine_allocateCaptureDevice的线程CreateThread(ViECapturer::ViECaptureProcess),用于处理抓取的探头桢




1. 如果是音频接收, 则直接在线程1中收取网络音频包,RTP包解析,NETEQ处理,队列等等; 在线程2中解码,语音合成,放音等
2. 如果是音频发送,则在线程3中(系统API内部)完成音频抓取,并放入webrtc的程序队列; 在线程4中处理音频、编码、打包、发送等
3. 如果是视频发送, 则在线程1中收取网络视频包,解析RTP等; 在线程5中做视频解码; 在线程6中处理解码数据; 在线程7中完成硬件层面的Render
4. 如果是视频发送, 在线程8中抓取硬件摄像头数据,线程9用于处理摄像头数据,编码,RTP打包,发送

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值