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

Side by Side Diff: media/audio/cras/cras_input.cc

Issue 2516813002: Enable pinning stream output routing for webapp request on ChromeOS (Closed)
Patch Set: comment Created 4 years 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 "media/audio/cras/cras_input.h" 5 #include "media/audio/cras/cras_input.h"
6 6
7 #include <math.h> 7 #include <math.h>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
11 #include "base/strings/string_number_conversions.h" 11 #include "base/strings/string_number_conversions.h"
12 #include "base/time/time.h" 12 #include "base/time/time.h"
13 #include "media/audio/audio_device_description.h" 13 #include "media/audio/audio_device_description.h"
14 #include "media/audio/audio_manager.h"
15 #include "media/audio/cras/audio_manager_cras.h" 14 #include "media/audio/cras/audio_manager_cras.h"
16 15
17 namespace media { 16 namespace media {
18 17
19 CrasInputStream::CrasInputStream(const AudioParameters& params, 18 CrasInputStream::CrasInputStream(const AudioParameters& params,
20 AudioManagerCras* manager, 19 AudioManagerCras* manager,
21 const std::string& device_id) 20 const std::string& device_id)
22 : audio_manager_(manager), 21 : audio_manager_(manager),
23 bytes_per_frame_(0), 22 bytes_per_frame_(0),
24 callback_(NULL), 23 callback_(NULL),
25 client_(NULL), 24 client_(NULL),
26 params_(params), 25 params_(params),
27 started_(false), 26 started_(false),
28 stream_id_(0), 27 stream_id_(0),
29 stream_direction_(CRAS_STREAM_INPUT), 28 stream_direction_(CRAS_STREAM_INPUT),
30 pin_device_(NO_DEVICE), 29 pin_device_(NO_DEVICE),
31 is_loopback_( 30 is_loopback_(
32 device_id == AudioDeviceDescription::kLoopbackInputDeviceId || 31 device_id == AudioDeviceDescription::kLoopbackInputDeviceId ||
33 device_id == AudioDeviceDescription::kLoopbackWithMuteDeviceId), 32 device_id == AudioDeviceDescription::kLoopbackWithMuteDeviceId),
34 mute_system_audio_(device_id == 33 mute_system_audio_(device_id ==
35 AudioDeviceDescription::kLoopbackWithMuteDeviceId), 34 AudioDeviceDescription::kLoopbackWithMuteDeviceId),
36 mute_done_(false) { 35 mute_done_(false) {
37 DCHECK(audio_manager_); 36 DCHECK(audio_manager_);
38 audio_bus_ = AudioBus::Create(params_); 37 audio_bus_ = AudioBus::Create(params_);
39 if (!IsDefault(device_id)) { 38 if (!audio_manager_->IsDefault(device_id, true)) {
40 uint64_t cras_node_id; 39 uint64_t cras_node_id;
41 base::StringToUint64(device_id, &cras_node_id); 40 base::StringToUint64(device_id, &cras_node_id);
42 pin_device_ = dev_index_of(cras_node_id); 41 pin_device_ = dev_index_of(cras_node_id);
43 } 42 }
44 } 43 }
45 44
46 CrasInputStream::~CrasInputStream() { 45 CrasInputStream::~CrasInputStream() {
47 DCHECK(!client_); 46 DCHECK(!client_);
48 } 47 }
49 48
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
348 return 0.0; 347 return 0.0;
349 348
350 long dB = cras_client_get_system_capture_gain(client_) / 100.0; 349 long dB = cras_client_get_system_capture_gain(client_) / 100.0;
351 return GetVolumeRatioFromDecibels(dB); 350 return GetVolumeRatioFromDecibels(dB);
352 } 351 }
353 352
354 bool CrasInputStream::IsMuted() { 353 bool CrasInputStream::IsMuted() {
355 return false; 354 return false;
356 } 355 }
357 356
358 bool CrasInputStream::IsDefault(const std::string& device_id) const {
359 AudioDeviceNames device_names;
360 audio_manager_->GetAudioInputDeviceNames(&device_names);
361 DCHECK(!device_names.empty());
362 AudioDeviceName device_name = device_names.front();
363 return device_name.unique_id == device_id;
364 }
365
366 double CrasInputStream::GetVolumeRatioFromDecibels(double dB) const { 357 double CrasInputStream::GetVolumeRatioFromDecibels(double dB) const {
367 return pow(10, dB / 20.0); 358 return pow(10, dB / 20.0);
368 } 359 }
369 360
370 double CrasInputStream::GetDecibelsFromVolumeRatio(double volume_ratio) const { 361 double CrasInputStream::GetDecibelsFromVolumeRatio(double volume_ratio) const {
371 return 20 * log10(volume_ratio); 362 return 20 * log10(volume_ratio);
372 } 363 }
373 364
374 } // namespace media 365 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698