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

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

Issue 2777703002: Introduce SelectSettings algorithm for MediaStream video tracks. (Closed)
Patch Set: static asserts Created 3 years, 8 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 (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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/user_media_client_impl.h" 5 #include "content/renderer/media/user_media_client_impl.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <algorithm> 9 #include <algorithm>
10 #include <utility> 10 #include <utility>
(...skipping 434 matching lines...) Expand 10 before | Expand all | Expand 10 after
445 if (!user_media_request.video()) { 445 if (!user_media_request.video()) {
446 GenerateStreamForCurrentRequestInfo(); 446 GenerateStreamForCurrentRequestInfo();
447 return; 447 return;
448 } 448 }
449 auto& video_controls = current_request_info_->stream_controls()->video; 449 auto& video_controls = current_request_info_->stream_controls()->video;
450 InitializeTrackControls(user_media_request.videoConstraints(), 450 InitializeTrackControls(user_media_request.videoConstraints(),
451 &video_controls); 451 &video_controls);
452 if (IsDeviceSource(video_controls.stream_source)) { 452 if (IsDeviceSource(video_controls.stream_source)) {
453 GetMediaDevicesDispatcher()->GetVideoInputCapabilities( 453 GetMediaDevicesDispatcher()->GetVideoInputCapabilities(
454 current_request_info_->security_origin(), 454 current_request_info_->security_origin(),
455 base::Bind(&UserMediaClientImpl::SelectVideoDeviceSourceSettings, 455 base::Bind(&UserMediaClientImpl::SelectVideoDeviceSettings,
456 weak_factory_.GetWeakPtr(), user_media_request)); 456 weak_factory_.GetWeakPtr(), user_media_request));
457 } else { 457 } else {
458 base::PostTaskAndReplyWithResult( 458 base::PostTaskAndReplyWithResult(
459 worker_task_runner_.get(), FROM_HERE, 459 worker_task_runner_.get(), FROM_HERE,
460 base::Bind(&SelectVideoContentCaptureSourceSettings, 460 base::Bind(&SelectSettingsVideoContentCapture,
461 user_media_request.videoConstraints()), 461 user_media_request.videoConstraints()),
462 base::Bind( 462 base::Bind(&UserMediaClientImpl::FinalizeSelectVideoContentSettings,
463 &UserMediaClientImpl::FinalizeSelectVideoContentSourceSettings, 463 weak_factory_.GetWeakPtr(), user_media_request));
464 weak_factory_.GetWeakPtr(), user_media_request));
465 } 464 }
466 } 465 }
467 466
468 void UserMediaClientImpl::SelectVideoDeviceSourceSettings( 467 void UserMediaClientImpl::SelectVideoDeviceSettings(
469 const blink::WebUserMediaRequest& user_media_request, 468 const blink::WebUserMediaRequest& user_media_request,
470 std::vector<::mojom::VideoInputDeviceCapabilitiesPtr> 469 std::vector<::mojom::VideoInputDeviceCapabilitiesPtr>
471 video_input_capabilities) { 470 video_input_capabilities) {
472 DCHECK(CalledOnValidThread()); 471 DCHECK(CalledOnValidThread());
473 if (!IsCurrentRequestInfo(user_media_request)) 472 if (!IsCurrentRequestInfo(user_media_request))
474 return; 473 return;
475 474
476 DCHECK(current_request_info_->stream_controls()->video.requested); 475 DCHECK(current_request_info_->stream_controls()->video.requested);
477 DCHECK(IsDeviceSource( 476 DCHECK(IsDeviceSource(
478 current_request_info_->stream_controls()->video.stream_source)); 477 current_request_info_->stream_controls()->video.stream_source));
479 478
480 VideoDeviceCaptureCapabilities capabilities; 479 VideoDeviceCaptureCapabilities capabilities;
481 capabilities.device_capabilities = std::move(video_input_capabilities); 480 capabilities.device_capabilities = std::move(video_input_capabilities);
482 capabilities.power_line_capabilities = { 481 capabilities.power_line_capabilities = {
483 media::PowerLineFrequency::FREQUENCY_DEFAULT, 482 media::PowerLineFrequency::FREQUENCY_DEFAULT,
484 media::PowerLineFrequency::FREQUENCY_50HZ, 483 media::PowerLineFrequency::FREQUENCY_50HZ,
485 media::PowerLineFrequency::FREQUENCY_60HZ}; 484 media::PowerLineFrequency::FREQUENCY_60HZ};
486 capabilities.noise_reduction_capabilities = {rtc::Optional<bool>(), 485 capabilities.noise_reduction_capabilities = {base::Optional<bool>(),
487 rtc::Optional<bool>(true), 486 base::Optional<bool>(true),
488 rtc::Optional<bool>(false)}; 487 base::Optional<bool>(false)};
489 base::PostTaskAndReplyWithResult( 488 base::PostTaskAndReplyWithResult(
490 worker_task_runner_.get(), FROM_HERE, 489 worker_task_runner_.get(), FROM_HERE,
491 base::Bind(&SelectVideoDeviceCaptureSourceSettings, 490 base::Bind(&SelectSettingsVideoDeviceCapture, std::move(capabilities),
492 std::move(capabilities),
493 user_media_request.videoConstraints()), 491 user_media_request.videoConstraints()),
494 base::Bind(&UserMediaClientImpl::FinalizeSelectVideoDeviceSourceSettings, 492 base::Bind(&UserMediaClientImpl::FinalizeSelectVideoDeviceSettings,
495 weak_factory_.GetWeakPtr(), user_media_request)); 493 weak_factory_.GetWeakPtr(), user_media_request));
496 } 494 }
497 495
498 void UserMediaClientImpl::FinalizeSelectVideoDeviceSourceSettings( 496 void UserMediaClientImpl::FinalizeSelectVideoDeviceSettings(
499 const blink::WebUserMediaRequest& user_media_request, 497 const blink::WebUserMediaRequest& user_media_request,
500 const VideoDeviceCaptureSourceSelectionResult& selection_result) { 498 const VideoCaptureSettings& settings) {
501 DCHECK(CalledOnValidThread()); 499 DCHECK(CalledOnValidThread());
502 if (!IsCurrentRequestInfo(user_media_request)) 500 if (!IsCurrentRequestInfo(user_media_request))
503 return; 501 return;
504 502
505 if (!selection_result.HasValue()) { 503 if (!settings.HasValue()) {
506 blink::WebString failed_constraint_name = 504 blink::WebString failed_constraint_name =
507 blink::WebString::fromASCII(selection_result.failed_constraint_name()); 505 blink::WebString::fromASCII(settings.failed_constraint_name());
508 MediaStreamRequestResult result = 506 MediaStreamRequestResult result =
509 failed_constraint_name.isEmpty() 507 failed_constraint_name.isEmpty()
510 ? MEDIA_DEVICE_NO_HARDWARE 508 ? MEDIA_DEVICE_NO_HARDWARE
511 : MEDIA_DEVICE_CONSTRAINT_NOT_SATISFIED; 509 : MEDIA_DEVICE_CONSTRAINT_NOT_SATISFIED;
512 GetUserMediaRequestFailed(user_media_request, result, 510 GetUserMediaRequestFailed(user_media_request, result,
513 failed_constraint_name); 511 failed_constraint_name);
514 return; 512 return;
515 } 513 }
516 current_request_info_->stream_controls()->video.device_id = 514 current_request_info_->stream_controls()->video.device_id =
517 selection_result.device_id(); 515 settings.device_id();
518 GenerateStreamForCurrentRequestInfo(); 516 GenerateStreamForCurrentRequestInfo();
519 } 517 }
520 518
521 void UserMediaClientImpl::FinalizeSelectVideoContentSourceSettings( 519 void UserMediaClientImpl::FinalizeSelectVideoContentSettings(
522 const blink::WebUserMediaRequest& user_media_request, 520 const blink::WebUserMediaRequest& user_media_request,
523 const VideoContentCaptureSourceSelectionResult& selection_result) { 521 const VideoCaptureSettings& settings) {
524 DCHECK(CalledOnValidThread()); 522 DCHECK(CalledOnValidThread());
525 if (!IsCurrentRequestInfo(user_media_request)) 523 if (!IsCurrentRequestInfo(user_media_request))
526 return; 524 return;
527 525
528 if (!selection_result.HasValue()) { 526 if (!settings.HasValue()) {
529 blink::WebString failed_constraint_name = 527 blink::WebString failed_constraint_name =
530 blink::WebString::fromASCII(selection_result.failed_constraint_name()); 528 blink::WebString::fromASCII(settings.failed_constraint_name());
531 DCHECK(!failed_constraint_name.isEmpty()); 529 DCHECK(!failed_constraint_name.isEmpty());
532 blink::WebString device_id_constraint_name = blink::WebString::fromASCII( 530 blink::WebString device_id_constraint_name = blink::WebString::fromASCII(
533 user_media_request.videoConstraints().basic().deviceId.name()); 531 user_media_request.videoConstraints().basic().deviceId.name());
534 GetUserMediaRequestFailed(user_media_request, 532 GetUserMediaRequestFailed(user_media_request,
535 MEDIA_DEVICE_CONSTRAINT_NOT_SATISFIED, 533 MEDIA_DEVICE_CONSTRAINT_NOT_SATISFIED,
536 failed_constraint_name); 534 failed_constraint_name);
537 return; 535 return;
538 } 536 }
539 current_request_info_->stream_controls()->video.device_id = 537 current_request_info_->stream_controls()->video.device_id =
540 selection_result.device_id(); 538 settings.device_id();
541 GenerateStreamForCurrentRequestInfo(); 539 GenerateStreamForCurrentRequestInfo();
542 } 540 }
543 541
544 void UserMediaClientImpl::GenerateStreamForCurrentRequestInfo() { 542 void UserMediaClientImpl::GenerateStreamForCurrentRequestInfo() {
545 DCHECK(CalledOnValidThread()); 543 DCHECK(CalledOnValidThread());
546 DCHECK(current_request_info_); 544 DCHECK(current_request_info_);
547 545
548 WebRtcLogMessage(base::StringPrintf( 546 WebRtcLogMessage(base::StringPrintf(
549 "MSI::requestUserMedia. request_id=%d" 547 "MSI::requestUserMedia. request_id=%d"
550 ", audio source id=%s" 548 ", audio source id=%s"
(...skipping 811 matching lines...) Expand 10 before | Expand all | Expand 10 after
1362 const blink::WebString& result_name) { 1360 const blink::WebString& result_name) {
1363 // Check if we're waiting to be notified of this source. If not, then we'll 1361 // Check if we're waiting to be notified of this source. If not, then we'll
1364 // ignore the notification. 1362 // ignore the notification.
1365 auto found = std::find(sources_waiting_for_callback_.begin(), 1363 auto found = std::find(sources_waiting_for_callback_.begin(),
1366 sources_waiting_for_callback_.end(), source); 1364 sources_waiting_for_callback_.end(), source);
1367 if (found != sources_waiting_for_callback_.end()) 1365 if (found != sources_waiting_for_callback_.end())
1368 OnTrackStarted(source, result, result_name); 1366 OnTrackStarted(source, result, result_name);
1369 } 1367 }
1370 1368
1371 } // namespace content 1369 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/media/user_media_client_impl.h ('k') | content/renderer/media/video_track_adapter.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698