| 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 int max_requested_width = 0; | 344 int max_requested_width = 0; |
| 345 if (constraints.basic().width.hasMax()) | 345 if (constraints.basic().width.hasMax()) |
| (...skipping 30 matching lines...) Expand all Loading... |
| 376 } | 376 } |
| 377 } | 377 } |
| 378 } | 378 } |
| 379 | 379 |
| 380 void MediaStreamVideoSource::RemoveTrack(MediaStreamVideoTrack* video_track) { | 380 void MediaStreamVideoSource::RemoveTrack(MediaStreamVideoTrack* video_track) { |
| 381 DCHECK(CalledOnValidThread()); | 381 DCHECK(CalledOnValidThread()); |
| 382 std::vector<MediaStreamVideoTrack*>::iterator it = | 382 std::vector<MediaStreamVideoTrack*>::iterator it = |
| 383 std::find(tracks_.begin(), tracks_.end(), video_track); | 383 std::find(tracks_.begin(), tracks_.end(), video_track); |
| 384 DCHECK(it != tracks_.end()); | 384 DCHECK(it != tracks_.end()); |
| 385 tracks_.erase(it); | 385 tracks_.erase(it); |
| 386 secure_tracker_.Remove(video_track); |
| 386 | 387 |
| 387 for (std::vector<TrackDescriptor>::iterator it = track_descriptors_.begin(); | 388 for (std::vector<TrackDescriptor>::iterator it = track_descriptors_.begin(); |
| 388 it != track_descriptors_.end(); ++it) { | 389 it != track_descriptors_.end(); ++it) { |
| 389 if (it->track == video_track) { | 390 if (it->track == video_track) { |
| 390 track_descriptors_.erase(it); | 391 track_descriptors_.erase(it); |
| 391 break; | 392 break; |
| 392 } | 393 } |
| 393 } | 394 } |
| 394 | 395 |
| 395 // Call |frame_adapter_->RemoveTrack| here even if adding the track has | 396 // Call |frame_adapter_->RemoveTrack| here even if adding the track has |
| 396 // failed and |frame_adapter_->AddCallback| has not been called. | 397 // failed and |frame_adapter_->AddCallback| has not been called. |
| 397 track_adapter_->RemoveTrack(video_track); | 398 track_adapter_->RemoveTrack(video_track); |
| 398 | 399 |
| 399 if (tracks_.empty()) | 400 if (tracks_.empty()) |
| 400 StopSource(); | 401 StopSource(); |
| 401 } | 402 } |
| 402 | 403 |
| 404 void MediaStreamVideoSource::UpdateCapturingLinkSecure( |
| 405 MediaStreamVideoTrack* track, |
| 406 bool is_secure) { |
| 407 secure_tracker_.Update(track, is_secure); |
| 408 SetCapturingLinkSecured(secure_tracker_.is_capturing_secure()); |
| 409 } |
| 410 |
| 403 base::SingleThreadTaskRunner* MediaStreamVideoSource::io_task_runner() const { | 411 base::SingleThreadTaskRunner* MediaStreamVideoSource::io_task_runner() const { |
| 404 DCHECK(CalledOnValidThread()); | 412 DCHECK(CalledOnValidThread()); |
| 405 return track_adapter_->io_task_runner(); | 413 return track_adapter_->io_task_runner(); |
| 406 } | 414 } |
| 407 | 415 |
| 408 const media::VideoCaptureFormat* | 416 const media::VideoCaptureFormat* |
| 409 MediaStreamVideoSource::GetCurrentFormat() const { | 417 MediaStreamVideoSource::GetCurrentFormat() const { |
| 410 DCHECK(CalledOnValidThread()); | 418 DCHECK(CalledOnValidThread()); |
| 411 if (state_ == STARTING || state_ == STARTED) | 419 if (state_ == STARTING || state_ == STARTED) |
| 412 return ¤t_format_; | 420 return ¤t_format_; |
| (...skipping 175 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 588 callback(callback) { | 596 callback(callback) { |
| 589 } | 597 } |
| 590 | 598 |
| 591 MediaStreamVideoSource::TrackDescriptor::TrackDescriptor( | 599 MediaStreamVideoSource::TrackDescriptor::TrackDescriptor( |
| 592 const TrackDescriptor& other) = default; | 600 const TrackDescriptor& other) = default; |
| 593 | 601 |
| 594 MediaStreamVideoSource::TrackDescriptor::~TrackDescriptor() { | 602 MediaStreamVideoSource::TrackDescriptor::~TrackDescriptor() { |
| 595 } | 603 } |
| 596 | 604 |
| 597 } // namespace content | 605 } // namespace content |
| OLD | NEW |