зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1506884 - Use DeleteStreams in AudioConduit; r=padenot
This makes the shutdown behaviour of AudioConduit consistent with VideoConduit which should make the conduit code easier to read and reason about. Differential Revision: https://phabricator.services.mozilla.com/D25055 --HG-- extra : moz-landing-system : lando
This commit is contained in:
Родитель
41dd6b09aa
Коммит
2bafcb3c9a
|
@ -78,6 +78,8 @@ class AudioConduitTest : public ::testing::Test {
|
|||
mAudioConduit->Init();
|
||||
}
|
||||
|
||||
~AudioConduitTest() { mAudioConduit->DeleteStreams(); }
|
||||
|
||||
MockCall* mCall;
|
||||
RefPtr<AudioConduitWithMockChannelProxy> mAudioConduit;
|
||||
};
|
||||
|
|
|
@ -274,7 +274,20 @@ class WebrtcMediaTransport : public mozilla::TransportInterface {
|
|||
public:
|
||||
WebrtcMediaTransport() : numPkts(0), mAudio(false), mVideo(false) {}
|
||||
|
||||
~WebrtcMediaTransport() {}
|
||||
~WebrtcMediaTransport() {
|
||||
if (mAudioSession) {
|
||||
mAudioSession->DeleteStreams();
|
||||
}
|
||||
if (mOtherAudioSession) {
|
||||
mOtherAudioSession->DeleteStreams();
|
||||
}
|
||||
if (mVideoSession) {
|
||||
mVideoSession->DeleteStreams();
|
||||
}
|
||||
if (mOtherVideoSession) {
|
||||
mOtherVideoSession->DeleteStreams();
|
||||
}
|
||||
}
|
||||
|
||||
virtual nsresult SendRtpPacket(const uint8_t* data, size_t len) {
|
||||
++numPkts;
|
||||
|
|
|
@ -267,8 +267,15 @@ class TestAgent {
|
|||
void Shutdown_s() { transport_->Shutdown(); }
|
||||
|
||||
void Shutdown() {
|
||||
if (audio_pipeline_) audio_pipeline_->Shutdown_m();
|
||||
if (audio_stream_track_) audio_stream_track_->Stop();
|
||||
if (audio_pipeline_) {
|
||||
audio_pipeline_->Shutdown_m();
|
||||
}
|
||||
if (audio_stream_track_) {
|
||||
audio_stream_track_->Stop();
|
||||
}
|
||||
if (audio_conduit_) {
|
||||
audio_conduit_->DeleteStreams();
|
||||
}
|
||||
|
||||
mozilla::SyncRunnable::DispatchToThread(
|
||||
test_utils->sts_target(), WrapRunnable(this, &TestAgent::Shutdown_s));
|
||||
|
|
|
@ -75,15 +75,15 @@ WebrtcAudioConduit::~WebrtcAudioConduit() {
|
|||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
||||
MutexAutoLock lock(mMutex);
|
||||
DeleteSendStream();
|
||||
DeleteRecvStream();
|
||||
|
||||
DeleteChannels();
|
||||
|
||||
// We don't Terminate() the VoEBase here, because the Call (owned by
|
||||
// PeerConnectionMedia) actually owns the (shared) VoEBase/VoiceEngine
|
||||
// here
|
||||
mPtrVoEBase = nullptr;
|
||||
|
||||
MOZ_ASSERT(!mSendStream && !mRecvStream,
|
||||
"Call DeleteStreams prior to ~WebrtcAudioConduit.");
|
||||
}
|
||||
|
||||
bool WebrtcAudioConduit::SetLocalSSRCs(
|
||||
|
@ -1034,6 +1034,14 @@ MediaConduitErrorCode WebrtcAudioConduit::DeliverPacket(const void* data,
|
|||
return kMediaConduitNoError;
|
||||
}
|
||||
|
||||
void WebrtcAudioConduit::DeleteStreams() {
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
||||
MutexAutoLock lock(mMutex);
|
||||
DeleteSendStream();
|
||||
DeleteRecvStream();
|
||||
}
|
||||
|
||||
MediaConduitErrorCode WebrtcAudioConduit::CreateChannels() {
|
||||
MOZ_ASSERT(NS_IsMainThread());
|
||||
|
||||
|
|
|
@ -170,7 +170,7 @@ class WebrtcAudioConduit : public AudioSessionConduit,
|
|||
void SetPCHandle(const std::string& aPCHandle) override {}
|
||||
MediaConduitErrorCode DeliverPacket(const void* data, int len) override;
|
||||
|
||||
void DeleteStreams() override {}
|
||||
void DeleteStreams() override;
|
||||
|
||||
WebrtcAudioConduit(RefPtr<WebRtcCallWrapper> aCall,
|
||||
nsCOMPtr<nsIEventTarget> aStsThread)
|
||||
|
|
Загрузка…
Ссылка в новой задаче