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 227 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
238 constraints, callback); | 238 constraints, callback); |
239 } | 239 } |
240 | 240 |
241 MediaStreamVideoTrack::~MediaStreamVideoTrack() { | 241 MediaStreamVideoTrack::~MediaStreamVideoTrack() { |
242 DCHECK(main_render_thread_checker_.CalledOnValidThread()); | 242 DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
243 DCHECK(sinks_.empty()); | 243 DCHECK(sinks_.empty()); |
244 Stop(); | 244 Stop(); |
245 DVLOG(3) << "~MediaStreamVideoTrack()"; | 245 DVLOG(3) << "~MediaStreamVideoTrack()"; |
246 } | 246 } |
247 | 247 |
248 void MediaStreamVideoTrack::AddSink( | 248 void MediaStreamVideoTrack::AddSink(MediaStreamVideoSink* sink, |
249 MediaStreamVideoSink* sink, const VideoCaptureDeliverFrameCB& callback) { | 249 const VideoCaptureDeliverFrameCB& callback, |
| 250 bool is_sink_secure) { |
250 DCHECK(main_render_thread_checker_.CalledOnValidThread()); | 251 DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
251 DCHECK(std::find(sinks_.begin(), sinks_.end(), sink) == sinks_.end()); | 252 DCHECK(std::find(sinks_.begin(), sinks_.end(), sink) == sinks_.end()); |
252 sinks_.push_back(sink); | 253 sinks_.push_back(sink); |
253 frame_deliverer_->AddCallback(sink, callback); | 254 frame_deliverer_->AddCallback(sink, callback); |
| 255 secure_tracker_.Add(sink, is_sink_secure); |
254 // Request source to deliver a frame because a new sink is added. | 256 // Request source to deliver a frame because a new sink is added. |
255 if (source_) | 257 if (source_) { |
256 source_->RequestRefreshFrame(); | 258 source_->RequestRefreshFrame(); |
| 259 source_->UpdateCapturingLinkSecure(this, |
| 260 secure_tracker_.is_capturing_secure()); |
| 261 } |
257 } | 262 } |
258 | 263 |
259 void MediaStreamVideoTrack::RemoveSink(MediaStreamVideoSink* sink) { | 264 void MediaStreamVideoTrack::RemoveSink(MediaStreamVideoSink* sink) { |
260 DCHECK(main_render_thread_checker_.CalledOnValidThread()); | 265 DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
261 std::vector<MediaStreamVideoSink*>::iterator it = | 266 std::vector<MediaStreamVideoSink*>::iterator it = |
262 std::find(sinks_.begin(), sinks_.end(), sink); | 267 std::find(sinks_.begin(), sinks_.end(), sink); |
263 DCHECK(it != sinks_.end()); | 268 DCHECK(it != sinks_.end()); |
264 sinks_.erase(it); | 269 sinks_.erase(it); |
265 frame_deliverer_->RemoveCallback(sink); | 270 frame_deliverer_->RemoveCallback(sink); |
| 271 secure_tracker_.Remove(sink); |
| 272 if (source_) |
| 273 source_->UpdateCapturingLinkSecure(this, |
| 274 secure_tracker_.is_capturing_secure()); |
266 } | 275 } |
267 | 276 |
268 void MediaStreamVideoTrack::SetEnabled(bool enabled) { | 277 void MediaStreamVideoTrack::SetEnabled(bool enabled) { |
269 DCHECK(main_render_thread_checker_.CalledOnValidThread()); | 278 DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
270 frame_deliverer_->SetEnabled(enabled); | 279 frame_deliverer_->SetEnabled(enabled); |
271 for (auto* sink : sinks_) | 280 for (auto* sink : sinks_) |
272 sink->OnEnabledChanged(enabled); | 281 sink->OnEnabledChanged(enabled); |
273 } | 282 } |
274 | 283 |
275 void MediaStreamVideoTrack::Stop() { | 284 void MediaStreamVideoTrack::Stop() { |
276 DCHECK(main_render_thread_checker_.CalledOnValidThread()); | 285 DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
277 if (source_) { | 286 if (source_) { |
278 source_->RemoveTrack(this); | 287 source_->RemoveTrack(this); |
279 source_ = NULL; | 288 source_ = NULL; |
280 } | 289 } |
281 OnReadyStateChanged(blink::WebMediaStreamSource::ReadyStateEnded); | 290 OnReadyStateChanged(blink::WebMediaStreamSource::ReadyStateEnded); |
282 } | 291 } |
283 | 292 |
284 void MediaStreamVideoTrack::OnReadyStateChanged( | 293 void MediaStreamVideoTrack::OnReadyStateChanged( |
285 blink::WebMediaStreamSource::ReadyState state) { | 294 blink::WebMediaStreamSource::ReadyState state) { |
286 DCHECK(main_render_thread_checker_.CalledOnValidThread()); | 295 DCHECK(main_render_thread_checker_.CalledOnValidThread()); |
287 for (auto* sink : sinks_) | 296 for (auto* sink : sinks_) |
288 sink->OnReadyStateChanged(state); | 297 sink->OnReadyStateChanged(state); |
289 } | 298 } |
290 | 299 |
291 } // namespace content | 300 } // namespace content |
OLD | NEW |