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

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

Issue 12316131: Moved AudioUtil static functions to AudioManager interfaces (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: made the GetPreferredOutputStreamParameters protected Created 7 years, 9 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 | Annotate | Revision Log
« no previous file with comments | « media/audio/cras/audio_manager_cras.h ('k') | media/audio/ios/audio_manager_ios.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/audio_manager_cras.h" 5 #include "media/audio/cras/audio_manager_cras.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/environment.h" 8 #include "base/environment.h"
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/nix/xdg_util.h" 10 #include "base/nix/xdg_util.h"
11 #include "base/process_util.h" 11 #include "base/process_util.h"
12 #include "base/stl_util.h" 12 #include "base/stl_util.h"
13 #include "media/audio/audio_util.h"
14 #include "media/audio/cras/cras_input.h" 13 #include "media/audio/cras/cras_input.h"
15 #include "media/audio/cras/cras_output.h" 14 #include "media/audio/cras/cras_output.h"
15 #include "media/base/channel_layout.h"
16 16
17 namespace media { 17 namespace media {
18 18
19 // Maximum number of output streams that can be open simultaneously. 19 // Maximum number of output streams that can be open simultaneously.
20 static const int kMaxOutputStreams = 50; 20 static const int kMaxOutputStreams = 50;
21 21
22 // Default sample rate for input and output streams.
23 static const int kDefaultSampleRate = 48000;
24
22 static const char kCrasAutomaticDeviceName[] = "Automatic"; 25 static const char kCrasAutomaticDeviceName[] = "Automatic";
23 static const char kCrasAutomaticDeviceId[] = "automatic"; 26 static const char kCrasAutomaticDeviceId[] = "automatic";
24 27
25 bool AudioManagerCras::HasAudioOutputDevices() { 28 bool AudioManagerCras::HasAudioOutputDevices() {
26 return true; 29 return true;
27 } 30 }
28 31
29 bool AudioManagerCras::HasAudioInputDevices() { 32 bool AudioManagerCras::HasAudioInputDevices() {
30 return true; 33 return true;
31 } 34 }
(...skipping 10 matching lines...) Expand all
42 NOTIMPLEMENTED(); 45 NOTIMPLEMENTED();
43 } 46 }
44 47
45 void AudioManagerCras::GetAudioInputDeviceNames( 48 void AudioManagerCras::GetAudioInputDeviceNames(
46 media::AudioDeviceNames* device_names) { 49 media::AudioDeviceNames* device_names) {
47 DCHECK(device_names->empty()); 50 DCHECK(device_names->empty());
48 GetCrasAudioInputDevices(device_names); 51 GetCrasAudioInputDevices(device_names);
49 return; 52 return;
50 } 53 }
51 54
55 AudioParameters AudioManagerCras::GetInputStreamParameters(
56 const std::string& device_id) {
57 static const int kDefaultInputBufferSize = 1024;
58
59 return AudioParameters(
60 AudioParameters::AUDIO_PCM_LOW_LATENCY, CHANNEL_LAYOUT_STEREO,
61 kDefaultSampleRate, 16, kDefaultInputBufferSize);
62 }
63
52 void AudioManagerCras::GetCrasAudioInputDevices( 64 void AudioManagerCras::GetCrasAudioInputDevices(
53 media::AudioDeviceNames* device_names) { 65 media::AudioDeviceNames* device_names) {
54 // Cras will route audio from a proper physical device automatically. 66 // Cras will route audio from a proper physical device automatically.
55 device_names->push_back(media::AudioDeviceName( 67 device_names->push_back(media::AudioDeviceName(
56 kCrasAutomaticDeviceName, kCrasAutomaticDeviceId)); 68 kCrasAutomaticDeviceName, kCrasAutomaticDeviceId));
57 } 69 }
58 70
59 AudioOutputStream* AudioManagerCras::MakeLinearOutputStream( 71 AudioOutputStream* AudioManagerCras::MakeLinearOutputStream(
60 const AudioParameters& params) { 72 const AudioParameters& params) {
61 DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); 73 DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format());
(...skipping 11 matching lines...) Expand all
73 DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format()); 85 DCHECK_EQ(AudioParameters::AUDIO_PCM_LINEAR, params.format());
74 return MakeInputStream(params, device_id); 86 return MakeInputStream(params, device_id);
75 } 87 }
76 88
77 AudioInputStream* AudioManagerCras::MakeLowLatencyInputStream( 89 AudioInputStream* AudioManagerCras::MakeLowLatencyInputStream(
78 const AudioParameters& params, const std::string& device_id) { 90 const AudioParameters& params, const std::string& device_id) {
79 DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format()); 91 DCHECK_EQ(AudioParameters::AUDIO_PCM_LOW_LATENCY, params.format());
80 return MakeInputStream(params, device_id); 92 return MakeInputStream(params, device_id);
81 } 93 }
82 94
95 AudioParameters AudioManagerCras::GetPreferredOutputStreamParameters(
96 const AudioParameters& input_params) {
97 static const int kDefaultOutputBufferSize = 512;
98
99 ChannelLayout channel_layout = CHANNEL_LAYOUT_STEREO;
100 int sample_rate = kDefaultSampleRate;
101 int buffer_size = kDefaultOutputBufferSize;
102 int bits_per_sample = 16;
103 int input_channels = 0;
104 if (input_params.IsValid()) {
105 sample_rate = input_params.sample_rate();
106 bits_per_sample = input_params.bits_per_sample();
107 channel_layout = input_params.channel_layout();
108 input_channels = input_params.input_channels();
109 buffer_size = input_params.frames_per_buffer();
110 }
111
112 return AudioParameters(
113 AudioParameters::AUDIO_PCM_LOW_LATENCY, channel_layout,
114 sample_rate, bits_per_sample, buffer_size, input_channels);
115 }
116
83 AudioOutputStream* AudioManagerCras::MakeOutputStream( 117 AudioOutputStream* AudioManagerCras::MakeOutputStream(
84 const AudioParameters& params) { 118 const AudioParameters& params) {
85 return new CrasOutputStream(params, this); 119 return new CrasOutputStream(params, this);
86 } 120 }
87 121
88 AudioInputStream* AudioManagerCras::MakeInputStream( 122 AudioInputStream* AudioManagerCras::MakeInputStream(
89 const AudioParameters& params, const std::string& device_id) { 123 const AudioParameters& params, const std::string& device_id) {
90 return new CrasInputStream(params, this); 124 return new CrasInputStream(params, this);
91 } 125 }
92 126
93 AudioParameters AudioManagerCras::GetPreferredLowLatencyOutputStreamParameters(
94 const AudioParameters& input_params) {
95 // TODO(dalecurtis): This should include bits per channel and channel layout
96 // eventually.
97 return AudioParameters(
98 AudioParameters::AUDIO_PCM_LOW_LATENCY, input_params.channel_layout(),
99 input_params.sample_rate(), 16, input_params.frames_per_buffer());
100 }
101
102 } // namespace media 127 } // namespace media
OLDNEW
« no previous file with comments | « media/audio/cras/audio_manager_cras.h ('k') | media/audio/ios/audio_manager_ios.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698