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..38951dc54f9f056d28700d4e870a1e96c6a05f14 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_; |
} |
+const base::FilePath::CharType* AudioDebugFileWriter::GetFileNameExtension() { |
+ return FILE_PATH_LITERAL("wav"); |
+} |
+ |
} // namspace content |