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

Side by Side Diff: webrtc/modules/audio_coding/acm2/rent_a_codec_unittest.cc

Issue 1725143003: Changed AudioEncoder::Encode to take an rtc::Buffer* instead of uint8_t* and a maximum size. (Closed) Base URL: https://chromium.googlesource.com/external/webrtc.git@master
Patch Set: Added more fixes for override hiding in AudioEncoder implementations. 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
(...skipping 24 matching lines...) Expand all
35 RentACodec::StackParameters param; 35 RentACodec::StackParameters param;
36 param.use_cng = true; 36 param.use_cng = true;
37 param.speech_encoder = speech_encoder_; 37 param.speech_encoder = speech_encoder_;
38 encoder_ = rent_a_codec_.RentEncoderStack(&param); 38 encoder_ = rent_a_codec_.RentEncoderStack(&param);
39 } 39 }
40 40
41 void EncodeAndVerify(size_t expected_out_length, 41 void EncodeAndVerify(size_t expected_out_length,
42 uint32_t expected_timestamp, 42 uint32_t expected_timestamp,
43 int expected_payload_type, 43 int expected_payload_type,
44 int expected_send_even_if_empty) { 44 int expected_send_even_if_empty) {
45 uint8_t out[kPacketSizeSamples]; 45 rtc::Buffer out;
46 AudioEncoder::EncodedInfo encoded_info; 46 AudioEncoder::EncodedInfo encoded_info;
47 encoded_info = 47 encoded_info =
48 encoder_->Encode(timestamp_, kZeroData, kPacketSizeSamples, out); 48 encoder_->Encode(timestamp_, kZeroData, &out);
49 timestamp_ += kDataLengthSamples; 49 timestamp_ += kDataLengthSamples;
50 EXPECT_TRUE(encoded_info.redundant.empty()); 50 EXPECT_TRUE(encoded_info.redundant.empty());
51 EXPECT_EQ(expected_out_length, encoded_info.encoded_bytes); 51 EXPECT_EQ(expected_out_length, encoded_info.encoded_bytes);
52 EXPECT_EQ(expected_timestamp, encoded_info.encoded_timestamp); 52 EXPECT_EQ(expected_timestamp, encoded_info.encoded_timestamp);
53 if (expected_payload_type >= 0) 53 if (expected_payload_type >= 0)
54 EXPECT_EQ(expected_payload_type, encoded_info.payload_type); 54 EXPECT_EQ(expected_payload_type, encoded_info.payload_type);
55 if (expected_send_even_if_empty >= 0) 55 if (expected_send_even_if_empty >= 0)
56 EXPECT_EQ(static_cast<bool>(expected_send_even_if_empty), 56 EXPECT_EQ(static_cast<bool>(expected_send_even_if_empty),
57 encoded_info.send_even_if_empty); 57 encoded_info.send_even_if_empty);
58 } 58 }
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
108 .WillRepeatedly(Return(kSampleRateHz)); 108 .WillRepeatedly(Return(kSampleRateHz));
109 EXPECT_CALL(external_encoder, NumChannels()).WillRepeatedly(Return(1)); 109 EXPECT_CALL(external_encoder, NumChannels()).WillRepeatedly(Return(1));
110 EXPECT_CALL(external_encoder, SetFec(false)).WillRepeatedly(Return(true)); 110 EXPECT_CALL(external_encoder, SetFec(false)).WillRepeatedly(Return(true));
111 111
112 RentACodec rac; 112 RentACodec rac;
113 RentACodec::StackParameters param; 113 RentACodec::StackParameters param;
114 param.speech_encoder = &external_encoder; 114 param.speech_encoder = &external_encoder;
115 EXPECT_EQ(&external_encoder, rac.RentEncoderStack(&param)); 115 EXPECT_EQ(&external_encoder, rac.RentEncoderStack(&param));
116 const int kPacketSizeSamples = kSampleRateHz / 100; 116 const int kPacketSizeSamples = kSampleRateHz / 100;
117 int16_t audio[kPacketSizeSamples] = {0}; 117 int16_t audio[kPacketSizeSamples] = {0};
118 uint8_t encoded[kPacketSizeSamples]; 118 rtc::Buffer encoded;
119 AudioEncoder::EncodedInfo info; 119 AudioEncoder::EncodedInfo info;
120 120
121 { 121 {
122 ::testing::InSequence s; 122 ::testing::InSequence s;
123 info.encoded_timestamp = 0; 123 info.encoded_timestamp = 0;
124 EXPECT_CALL(external_encoder, 124 EXPECT_CALL(external_encoder,
125 EncodeInternal(0, rtc::ArrayView<const int16_t>(audio), 125 EncodeInternal(0, rtc::ArrayView<const int16_t>(audio),
126 arraysize(encoded), encoded)) 126 &encoded))
127 .WillOnce(Return(info)); 127 .WillOnce(Return(info));
128 EXPECT_CALL(external_encoder, Mark("A")); 128 EXPECT_CALL(external_encoder, Mark("A"));
129 EXPECT_CALL(external_encoder, Mark("B")); 129 EXPECT_CALL(external_encoder, Mark("B"));
130 info.encoded_timestamp = 2; 130 info.encoded_timestamp = 2;
131 EXPECT_CALL(external_encoder, 131 EXPECT_CALL(external_encoder,
132 EncodeInternal(2, rtc::ArrayView<const int16_t>(audio), 132 EncodeInternal(2, rtc::ArrayView<const int16_t>(audio),
133 arraysize(encoded), encoded)) 133 &encoded))
134 .WillOnce(Return(info)); 134 .WillOnce(Return(info));
135 EXPECT_CALL(external_encoder, Die()); 135 EXPECT_CALL(external_encoder, Die());
136 } 136 }
137 137
138 info = external_encoder.Encode(0, audio, arraysize(encoded), encoded); 138 info = external_encoder.Encode(0, audio, &encoded);
139 EXPECT_EQ(0u, info.encoded_timestamp); 139 EXPECT_EQ(0u, info.encoded_timestamp);
140 external_encoder.Mark("A"); 140 external_encoder.Mark("A");
141 141
142 // Change to internal encoder. 142 // Change to internal encoder.
143 CodecInst codec_inst = kDefaultCodecInst; 143 CodecInst codec_inst = kDefaultCodecInst;
144 codec_inst.pacsize = kPacketSizeSamples; 144 codec_inst.pacsize = kPacketSizeSamples;
145 param.speech_encoder = rac.RentEncoder(codec_inst); 145 param.speech_encoder = rac.RentEncoder(codec_inst);
146 ASSERT_TRUE(param.speech_encoder); 146 ASSERT_TRUE(param.speech_encoder);
147 EXPECT_EQ(param.speech_encoder, rac.RentEncoderStack(&param)); 147 EXPECT_EQ(param.speech_encoder, rac.RentEncoderStack(&param));
148 148
149 // Don't expect any more calls to the external encoder. 149 // Don't expect any more calls to the external encoder.
150 info = param.speech_encoder->Encode(1, audio, arraysize(encoded), encoded); 150 info = param.speech_encoder->Encode(1, audio, &encoded);
151 external_encoder.Mark("B"); 151 external_encoder.Mark("B");
152 152
153 // Change back to external encoder again. 153 // Change back to external encoder again.
154 param.speech_encoder = &external_encoder; 154 param.speech_encoder = &external_encoder;
155 EXPECT_EQ(&external_encoder, rac.RentEncoderStack(&param)); 155 EXPECT_EQ(&external_encoder, rac.RentEncoderStack(&param));
156 info = external_encoder.Encode(2, audio, arraysize(encoded), encoded); 156 info = external_encoder.Encode(2, audio, &encoded);
157 EXPECT_EQ(2u, info.encoded_timestamp); 157 EXPECT_EQ(2u, info.encoded_timestamp);
158 } 158 }
159 159
160 // Verify that the speech encoder's Reset method is called when CNG or RED 160 // Verify that the speech encoder's Reset method is called when CNG or RED
161 // (or both) are switched on, but not when they're switched off. 161 // (or both) are switched on, but not when they're switched off.
162 void TestCngAndRedResetSpeechEncoder(bool use_cng, bool use_red) { 162 void TestCngAndRedResetSpeechEncoder(bool use_cng, bool use_red) {
163 MockAudioEncoder speech_encoder; 163 MockAudioEncoder speech_encoder;
164 EXPECT_CALL(speech_encoder, NumChannels()).WillRepeatedly(Return(1)); 164 EXPECT_CALL(speech_encoder, NumChannels()).WillRepeatedly(Return(1));
165 EXPECT_CALL(speech_encoder, Max10MsFramesInAPacket()) 165 EXPECT_CALL(speech_encoder, Max10MsFramesInAPacket())
166 .WillRepeatedly(Return(2)); 166 .WillRepeatedly(Return(2));
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
213 #if GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID) 213 #if GTEST_HAS_DEATH_TEST && !defined(WEBRTC_ANDROID)
214 TEST(RentACodecTest, RentEncoderStackWithoutSpeechEncoder) { 214 TEST(RentACodecTest, RentEncoderStackWithoutSpeechEncoder) {
215 RentACodec::StackParameters sp; 215 RentACodec::StackParameters sp;
216 EXPECT_EQ(nullptr, sp.speech_encoder); 216 EXPECT_EQ(nullptr, sp.speech_encoder);
217 EXPECT_DEATH(RentACodec().RentEncoderStack(&sp), ""); 217 EXPECT_DEATH(RentACodec().RentEncoderStack(&sp), "");
218 } 218 }
219 #endif 219 #endif
220 220
221 } // namespace acm2 221 } // namespace acm2
222 } // namespace webrtc 222 } // namespace webrtc
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698