Index: media/base/audio_buffer.cc |
diff --git a/media/base/audio_buffer.cc b/media/base/audio_buffer.cc |
index eba658bf02691b1e4377903a769454cf93af24e7..4b972b90a1abda47c363b0cd46c7c8362ca60ee2 100644 |
--- a/media/base/audio_buffer.cc |
+++ b/media/base/audio_buffer.cc |
@@ -13,6 +13,7 @@ namespace media { |
AudioBuffer::AudioBuffer(SampleFormat sample_format, |
ChannelLayout channel_layout, |
+ int channel_count, |
int sample_rate, |
int frame_count, |
bool create_buffer, |
@@ -21,7 +22,7 @@ AudioBuffer::AudioBuffer(SampleFormat sample_format, |
const base::TimeDelta duration) |
: sample_format_(sample_format), |
channel_layout_(channel_layout), |
- channel_count_(ChannelLayoutToChannelCount(channel_layout)), |
+ channel_count_(channel_count), |
sample_rate_(sample_rate), |
adjusted_frame_count_(frame_count), |
trim_start_(0), |
@@ -31,6 +32,9 @@ AudioBuffer::AudioBuffer(SampleFormat sample_format, |
CHECK_GE(channel_count_, 0); |
CHECK_LE(channel_count_, limits::kMaxChannels); |
CHECK_GE(frame_count, 0); |
+ DCHECK(channel_layout == CHANNEL_LAYOUT_DISCRETE || |
+ ChannelLayoutToChannelCount(channel_layout) == channel_count); |
+ |
int bytes_per_channel = SampleFormatToBytesPerChannel(sample_format); |
DCHECK_LE(bytes_per_channel, kChannelAlignment); |
int data_size = frame_count * bytes_per_channel; |
@@ -83,6 +87,7 @@ AudioBuffer::~AudioBuffer() {} |
scoped_refptr<AudioBuffer> AudioBuffer::CopyFrom( |
SampleFormat sample_format, |
ChannelLayout channel_layout, |
+ int channel_count, |
int sample_rate, |
int frame_count, |
const uint8* const* data, |
@@ -93,6 +98,7 @@ scoped_refptr<AudioBuffer> AudioBuffer::CopyFrom( |
CHECK(data[0]); |
return make_scoped_refptr(new AudioBuffer(sample_format, |
channel_layout, |
+ channel_count, |
sample_rate, |
frame_count, |
true, |
@@ -105,11 +111,13 @@ scoped_refptr<AudioBuffer> AudioBuffer::CopyFrom( |
scoped_refptr<AudioBuffer> AudioBuffer::CreateBuffer( |
SampleFormat sample_format, |
ChannelLayout channel_layout, |
+ int channel_count, |
int sample_rate, |
int frame_count) { |
CHECK_GT(frame_count, 0); // Otherwise looks like an EOF buffer. |
return make_scoped_refptr(new AudioBuffer(sample_format, |
channel_layout, |
+ channel_count, |
sample_rate, |
frame_count, |
true, |
@@ -121,6 +129,7 @@ scoped_refptr<AudioBuffer> AudioBuffer::CreateBuffer( |
// static |
scoped_refptr<AudioBuffer> AudioBuffer::CreateEmptyBuffer( |
ChannelLayout channel_layout, |
+ int channel_count, |
int sample_rate, |
int frame_count, |
const base::TimeDelta timestamp, |
@@ -129,6 +138,7 @@ scoped_refptr<AudioBuffer> AudioBuffer::CreateEmptyBuffer( |
// Since data == NULL, format doesn't matter. |
return make_scoped_refptr(new AudioBuffer(kSampleFormatF32, |
channel_layout, |
+ channel_count, |
sample_rate, |
frame_count, |
false, |
@@ -143,6 +153,7 @@ scoped_refptr<AudioBuffer> AudioBuffer::CreateEOSBuffer() { |
CHANNEL_LAYOUT_NONE, |
0, |
0, |
+ 0, |
false, |
NULL, |
kNoTimestamp(), |