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

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

Issue 1124263004: New resolution change policies for desktop and tab capture. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed comments from mcasas. Created 5 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 446 matching lines...) Expand 10 before | Expand all | Expand 10 after
457 state_ = ENDED; 457 state_ = ENDED;
458 SetReadyState(blink::WebMediaStreamSource::ReadyStateEnded); 458 SetReadyState(blink::WebMediaStreamSource::ReadyStateEnded);
459 } 459 }
460 460
461 void MediaStreamVideoSource::OnSupportedFormats( 461 void MediaStreamVideoSource::OnSupportedFormats(
462 const media::VideoCaptureFormats& formats) { 462 const media::VideoCaptureFormats& formats) {
463 DCHECK(CalledOnValidThread()); 463 DCHECK(CalledOnValidThread());
464 DCHECK_EQ(RETRIEVING_CAPABILITIES, state_); 464 DCHECK_EQ(RETRIEVING_CAPABILITIES, state_);
465 465
466 supported_formats_ = formats; 466 supported_formats_ = formats;
467 blink::WebMediaConstraints fulfilled_constraints;
467 if (!FindBestFormatWithConstraints(supported_formats_, 468 if (!FindBestFormatWithConstraints(supported_formats_,
468 &current_format_)) { 469 &current_format_,
470 &fulfilled_constraints)) {
469 SetReadyState(blink::WebMediaStreamSource::ReadyStateEnded); 471 SetReadyState(blink::WebMediaStreamSource::ReadyStateEnded);
470 // This object can be deleted after calling FinalizeAddTrack. See comment 472 // This object can be deleted after calling FinalizeAddTrack. See comment
471 // in the header file. 473 // in the header file.
472 FinalizeAddTrack(); 474 FinalizeAddTrack();
473 return; 475 return;
474 } 476 }
475 477
476 state_ = STARTING; 478 state_ = STARTING;
477 DVLOG(3) << "Starting the capturer with " << current_format_.ToString(); 479 DVLOG(3) << "Starting the capturer with " << current_format_.ToString();
478 480
479 StartSourceImpl( 481 StartSourceImpl(
480 current_format_, 482 current_format_,
483 fulfilled_constraints,
481 base::Bind(&VideoTrackAdapter::DeliverFrameOnIO, track_adapter_)); 484 base::Bind(&VideoTrackAdapter::DeliverFrameOnIO, track_adapter_));
482 } 485 }
483 486
484 bool MediaStreamVideoSource::FindBestFormatWithConstraints( 487 bool MediaStreamVideoSource::FindBestFormatWithConstraints(
485 const media::VideoCaptureFormats& formats, 488 const media::VideoCaptureFormats& formats,
486 media::VideoCaptureFormat* best_format) { 489 media::VideoCaptureFormat* best_format,
490 blink::WebMediaConstraints* fulfilled_constraints) {
487 DCHECK(CalledOnValidThread()); 491 DCHECK(CalledOnValidThread());
488 // Find the first constraints that we can fulfill. 492 // Find the first constraints that we can fulfill.
489 for (const auto& request : requested_constraints_) { 493 for (const auto& request : requested_constraints_) {
490 const blink::WebMediaConstraints& requested_constraints = 494 const blink::WebMediaConstraints& requested_constraints =
491 request.constraints; 495 request.constraints;
492 496
493 // If the source doesn't support capability enumeration it is still ok if 497 // If the source doesn't support capability enumeration it is still ok if
494 // no mandatory constraints have been specified. That just means that 498 // no mandatory constraints have been specified. That just means that
495 // we will start with whatever format is native to the source. 499 // we will start with whatever format is native to the source.
496 if (formats.empty() && !HasMandatoryConstraints(requested_constraints)) { 500 if (formats.empty() && !HasMandatoryConstraints(requested_constraints)) {
501 *fulfilled_constraints = requested_constraints;
497 *best_format = media::VideoCaptureFormat(); 502 *best_format = media::VideoCaptureFormat();
498 return true; 503 return true;
499 } 504 }
500 blink::WebString unsatisfied_constraint; 505 blink::WebString unsatisfied_constraint;
501 media::VideoCaptureFormats filtered_formats = 506 media::VideoCaptureFormats filtered_formats =
502 FilterFormats(requested_constraints, formats, &unsatisfied_constraint); 507 FilterFormats(requested_constraints, formats, &unsatisfied_constraint);
503 if (filtered_formats.size() > 0) { 508 if (filtered_formats.size() > 0) {
504 // A request with constraints that can be fulfilled. 509 // A request with constraints that can be fulfilled.
510 *fulfilled_constraints = requested_constraints;
505 GetBestCaptureFormat(filtered_formats, 511 GetBestCaptureFormat(filtered_formats,
506 requested_constraints, 512 requested_constraints,
507 best_format); 513 best_format);
508 return true; 514 return true;
509 } 515 }
510 } 516 }
511 return false; 517 return false;
512 } 518 }
513 519
514 void MediaStreamVideoSource::OnStartDone(MediaStreamRequestResult result) { 520 void MediaStreamVideoSource::OnStartDone(MediaStreamRequestResult result) {
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
608 : track(track), 614 : track(track),
609 frame_callback(frame_callback), 615 frame_callback(frame_callback),
610 constraints(constraints), 616 constraints(constraints),
611 callback(callback) { 617 callback(callback) {
612 } 618 }
613 619
614 MediaStreamVideoSource::RequestedConstraints::~RequestedConstraints() { 620 MediaStreamVideoSource::RequestedConstraints::~RequestedConstraints() {
615 } 621 }
616 622
617 } // namespace content 623 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698