Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(148)

Side by Side Diff: content/renderer/media/media_stream_video_source.cc

Issue 1873293002: Report if video capturing meets output protection requirement. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed oshima and nasko's comments, and rebased. Created 4 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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
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
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 &current_format_; 421 return &current_format_;
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
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
OLDNEW
« no previous file with comments | « content/renderer/media/media_stream_video_source.h ('k') | content/renderer/media/media_stream_video_track.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698