Bug 1421819: only init Call object in Tranceivers. r?bwc
MozReview-Commit-ID: 7Rhk9470BVO
--- a/media/webrtc/signaling/src/peerconnection/PeerConnectionMedia.cpp
+++ b/media/webrtc/signaling/src/peerconnection/PeerConnectionMedia.cpp
@@ -45,23 +45,16 @@ namespace mozilla {
using namespace dom;
static const char* pcmLogTag = "PeerConnectionMedia";
#ifdef LOGTAG
#undef LOGTAG
#endif
#define LOGTAG pcmLogTag
-//XXX(pkerr) What about bitrate settings? Going with the defaults for now.
-RefPtr<WebRtcCallWrapper>
-CreateCall()
-{
- return WebRtcCallWrapper::Create();
-}
-
NS_IMETHODIMP PeerConnectionMedia::ProtocolProxyQueryHandler::
OnProxyAvailable(nsICancelable *request,
nsIChannel *aChannel,
nsIProxyInfo *proxyinfo,
nsresult result) {
if (!pcm_->mProxyRequest) {
// PeerConnectionMedia is no longer waiting
@@ -289,19 +282,16 @@ nsresult PeerConnectionMedia::Init(const
}
if (NS_FAILED(rv =
mIceCtxHdlr->ctx()->SetResolver(mDNSResolver->AllocateResolver()))) {
CSFLogError(LOGTAG, "%s: Failed to get dns resolver", __FUNCTION__);
return rv;
}
ConnectSignals(mIceCtxHdlr->ctx().get());
- // This webrtc:Call instance will be shared by audio and video media conduits.
- mCall = CreateCall();
-
return NS_OK;
}
void
PeerConnectionMedia::EnsureTransports(const JsepSession& aSession)
{
for (const auto& transceiver : aSession.GetTransceivers()) {
if (!transceiver->HasLevel()) {
@@ -1140,16 +1130,20 @@ PeerConnectionMedia::ShutdownMediaTransp
nsresult
PeerConnectionMedia::AddTransceiver(
JsepTransceiver* aJsepTransceiver,
DOMMediaStream& aReceiveStream,
dom::MediaStreamTrack* aSendTrack,
RefPtr<TransceiverImpl>* aTransceiverImpl)
{
+ if (!mCall) {
+ mCall = WebRtcCallWrapper::Create();
+ }
+
RefPtr<TransceiverImpl> transceiver = new TransceiverImpl(
mParent->GetHandle(),
aJsepTransceiver,
mMainThread.get(),
mSTSThread.get(),
aReceiveStream,
aSendTrack,
mCall.get());