Bug 1208371 - Inline MediaRecorder::Session::SetupStreams. r?roc
MozReview-Commit-ID: ACKQxiJnlRg
--- a/dom/media/MediaRecorder.cpp
+++ b/dom/media/MediaRecorder.cpp
@@ -380,17 +380,35 @@ public:
mLastBlobTimeStamp = TimeStamp::Now();
}
void Start()
{
LOG(LogLevel::Debug, ("Session.Start %p", this));
MOZ_ASSERT(NS_IsMainThread());
- SetupStreams();
+ // Create a Track Union Stream
+ MediaStreamGraph* gm = mRecorder->GetSourceMediaStream()->Graph();
+ mTrackUnionStream = gm->CreateTrackUnionStream(nullptr);
+ MOZ_ASSERT(mTrackUnionStream, "CreateTrackUnionStream failed");
+
+ mTrackUnionStream->SetAutofinish(true);
+
+ // Bind this Track Union Stream with Source Media.
+ mInputPort = mTrackUnionStream->AllocateInputPort(mRecorder->GetSourceMediaStream());
+
+ DOMMediaStream* domStream = mRecorder->Stream();
+ if (domStream) {
+ // Get the track type hint from DOM media stream.
+ TracksAvailableCallback* tracksAvailableCallback = new TracksAvailableCallback(this);
+ domStream->OnTracksAvailable(tracksAvailableCallback);
+ } else {
+ // Web Audio node has only audio.
+ InitEncoder(ContainerWriter::CREATE_AUDIO_TRACK);
+ }
}
void Stop()
{
LOG(LogLevel::Debug, ("Session.Stop %p", this));
MOZ_ASSERT(NS_IsMainThread());
mStopIssued = true;
CleanupStreams();
@@ -522,42 +540,16 @@ private:
if (NS_FAILED(NS_DispatchToMainThread(new PushBlobRunnable(this)))) {
MOZ_ASSERT(false, "NS_DispatchToMainThread PushBlobRunnable failed");
} else {
mLastBlobTimeStamp = TimeStamp::Now();
}
}
}
- // Bind media source with MediaEncoder to receive raw media data.
- void SetupStreams()
- {
- MOZ_ASSERT(NS_IsMainThread());
-
- // Create a Track Union Stream
- MediaStreamGraph* gm = mRecorder->GetSourceMediaStream()->Graph();
- mTrackUnionStream = gm->CreateTrackUnionStream(nullptr);
- MOZ_ASSERT(mTrackUnionStream, "CreateTrackUnionStream failed");
-
- mTrackUnionStream->SetAutofinish(true);
-
- // Bind this Track Union Stream with Source Media.
- mInputPort = mTrackUnionStream->AllocateInputPort(mRecorder->GetSourceMediaStream());
-
- DOMMediaStream* domStream = mRecorder->Stream();
- if (domStream) {
- // Get the track type hint from DOM media stream.
- TracksAvailableCallback* tracksAvailableCallback = new TracksAvailableCallback(this);
- domStream->OnTracksAvailable(tracksAvailableCallback);
- } else {
- // Web Audio node has only audio.
- InitEncoder(ContainerWriter::CREATE_AUDIO_TRACK);
- }
- }
-
bool CheckPermission(const char* aType)
{
nsCOMPtr<nsIDocument> doc = mRecorder->GetOwner()->GetExtantDoc();
if (!doc) {
return false;
}
uint16_t appStatus = nsIPrincipal::APP_STATUS_NOT_INSTALLED;