Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1)

Side by Side Diff: webrtc/modules/audio_coding/neteq/neteq_network_stats_unittest.cc

Issue 1750353002: Change NetEq::GetAudio to use AudioFrame (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Rebase Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 /* 1 /*
2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2015 The WebRTC project authors. All Rights Reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #include <memory> 11 #include <memory>
12 12
13 #include "testing/gmock/include/gmock/gmock.h" 13 #include "testing/gmock/include/gmock/gmock.h"
14 #include "webrtc/modules/audio_coding/neteq/tools/neteq_external_decoder_test.h" 14 #include "webrtc/modules/audio_coding/neteq/tools/neteq_external_decoder_test.h"
15 #include "webrtc/modules/audio_coding/neteq/tools/rtp_generator.h" 15 #include "webrtc/modules/audio_coding/neteq/tools/rtp_generator.h"
16 #include "webrtc/modules/include/module_common_types.h"
16 17
17 namespace webrtc { 18 namespace webrtc {
18 namespace test { 19 namespace test {
19 20
20 using ::testing::_; 21 using ::testing::_;
21 using ::testing::SetArgPointee; 22 using ::testing::SetArgPointee;
22 using ::testing::Return; 23 using ::testing::Return;
23 24
24 class MockAudioDecoder final : public AudioDecoder { 25 class MockAudioDecoder final : public AudioDecoder {
25 public: 26 public:
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 77
77 private: 78 private:
78 const size_t num_channels_; 79 const size_t num_channels_;
79 bool fec_enabled_; 80 bool fec_enabled_;
80 }; 81 };
81 82
82 class NetEqNetworkStatsTest : public NetEqExternalDecoderTest { 83 class NetEqNetworkStatsTest : public NetEqExternalDecoderTest {
83 public: 84 public:
84 static const int kPayloadSizeByte = 30; 85 static const int kPayloadSizeByte = 30;
85 static const int kFrameSizeMs = 20; 86 static const int kFrameSizeMs = 20;
86 static const int kMaxOutputSize = 960; // 10 ms * 48 kHz * 2 channels.
87 87
88 enum logic { 88 enum logic {
89 kIgnore, 89 kIgnore,
90 kEqual, 90 kEqual,
91 kSmallerThan, 91 kSmallerThan,
92 kLargerThan, 92 kLargerThan,
93 }; 93 };
94 94
95 struct NetEqNetworkStatsCheck { 95 struct NetEqNetworkStatsCheck {
96 logic current_buffer_size_ms; 96 logic current_buffer_size_ms;
(...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after
188 for (int k = 0; k < num_loops; ++k) { 188 for (int k = 0; k < num_loops; ++k) {
189 // Delay by one frame such that the FEC can come in. 189 // Delay by one frame such that the FEC can come in.
190 while (time_now + kFrameSizeMs >= next_send_time) { 190 while (time_now + kFrameSizeMs >= next_send_time) {
191 next_send_time = rtp_generator_->GetRtpHeader(kPayloadType, 191 next_send_time = rtp_generator_->GetRtpHeader(kPayloadType,
192 frame_size_samples_, 192 frame_size_samples_,
193 &rtp_header_); 193 &rtp_header_);
194 if (!Lost(next_send_time)) { 194 if (!Lost(next_send_time)) {
195 InsertPacket(rtp_header_, payload_, next_send_time); 195 InsertPacket(rtp_header_, payload_, next_send_time);
196 } 196 }
197 } 197 }
198 GetOutputAudio(kMaxOutputSize, output_, &output_type); 198 GetOutputAudio(&output_frame_, &output_type);
199 time_now += kOutputLengthMs; 199 time_now += kOutputLengthMs;
200 } 200 }
201 CheckNetworkStatistics(expects); 201 CheckNetworkStatistics(expects);
202 neteq()->FlushBuffers(); 202 neteq()->FlushBuffers();
203 } 203 }
204 204
205 void DecodeFecTest() { 205 void DecodeFecTest() {
206 external_decoder_->set_fec_enabled(false); 206 external_decoder_->set_fec_enabled(false);
207 NetEqNetworkStatsCheck expects = { 207 NetEqNetworkStatsCheck expects = {
208 kIgnore, // current_buffer_size_ms 208 kIgnore, // current_buffer_size_ms
(...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after
262 262
263 private: 263 private:
264 MockAudioDecoder* external_decoder_; 264 MockAudioDecoder* external_decoder_;
265 const int samples_per_ms_; 265 const int samples_per_ms_;
266 const size_t frame_size_samples_; 266 const size_t frame_size_samples_;
267 std::unique_ptr<test::RtpGenerator> rtp_generator_; 267 std::unique_ptr<test::RtpGenerator> rtp_generator_;
268 WebRtcRTPHeader rtp_header_; 268 WebRtcRTPHeader rtp_header_;
269 uint32_t last_lost_time_; 269 uint32_t last_lost_time_;
270 uint32_t packet_loss_interval_; 270 uint32_t packet_loss_interval_;
271 uint8_t payload_[kPayloadSizeByte]; 271 uint8_t payload_[kPayloadSizeByte];
272 int16_t output_[kMaxOutputSize]; 272 AudioFrame output_frame_;
273 }; 273 };
274 274
275 TEST(NetEqNetworkStatsTest, DecodeFec) { 275 TEST(NetEqNetworkStatsTest, DecodeFec) {
276 MockAudioDecoder decoder(1); 276 MockAudioDecoder decoder(1);
277 NetEqNetworkStatsTest test(NetEqDecoder::kDecoderOpus, &decoder); 277 NetEqNetworkStatsTest test(NetEqDecoder::kDecoderOpus, &decoder);
278 test.DecodeFecTest(); 278 test.DecodeFecTest();
279 EXPECT_CALL(decoder, Die()).Times(1); 279 EXPECT_CALL(decoder, Die()).Times(1);
280 } 280 }
281 281
282 TEST(NetEqNetworkStatsTest, StereoDecodeFec) { 282 TEST(NetEqNetworkStatsTest, StereoDecodeFec) {
283 MockAudioDecoder decoder(2); 283 MockAudioDecoder decoder(2);
284 NetEqNetworkStatsTest test(NetEqDecoder::kDecoderOpus, &decoder); 284 NetEqNetworkStatsTest test(NetEqDecoder::kDecoderOpus, &decoder);
285 test.DecodeFecTest(); 285 test.DecodeFecTest();
286 EXPECT_CALL(decoder, Die()).Times(1); 286 EXPECT_CALL(decoder, Die()).Times(1);
287 } 287 }
288 288
289 TEST(NetEqNetworkStatsTest, NoiseExpansionTest) { 289 TEST(NetEqNetworkStatsTest, NoiseExpansionTest) {
290 MockAudioDecoder decoder(1); 290 MockAudioDecoder decoder(1);
291 NetEqNetworkStatsTest test(NetEqDecoder::kDecoderOpus, &decoder); 291 NetEqNetworkStatsTest test(NetEqDecoder::kDecoderOpus, &decoder);
292 test.NoiseExpansionTest(); 292 test.NoiseExpansionTest();
293 EXPECT_CALL(decoder, Die()).Times(1); 293 EXPECT_CALL(decoder, Die()).Times(1);
294 } 294 }
295 295
296 } // namespace test 296 } // namespace test
297 } // namespace webrtc 297 } // namespace webrtc
298 298
299 299
300 300
301 301
OLDNEW
« no previous file with comments | « webrtc/modules/audio_coding/neteq/neteq_impl_unittest.cc ('k') | webrtc/modules/audio_coding/neteq/neteq_stereo_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698