mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-10-18 15:55:36 +00:00
Bug 1190676 - Part 6 - Fix consumers: MediaManager. r=jesup
--HG-- extra : rebase_source : d7f9711c20834a8acd4e1e11ff5bfecb9f8a3c9b
This commit is contained in:
parent
bc630a1430
commit
2c70ea6a84
@ -482,12 +482,13 @@ public:
|
||||
CreateTrackUnionStream(nsIDOMWindow* aWindow,
|
||||
GetUserMediaCallbackMediaStreamListener* aListener,
|
||||
MediaEngineSource* aAudioSource,
|
||||
MediaEngineSource* aVideoSource)
|
||||
MediaEngineSource* aVideoSource,
|
||||
MediaStreamGraph* aMSG)
|
||||
{
|
||||
nsRefPtr<nsDOMUserMediaStream> stream = new nsDOMUserMediaStream(aListener,
|
||||
aAudioSource,
|
||||
aVideoSource);
|
||||
stream->InitTrackUnionStream(aWindow);
|
||||
stream->InitTrackUnionStream(aWindow, aMSG);
|
||||
return stream.forget();
|
||||
}
|
||||
|
||||
@ -786,7 +787,13 @@ public:
|
||||
}
|
||||
#endif
|
||||
|
||||
MediaStreamGraph* msg = MediaStreamGraph::GetInstance();
|
||||
MediaStreamGraph::GraphDriverType graphDriverType =
|
||||
mAudioSource ? MediaStreamGraph::AUDIO_THREAD_DRIVER
|
||||
: MediaStreamGraph::SYSTEM_THREAD_DRIVER;
|
||||
MediaStreamGraph* msg =
|
||||
MediaStreamGraph::GetInstance(graphDriverType,
|
||||
dom::AudioChannel::Normal);
|
||||
|
||||
nsRefPtr<SourceMediaStream> stream = msg->CreateSourceStream(nullptr);
|
||||
|
||||
nsRefPtr<DOMLocalMediaStream> domStream;
|
||||
@ -796,7 +803,7 @@ public:
|
||||
// them down instead.
|
||||
if (mAudioSource &&
|
||||
mAudioSource->GetMediaSource() == dom::MediaSourceEnum::AudioCapture) {
|
||||
domStream = DOMLocalMediaStream::CreateAudioCaptureStream(window);
|
||||
domStream = DOMLocalMediaStream::CreateAudioCaptureStream(window, msg);
|
||||
// It should be possible to pipe the capture stream to anything. CORS is
|
||||
// not a problem here, we got explicit user content.
|
||||
domStream->SetPrincipal(window->GetExtantDoc()->NodePrincipal());
|
||||
@ -808,7 +815,8 @@ public:
|
||||
// avoid us blocking
|
||||
nsRefPtr<nsDOMUserMediaStream> trackunion =
|
||||
nsDOMUserMediaStream::CreateTrackUnionStream(window, mListener,
|
||||
mAudioSource, mVideoSource);
|
||||
mAudioSource, mVideoSource,
|
||||
msg);
|
||||
trackunion->GetStream()->AsProcessedStream()->SetAutofinish(true);
|
||||
nsRefPtr<MediaInputPort> port = trackunion->GetStream()->AsProcessedStream()->
|
||||
AllocateInputPort(stream, MediaInputPort::FLAG_BLOCK_OUTPUT);
|
||||
@ -2831,7 +2839,10 @@ GetUserMediaCallbackMediaStreamListener::StopSharing()
|
||||
nsCOMPtr<nsPIDOMWindow> window = nsGlobalWindow::GetInnerWindowWithId(mWindowID);
|
||||
MOZ_ASSERT(window);
|
||||
window->SetAudioCapture(false);
|
||||
MediaStreamGraph::GetInstance()->UnregisterCaptureStreamForWindow(mWindowID);
|
||||
MediaStreamGraph* graph =
|
||||
MediaStreamGraph::GetInstance(MediaStreamGraph::AUDIO_THREAD_DRIVER,
|
||||
dom::AudioChannel::Normal);
|
||||
graph->UnregisterCaptureStreamForWindow(mWindowID);
|
||||
mStream->Destroy();
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user