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

Side by Side Diff: content/browser/renderer_host/media/media_devices_dispatcher_host.cc

Issue 2956063003: Add support for echoCancellation and deviceId to MediaStreamTrack.getSettings (Closed)
Patch Set: Created 3 years, 5 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 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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/browser/renderer_host/media/media_devices_dispatcher_host.h" 5 #include "content/browser/renderer_host/media/media_devices_dispatcher_host.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 8
9 #include <utility> 9 #include <utility>
10 #include <vector> 10 #include <vector>
11 11
12 #include "base/bind_helpers.h" 12 #include "base/bind_helpers.h"
13 #include "base/command_line.h"
13 #include "base/memory/ptr_util.h" 14 #include "base/memory/ptr_util.h"
14 #include "content/browser/bad_message.h" 15 #include "content/browser/bad_message.h"
15 #include "content/browser/media/media_devices_util.h" 16 #include "content/browser/media/media_devices_util.h"
16 #include "content/browser/renderer_host/media/media_stream_manager.h" 17 #include "content/browser/renderer_host/media/media_stream_manager.h"
17 #include "content/browser/renderer_host/media/video_capture_manager.h" 18 #include "content/browser/renderer_host/media/video_capture_manager.h"
18 #include "content/common/media/media_devices.h" 19 #include "content/common/media/media_devices.h"
19 #include "content/public/browser/browser_context.h" 20 #include "content/public/browser/browser_context.h"
20 #include "content/public/browser/browser_thread.h" 21 #include "content/public/browser/browser_thread.h"
21 #include "content/public/browser/media_device_id.h" 22 #include "content/public/browser/media_device_id.h"
22 #include "content/public/browser/render_frame_host.h" 23 #include "content/public/browser/render_frame_host.h"
23 #include "content/public/common/media_stream_request.h" 24 #include "content/public/common/media_stream_request.h"
24 #include "media/audio/audio_system.h" 25 #include "media/audio/audio_system.h"
26 #include "media/base/media_switches.h"
25 #include "media/base/video_facing.h" 27 #include "media/base/video_facing.h"
26 #include "mojo/public/cpp/bindings/strong_binding.h" 28 #include "mojo/public/cpp/bindings/strong_binding.h"
27 #include "services/service_manager/public/cpp/interface_provider.h" 29 #include "services/service_manager/public/cpp/interface_provider.h"
28 #include "url/origin.h" 30 #include "url/origin.h"
29 31
30 namespace content { 32 namespace content {
31 33
32 namespace { 34 namespace {
33 35
34 // Resolutions used if the source doesn't support capability enumeration. 36 // Resolutions used if the source doesn't support capability enumeration.
(...skipping 458 matching lines...) Expand 10 before | Expand all | Expand 10 after
493 } 495 }
494 496
495 void MediaDevicesDispatcherHost::GotAudioInputEnumeration( 497 void MediaDevicesDispatcherHost::GotAudioInputEnumeration(
496 const std::string& default_device_id, 498 const std::string& default_device_id,
497 const MediaDeviceEnumeration& enumeration) { 499 const MediaDeviceEnumeration& enumeration) {
498 DCHECK_CURRENTLY_ON(BrowserThread::IO); 500 DCHECK_CURRENTLY_ON(BrowserThread::IO);
499 DCHECK_GT(pending_audio_input_capabilities_requests_.size(), 0U); 501 DCHECK_GT(pending_audio_input_capabilities_requests_.size(), 0U);
500 DCHECK(current_audio_input_capabilities_.empty()); 502 DCHECK(current_audio_input_capabilities_.empty());
501 for (const auto& device_info : enumeration[MEDIA_DEVICE_TYPE_AUDIO_INPUT]) { 503 for (const auto& device_info : enumeration[MEDIA_DEVICE_TYPE_AUDIO_INPUT]) {
502 ::mojom::AudioInputDeviceCapabilities capabilities( 504 ::mojom::AudioInputDeviceCapabilities capabilities(
503 device_info.device_id, media::AudioParameters()); 505 device_info.device_id,
506 media::AudioParameters::UnavailableDeviceParams());
504 if (device_info.device_id == default_device_id) 507 if (device_info.device_id == default_device_id)
505 current_audio_input_capabilities_.insert( 508 current_audio_input_capabilities_.insert(
506 current_audio_input_capabilities_.begin(), std::move(capabilities)); 509 current_audio_input_capabilities_.begin(), std::move(capabilities));
507 else 510 else
508 current_audio_input_capabilities_.push_back(std::move(capabilities)); 511 current_audio_input_capabilities_.push_back(std::move(capabilities));
509 } 512 }
510 // No devices, no need to read audio parameters. 513 // No devices or fake devices, no need to read audio parameters.
511 if (current_audio_input_capabilities_.empty()) { 514 if (current_audio_input_capabilities_.empty() ||
515 base::CommandLine::ForCurrentProcess()->HasSwitch(
516 switches::kUseFakeDeviceForMediaStream)) {
512 FinalizeGetAudioInputCapabilities(); 517 FinalizeGetAudioInputCapabilities();
513 return; 518 return;
514 } 519 }
515 520
516 num_pending_audio_input_parameters_ = 521 num_pending_audio_input_parameters_ =
517 current_audio_input_capabilities_.size(); 522 current_audio_input_capabilities_.size();
hbos_chromium 2017/07/04 15:26:48 Hmm.. DCHECK num_pending_audio_input_parameters_ i
Guido Urdaneta 2017/07/05 09:23:36 Done.
518 for (size_t i = 0; i < num_pending_audio_input_parameters_; ++i) { 523 for (size_t i = 0; i < num_pending_audio_input_parameters_; ++i) {
519 media_stream_manager_->audio_system()->GetInputStreamParameters( 524 media_stream_manager_->audio_system()->GetInputStreamParameters(
520 current_audio_input_capabilities_[i].device_id, 525 current_audio_input_capabilities_[i].device_id,
521 base::Bind(&MediaDevicesDispatcherHost::GotAudioInputParameters, 526 base::Bind(&MediaDevicesDispatcherHost::GotAudioInputParameters,
522 weak_factory_.GetWeakPtr(), i)); 527 weak_factory_.GetWeakPtr(), i));
523 } 528 }
524 } 529 }
525 530
526 void MediaDevicesDispatcherHost::GotAudioInputParameters( 531 void MediaDevicesDispatcherHost::GotAudioInputParameters(
527 size_t index, 532 size_t index,
528 const media::AudioParameters& parameters) { 533 const media::AudioParameters& parameters) {
529 DCHECK_CURRENTLY_ON(BrowserThread::IO); 534 DCHECK_CURRENTLY_ON(BrowserThread::IO);
530 DCHECK_GT(pending_audio_input_capabilities_requests_.size(), 0U); 535 DCHECK_GT(pending_audio_input_capabilities_requests_.size(), 0U);
531 DCHECK_GT(current_audio_input_capabilities_.size(), index); 536 DCHECK_GT(current_audio_input_capabilities_.size(), index);
532 DCHECK_GT(num_pending_audio_input_parameters_, 0U); 537 DCHECK_GT(num_pending_audio_input_parameters_, 0U);
533 538
534 current_audio_input_capabilities_[index].parameters = 539 if (parameters.IsValid())
535 parameters.IsValid() ? parameters 540 current_audio_input_capabilities_[index].parameters = parameters;
hbos_chromium 2017/07/04 15:26:48 Can you [D]CHECK that current_audio_input_capabili
Guido Urdaneta 2017/07/05 09:23:36 Done.
536 : media::AudioParameters::UnavailableDeviceParams(); 541
537 if (--num_pending_audio_input_parameters_ == 0U) 542 if (--num_pending_audio_input_parameters_ == 0U)
538 FinalizeGetAudioInputCapabilities(); 543 FinalizeGetAudioInputCapabilities();
539 } 544 }
540 545
541 void MediaDevicesDispatcherHost::FinalizeGetAudioInputCapabilities() { 546 void MediaDevicesDispatcherHost::FinalizeGetAudioInputCapabilities() {
542 DCHECK_CURRENTLY_ON(BrowserThread::IO); 547 DCHECK_CURRENTLY_ON(BrowserThread::IO);
543 DCHECK_GT(pending_audio_input_capabilities_requests_.size(), 0U); 548 DCHECK_GT(pending_audio_input_capabilities_requests_.size(), 0U);
544 DCHECK_EQ(0U, num_pending_audio_input_parameters_); 549 DCHECK_EQ(0U, num_pending_audio_input_parameters_);
545 550
546 for (auto& request : pending_audio_input_capabilities_requests_) { 551 for (auto& request : pending_audio_input_capabilities_requests_) {
547 std::move(request.client_callback) 552 std::move(request.client_callback)
548 .Run(ToVectorAudioInputDeviceCapabilitiesPtr( 553 .Run(ToVectorAudioInputDeviceCapabilitiesPtr(
549 current_audio_input_capabilities_, request.security_origin, 554 current_audio_input_capabilities_, request.security_origin,
550 device_id_salt_)); 555 device_id_salt_));
551 } 556 }
552 557
553 current_audio_input_capabilities_.clear(); 558 current_audio_input_capabilities_.clear();
554 pending_audio_input_capabilities_requests_.clear(); 559 pending_audio_input_capabilities_requests_.clear();
555 } 560 }
556 561
557 } // namespace content 562 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698