Chromium Code Reviews| Index: media/audio/pulse/pulse_output.cc |
| diff --git a/media/audio/pulse/pulse_output.cc b/media/audio/pulse/pulse_output.cc |
| index 5efa040c0d1b96a712a77cc309badbeef9db4f2a..ab66d43b8e5c6b37e422904e44b28aae96d64aa0 100644 |
| --- a/media/audio/pulse/pulse_output.cc |
| +++ b/media/audio/pulse/pulse_output.cc |
| @@ -7,9 +7,13 @@ |
| #include <pulse/pulseaudio.h> |
| #include <stdint.h> |
| +#include "base/bind.h" |
| +#include "base/memory/ptr_util.h" |
| #include "base/single_thread_task_runner.h" |
| #include "base/time/time.h" |
| +#include "media/audio/audio_debug_recording_helper.h" |
| #include "media/audio/audio_device_description.h" |
| +#include "media/audio/audio_file_writer.h" |
| #include "media/audio/audio_manager_base.h" |
| #include "media/audio/pulse/pulse_util.h" |
| #include "media/base/audio_sample_types.h" |
| @@ -58,7 +62,10 @@ PulseAudioOutputStream::PulseAudioOutputStream(const AudioParameters& params, |
| pa_mainloop_(NULL), |
| pa_stream_(NULL), |
| volume_(1.0f), |
| - source_callback_(NULL) { |
| + source_callback_(NULL), |
| + debug_recording_helper_(base::MakeUnique<AudioDebugRecordingHelper>( |
| + manager, |
| + manager_->GetTaskRunner())) { |
| CHECK(params_.IsValid()); |
| audio_bus_ = AudioBus::Create(params_); |
| } |
| @@ -156,8 +163,15 @@ void PulseAudioOutputStream::FulfillWriteRequest(size_t requested_bytes) { |
| audio_bus_->frames(), reinterpret_cast<float*>(buffer)); |
| } else { |
| memset(buffer, 0, bytes_to_fill); |
| + |
| + // If we'll write the data to a debug file, also zero out the |audio_bus_| |
| + // as it will be copied. |
| + if (debug_recording_helper_->WillWrite()) |
| + audio_bus_->Zero(); |
| } |
| + debug_recording_helper_->MaybeWrite(audio_bus_.get()); |
|
Max Morin
2017/01/20 07:49:09
Move this below call to PA, to reduce risk of time
Henrik Grunell
2017/01/20 10:38:56
Good point. Done.
|
| + |
| if (pa_stream_write(pa_stream_, buffer, bytes_to_fill, NULL, 0LL, |
| PA_SEEK_RELATIVE) < 0) { |
| if (source_callback_) { |
| @@ -245,4 +259,13 @@ void PulseAudioOutputStream::GetVolume(double* volume) { |
| *volume = volume_; |
| } |
| +void PulseAudioOutputStream::EnableDebugRecording( |
| + const base::FilePath& file_name) { |
| + debug_recording_helper_->EnableDebugRecording(params_, file_name); |
| +} |
| + |
| +void PulseAudioOutputStream::DisableDebugRecording() { |
| + debug_recording_helper_->DisableDebugRecording(); |
| +} |
| + |
| } // namespace media |