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

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

Issue 1429943004: AcmReceiver::InsertPacket and NetEq::InsertPacket: Take ArrayView arguments (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Fix log message Created 5 years, 1 month 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) 2013 The WebRTC project authors. All Rights Reserved. 2 * Copyright (c) 2013 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
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after
98 next_arrival_time = GetArrivalTime(next_send_time); 98 next_arrival_time = GetArrivalTime(next_send_time);
99 } while (Lost()); // If lost, immediately read the next packet. 99 } while (Lost()); // If lost, immediately read the next packet.
100 100
101 EXPECT_CALL(*external_decoder_, 101 EXPECT_CALL(*external_decoder_,
102 Decode(_, payload_size_bytes_, 1000 * samples_per_ms_, _, _, _)) 102 Decode(_, payload_size_bytes_, 1000 * samples_per_ms_, _, _, _))
103 .Times(NumExpectedDecodeCalls(num_loops)); 103 .Times(NumExpectedDecodeCalls(num_loops));
104 104
105 uint32_t time_now = 0; 105 uint32_t time_now = 0;
106 for (int k = 0; k < num_loops; ++k) { 106 for (int k = 0; k < num_loops; ++k) {
107 while (time_now >= next_arrival_time) { 107 while (time_now >= next_arrival_time) {
108 InsertPacket(rtp_header_, encoded_, payload_size_bytes_, 108 InsertPacket(rtp_header_, rtc::ArrayView<const uint8_t>(
109 encoded_, payload_size_bytes_),
109 next_arrival_time); 110 next_arrival_time);
110 // Get next input packet. 111 // Get next input packet.
111 do { 112 do {
112 next_send_time = GetNewPacket(); 113 next_send_time = GetNewPacket();
113 next_arrival_time = GetArrivalTime(next_send_time); 114 next_arrival_time = GetArrivalTime(next_send_time);
114 } while (Lost()); // If lost, immediately read the next packet. 115 } while (Lost()); // If lost, immediately read the next packet.
115 } 116 }
116 117
117 std::ostringstream ss; 118 std::ostringstream ss;
118 ss << "Lap number " << k << "."; 119 ss << "Lap number " << k << ".";
119 SCOPED_TRACE(ss.str()); // Print out the parameter values on failure. 120 SCOPED_TRACE(ss.str()); // Print out the parameter values on failure.
120 // Compare mono and multi-channel. 121 // Compare mono and multi-channel.
121 ASSERT_NO_FATAL_FAILURE(GetAndVerifyOutput()); 122 ASSERT_NO_FATAL_FAILURE(GetAndVerifyOutput());
122 123
123 time_now += kOutputLengthMs; 124 time_now += kOutputLengthMs;
124 } 125 }
125 } 126 }
126 127
127 void InsertPacket(WebRtcRTPHeader rtp_header, const uint8_t* payload, 128 void InsertPacket(WebRtcRTPHeader rtp_header,
128 size_t payload_size_bytes, 129 rtc::ArrayView<const uint8_t> payload,
129 uint32_t receive_timestamp) override { 130 uint32_t receive_timestamp) override {
130 EXPECT_CALL(*external_decoder_, 131 EXPECT_CALL(
131 IncomingPacket(_, 132 *external_decoder_,
132 payload_size_bytes, 133 IncomingPacket(_, payload.size(), rtp_header.header.sequenceNumber,
133 rtp_header.header.sequenceNumber, 134 rtp_header.header.timestamp, receive_timestamp));
134 rtp_header.header.timestamp,
135 receive_timestamp));
136 NetEqExternalDecoderTest::InsertPacket(rtp_header, payload, 135 NetEqExternalDecoderTest::InsertPacket(rtp_header, payload,
137 payload_size_bytes,
138 receive_timestamp); 136 receive_timestamp);
139 } 137 }
140 138
141 MockExternalPcm16B* external_decoder() { return external_decoder_.get(); } 139 MockExternalPcm16B* external_decoder() { return external_decoder_.get(); }
142 140
143 void ResetRtpGenerator(test::RtpGenerator* rtp_generator) { 141 void ResetRtpGenerator(test::RtpGenerator* rtp_generator) {
144 rtp_generator_.reset(rtp_generator); 142 rtp_generator_.reset(rtp_generator);
145 } 143 }
146 144
147 int samples_per_ms() const { return samples_per_ms_; } 145 int samples_per_ms() const { return samples_per_ms_; }
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
203 201
204 // Get audio from external decoder instance. 202 // Get audio from external decoder instance.
205 samples_per_channel = GetOutputAudio(kMaxBlockSize, output_, &output_type); 203 samples_per_channel = GetOutputAudio(kMaxBlockSize, output_, &output_type);
206 204
207 for (size_t i = 0; i < samples_per_channel; ++i) { 205 for (size_t i = 0; i < samples_per_channel; ++i) {
208 ASSERT_EQ(output_[i], output_internal_[i]) << 206 ASSERT_EQ(output_[i], output_internal_[i]) <<
209 "Diff in sample " << i << "."; 207 "Diff in sample " << i << ".";
210 } 208 }
211 } 209 }
212 210
213 void InsertPacket(WebRtcRTPHeader rtp_header, const uint8_t* payload, 211 void InsertPacket(WebRtcRTPHeader rtp_header,
214 size_t payload_size_bytes, 212 rtc::ArrayView<const uint8_t> payload,
215 uint32_t receive_timestamp) override { 213 uint32_t receive_timestamp) override {
216 // Insert packet in internal decoder. 214 // Insert packet in internal decoder.
217 ASSERT_EQ( 215 ASSERT_EQ(NetEq::kOK, neteq_internal_->InsertPacket(rtp_header, payload,
218 NetEq::kOK, 216 receive_timestamp));
219 neteq_internal_->InsertPacket(
220 rtp_header, payload, payload_size_bytes, receive_timestamp));
221 217
222 // Insert packet in external decoder instance. 218 // Insert packet in external decoder instance.
223 NetEqExternalDecoderUnitTest::InsertPacket(rtp_header, payload, 219 NetEqExternalDecoderUnitTest::InsertPacket(rtp_header, payload,
224 payload_size_bytes,
225 receive_timestamp); 220 receive_timestamp);
226 } 221 }
227 222
228 int NumExpectedDecodeCalls(int num_loops) override { return num_loops; } 223 int NumExpectedDecodeCalls(int num_loops) override { return num_loops; }
229 224
230 private: 225 private:
231 int sample_rate_hz_; 226 int sample_rate_hz_;
232 rtc::scoped_ptr<NetEq> neteq_internal_; 227 rtc::scoped_ptr<NetEq> neteq_internal_;
233 int16_t output_internal_[kMaxBlockSize]; 228 int16_t output_internal_[kMaxBlockSize];
234 int16_t output_[kMaxBlockSize]; 229 int16_t output_[kMaxBlockSize];
(...skipping 219 matching lines...) Expand 10 before | Expand all | Expand 10 after
454 kStartSeqeunceNumber, 449 kStartSeqeunceNumber,
455 kStartTimestamp, 450 kStartTimestamp,
456 kJumpFromTimestamp, 451 kJumpFromTimestamp,
457 kJumpToTimestamp)); 452 kJumpToTimestamp));
458 453
459 RunTest(130); // Run 130 laps @ 10 ms each in the test loop. 454 RunTest(130); // Run 130 laps @ 10 ms each in the test loop.
460 EXPECT_EQ(kRecovered, test_state_); 455 EXPECT_EQ(kRecovered, test_state_);
461 } 456 }
462 457
463 } // namespace webrtc 458 } // namespace webrtc
OLDNEW
« no previous file with comments | « webrtc/modules/audio_coding/neteq/include/neteq.h ('k') | webrtc/modules/audio_coding/neteq/neteq_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698