| 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 |