前言image.png

源码分析

打断点
image.png
运行后查看
image.png
然后在这里也创建断点
image.png
连接对端后进去该函数。

  1. rtc::scoped_refptr<PeerConnectionFactoryInterface> CreatePeerConnectionFactory(
  2. rtc::Thread* network_thread,
  3. rtc::Thread* worker_thread,
  4. rtc::Thread* signaling_thread,
  5. rtc::scoped_refptr<AudioDeviceModule> default_adm,
  6. rtc::scoped_refptr<AudioEncoderFactory> audio_encoder_factory,
  7. rtc::scoped_refptr<AudioDecoderFactory> audio_decoder_factory,
  8. std::unique_ptr<VideoEncoderFactory> video_encoder_factory,
  9. std::unique_ptr<VideoDecoderFactory> video_decoder_factory,
  10. rtc::scoped_refptr<AudioMixer> audio_mixer,
  11. rtc::scoped_refptr<AudioProcessing> audio_processing,
  12. AudioFrameProcessor* audio_frame_processor)
  13. -》
  14. CreateModularPeerConnectionFactory
  15. -》
  16. PeerConnectionFactory::PeerConnectionFactory(
  17. rtc::scoped_refptr<ConnectionContext> context,
  18. PeerConnectionFactoryDependencies* dependencies)
  19. : context_(context),
  20. task_queue_factory_(std::move(dependencies->task_queue_factory)),
  21. event_log_factory_(std::move(dependencies->event_log_factory)),
  22. fec_controller_factory_(std::move(dependencies->fec_controller_factory)),
  23. network_state_predictor_factory_(
  24. std::move(dependencies->network_state_predictor_factory)),
  25. injected_network_controller_factory_(
  26. std::move(dependencies->network_controller_factory)),
  27. neteq_factory_(std::move(dependencies->neteq_factory)) {}
  1. Thread* Thread::Current() {
  2. ThreadManager* manager = ThreadManager::Instance();
  3. Thread* thread = manager->CurrentThread();
  4. ****
  5. return thread;
  6. }
  7. -》
  8. Thread* ThreadManager::CurrentThread() {
  9. return static_cast<Thread*>(TlsGetValue(key_));
  10. }
  11. thread地址

image.png
image.png