WebRTC PeerConnectionFactory正常关闭

时间:2018-07-11 00:44:58

标签: webrtc

我正在编写一个本机WebRTC应用程序,该应用程序现在为客户端转发预编码的帧。那部分很好,但是每次尝试退出应用程序时都会遇到段错误问题,特别是关于如何销毁WebRtcPeerConnectionFactory的问题。

我通过首先启动分别用于网络,信令和工作的单独线程来实例化此对象,并在析构函数中通过调用thread->Quit()来杀死这些线程,然后将我的webRtcPeerConnectionFactory设置为{{1 }}(正如我在源代码示例中的nullptr文件中所做的那样),但是我会进行段错误或无限期挂起,具体取决于执行前两个操作的顺序。

总的来说,有没有一种正确的方法可以优雅地销毁工厂对象,或者我不调用某些清理函数?我在网上找不到其他利用WebRTC线程模型的示例,因此我不确定从这里继续前进。谢谢!

我对对象的实例化是这样执行的:

conductor.cc

随后的清理工作如下:

rtc_network_thread_ = rtc::Thread::CreateWithSocketServer();
rtc_worker_thread_ = rtc::Thread::Create();
rtc_signaling_thread_ = rtc::Thread::Create();
if (!rtc_network_thread_->Start() || !rtc_worker_thread_->Start() || !rtc_signaling_thread->Start()) {
    // error handling
}
peer_connection_factory_ = webrtc::CreatePeerConnectionFactory(
    rtc_network_thread_.get(), rtc_worker_thread_.get(), rtc_signaling_thread_.get(),
    nullptr, webrtc::CreateBuiltInAudioEncoderFactory(), webrtc::CreateBuiltInAudioDecoderFactory(),
    dummy_encoder_factory_.get(), nullptr)

0 个答案:

没有答案