I am Implementing a WebRTC Peer to Peer connection for Audio Calling using C++.
I have two threads _worker_thread
and _signaling_thread
. Now when I try to create _peerConnectionFactory
by calling the method webrtc::CreatePeerConnectionFactory()
, my app crashes. How can I make it work?
_signaling_thread.reset(new rtc::Thread());
if(!_signaling_thread->Start())
{
printf("_signaling_thread is Failed");
return;
}
_worker_thread.reset(new rtc::Thread());
if (!_worker_thread->Start()) {
printf( "_worker_thread is Failed");
return;
}
_peerConnectionFactory = webrtc::CreatePeerConnectionFactory(_worker_thread.get(),_signaling_thread.get(),NULL,NULL,NULL);
This is the backtrace I am getting
* thread #15: tid = 0x17e516, 0x00000001008d5674 MyAPP`rtc::MessageQueue::Get(rtc::Message*, int, bool) + 816, stop reason = EXC_BAD_ACCESS (code=1, address=0x100000038)
* frame #0: 0x00000001008d5674 MyAPP`rtc::MessageQueue::Get(rtc::Message*, int, bool) + 816
frame #1: 0x00000001008e5fb0 MyAPP`rtc::Thread::ProcessMessages(int) + 100
frame #2: 0x00000001008e5e44 MyAPP`rtc::Thread::PreRun(void*) + 88
frame #3: 0x0000000199337b3c libsystem_pthread.dylib`_pthread_body + 156
frame #4: 0x0000000199337aa0 libsystem_pthread.dylib`_pthread_start + 1
After taking a look at the PeerConnection samples located inside the WebRTC's source code, I always initialize SSL modules before creating the threads like this:
bool Core::Init() {
rtc::InitializeSSL();
rtc::InitRandom(rtc::Time());
rtc::ThreadManager::Instance()->WrapCurrentThread();
_signalingThread = new rtc::Thread();
_workerThread = new rtc::Thread();
_signalingThread->SetName("signaling_thread", NULL);
_workerThread->SetName("worker_thread", NULL);
if (!_signalingThread->Start() || !_workerThread->Start()) {
return false;
}
_peerConnectionFactory =
webrtc::CreatePeerConnectionFactory(_signalingThread,
_workerThread,
NULL, NULL, NULL).release();
return true;
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With