summaryrefslogtreecommitdiffstats
path: root/chromium/media/audio/alsa/alsa_input.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/audio/alsa/alsa_input.cc')
-rw-r--r--chromium/media/audio/alsa/alsa_input.cc20
1 files changed, 12 insertions, 8 deletions
diff --git a/chromium/media/audio/alsa/alsa_input.cc b/chromium/media/audio/alsa/alsa_input.cc
index 9dcbf2b8662..0bc9f314d45 100644
--- a/chromium/media/audio/alsa/alsa_input.cc
+++ b/chromium/media/audio/alsa/alsa_input.cc
@@ -32,7 +32,8 @@ AlsaPcmInputStream::AlsaPcmInputStream(AudioManagerBase* audio_manager,
device_name_(device_name),
params_(params),
bytes_per_buffer_(params.frames_per_buffer() *
- (params.channels() * params.bits_per_sample()) / 8),
+ (params.channels() * params.bits_per_sample()) /
+ 8),
wrapper_(wrapper),
buffer_duration_(base::TimeDelta::FromMicroseconds(
params.frames_per_buffer() * base::Time::kMicrosecondsPerSecond /
@@ -41,8 +42,9 @@ AlsaPcmInputStream::AlsaPcmInputStream(AudioManagerBase* audio_manager,
device_handle_(NULL),
mixer_handle_(NULL),
mixer_element_handle_(NULL),
- weak_factory_(this),
- read_callback_behind_schedule_(false) {
+ read_callback_behind_schedule_(false),
+ audio_bus_(AudioBus::Create(params)),
+ weak_factory_(this) {
}
AlsaPcmInputStream::~AlsaPcmInputStream() {}
@@ -208,8 +210,11 @@ void AlsaPcmInputStream::ReadAudio() {
int frames_read = wrapper_->PcmReadi(device_handle_, audio_buffer_.get(),
params_.frames_per_buffer());
if (frames_read == params_.frames_per_buffer()) {
- callback_->OnData(this, audio_buffer_.get(), bytes_per_buffer_,
- hardware_delay_bytes, normalized_volume);
+ audio_bus_->FromInterleaved(audio_buffer_.get(),
+ audio_bus_->frames(),
+ params_.bits_per_sample() / 8);
+ callback_->OnData(
+ this, audio_bus_.get(), hardware_delay_bytes, normalized_volume);
} else {
LOG(WARNING) << "PcmReadi returning less than expected frames: "
<< frames_read << " vs. " << params_.frames_per_buffer()
@@ -245,6 +250,8 @@ void AlsaPcmInputStream::Stop() {
int error = wrapper_->PcmDrop(device_handle_);
if (error < 0)
HandleError("PcmDrop", error);
+
+ callback_ = NULL;
}
void AlsaPcmInputStream::Close() {
@@ -261,9 +268,6 @@ void AlsaPcmInputStream::Close() {
device_handle_ = NULL;
mixer_handle_ = NULL;
mixer_element_handle_ = NULL;
-
- if (callback_)
- callback_->OnClose(this);
}
audio_manager_->ReleaseInputStream(this);