Index: content/renderer/media/audio_track_recorder_unittest.cc |
diff --git a/content/renderer/media/audio_track_recorder_unittest.cc b/content/renderer/media/audio_track_recorder_unittest.cc |
index eac49563fc41629c9ff2d8e268bf2a11203a7276..9de578908a813b584d4bed3c12c95975687df9e0 100644 |
--- a/content/renderer/media/audio_track_recorder_unittest.cc |
+++ b/content/renderer/media/audio_track_recorder_unittest.cc |
@@ -38,8 +38,10 @@ const int kDefaultBitsPerSample = 16; |
const int kDefaultSampleRate = 48000; |
// The |frames_per_buffer| field of AudioParameters is not used by ATR. |
const int kIgnoreFramesPerBuffer = 1; |
-const int kOpusMaxBufferDurationMS = 120; |
+const int kMediaStreamAudioTrackBufferDurationMs = 10; |
+const int kFramesPerBuffer = |
+ kMediaStreamAudioTrackBufferDurationMs * kDefaultSampleRate / 1000; |
} // namespace |
namespace content { |
@@ -62,13 +64,32 @@ const ATRTestParams kATRTestParams[] = { |
kDefaultSampleRate, /* sample rate */ |
kDefaultBitsPerSample}, /* bits per sample */ |
// Change to mono: |
- {media::AudioParameters::AUDIO_PCM_LOW_LATENCY, media::CHANNEL_LAYOUT_MONO, |
- kDefaultSampleRate, kDefaultBitsPerSample}, |
+ {media::AudioParameters::AUDIO_PCM_LOW_LATENCY, |
+ media::CHANNEL_LAYOUT_MONO, |
+ kDefaultSampleRate, |
+ kDefaultBitsPerSample}, |
// Different sampling rate as well: |
- {media::AudioParameters::AUDIO_PCM_LOW_LATENCY, media::CHANNEL_LAYOUT_MONO, |
- 24000, kDefaultBitsPerSample}, |
{media::AudioParameters::AUDIO_PCM_LOW_LATENCY, |
- media::CHANNEL_LAYOUT_STEREO, 8000, kDefaultBitsPerSample}, |
+ media::CHANNEL_LAYOUT_MONO, |
+ 24000, |
+ kDefaultBitsPerSample}, |
+ {media::AudioParameters::AUDIO_PCM_LOW_LATENCY, |
+ media::CHANNEL_LAYOUT_STEREO, |
+ 8000, |
+ kDefaultBitsPerSample}, |
+ // Using a non-default Opus sampling rate (48, 24, 16, 12, or 8 kHz). |
+ {media::AudioParameters::AUDIO_PCM_LOW_LATENCY, |
+ media::CHANNEL_LAYOUT_MONO, |
+ 22050, |
miu
2016/01/22 00:14:53
Note: Increasing the Opus frame duration (as I men
mcasas
2016/01/22 22:03:53
Acknowledged.
|
+ kDefaultBitsPerSample}, |
+ {media::AudioParameters::AUDIO_PCM_LOW_LATENCY, |
+ media::CHANNEL_LAYOUT_STEREO, |
+ 44100, |
+ kDefaultBitsPerSample}, |
+ {media::AudioParameters::AUDIO_PCM_LOW_LATENCY, |
+ media::CHANNEL_LAYOUT_STEREO, |
+ 96000, |
+ kDefaultBitsPerSample}, |
}; |
class AudioTrackRecorderTest : public TestWithParam<ATRTestParams> { |
@@ -103,9 +124,11 @@ class AudioTrackRecorderTest : public TestWithParam<ATRTestParams> { |
~AudioTrackRecorderTest() { |
opus_decoder_destroy(opus_decoder_); |
opus_decoder_ = nullptr; |
- audio_track_recorder_.reset(); |
blink_track_.reset(); |
blink::WebHeap::collectAllGarbageForTesting(); |
+ audio_track_recorder_.reset(); |
+ // Let the message loop run to finish destroying the recorder properly. |
+ base::RunLoop().RunUntilIdle(); |
} |
void ResetDecoder(const media::AudioParameters& params) { |
@@ -116,31 +139,25 @@ class AudioTrackRecorderTest : public TestWithParam<ATRTestParams> { |
int error; |
opus_decoder_ = |
- opus_decoder_create(params.sample_rate(), params.channels(), &error); |
+ opus_decoder_create(kDefaultSampleRate, params.channels(), &error); |
EXPECT_TRUE(error == OPUS_OK && opus_decoder_); |
- max_frames_per_buffer_ = |
- kOpusMaxBufferDurationMS * params.sample_rate() / 1000; |
- buffer_.reset(new float[max_frames_per_buffer_ * params.channels()]); |
+ buffer_.reset(new float[kFramesPerBuffer * params.channels()]); |
} |
scoped_ptr<media::AudioBus> GetFirstSourceAudioBus() { |
scoped_ptr<media::AudioBus> bus(media::AudioBus::Create( |
- first_params_.channels(), |
- first_params_.sample_rate() * |
- audio_track_recorder_->GetOpusBufferDuration( |
- first_params_.sample_rate()) / |
- 1000)); |
+ first_params_.channels(), first_params_.sample_rate() * |
+ kMediaStreamAudioTrackBufferDurationMs / |
+ 1000)); |
first_source_.OnMoreData(bus.get(), 0, 0); |
return bus; |
} |
scoped_ptr<media::AudioBus> GetSecondSourceAudioBus() { |
scoped_ptr<media::AudioBus> bus(media::AudioBus::Create( |
- second_params_.channels(), |
- second_params_.sample_rate() * |
- audio_track_recorder_->GetOpusBufferDuration( |
- second_params_.sample_rate()) / |
- 1000)); |
+ second_params_.channels(), second_params_.sample_rate() * |
+ kMediaStreamAudioTrackBufferDurationMs / |
+ 1000)); |
second_source_.OnMoreData(bus.get(), 0, 0); |
return bus; |
} |
@@ -154,17 +171,14 @@ class AudioTrackRecorderTest : public TestWithParam<ATRTestParams> { |
scoped_ptr<std::string> encoded_data, |
base::TimeTicks timestamp) { |
EXPECT_TRUE(!encoded_data->empty()); |
- |
// Decode |encoded_data| and check we get the expected number of frames |
// per buffer. |
EXPECT_EQ( |
- params.sample_rate() * |
- audio_track_recorder_->GetOpusBufferDuration(params.sample_rate()) / |
- 1000, |
+ kDefaultSampleRate * kMediaStreamAudioTrackBufferDurationMs / 1000, |
opus_decode_float( |
opus_decoder_, |
reinterpret_cast<uint8_t*>(string_as_array(encoded_data.get())), |
- encoded_data->size(), buffer_.get(), max_frames_per_buffer_, 0)); |
+ encoded_data->size(), buffer_.get(), kFramesPerBuffer, 0)); |
DoOnEncodedAudio(params, *encoded_data, timestamp); |
} |
@@ -185,7 +199,6 @@ class AudioTrackRecorderTest : public TestWithParam<ATRTestParams> { |
// Decoder for verifying data was properly encoded. |
OpusDecoder* opus_decoder_; |
- int max_frames_per_buffer_; |
scoped_ptr<float[]> buffer_; |
private: |