| 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 weak_factory_(this) {} |
| 321 } | |
| 322 | 321 |
| 323 MediaStreamVideoSource::~MediaStreamVideoSource() { | 322 MediaStreamVideoSource::~MediaStreamVideoSource() { |
| 324 DCHECK(CalledOnValidThread()); | 323 DCHECK(CalledOnValidThread()); |
| 325 } | 324 } |
| 326 | 325 |
| 327 void MediaStreamVideoSource::AddTrack( | 326 void MediaStreamVideoSource::AddTrack( |
| 328 MediaStreamVideoTrack* track, | 327 MediaStreamVideoTrack* track, |
| 329 const VideoCaptureDeliverFrameCB& frame_callback, | 328 const VideoCaptureDeliverFrameCB& frame_callback, |
| 330 const blink::WebMediaConstraints& constraints, | 329 const blink::WebMediaConstraints& constraints, |
| 331 const ConstraintsCallback& callback) { | 330 const ConstraintsCallback& callback) { |
| 332 DCHECK(CalledOnValidThread()); | 331 DCHECK(CalledOnValidThread()); |
| 333 DCHECK(!constraints.isNull()); | 332 DCHECK(!constraints.isNull()); |
| 334 DCHECK(std::find(tracks_.begin(), tracks_.end(), track) == tracks_.end()); | 333 DCHECK(std::find(tracks_.begin(), tracks_.end(), track) == tracks_.end()); |
| 335 tracks_.push_back(track); | 334 tracks_.push_back(track); |
| 335 secure_tracker_.Add(track, true); |
| 336 | 336 |
| 337 track_descriptors_.push_back( | 337 track_descriptors_.push_back( |
| 338 TrackDescriptor(track, frame_callback, constraints, callback)); | 338 TrackDescriptor(track, frame_callback, constraints, callback)); |
| 339 | 339 |
| 340 switch (state_) { | 340 switch (state_) { |
| 341 case NEW: { | 341 case NEW: { |
| 342 // Tab capture and Screen capture needs the maximum requested height | 342 // Tab capture and Screen capture needs the maximum requested height |
| 343 // and width to decide on the resolution. | 343 // and width to decide on the resolution. |
| 344 // NOTE: Optional constraints are deliberately ignored. | 344 // NOTE: Optional constraints are deliberately ignored. |
| 345 int max_requested_width = 0; | 345 int max_requested_width = 0; |
| (...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 377 } | 377 } |
| 378 } | 378 } |
| 379 } | 379 } |
| 380 | 380 |
| 381 void MediaStreamVideoSource::RemoveTrack(MediaStreamVideoTrack* video_track) { | 381 void MediaStreamVideoSource::RemoveTrack(MediaStreamVideoTrack* video_track) { |
| 382 DCHECK(CalledOnValidThread()); | 382 DCHECK(CalledOnValidThread()); |
| 383 std::vector<MediaStreamVideoTrack*>::iterator it = | 383 std::vector<MediaStreamVideoTrack*>::iterator it = |
| 384 std::find(tracks_.begin(), tracks_.end(), video_track); | 384 std::find(tracks_.begin(), tracks_.end(), video_track); |
| 385 DCHECK(it != tracks_.end()); | 385 DCHECK(it != tracks_.end()); |
| 386 tracks_.erase(it); | 386 tracks_.erase(it); |
| 387 secure_tracker_.Remove(video_track); |
| 387 | 388 |
| 388 for (std::vector<TrackDescriptor>::iterator it = track_descriptors_.begin(); | 389 for (std::vector<TrackDescriptor>::iterator it = track_descriptors_.begin(); |
| 389 it != track_descriptors_.end(); ++it) { | 390 it != track_descriptors_.end(); ++it) { |
| 390 if (it->track == video_track) { | 391 if (it->track == video_track) { |
| 391 track_descriptors_.erase(it); | 392 track_descriptors_.erase(it); |
| 392 break; | 393 break; |
| 393 } | 394 } |
| 394 } | 395 } |
| 395 | 396 |
| 396 // Call |frame_adapter_->RemoveTrack| here even if adding the track has | 397 // Call |frame_adapter_->RemoveTrack| here even if adding the track has |
| 397 // failed and |frame_adapter_->AddCallback| has not been called. | 398 // failed and |frame_adapter_->AddCallback| has not been called. |
| 398 track_adapter_->RemoveTrack(video_track); | 399 track_adapter_->RemoveTrack(video_track); |
| 399 | 400 |
| 400 if (tracks_.empty()) | 401 if (tracks_.empty()) |
| 401 StopSource(); | 402 StopSource(); |
| 402 } | 403 } |
| 403 | 404 |
| 405 void MediaStreamVideoSource::UpdateCapturingLinkSecure( |
| 406 MediaStreamVideoTrack* track, |
| 407 bool is_secure) { |
| 408 secure_tracker_.Update(track, is_secure); |
| 409 SetCapturingLinkSecured(secure_tracker_.is_capturing_secure()); |
| 410 } |
| 411 |
| 404 base::SingleThreadTaskRunner* MediaStreamVideoSource::io_task_runner() const { | 412 base::SingleThreadTaskRunner* MediaStreamVideoSource::io_task_runner() const { |
| 405 DCHECK(CalledOnValidThread()); | 413 DCHECK(CalledOnValidThread()); |
| 406 return track_adapter_->io_task_runner(); | 414 return track_adapter_->io_task_runner(); |
| 407 } | 415 } |
| 408 | 416 |
| 409 const media::VideoCaptureFormat* | 417 const media::VideoCaptureFormat* |
| 410 MediaStreamVideoSource::GetCurrentFormat() const { | 418 MediaStreamVideoSource::GetCurrentFormat() const { |
| 411 DCHECK(CalledOnValidThread()); | 419 DCHECK(CalledOnValidThread()); |
| 412 if (state_ == STARTING || state_ == STARTED) | 420 if (state_ == STARTING || state_ == STARTED) |
| 413 return ¤t_format_; | 421 return ¤t_format_; |
| (...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 591 callback(callback) { | 599 callback(callback) { |
| 592 } | 600 } |
| 593 | 601 |
| 594 MediaStreamVideoSource::TrackDescriptor::TrackDescriptor( | 602 MediaStreamVideoSource::TrackDescriptor::TrackDescriptor( |
| 595 const TrackDescriptor& other) = default; | 603 const TrackDescriptor& other) = default; |
| 596 | 604 |
| 597 MediaStreamVideoSource::TrackDescriptor::~TrackDescriptor() { | 605 MediaStreamVideoSource::TrackDescriptor::~TrackDescriptor() { |
| 598 } | 606 } |
| 599 | 607 |
| 600 } // namespace content | 608 } // namespace content |
| OLD | NEW |