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

Side by Side 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: 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 unified diff | Download patch
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "content/public/renderer/media_stream_video_sink.h" 5 #include "content/public/renderer/media_stream_video_sink.h"
6 6
7 #include "base/logging.h"
8 #include "content/renderer/media/media_stream_video_track.h" 7 #include "content/renderer/media/media_stream_video_track.h"
9 #include "third_party/WebKit/public/platform/WebMediaStreamTrack.h"
10 8
11 namespace content { 9 namespace content {
12 10
13 void MediaStreamVideoSink::AddToVideoTrack( 11 MediaStreamVideoSink::MediaStreamVideoSink() : MediaStreamSink() {}
14 MediaStreamVideoSink* sink, 12
15 const VideoCaptureDeliverFrameCB& callback, 13 MediaStreamVideoSink::~MediaStreamVideoSink() {
16 const blink::WebMediaStreamTrack& track) { 14 // Ensure this sink has disconnected from the track.
17 DCHECK_EQ(blink::WebMediaStreamSource::TypeVideo, track.source().getType()); 15 DisconnectFromTrack();
18 MediaStreamVideoTrack* const video_track =
19 static_cast<MediaStreamVideoTrack*>(track.getExtraData());
20 video_track->AddSink(sink, callback);
21 } 16 }
22 17
23 void MediaStreamVideoSink::RemoveFromVideoTrack( 18 void MediaStreamVideoSink::ConnectToTrack(
24 MediaStreamVideoSink* sink, 19 const blink::WebMediaStreamTrack& track,
25 const blink::WebMediaStreamTrack& track) { 20 const VideoCaptureDeliverFrameCB& callback) {
26 DCHECK_EQ(blink::WebMediaStreamSource::TypeVideo, track.source().getType()); 21 DCHECK(connected_track_.isNull());
22 connected_track_ = track;
23
27 MediaStreamVideoTrack* const video_track = 24 MediaStreamVideoTrack* const video_track =
28 static_cast<MediaStreamVideoTrack*>(track.getExtraData()); 25 MediaStreamVideoTrack::GetVideoTrack(connected_track_);
29 video_track->RemoveSink(sink); 26 DCHECK(video_track);
27 video_track->AddSink(this, callback);
28 }
29
30 void MediaStreamVideoSink::DisconnectFromTrack() {
xjz 2016/04/01 19:10:04 nit: maybe early return if connected_track_.isNull
miu 2016/04/01 23:24:27 The GetVideoTrack() call checks that for us.
31 MediaStreamVideoTrack* const video_track =
32 MediaStreamVideoTrack::GetVideoTrack(connected_track_);
33 if (video_track)
34 video_track->RemoveSink(this);
35 connected_track_.reset();
36 }
37
38 void MediaStreamVideoSink::RequestRefreshFrame() {
39 MediaStreamVideoTrack* const video_track =
40 MediaStreamVideoTrack::GetVideoTrack(connected_track_);
41 if (video_track)
42 video_track->RequestRefreshFrame();
30 } 43 }
31 44
32 } // namespace content 45 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698