summaryrefslogtreecommitdiffstats
path: root/media
diff options
context:
space:
mode:
authordalecurtis@chromium.org <dalecurtis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-10 21:59:46 +0000
committerdalecurtis@chromium.org <dalecurtis@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2014-01-10 21:59:46 +0000
commitdd261379c34aa24b5f35767f3752e562e9dd1e44 (patch)
tree7ce3fa9ab28358848c0b8888996df3638d4a3ebd /media
parentd1be6e49e6d66a5b3a045e739abfc50a4adf7065 (diff)
downloadchromium_src-dd261379c34aa24b5f35767f3752e562e9dd1e44.zip
chromium_src-dd261379c34aa24b5f35767f3752e562e9dd1e44.tar.gz
chromium_src-dd261379c34aa24b5f35767f3752e562e9dd1e44.tar.bz2
Fix chromeos=1 so Pulse is preferred when use_cras=0.
Merges the settings for use_alsa and use_pulseaudio for selection based on use_cras. As a consequence, removes linking of ALSA when use_cras=1, which should result in a small binary size savings. BUG=none TEST=Pulse is available along with ALSA when chromeos=1. NOTRY=true Committed: https://src.chromium.org/viewvc/chrome?view=rev&revision=244098 Review URL: https://codereview.chromium.org/132773002 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@244251 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'media')
-rw-r--r--media/audio/cras/audio_manager_cras.cc15
-rw-r--r--media/audio/cras/audio_manager_cras.h4
-rw-r--r--media/audio/cras/cras_input.cc6
-rw-r--r--media/audio/cras/cras_input.h4
-rw-r--r--media/audio/cras/cras_input_unittest.cc9
-rw-r--r--media/audio/cras/cras_unified.cc8
-rw-r--r--media/audio/cras/cras_unified.h3
-rw-r--r--media/audio/cras/cras_unified_unittest.cc13
-rw-r--r--media/media.gyp9
9 files changed, 43 insertions, 28 deletions
diff --git a/media/audio/cras/audio_manager_cras.cc b/media/audio/cras/audio_manager_cras.cc
index 876d6ce..305d5e8 100644
--- a/media/audio/cras/audio_manager_cras.cc
+++ b/media/audio/cras/audio_manager_cras.cc
@@ -138,4 +138,19 @@ AudioInputStream* AudioManagerCras::MakeInputStream(
return new CrasInputStream(params, this, device_id);
}
+snd_pcm_format_t AudioManagerCras::BitsToFormat(int bits_per_sample) {
+ switch (bits_per_sample) {
+ case 8:
+ return SND_PCM_FORMAT_U8;
+ case 16:
+ return SND_PCM_FORMAT_S16;
+ case 24:
+ return SND_PCM_FORMAT_S24;
+ case 32:
+ return SND_PCM_FORMAT_S32;
+ default:
+ return SND_PCM_FORMAT_UNKNOWN;
+ }
+}
+
} // namespace media
diff --git a/media/audio/cras/audio_manager_cras.h b/media/audio/cras/audio_manager_cras.h
index 589374a..b2863a6 100644
--- a/media/audio/cras/audio_manager_cras.h
+++ b/media/audio/cras/audio_manager_cras.h
@@ -5,6 +5,8 @@
#ifndef MEDIA_AUDIO_CRAS_AUDIO_MANAGER_CRAS_H_
#define MEDIA_AUDIO_CRAS_AUDIO_MANAGER_CRAS_H_
+#include <cras_types.h>
+
#include <string>
#include "base/compiler_specific.h"
@@ -40,6 +42,8 @@ class MEDIA_EXPORT AudioManagerCras : public AudioManagerBase {
virtual AudioInputStream* MakeLowLatencyInputStream(
const AudioParameters& params, const std::string& device_id) OVERRIDE;
+ static snd_pcm_format_t BitsToFormat(int bits_per_sample);
+
protected:
virtual ~AudioManagerCras();
diff --git a/media/audio/cras/cras_input.cc b/media/audio/cras/cras_input.cc
index 2c4c6a7..0181d88 100644
--- a/media/audio/cras/cras_input.cc
+++ b/media/audio/cras/cras_input.cc
@@ -7,10 +7,8 @@
#include <math.h>
#include "base/basictypes.h"
-#include "base/bind.h"
#include "base/logging.h"
#include "base/time/time.h"
-#include "media/audio/alsa/alsa_util.h"
#include "media/audio/audio_manager.h"
#include "media/audio/cras/audio_manager_cras.h"
@@ -54,7 +52,7 @@ bool CrasInputStream::Open() {
}
snd_pcm_format_t pcm_format =
- alsa_util::BitsToFormat(params_.bits_per_sample());
+ AudioManagerCras::BitsToFormat(params_.bits_per_sample());
if (pcm_format == SND_PCM_FORMAT_UNKNOWN) {
DLOG(WARNING) << "Unsupported bits/sample: " << params_.bits_per_sample();
return false;
@@ -114,7 +112,7 @@ void CrasInputStream::Start(AudioInputCallback* callback) {
// Prepare |audio_format| and |stream_params| for the stream we
// will create.
cras_audio_format* audio_format = cras_audio_format_create(
- alsa_util::BitsToFormat(params_.bits_per_sample()),
+ AudioManagerCras::BitsToFormat(params_.bits_per_sample()),
params_.sample_rate(),
params_.channels());
if (!audio_format) {
diff --git a/media/audio/cras/cras_input.h b/media/audio/cras/cras_input.h
index dd2cb54..2b7176b 100644
--- a/media/audio/cras/cras_input.h
+++ b/media/audio/cras/cras_input.h
@@ -10,8 +10,6 @@
#include <string>
#include "base/compiler_specific.h"
-#include "base/memory/scoped_ptr.h"
-#include "base/memory/weak_ptr.h"
#include "media/audio/agc_audio_stream.h"
#include "media/audio/audio_io.h"
#include "media/audio/audio_parameters.h"
@@ -105,4 +103,4 @@ class CrasInputStream : public AgcAudioStream<AudioInputStream> {
} // namespace media
-#endif // MEDIA_AUDIO_CRAS_ALSA_INPUT_H_
+#endif // MEDIA_AUDIO_CRAS_CRAS_INPUT_H_
diff --git a/media/audio/cras/cras_input_unittest.cc b/media/audio/cras/cras_input_unittest.cc
index 03c89b0..77f951c 100644
--- a/media/audio/cras/cras_input_unittest.cc
+++ b/media/audio/cras/cras_input_unittest.cc
@@ -2,19 +2,22 @@
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
-#include <unistd.h>
-
#include <string>
#include "base/synchronization/waitable_event.h"
#include "base/test/test_timeouts.h"
#include "base/time/time.h"
#include "media/audio/cras/audio_manager_cras.h"
-#include "media/audio/cras/cras_input.h"
#include "media/audio/fake_audio_log_factory.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
+// cras_util.h defines custom min/max macros which break compilation, so ensure
+// it's not included until last. #if avoids presubmit errors.
+#if defined(USE_CRAS)
+#include "media/audio/cras/cras_input.h"
+#endif
+
using testing::_;
using testing::AtLeast;
using testing::Ge;
diff --git a/media/audio/cras/cras_unified.cc b/media/audio/cras/cras_unified.cc
index c85cf59..c41356b 100644
--- a/media/audio/cras/cras_unified.cc
+++ b/media/audio/cras/cras_unified.cc
@@ -4,11 +4,7 @@
#include "media/audio/cras/cras_unified.h"
-#include <cras_client.h>
-
-#include "base/command_line.h"
#include "base/logging.h"
-#include "media/audio/alsa/alsa_util.h"
#include "media/audio/cras/audio_manager_cras.h"
namespace media {
@@ -116,7 +112,7 @@ bool CrasUnifiedStream::Open() {
return false;
}
- if (alsa_util::BitsToFormat(params_.bits_per_sample()) ==
+ if (AudioManagerCras::BitsToFormat(params_.bits_per_sample()) ==
SND_PCM_FORMAT_UNKNOWN) {
LOG(WARNING) << "Unsupported pcm format";
return false;
@@ -187,7 +183,7 @@ void CrasUnifiedStream::Start(AudioSourceCallback* callback) {
// Prepare |audio_format| and |stream_params| for the stream we
// will create.
cras_audio_format* audio_format = cras_audio_format_create(
- alsa_util::BitsToFormat(params_.bits_per_sample()),
+ AudioManagerCras::BitsToFormat(params_.bits_per_sample()),
params_.sample_rate(),
params_.channels());
if (!audio_format) {
diff --git a/media/audio/cras/cras_unified.h b/media/audio/cras/cras_unified.h
index 818763e..36a58e5 100644
--- a/media/audio/cras/cras_unified.h
+++ b/media/audio/cras/cras_unified.h
@@ -10,18 +10,15 @@
#ifndef MEDIA_AUDIO_LINUX_CRAS_UNIFIED_H_
#define MEDIA_AUDIO_LINUX_CRAS_UNIFIED_H_
-#include <alsa/asoundlib.h>
#include <cras_client.h>
#include "base/compiler_specific.h"
-#include "base/gtest_prod_util.h"
#include "media/audio/audio_io.h"
#include "media/audio/audio_parameters.h"
namespace media {
class AudioManagerCras;
-class AudioParameters;
// Implementation of AudioOuputStream for Chrome OS using the Chrome OS audio
// server.
diff --git a/media/audio/cras/cras_unified_unittest.cc b/media/audio/cras/cras_unified_unittest.cc
index 040192a..01bbe13 100644
--- a/media/audio/cras/cras_unified_unittest.cc
+++ b/media/audio/cras/cras_unified_unittest.cc
@@ -8,11 +8,16 @@
#include "base/test/test_timeouts.h"
#include "base/time/time.h"
#include "media/audio/cras/audio_manager_cras.h"
-#include "media/audio/cras/cras_unified.h"
#include "media/audio/fake_audio_log_factory.h"
#include "testing/gmock/include/gmock/gmock.h"
#include "testing/gtest/include/gtest/gtest.h"
+// cras_util.h defines custom min/max macros which break compilation, so ensure
+// it's not included until last. #if avoids presubmit errors.
+#if defined(USE_CRAS)
+#include "media/audio/cras/cras_unified.h"
+#endif
+
using testing::_;
using testing::DoAll;
using testing::InvokeWithoutArgs;
@@ -41,8 +46,10 @@ class MockAudioManagerCras : public AudioManagerCras {
MOCK_METHOD0(HasAudioInputDevices, bool());
MOCK_METHOD1(MakeLinearOutputStream, AudioOutputStream*(
const AudioParameters& params));
- MOCK_METHOD1(MakeLowLatencyOutputStream, AudioOutputStream*(
- const AudioParameters& params));
+ MOCK_METHOD3(MakeLowLatencyOutputStream,
+ AudioOutputStream*(const AudioParameters& params,
+ const std::string& device_id,
+ const std::string& input_device_id));
MOCK_METHOD2(MakeLinearOutputStream, AudioInputStream*(
const AudioParameters& params, const std::string& device_id));
MOCK_METHOD2(MakeLowLatencyInputStream, AudioInputStream*(
diff --git a/media/media.gyp b/media/media.gyp
index 51d7cc0..3f1b2e8 100644
--- a/media/media.gyp
+++ b/media/media.gyp
@@ -21,15 +21,12 @@
'media_use_ffmpeg%': 1,
'media_use_libvpx%': 1,
}],
- # ALSA usage.
- ['(OS=="linux" or OS=="freebsd" or OS=="solaris") and embedded!=1', {
+ # Enable ALSA and Pulse for runtime selection.
+ ['(OS=="linux" or OS=="freebsd" or OS=="solaris") and embedded!=1 and use_cras==0', {
'use_alsa%': 1,
- }, {
- 'use_alsa%': 0,
- }],
- ['os_posix==1 and OS!="mac" and OS!="android" and chromeos!=1 and embedded!=1', {
'use_pulseaudio%': 1,
}, {
+ 'use_alsa%': 0,
'use_pulseaudio%': 0,
}],
],