Bug 1208371 - Add convenience method for forwarding a track to an MSG-stream. r?roc
MozReview-Commit-ID: 5NDThQWgSoP
--- a/dom/media/MediaStreamTrack.cpp
+++ b/dom/media/MediaStreamTrack.cpp
@@ -252,10 +252,19 @@ void
MediaStreamTrack::RemoveListener(MediaStreamTrackListener* aListener)
{
LOG(LogLevel::Debug, ("MediaStreamTrack %p removing listener %p",
this, aListener));
GetOwnedStream()->RemoveTrackListener(aListener, mTrackID);
}
+already_AddRefed<MediaInputPort>
+MediaStreamTrack::ForwardTrackContentsTo(ProcessedMediaStream* aStream)
+{
+ MOZ_RELEASE_ASSERT(aStream);
+ RefPtr<MediaInputPort> port =
+ aStream->AllocateInputPort(GetOwnedStream(), mTrackID);
+ return port.forget();
+}
+
} // namespace dom
} // namespace mozilla
--- a/dom/media/MediaStreamTrack.h
+++ b/dom/media/MediaStreamTrack.h
@@ -13,16 +13,17 @@
#include "MediaTrackConstraints.h"
#include "mozilla/CORSMode.h"
#include "PrincipalChangeObserver.h"
namespace mozilla {
class DOMMediaStream;
class MediaEnginePhotoCallback;
+class MediaInputPort;
class MediaStream;
class MediaStreamGraph;
class MediaStreamTrackListener;
class PeerConnectionImpl;
class ProcessedMediaStream;
class RemoteSourceStreamInfo;
namespace dom {
@@ -278,16 +279,22 @@ public:
void AddListener(MediaStreamTrackListener* aListener);
/**
* Removes a MediaStreamTrackListener from the MediaStreamGraph representation
* of this track.
*/
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);
+
protected:
virtual ~MediaStreamTrack();
// Returns the original DOMMediaStream's underlying input stream.
MediaStream* GetInputStream();
// Returns the owning DOMMediaStream's underlying owned stream.
ProcessedMediaStream* GetOwnedStream();