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 |