gecko-dev/dom/media/MediaStreamWindowCapturer.cpp

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

74 строки
2.1 KiB
C++
Исходник Обычный вид История

/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-*/
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/. */
#include "MediaStreamWindowCapturer.h"
#include "AudioStreamTrack.h"
#include "DOMMediaStream.h"
Backed out 7 changesets (bug 1454998) for build bustages at MediaTrackGraph.h on a CLOSED TREE. Backed out changeset 80417bdfa721 (bug 1454998) Backed out changeset 8ff03f2f4ca2 (bug 1454998) Backed out changeset ae6056b748d1 (bug 1454998) Backed out changeset ab721cb2066b (bug 1454998) Backed out changeset d0e8d413cd1c (bug 1454998) Backed out changeset 3ce4dc7e9ae2 (bug 1454998) Backed out changeset 6105a4176729 (bug 1454998) --HG-- rename : dom/media/AudioCaptureTrack.cpp => dom/media/AudioCaptureStream.cpp rename : dom/media/AudioCaptureTrack.h => dom/media/AudioCaptureStream.h rename : dom/media/MediaTrackGraph.cpp => dom/media/MediaStreamGraph.cpp rename : dom/media/MediaTrackGraph.h => dom/media/MediaStreamGraph.h rename : dom/media/MediaTrackGraphImpl.h => dom/media/MediaStreamGraphImpl.h rename : dom/media/MediaTrackListener.cpp => dom/media/MediaStreamListener.cpp rename : dom/media/MediaTrackListener.h => dom/media/MediaStreamListener.h rename : dom/media/ForwardedInputTrack.cpp => dom/media/TrackUnionStream.cpp rename : dom/media/ForwardedInputTrack.h => dom/media/TrackUnionStream.h rename : dom/media/webaudio/AudioNodeExternalInputTrack.cpp => dom/media/webaudio/AudioNodeExternalInputStream.cpp rename : dom/media/webaudio/AudioNodeExternalInputTrack.h => dom/media/webaudio/AudioNodeExternalInputStream.h rename : dom/media/webaudio/AudioNodeTrack.cpp => dom/media/webaudio/AudioNodeStream.cpp rename : dom/media/webaudio/AudioNodeTrack.h => dom/media/webaudio/AudioNodeStream.h
2019-10-02 11:46:23 +03:00
#include "MediaStreamGraph.h"
namespace mozilla {
using dom::AudioStreamTrack;
using dom::MediaStreamTrack;
MediaStreamWindowCapturer::CapturedTrack::CapturedTrack(
MediaStreamTrack* aTrack, uint64_t aWindowID)
: mTrack(aTrack),
Backed out 7 changesets (bug 1454998) for build bustages at MediaTrackGraph.h on a CLOSED TREE. Backed out changeset 80417bdfa721 (bug 1454998) Backed out changeset 8ff03f2f4ca2 (bug 1454998) Backed out changeset ae6056b748d1 (bug 1454998) Backed out changeset ab721cb2066b (bug 1454998) Backed out changeset d0e8d413cd1c (bug 1454998) Backed out changeset 3ce4dc7e9ae2 (bug 1454998) Backed out changeset 6105a4176729 (bug 1454998) --HG-- rename : dom/media/AudioCaptureTrack.cpp => dom/media/AudioCaptureStream.cpp rename : dom/media/AudioCaptureTrack.h => dom/media/AudioCaptureStream.h rename : dom/media/MediaTrackGraph.cpp => dom/media/MediaStreamGraph.cpp rename : dom/media/MediaTrackGraph.h => dom/media/MediaStreamGraph.h rename : dom/media/MediaTrackGraphImpl.h => dom/media/MediaStreamGraphImpl.h rename : dom/media/MediaTrackListener.cpp => dom/media/MediaStreamListener.cpp rename : dom/media/MediaTrackListener.h => dom/media/MediaStreamListener.h rename : dom/media/ForwardedInputTrack.cpp => dom/media/TrackUnionStream.cpp rename : dom/media/ForwardedInputTrack.h => dom/media/TrackUnionStream.h rename : dom/media/webaudio/AudioNodeExternalInputTrack.cpp => dom/media/webaudio/AudioNodeExternalInputStream.cpp rename : dom/media/webaudio/AudioNodeExternalInputTrack.h => dom/media/webaudio/AudioNodeExternalInputStream.h rename : dom/media/webaudio/AudioNodeTrack.cpp => dom/media/webaudio/AudioNodeStream.cpp rename : dom/media/webaudio/AudioNodeTrack.h => dom/media/webaudio/AudioNodeStream.h
2019-10-02 11:46:23 +03:00
mPort(aTrack->Graph()->ConnectToCaptureStream(aWindowID,
aTrack->GetStream())) {}
MediaStreamWindowCapturer::CapturedTrack::~CapturedTrack() { mPort->Destroy(); }
MediaStreamWindowCapturer::MediaStreamWindowCapturer(DOMMediaStream* aStream,
uint64_t aWindowId)
: mStream(aStream), mWindowId(aWindowId) {
mStream->RegisterTrackListener(this);
nsTArray<RefPtr<AudioStreamTrack>> tracks;
mStream->GetAudioTracks(tracks);
for (const auto& t : tracks) {
if (t->Ended()) {
continue;
}
AddTrack(t);
}
}
MediaStreamWindowCapturer::~MediaStreamWindowCapturer() {
if (mStream) {
mStream->UnregisterTrackListener(this);
}
}
void MediaStreamWindowCapturer::NotifyTrackAdded(
const RefPtr<MediaStreamTrack>& aTrack) {
if (AudioStreamTrack* at = aTrack->AsAudioStreamTrack()) {
AddTrack(at);
}
}
void MediaStreamWindowCapturer::NotifyTrackRemoved(
const RefPtr<MediaStreamTrack>& aTrack) {
if (AudioStreamTrack* at = aTrack->AsAudioStreamTrack()) {
RemoveTrack(at);
}
}
void MediaStreamWindowCapturer::AddTrack(AudioStreamTrack* aTrack) {
if (aTrack->Ended()) {
return;
}
mTracks.AppendElement(MakeUnique<CapturedTrack>(aTrack, mWindowId));
}
void MediaStreamWindowCapturer::RemoveTrack(AudioStreamTrack* aTrack) {
for (size_t i = mTracks.Length(); i > 0; --i) {
if (mTracks[i - 1]->mTrack == aTrack) {
mTracks.RemoveElementAt(i - 1);
break;
}
}
}
} // namespace mozilla