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

Side by Side Diff: content/renderer/media/media_stream_video_track.cc

Issue 2365223002: Video Capture: Allow suspension of individual devices. (Closed)
Patch Set: Style tweaks, per mcasas's comments. Created 4 years, 2 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/renderer/media/media_stream_video_track.h" 5 #include "content/renderer/media/media_stream_video_track.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/location.h" 10 #include "base/location.h"
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 245
246 void MediaStreamVideoTrack::AddSink(MediaStreamVideoSink* sink, 246 void MediaStreamVideoTrack::AddSink(MediaStreamVideoSink* sink,
247 const VideoCaptureDeliverFrameCB& callback, 247 const VideoCaptureDeliverFrameCB& callback,
248 bool is_sink_secure) { 248 bool is_sink_secure) {
249 DCHECK(main_render_thread_checker_.CalledOnValidThread()); 249 DCHECK(main_render_thread_checker_.CalledOnValidThread());
250 DCHECK(std::find(sinks_.begin(), sinks_.end(), sink) == sinks_.end()); 250 DCHECK(std::find(sinks_.begin(), sinks_.end(), sink) == sinks_.end());
251 sinks_.push_back(sink); 251 sinks_.push_back(sink);
252 frame_deliverer_->AddCallback(sink, callback); 252 frame_deliverer_->AddCallback(sink, callback);
253 secure_tracker_.Add(sink, is_sink_secure); 253 secure_tracker_.Add(sink, is_sink_secure);
254 // Request source to deliver a frame because a new sink is added. 254 // Request source to deliver a frame because a new sink is added.
255 if (source_) { 255 if (!source_)
256 source_->RequestRefreshFrame(); 256 return;
257 source_->UpdateCapturingLinkSecure(this, 257 source_->UpdateHasConsumers(this, true);
258 secure_tracker_.is_capturing_secure()); 258 source_->RequestRefreshFrame();
259 } 259 source_->UpdateCapturingLinkSecure(this,
260 secure_tracker_.is_capturing_secure());
260 } 261 }
261 262
262 void MediaStreamVideoTrack::RemoveSink(MediaStreamVideoSink* sink) { 263 void MediaStreamVideoTrack::RemoveSink(MediaStreamVideoSink* sink) {
263 DCHECK(main_render_thread_checker_.CalledOnValidThread()); 264 DCHECK(main_render_thread_checker_.CalledOnValidThread());
264 std::vector<MediaStreamVideoSink*>::iterator it = 265 std::vector<MediaStreamVideoSink*>::iterator it =
265 std::find(sinks_.begin(), sinks_.end(), sink); 266 std::find(sinks_.begin(), sinks_.end(), sink);
266 DCHECK(it != sinks_.end()); 267 DCHECK(it != sinks_.end());
267 sinks_.erase(it); 268 sinks_.erase(it);
268 frame_deliverer_->RemoveCallback(sink); 269 frame_deliverer_->RemoveCallback(sink);
269 secure_tracker_.Remove(sink); 270 secure_tracker_.Remove(sink);
270 if (source_) 271 if (!source_)
271 source_->UpdateCapturingLinkSecure(this, 272 return;
272 secure_tracker_.is_capturing_secure()); 273 if (sinks_.empty())
274 source_->UpdateHasConsumers(this, false);
275 source_->UpdateCapturingLinkSecure(this,
276 secure_tracker_.is_capturing_secure());
273 } 277 }
274 278
275 void MediaStreamVideoTrack::SetEnabled(bool enabled) { 279 void MediaStreamVideoTrack::SetEnabled(bool enabled) {
276 DCHECK(main_render_thread_checker_.CalledOnValidThread()); 280 DCHECK(main_render_thread_checker_.CalledOnValidThread());
277 frame_deliverer_->SetEnabled(enabled); 281 frame_deliverer_->SetEnabled(enabled);
278 for (auto* sink : sinks_) 282 for (auto* sink : sinks_)
279 sink->OnEnabledChanged(enabled); 283 sink->OnEnabledChanged(enabled);
280 } 284 }
281 285
282 void MediaStreamVideoTrack::Stop() { 286 void MediaStreamVideoTrack::Stop() {
(...skipping 20 matching lines...) Expand all
303 } 307 }
304 308
305 void MediaStreamVideoTrack::OnReadyStateChanged( 309 void MediaStreamVideoTrack::OnReadyStateChanged(
306 blink::WebMediaStreamSource::ReadyState state) { 310 blink::WebMediaStreamSource::ReadyState state) {
307 DCHECK(main_render_thread_checker_.CalledOnValidThread()); 311 DCHECK(main_render_thread_checker_.CalledOnValidThread());
308 for (auto* sink : sinks_) 312 for (auto* sink : sinks_)
309 sink->OnReadyStateChanged(state); 313 sink->OnReadyStateChanged(state);
310 } 314 }
311 315
312 } // namespace content 316 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/media_stream_video_source.cc ('k') | content/renderer/media/video_capture_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698