Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2208)

Unified Diff: content/renderer/media/media_stream_video_track.h

Issue 155853002: Chrome MediaStream VideoTrack implementation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: More cleanup. Created 6 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: content/renderer/media/media_stream_video_track.h
diff --git a/content/renderer/media/media_stream_video_track.h b/content/renderer/media/media_stream_video_track.h
index 25995906905fdc2d35afa9c7e415191c28e08d21..806053e010cd9dc6de9f0a5089ae84c0062a5d70 100644
--- a/content/renderer/media/media_stream_video_track.h
+++ b/content/renderer/media/media_stream_video_track.h
@@ -5,6 +5,8 @@
#ifndef CONTENT_RENDERER_MEDIA_MEDIA_STREAM_VIDEO_TRACK_H_
#define CONTENT_RENDERER_MEDIA_MEDIA_STREAM_VIDEO_TRACK_H_
+#include <vector>
+
#include "base/compiler_specific.h"
#include "base/memory/scoped_vector.h"
#include "base/threading/thread_checker.h"
@@ -19,6 +21,7 @@ class VideoTrackInterface;
namespace content {
class MediaStreamDependencyFactory;
+class MediaStreamVideoSource;
class WebRtcVideoSinkAdapter;
// MediaStreamVideoTrack is a video specific representation of a
@@ -27,20 +30,35 @@ class WebRtcVideoSinkAdapter;
// WebMediaStreamTrack::extraData()
class CONTENT_EXPORT MediaStreamVideoTrack : public MediaStreamTrack {
public:
+ static MediaStreamVideoTrack* GetVideoTrack(
+ const blink::WebMediaStreamTrack& track);
+
// Constructor for local video tracks.
- explicit MediaStreamVideoTrack(MediaStreamDependencyFactory* factory);
- // Constructor for remote video tracks.
- explicit MediaStreamVideoTrack(webrtc::VideoTrackInterface* track);
+ MediaStreamVideoTrack(MediaStreamVideoSource* source,
+ MediaStreamDependencyFactory* factory);
+
virtual ~MediaStreamVideoTrack();
- void AddSink(MediaStreamVideoSink* sink);
- void RemoveSink(MediaStreamVideoSink* sink);
+ virtual void AddSink(MediaStreamVideoSink* sink);
+ virtual void RemoveSink(MediaStreamVideoSink* sink);
virtual webrtc::VideoTrackInterface* GetVideoAdapter() OVERRIDE;
+ virtual void SetEnabled(bool enabled) OVERRIDE;
- private:
+ void OnVideoFrame(const scoped_refptr<media::VideoFrame>& frame);
+ void OnReadyStateChanged(blink::WebMediaStreamSource::ReadyState state);
+
+ protected:
// Used to DCHECK that we are called on the correct thread.
base::ThreadChecker thread_checker_;
- ScopedVector<WebRtcVideoSinkAdapter> sinks_;
+
+ private:
+ bool enabled_;
+ std::vector<MediaStreamVideoSink*> sinks_;
+
+ // Weak ref to the source this tracks is connected to. |source_| is owned
+ // by the blink::WebMediaStreamSource and is guaranteed to outlive the
+ // track.
+ MediaStreamVideoSource* source_;
// Weak ref to a MediaStreamDependencyFactory, owned by the RenderThread.
// It's valid for the lifetime of RenderThread.
@@ -49,6 +67,22 @@ class CONTENT_EXPORT MediaStreamVideoTrack : public MediaStreamTrack {
DISALLOW_COPY_AND_ASSIGN(MediaStreamVideoTrack);
};
+// TODO(perkj): Replace RemoteMediaStreamVideoTrack with a remote video source
Jói 2014/02/28 14:52:50 RemoteVideoStreamTrack -> WebRtcMediaStreamVideoTr
perkj_chrome 2014/03/02 09:20:44 Done.
+// delegate.
+class CONTENT_EXPORT WebRtcMediaStreamVideoTrack
Ronghua Wu (Left Chromium) 2014/03/01 01:26:04 comments for this class.
perkj_chrome 2014/03/02 09:20:44 Done.
+ : public MediaStreamVideoTrack {
+ public:
+ explicit WebRtcMediaStreamVideoTrack(webrtc::VideoTrackInterface* track);
+ virtual ~WebRtcMediaStreamVideoTrack();
+ virtual void AddSink(MediaStreamVideoSink* sink) OVERRIDE;
+ virtual void RemoveSink(MediaStreamVideoSink* sink) OVERRIDE;
+
+ private:
+ ScopedVector<WebRtcVideoSinkAdapter> sinks_;
+
+ DISALLOW_COPY_AND_ASSIGN(WebRtcMediaStreamVideoTrack);
+};
+
} // namespace content
#endif // CONTENT_RENDERER_MEDIA_MEDIA_STREAM_VIDEO_TRACK_H_

Powered by Google App Engine
This is Rietveld 408576698