Chromium Code Reviews| Index: content/browser/renderer_host/media/audio_debug_file_writer.cc |
| diff --git a/content/browser/renderer_host/media/audio_debug_file_writer.cc b/content/browser/renderer_host/media/audio_debug_file_writer.cc |
| index 1656a1cca232a2d020da4a5df59f96eb597bafdf..f4b262461a8e829fa63e042c353d04cb886736cf 100644 |
| --- a/content/browser/renderer_host/media/audio_debug_file_writer.cc |
| +++ b/content/browser/renderer_host/media/audio_debug_file_writer.cc |
| @@ -13,6 +13,7 @@ |
| #include "base/sys_byteorder.h" |
| #include "content/public/browser/browser_thread.h" |
| #include "media/base/audio_bus.h" |
| +#include "media/base/audio_sample_types.h" |
| namespace content { |
| @@ -63,7 +64,9 @@ class CharBufferWriter { |
| size_ += data_size; |
| } |
| - void Write(const char(&data)[4]) { Write(static_cast<const char*>(data), 4); } |
| + void Write(const char (&data)[4]) { |
| + Write(static_cast<const char*>(data), 4); |
| + } |
| void WriteLE16(uint16_t data) { |
| uint16_t val = base::ByteSwapToLE16(data); |
| @@ -160,7 +163,8 @@ class AudioDebugFileWriter::AudioFileWriter { |
| // Number of written samples. |
| uint64_t samples_; |
| - // Input audio parameters required to build wave header. |
| + // Audio parameters required to build wave header. Number of channels and |
| + // sample rate are used. |
| const media::AudioParameters params_; |
| // Intermediate buffer to be written to file. Interleaved 16 bit audio data. |
| @@ -186,9 +190,7 @@ AudioDebugFileWriter::AudioFileWriter::Create( |
| AudioDebugFileWriter::AudioFileWriter::AudioFileWriter( |
| const media::AudioParameters& params) |
| - : samples_(0), params_(params), interleaved_data_size_(0) { |
| - DCHECK_EQ(params.bits_per_sample(), kBytesPerSample * 8); |
| -} |
| + : samples_(0), params_(params), interleaved_data_size_(0) {} |
| AudioDebugFileWriter::AudioFileWriter::~AudioFileWriter() { |
| DCHECK_CURRENTLY_ON(BrowserThread::FILE); |
| @@ -196,9 +198,9 @@ AudioDebugFileWriter::AudioFileWriter::~AudioFileWriter() { |
| WriteHeader(); |
| } |
| -void AudioDebugFileWriter::AudioFileWriter::Write( |
| - const media::AudioBus* data) { |
| +void AudioDebugFileWriter::AudioFileWriter::Write(const media::AudioBus* data) { |
| DCHECK_CURRENTLY_ON(BrowserThread::FILE); |
| + DCHECK_EQ(params_.channels(), data->channels()); |
| if (!file_.IsValid()) |
| return; |
| @@ -209,8 +211,8 @@ void AudioDebugFileWriter::AudioFileWriter::Write( |
| interleaved_data_size_ = data_size; |
| } |
| samples_ += data_size; |
| - data->ToInterleaved(data->frames(), sizeof(interleaved_data_[0]), |
| - interleaved_data_.get()); |
| + data->ToInterleaved<media::SignedInt16SampleTypeTraits>( |
| + data->frames(), interleaved_data_.get()); |
| #ifndef ARCH_CPU_LITTLE_ENDIAN |
| static_assert(sizeof(interleaved_data_[0]) == sizeof(uint16_t), |
| @@ -260,8 +262,7 @@ void AudioDebugFileWriter::AudioFileWriter::CreateRecordingFile( |
| << file_.error_details(); |
| } |
| -AudioDebugFileWriter::AudioDebugFileWriter( |
| - const media::AudioParameters& params) |
| +AudioDebugFileWriter::AudioDebugFileWriter(const media::AudioParameters& params) |
| : params_(params) { |
| client_sequence_checker_.DetachFromSequence(); |
| } |
| @@ -270,6 +271,12 @@ AudioDebugFileWriter::~AudioDebugFileWriter() { |
| // |file_writer_| will be deleted on FILE thread. |
| } |
| +// static |
| +std::unique_ptr<media::AudioFileWriter> AudioDebugFileWriter::Create( |
| + const media::AudioParameters& params) { |
| + return base::MakeUnique<AudioDebugFileWriter>(params); |
| +} |
| + |
| void AudioDebugFileWriter::Start(const base::FilePath& file_name) { |
| DCHECK(client_sequence_checker_.CalledOnValidSequence()); |
| DCHECK(!file_writer_); |
| @@ -305,4 +312,8 @@ bool AudioDebugFileWriter::WillWrite() { |
| return !!file_writer_; |
| } |
| +std::string AudioDebugFileWriter::GetExtension() { |
|
o1ka
2017/02/09 13:04:02
const std::string& maybe? Do you anticipate any us
Henrik Grunell
2017/02/10 09:00:56
That would be fine, but the constant string would
|
| + return "wav"; |
| +} |
| + |
| } // namspace content |