summaryrefslogtreecommitdiff
path: root/chromium/media/audio/cras/cras_unified.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/audio/cras/cras_unified.cc')
-rw-r--r--chromium/media/audio/cras/cras_unified.cc36
1 files changed, 34 insertions, 2 deletions
diff --git a/chromium/media/audio/cras/cras_unified.cc b/chromium/media/audio/cras/cras_unified.cc
index a7741864b31..c85cf59dd5f 100644
--- a/chromium/media/audio/cras/cras_unified.cc
+++ b/chromium/media/audio/cras/cras_unified.cc
@@ -8,9 +8,8 @@
#include "base/command_line.h"
#include "base/logging.h"
-#include "media/audio/audio_util.h"
+#include "media/audio/alsa/alsa_util.h"
#include "media/audio/cras/audio_manager_cras.h"
-#include "media/audio/linux/alsa_util.h"
namespace media {
@@ -162,6 +161,23 @@ void CrasUnifiedStream::Close() {
void CrasUnifiedStream::Start(AudioSourceCallback* callback) {
CHECK(callback);
+
+ // Channel map to CRAS_CHANNEL, values in the same order of
+ // corresponding source in Chromium defined Channels.
+ static const int kChannelMap[] = {
+ CRAS_CH_FL,
+ CRAS_CH_FR,
+ CRAS_CH_FC,
+ CRAS_CH_LFE,
+ CRAS_CH_RL,
+ CRAS_CH_RR,
+ CRAS_CH_FLC,
+ CRAS_CH_FRC,
+ CRAS_CH_RC,
+ CRAS_CH_SL,
+ CRAS_CH_SR
+ };
+
source_callback_ = callback;
// Only start if we can enter the playing state.
@@ -180,6 +196,22 @@ void CrasUnifiedStream::Start(AudioSourceCallback* callback) {
return;
}
+ // Initialize channel layout to all -1 to indicate that none of
+ // the channels is set in the layout.
+ int8 layout[CRAS_CH_MAX] = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 };
+
+ // Converts to CRAS defined channels. ChannelOrder will return -1
+ // for channels that does not present in params_.channel_layout().
+ for (size_t i = 0; i < arraysize(kChannelMap); ++i)
+ layout[kChannelMap[i]] = ChannelOrder(params_.channel_layout(),
+ static_cast<Channels>(i));
+
+ if (cras_audio_format_set_channel_layout(audio_format, layout)) {
+ LOG(WARNING) << "Error setting channel layout.";
+ callback->OnError(this);
+ return;
+ }
+
cras_stream_params* stream_params = cras_client_unified_params_create(
stream_direction_,
params_.frames_per_buffer(),