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

Unified Diff: content/public/renderer/media_stream_video_sink.cc

Issue 1849003002: Add video frame refresh to MediaStream and VideoCapture stacks. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed last round of comments from xjz and emircan. Created 4 years, 8 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/public/renderer/media_stream_video_sink.cc
diff --git a/content/public/renderer/media_stream_video_sink.cc b/content/public/renderer/media_stream_video_sink.cc
index 118d732c6b3b090e9d737e9d2579bdc345201c76..2818d9ce60d97ea5254a0c0a7922bee055f7b5a2 100644
--- a/content/public/renderer/media_stream_video_sink.cc
+++ b/content/public/renderer/media_stream_video_sink.cc
@@ -4,29 +4,37 @@
#include "content/public/renderer/media_stream_video_sink.h"
-#include "base/logging.h"
#include "content/renderer/media/media_stream_video_track.h"
-#include "third_party/WebKit/public/platform/WebMediaStreamTrack.h"
namespace content {
-void MediaStreamVideoSink::AddToVideoTrack(
- MediaStreamVideoSink* sink,
- const VideoCaptureDeliverFrameCB& callback,
- const blink::WebMediaStreamTrack& track) {
- DCHECK_EQ(blink::WebMediaStreamSource::TypeVideo, track.source().getType());
- MediaStreamVideoTrack* const video_track =
- static_cast<MediaStreamVideoTrack*>(track.getExtraData());
- video_track->AddSink(sink, callback);
+MediaStreamVideoSink::MediaStreamVideoSink()
+ : MediaStreamSink(), connected_track_(nullptr) {}
+
+MediaStreamVideoSink::~MediaStreamVideoSink() {
+ // Ensure this sink has disconnected from the track.
+ DisconnectFromTrack();
+}
+
+void MediaStreamVideoSink::ConnectToTrack(
+ const blink::WebMediaStreamTrack& track,
+ const VideoCaptureDeliverFrameCB& callback) {
+ DCHECK(!connected_track_);
+ connected_track_ = MediaStreamVideoTrack::GetVideoTrack(track);
+ DCHECK(connected_track_);
+ connected_track_->AddSink(this, callback);
+}
+
+void MediaStreamVideoSink::DisconnectFromTrack() {
+ if (connected_track_) {
+ connected_track_->RemoveSink(this);
+ connected_track_ = nullptr;
+ }
}
-void MediaStreamVideoSink::RemoveFromVideoTrack(
- MediaStreamVideoSink* sink,
- const blink::WebMediaStreamTrack& track) {
- DCHECK_EQ(blink::WebMediaStreamSource::TypeVideo, track.source().getType());
- MediaStreamVideoTrack* const video_track =
- static_cast<MediaStreamVideoTrack*>(track.getExtraData());
- video_track->RemoveSink(sink);
+void MediaStreamVideoSink::RequestRefreshFrame() {
+ if (connected_track_)
+ connected_track_->RequestRefreshFrame();
}
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698