Bug 1414829 - Add DeleteStreams to media conduits; r=jesup

--HG--
extra : rebase_source : da8ae4e2cb53e787f1730c2f5efcd65421de300f
This commit is contained in:
Dan Minor 2018-01-08 12:40:38 -05:00
Родитель 5b65a3ab01
Коммит f09687bfc8
6 изменённых файлов: 13 добавлений и 3 удалений

Просмотреть файл

@ -540,6 +540,8 @@ class TransportConduitTest : public ::testing::Test
err = videoSession->ConfigureSendMediaCodec(nullptr);
EXPECT_TRUE(err != mozilla::kMediaConduitNoError);
videoSession->DeleteStreams();
}
private:

Просмотреть файл

@ -171,6 +171,8 @@ public:
virtual uint64_t CodecPluginID() override { return 0; }
virtual void SetPCHandle(const std::string& aPCHandle) override {}
virtual void DeleteStreams() override {}
explicit WebrtcAudioConduit():
mVoiceEngine(nullptr),
mFakeAudioDevice(new webrtc::FakeAudioDeviceModule()),

Просмотреть файл

@ -313,6 +313,8 @@ public:
virtual void SetPCHandle(const std::string& aPCHandle) = 0;
virtual void DeleteStreams() = 0;
NS_INLINE_DECL_THREADSAFE_REFCOUNTING(MediaSessionConduit)
};

Просмотреть файл

@ -321,7 +321,7 @@ WebrtcVideoConduit::~WebrtcVideoConduit()
// Release AudioConduit first by dropping reference on MainThread, where it expects to be
SyncTo(nullptr);
Destroy();
MOZ_ASSERT(!mSendStream && !mRecvStream, "Call DeleteStreams prior to ~WebrtcVideoConduit.");
}
MediaConduitErrorCode
@ -1219,7 +1219,7 @@ WebrtcVideoConduit::Init()
}
void
WebrtcVideoConduit::Destroy()
WebrtcVideoConduit::DeleteStreams()
{
// We can't delete the VideoEngine until all these are released!
// And we can't use a Scoped ptr, since the order is arbitrary

Просмотреть файл

@ -232,6 +232,8 @@ public:
mPCHandle = aPCHandle;
}
virtual void DeleteStreams() override;
unsigned int SendingMaxFs() override {
if(mCurSendCodecConfig) {
return mCurSendCodecConfig->mEncodingConstraints.maxFs;
@ -268,7 +270,6 @@ public:
MediaConduitErrorCode InitMain();
virtual MediaConduitErrorCode Init();
virtual void Destroy();
std::vector<unsigned int> GetLocalSSRCs() const override;
bool SetLocalSSRCs(const std::vector<unsigned int> & ssrcs) override;

Просмотреть файл

@ -140,6 +140,9 @@ TransceiverImpl::Shutdown_m()
mReceivePipeline = nullptr;
mTransmitPipeline = nullptr;
mSendTrack = nullptr;
if (mConduit) {
mConduit->DeleteStreams();
}
mConduit = nullptr;
RUN_ON_THREAD(mStsThread, WrapRelease(mRtpFlow.forget()), NS_DISPATCH_NORMAL);
RUN_ON_THREAD(mStsThread, WrapRelease(mRtcpFlow.forget()), NS_DISPATCH_NORMAL);