Bug 1208371 - Add convenience method for checking track forwarding to MediaStreamTrack. r?roc
MozReview-Commit-ID: 2rhLzZi72Yh
--- a/dom/media/MediaStreamTrack.cpp
+++ b/dom/media/MediaStreamTrack.cpp
@@ -255,16 +255,29 @@ MediaStreamTrack::RemoveListener(MediaSt
this, aListener));
GetOwnedStream()->RemoveTrackListener(aListener, mTrackID);
}
already_AddRefed<MediaInputPort>
MediaStreamTrack::ForwardTrackContentsTo(ProcessedMediaStream* aStream)
{
+ MOZ_ASSERT(NS_IsMainThread());
MOZ_RELEASE_ASSERT(aStream);
RefPtr<MediaInputPort> port =
aStream->AllocateInputPort(GetOwnedStream(), mTrackID);
return port.forget();
}
+bool
+MediaStreamTrack::IsForwardedThrough(MediaInputPort* aPort)
+{
+ MOZ_ASSERT(NS_IsMainThread());
+ MOZ_ASSERT(aPort);
+ if (!aPort) {
+ return false;
+ }
+ return aPort->GetSource() == GetOwnedStream() &&
+ aPort->PassTrackThrough(mTrackID);
+}
+
} // namespace dom
} // namespace mozilla
--- a/dom/media/MediaStreamTrack.h
+++ b/dom/media/MediaStreamTrack.h
@@ -302,16 +302,22 @@ public:
void RemoveListener(MediaStreamTrackListener* aListener);
/**
* Sets up a MediaInputPort from the underlying track that this
* MediaStreamTrack represents, to aStream, and returns it.
*/
already_AddRefed<MediaInputPort> ForwardTrackContentsTo(ProcessedMediaStream* aStream);
+ /**
+ * Returns true if this track is connected to aPort and forwarded to aPort's
+ * output stream.
+ */
+ bool IsForwardedThrough(MediaInputPort* aPort);
+
protected:
virtual ~MediaStreamTrack();
// Returns the original DOMMediaStream's underlying input stream.
MediaStream* GetInputStream();
// Returns the owning DOMMediaStream's underlying owned stream.
ProcessedMediaStream* GetOwnedStream();