Index: media/audio/pulse/pulse_input.cc |
diff --git a/media/audio/pulse/pulse_input.cc b/media/audio/pulse/pulse_input.cc |
index 9d31cddd735ff291713ae24c5e6e6f410008df8d..6ab99f7b3e55b40b0562dddb9c6654240d16948e 100644 |
--- a/media/audio/pulse/pulse_input.cc |
+++ b/media/audio/pulse/pulse_input.cc |
@@ -32,11 +32,15 @@ PulseAudioInputStream::PulseAudioInputStream(AudioManagerPulse* audio_manager, |
pa_context_(context), |
handle_(NULL), |
context_state_changed_(false) { |
+ DVLOG(1) << __FUNCTION__; |
DCHECK(mainloop); |
DCHECK(context); |
+ CHECK(params_.IsValid()); |
+ audio_bus_ = AudioBus::Create(params_); |
} |
PulseAudioInputStream::~PulseAudioInputStream() { |
+ DVLOG(1) << __FUNCTION__; |
// All internal structures should already have been freed in Close(), |
// which calls AudioManagerPulse::Release which deletes this object. |
DCHECK(!handle_); |
@@ -52,6 +56,7 @@ bool PulseAudioInputStream::Open() { |
DCHECK(handle_); |
+ DVLOG(1) << "frames_per_buffer: " << params_.frames_per_buffer(); |
buffer_.reset(new media::SeekableBuffer(0, 2 * params_.GetBytesPerBuffer())); |
audio_data_buffer_.reset(new uint8[params_.GetBytesPerBuffer()]); |
return true; |
@@ -272,8 +277,11 @@ void PulseAudioInputStream::ReadData() { |
int packet_size = params_.GetBytesPerBuffer(); |
while (buffer_->forward_bytes() >= packet_size) { |
buffer_->Read(audio_data_buffer_.get(), packet_size); |
- callback_->OnData(this, audio_data_buffer_.get(), packet_size, |
- hardware_delay, normalized_volume); |
+ audio_bus_->FromInterleaved(audio_data_buffer_.get(), |
+ audio_bus_->frames(), |
+ params_.bits_per_sample() / 8); |
+ callback_->OnData( |
+ this, audio_bus_.get(), hardware_delay, normalized_volume); |
if (buffer_->forward_bytes() < packet_size) |
break; |