OLD | NEW |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |