| OLD | NEW |
| 1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/bind_helpers.h" | 6 #include "base/bind_helpers.h" |
| 7 #include "base/synchronization/condition_variable.h" | 7 #include "base/synchronization/condition_variable.h" |
| 8 #include "base/synchronization/lock.h" | 8 #include "base/synchronization/lock.h" |
| 9 #include "base/sys_byteorder.h" | 9 #include "base/sys_byteorder.h" |
| 10 #include "base/time/time.h" | 10 #include "base/time/time.h" |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 51 audio_bus_factory_.reset( | 51 audio_bus_factory_.reset( |
| 52 new TestAudioBusFactory(GetParam().num_channels, | 52 new TestAudioBusFactory(GetParam().num_channels, |
| 53 GetParam().sampling_rate, | 53 GetParam().sampling_rate, |
| 54 TestAudioBusFactory::kMiddleANoteFreq, | 54 TestAudioBusFactory::kMiddleANoteFreq, |
| 55 0.5f)); | 55 0.5f)); |
| 56 last_frame_id_ = 0; | 56 last_frame_id_ = 0; |
| 57 seen_a_decoded_frame_ = false; | 57 seen_a_decoded_frame_ = false; |
| 58 | 58 |
| 59 if (GetParam().codec == CODEC_AUDIO_OPUS) { | 59 if (GetParam().codec == CODEC_AUDIO_OPUS) { |
| 60 opus_encoder_memory_.reset( | 60 opus_encoder_memory_.reset( |
| 61 new uint8[opus_encoder_get_size(GetParam().num_channels)]); | 61 new uint8_t[opus_encoder_get_size(GetParam().num_channels)]); |
| 62 OpusEncoder* const opus_encoder = | 62 OpusEncoder* const opus_encoder = |
| 63 reinterpret_cast<OpusEncoder*>(opus_encoder_memory_.get()); | 63 reinterpret_cast<OpusEncoder*>(opus_encoder_memory_.get()); |
| 64 CHECK_EQ(OPUS_OK, opus_encoder_init(opus_encoder, | 64 CHECK_EQ(OPUS_OK, opus_encoder_init(opus_encoder, |
| 65 GetParam().sampling_rate, | 65 GetParam().sampling_rate, |
| 66 GetParam().num_channels, | 66 GetParam().num_channels, |
| 67 OPUS_APPLICATION_AUDIO)); | 67 OPUS_APPLICATION_AUDIO)); |
| 68 CHECK_EQ(OPUS_OK, | 68 CHECK_EQ(OPUS_OK, |
| 69 opus_encoder_ctl(opus_encoder, OPUS_SET_BITRATE(OPUS_AUTO))); | 69 opus_encoder_ctl(opus_encoder, OPUS_SET_BITRATE(OPUS_AUTO))); |
| 70 } | 70 } |
| 71 | 71 |
| (...skipping 11 matching lines...) Expand all Loading... |
| 83 encoded_frame->dependency = EncodedFrame::KEY; | 83 encoded_frame->dependency = EncodedFrame::KEY; |
| 84 encoded_frame->frame_id = last_frame_id_ + 1 + num_dropped_frames; | 84 encoded_frame->frame_id = last_frame_id_ + 1 + num_dropped_frames; |
| 85 encoded_frame->referenced_frame_id = encoded_frame->frame_id; | 85 encoded_frame->referenced_frame_id = encoded_frame->frame_id; |
| 86 last_frame_id_ = encoded_frame->frame_id; | 86 last_frame_id_ = encoded_frame->frame_id; |
| 87 | 87 |
| 88 const scoped_ptr<AudioBus> audio_bus( | 88 const scoped_ptr<AudioBus> audio_bus( |
| 89 audio_bus_factory_->NextAudioBus(duration).Pass()); | 89 audio_bus_factory_->NextAudioBus(duration).Pass()); |
| 90 | 90 |
| 91 // Encode |audio_bus| into |encoded_frame->data|. | 91 // Encode |audio_bus| into |encoded_frame->data|. |
| 92 const int num_elements = audio_bus->channels() * audio_bus->frames(); | 92 const int num_elements = audio_bus->channels() * audio_bus->frames(); |
| 93 std::vector<int16> interleaved(num_elements); | 93 std::vector<int16_t> interleaved(num_elements); |
| 94 audio_bus->ToInterleaved( | 94 audio_bus->ToInterleaved(audio_bus->frames(), sizeof(int16_t), |
| 95 audio_bus->frames(), sizeof(int16), &interleaved.front()); | 95 &interleaved.front()); |
| 96 if (GetParam().codec == CODEC_AUDIO_PCM16) { | 96 if (GetParam().codec == CODEC_AUDIO_PCM16) { |
| 97 encoded_frame->data.resize(num_elements * sizeof(int16)); | 97 encoded_frame->data.resize(num_elements * sizeof(int16_t)); |
| 98 int16* const pcm_data = | 98 int16_t* const pcm_data = |
| 99 reinterpret_cast<int16*>(encoded_frame->mutable_bytes()); | 99 reinterpret_cast<int16_t*>(encoded_frame->mutable_bytes()); |
| 100 for (size_t i = 0; i < interleaved.size(); ++i) | 100 for (size_t i = 0; i < interleaved.size(); ++i) |
| 101 pcm_data[i] = static_cast<int16>(base::HostToNet16(interleaved[i])); | 101 pcm_data[i] = static_cast<int16_t>(base::HostToNet16(interleaved[i])); |
| 102 } else if (GetParam().codec == CODEC_AUDIO_OPUS) { | 102 } else if (GetParam().codec == CODEC_AUDIO_OPUS) { |
| 103 OpusEncoder* const opus_encoder = | 103 OpusEncoder* const opus_encoder = |
| 104 reinterpret_cast<OpusEncoder*>(opus_encoder_memory_.get()); | 104 reinterpret_cast<OpusEncoder*>(opus_encoder_memory_.get()); |
| 105 const int kOpusEncodeBufferSize = 4000; | 105 const int kOpusEncodeBufferSize = 4000; |
| 106 encoded_frame->data.resize(kOpusEncodeBufferSize); | 106 encoded_frame->data.resize(kOpusEncodeBufferSize); |
| 107 const int payload_size = | 107 const int payload_size = |
| 108 opus_encode(opus_encoder, | 108 opus_encode(opus_encoder, |
| 109 &interleaved.front(), | 109 &interleaved.front(), |
| 110 audio_bus->frames(), | 110 audio_bus->frames(), |
| 111 encoded_frame->mutable_bytes(), | 111 encoded_frame->mutable_bytes(), |
| (...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 176 // Signal the main test thread that more audio was decoded. | 176 // Signal the main test thread that more audio was decoded. |
| 177 base::AutoLock auto_lock(lock_); | 177 base::AutoLock auto_lock(lock_); |
| 178 total_audio_decoded_ += base::TimeDelta::FromSeconds(1) * | 178 total_audio_decoded_ += base::TimeDelta::FromSeconds(1) * |
| 179 audio_bus->frames() / GetParam().sampling_rate; | 179 audio_bus->frames() / GetParam().sampling_rate; |
| 180 cond_.Signal(); | 180 cond_.Signal(); |
| 181 } | 181 } |
| 182 | 182 |
| 183 const scoped_refptr<StandaloneCastEnvironment> cast_environment_; | 183 const scoped_refptr<StandaloneCastEnvironment> cast_environment_; |
| 184 scoped_ptr<AudioDecoder> audio_decoder_; | 184 scoped_ptr<AudioDecoder> audio_decoder_; |
| 185 scoped_ptr<TestAudioBusFactory> audio_bus_factory_; | 185 scoped_ptr<TestAudioBusFactory> audio_bus_factory_; |
| 186 uint32 last_frame_id_; | 186 uint32_t last_frame_id_; |
| 187 bool seen_a_decoded_frame_; | 187 bool seen_a_decoded_frame_; |
| 188 scoped_ptr<uint8[]> opus_encoder_memory_; | 188 scoped_ptr<uint8_t[]> opus_encoder_memory_; |
| 189 | 189 |
| 190 base::Lock lock_; | 190 base::Lock lock_; |
| 191 base::ConditionVariable cond_; | 191 base::ConditionVariable cond_; |
| 192 base::TimeDelta total_audio_feed_in_; | 192 base::TimeDelta total_audio_feed_in_; |
| 193 base::TimeDelta total_audio_decoded_; | 193 base::TimeDelta total_audio_decoded_; |
| 194 | 194 |
| 195 DISALLOW_COPY_AND_ASSIGN(AudioDecoderTest); | 195 DISALLOW_COPY_AND_ASSIGN(AudioDecoderTest); |
| 196 }; | 196 }; |
| 197 | 197 |
| 198 TEST_P(AudioDecoderTest, DecodesFramesWithSameDuration) { | 198 TEST_P(AudioDecoderTest, DecodesFramesWithSameDuration) { |
| (...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 238 AudioDecoderTestScenarios, | 238 AudioDecoderTestScenarios, |
| 239 AudioDecoderTest, | 239 AudioDecoderTest, |
| 240 ::testing::Values( | 240 ::testing::Values( |
| 241 TestScenario(CODEC_AUDIO_PCM16, 1, 8000), | 241 TestScenario(CODEC_AUDIO_PCM16, 1, 8000), |
| 242 TestScenario(CODEC_AUDIO_PCM16, 2, 48000), | 242 TestScenario(CODEC_AUDIO_PCM16, 2, 48000), |
| 243 TestScenario(CODEC_AUDIO_OPUS, 1, 8000), | 243 TestScenario(CODEC_AUDIO_OPUS, 1, 8000), |
| 244 TestScenario(CODEC_AUDIO_OPUS, 2, 48000))); | 244 TestScenario(CODEC_AUDIO_OPUS, 2, 48000))); |
| 245 | 245 |
| 246 } // namespace cast | 246 } // namespace cast |
| 247 } // namespace media | 247 } // namespace media |
| OLD | NEW |