| OLD | NEW |
| 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 Loading... |
| 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 Loading... |
| 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 |
| OLD | NEW |