| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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_source.h" | 5 #include "content/renderer/media/media_stream_video_source.h" |
| 6 | 6 |
| 7 #include <algorithm> | 7 #include <algorithm> |
| 8 #include <limits> | 8 #include <limits> |
| 9 #include <string> | 9 #include <string> |
| 10 | 10 |
| (...skipping 299 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 310 return std::find(kSupportedConstraints, | 310 return std::find(kSupportedConstraints, |
| 311 kSupportedConstraints + arraysize(kSupportedConstraints), | 311 kSupportedConstraints + arraysize(kSupportedConstraints), |
| 312 name) != | 312 name) != |
| 313 kSupportedConstraints + arraysize(kSupportedConstraints); | 313 kSupportedConstraints + arraysize(kSupportedConstraints); |
| 314 } | 314 } |
| 315 | 315 |
| 316 MediaStreamVideoSource::MediaStreamVideoSource() | 316 MediaStreamVideoSource::MediaStreamVideoSource() |
| 317 : state_(NEW), | 317 : state_(NEW), |
| 318 track_adapter_( | 318 track_adapter_( |
| 319 new VideoTrackAdapter(ChildProcess::current()->io_task_runner())), | 319 new VideoTrackAdapter(ChildProcess::current()->io_task_runner())), |
| 320 weak_factory_(this) { | 320 secure_tracker_(new CapturingLinkSecureTracker<MediaStreamVideoTrack>()), |
| 321 } | 321 weak_factory_(this) {} |
| 322 | 322 |
| 323 MediaStreamVideoSource::~MediaStreamVideoSource() { | 323 MediaStreamVideoSource::~MediaStreamVideoSource() { |
| 324 DCHECK(CalledOnValidThread()); | 324 DCHECK(CalledOnValidThread()); |
| 325 } | 325 } |
| 326 | 326 |
| 327 void MediaStreamVideoSource::AddTrack( | 327 void MediaStreamVideoSource::AddTrack( |
| 328 MediaStreamVideoTrack* track, | 328 MediaStreamVideoTrack* track, |
| 329 const VideoCaptureDeliverFrameCB& frame_callback, | 329 const VideoCaptureDeliverFrameCB& frame_callback, |
| 330 const blink::WebMediaConstraints& constraints, | 330 const blink::WebMediaConstraints& constraints, |
| 331 const ConstraintsCallback& callback) { | 331 const ConstraintsCallback& callback) { |
| 332 DCHECK(CalledOnValidThread()); | 332 DCHECK(CalledOnValidThread()); |
| 333 DCHECK(!constraints.isNull()); | 333 DCHECK(!constraints.isNull()); |
| 334 DCHECK(std::find(tracks_.begin(), tracks_.end(), track) == tracks_.end()); | 334 DCHECK(std::find(tracks_.begin(), tracks_.end(), track) == tracks_.end()); |
| 335 tracks_.push_back(track); | 335 tracks_.push_back(track); |
| 336 secure_tracker_->AddLinkSecure(track, true); |
| 336 | 337 |
| 337 track_descriptors_.push_back( | 338 track_descriptors_.push_back( |
| 338 TrackDescriptor(track, frame_callback, constraints, callback)); | 339 TrackDescriptor(track, frame_callback, constraints, callback)); |
| 339 | 340 |
| 340 switch (state_) { | 341 switch (state_) { |
| 341 case NEW: { | 342 case NEW: { |
| 342 // Tab capture and Screen capture needs the maximum requested height | 343 // Tab capture and Screen capture needs the maximum requested height |
| 343 // and width to decide on the resolution. | 344 // and width to decide on the resolution. |
| 344 int max_requested_width = 0; | 345 int max_requested_width = 0; |
| 345 if (constraints.basic().width.hasMax()) | 346 if (constraints.basic().width.hasMax()) |
| (...skipping 30 matching lines...) Expand all Loading... |
| 376 } | 377 } |
| 377 } | 378 } |
| 378 } | 379 } |
| 379 | 380 |
| 380 void MediaStreamVideoSource::RemoveTrack(MediaStreamVideoTrack* video_track) { | 381 void MediaStreamVideoSource::RemoveTrack(MediaStreamVideoTrack* video_track) { |
| 381 DCHECK(CalledOnValidThread()); | 382 DCHECK(CalledOnValidThread()); |
| 382 std::vector<MediaStreamVideoTrack*>::iterator it = | 383 std::vector<MediaStreamVideoTrack*>::iterator it = |
| 383 std::find(tracks_.begin(), tracks_.end(), video_track); | 384 std::find(tracks_.begin(), tracks_.end(), video_track); |
| 384 DCHECK(it != tracks_.end()); | 385 DCHECK(it != tracks_.end()); |
| 385 tracks_.erase(it); | 386 tracks_.erase(it); |
| 387 secure_tracker_->RemoveLinkSecure(video_track); |
| 386 | 388 |
| 387 for (std::vector<TrackDescriptor>::iterator it = track_descriptors_.begin(); | 389 for (std::vector<TrackDescriptor>::iterator it = track_descriptors_.begin(); |
| 388 it != track_descriptors_.end(); ++it) { | 390 it != track_descriptors_.end(); ++it) { |
| 389 if (it->track == video_track) { | 391 if (it->track == video_track) { |
| 390 track_descriptors_.erase(it); | 392 track_descriptors_.erase(it); |
| 391 break; | 393 break; |
| 392 } | 394 } |
| 393 } | 395 } |
| 394 | 396 |
| 395 // Call |frame_adapter_->RemoveTrack| here even if adding the track has | 397 // Call |frame_adapter_->RemoveTrack| here even if adding the track has |
| 396 // failed and |frame_adapter_->AddCallback| has not been called. | 398 // failed and |frame_adapter_->AddCallback| has not been called. |
| 397 track_adapter_->RemoveTrack(video_track); | 399 track_adapter_->RemoveTrack(video_track); |
| 398 | 400 |
| 399 if (tracks_.empty()) | 401 if (tracks_.empty()) |
| 400 StopSource(); | 402 StopSource(); |
| 401 } | 403 } |
| 402 | 404 |
| 405 void MediaStreamVideoSource::UpdateCapturingLinkSecure( |
| 406 MediaStreamVideoTrack* track, |
| 407 bool is_secure) { |
| 408 secure_tracker_->UpdateLinkSecure(track, is_secure); |
| 409 SetCapturingLinkSecured(secure_tracker_->is_capturing_secure()); |
| 410 } |
| 411 |
| 403 base::SingleThreadTaskRunner* MediaStreamVideoSource::io_task_runner() const { | 412 base::SingleThreadTaskRunner* MediaStreamVideoSource::io_task_runner() const { |
| 404 DCHECK(CalledOnValidThread()); | 413 DCHECK(CalledOnValidThread()); |
| 405 return track_adapter_->io_task_runner(); | 414 return track_adapter_->io_task_runner(); |
| 406 } | 415 } |
| 407 | 416 |
| 408 const media::VideoCaptureFormat* | 417 const media::VideoCaptureFormat* |
| 409 MediaStreamVideoSource::GetCurrentFormat() const { | 418 MediaStreamVideoSource::GetCurrentFormat() const { |
| 410 DCHECK(CalledOnValidThread()); | 419 DCHECK(CalledOnValidThread()); |
| 411 if (state_ == STARTING || state_ == STARTED) | 420 if (state_ == STARTING || state_ == STARTED) |
| 412 return ¤t_format_; | 421 return ¤t_format_; |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 588 callback(callback) { | 597 callback(callback) { |
| 589 } | 598 } |
| 590 | 599 |
| 591 MediaStreamVideoSource::TrackDescriptor::TrackDescriptor( | 600 MediaStreamVideoSource::TrackDescriptor::TrackDescriptor( |
| 592 const TrackDescriptor& other) = default; | 601 const TrackDescriptor& other) = default; |
| 593 | 602 |
| 594 MediaStreamVideoSource::TrackDescriptor::~TrackDescriptor() { | 603 MediaStreamVideoSource::TrackDescriptor::~TrackDescriptor() { |
| 595 } | 604 } |
| 596 | 605 |
| 597 } // namespace content | 606 } // namespace content |
| OLD | NEW |