Bug 1107534 - Using audio channels type to capture different stream. r=roc
This commit is contained in:
@@ -1861,7 +1861,8 @@ NS_IMETHODIMP HTMLMediaElement::SetMuted(bool aMuted)
|
||||
}
|
||||
|
||||
already_AddRefed<DOMMediaStream>
|
||||
HTMLMediaElement::CaptureStreamInternal(bool aFinishWhenEnded)
|
||||
HTMLMediaElement::CaptureStreamInternal(bool aFinishWhenEnded,
|
||||
MediaStreamGraph* aGraph)
|
||||
{
|
||||
nsIDOMWindow* window = OwnerDoc()->GetInnerWindow();
|
||||
if (!window) {
|
||||
@@ -1873,7 +1874,7 @@ HTMLMediaElement::CaptureStreamInternal(bool aFinishWhenEnded)
|
||||
}
|
||||
#endif
|
||||
OutputMediaStream* out = mOutputStreams.AppendElement();
|
||||
out->mStream = DOMMediaStream::CreateTrackUnionStream(window);
|
||||
out->mStream = DOMMediaStream::CreateTrackUnionStream(window, aGraph);
|
||||
nsRefPtr<nsIPrincipal> principal = GetCurrentPrincipal();
|
||||
out->mStream->CombineWithPrincipal(principal);
|
||||
out->mStream->SetCORSMode(mCORSMode);
|
||||
@@ -1885,8 +1886,8 @@ HTMLMediaElement::CaptureStreamInternal(bool aFinishWhenEnded)
|
||||
// back into the output stream.
|
||||
out->mStream->GetStream()->ChangeExplicitBlockerCount(1);
|
||||
if (mDecoder) {
|
||||
mDecoder->AddOutputStream(
|
||||
out->mStream->GetStream()->AsProcessedStream(), aFinishWhenEnded);
|
||||
mDecoder->AddOutputStream(out->mStream->GetStream()->AsProcessedStream(),
|
||||
aFinishWhenEnded);
|
||||
if (mReadyState >= HAVE_METADATA) {
|
||||
// Expose the tracks to JS directly.
|
||||
if (HasAudio()) {
|
||||
@@ -1904,9 +1905,10 @@ HTMLMediaElement::CaptureStreamInternal(bool aFinishWhenEnded)
|
||||
}
|
||||
|
||||
already_AddRefed<DOMMediaStream>
|
||||
HTMLMediaElement::MozCaptureStream(ErrorResult& aRv)
|
||||
HTMLMediaElement::MozCaptureStream(ErrorResult& aRv,
|
||||
MediaStreamGraph* aGraph)
|
||||
{
|
||||
nsRefPtr<DOMMediaStream> stream = CaptureStreamInternal(false);
|
||||
nsRefPtr<DOMMediaStream> stream = CaptureStreamInternal(false, aGraph);
|
||||
if (!stream) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
@@ -1916,9 +1918,10 @@ HTMLMediaElement::MozCaptureStream(ErrorResult& aRv)
|
||||
}
|
||||
|
||||
already_AddRefed<DOMMediaStream>
|
||||
HTMLMediaElement::MozCaptureStreamUntilEnded(ErrorResult& aRv)
|
||||
HTMLMediaElement::MozCaptureStreamUntilEnded(ErrorResult& aRv,
|
||||
MediaStreamGraph* aGraph)
|
||||
{
|
||||
nsRefPtr<DOMMediaStream> stream = CaptureStreamInternal(true);
|
||||
nsRefPtr<DOMMediaStream> stream = CaptureStreamInternal(true, aGraph);
|
||||
if (!stream) {
|
||||
aRv.Throw(NS_ERROR_FAILURE);
|
||||
return nullptr;
|
||||
@@ -2790,7 +2793,7 @@ nsresult HTMLMediaElement::FinishDecoderSetup(MediaDecoder* aDecoder,
|
||||
for (uint32_t i = 0; i < mOutputStreams.Length(); ++i) {
|
||||
OutputMediaStream* ms = &mOutputStreams[i];
|
||||
aDecoder->AddOutputStream(ms->mStream->GetStream()->AsProcessedStream(),
|
||||
ms->mFinishWhenEnded);
|
||||
ms->mFinishWhenEnded);
|
||||
}
|
||||
|
||||
// Update decoder principal before we start decoding, since it
|
||||
|
||||
Reference in New Issue
Block a user