| 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
|
|
|