OLD | NEW |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2012 The WebRTC project authors. All Rights Reserved. | 2 * Copyright (c) 2012 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 89 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
100 test::RtpFormatVp8TestHelper* helper_; | 100 test::RtpFormatVp8TestHelper* helper_; |
101 }; | 101 }; |
102 | 102 |
103 TEST_F(RtpPacketizerVp8Test, TestStrictMode) { | 103 TEST_F(RtpPacketizerVp8Test, TestStrictMode) { |
104 const size_t kSizeVector[] = {10, 8, 27}; | 104 const size_t kSizeVector[] = {10, 8, 27}; |
105 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); | 105 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); |
106 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); | 106 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); |
107 | 107 |
108 hdr_info_.pictureId = 200; // > 0x7F should produce 2-byte PictureID. | 108 hdr_info_.pictureId = 200; // > 0x7F should produce 2-byte PictureID. |
109 const size_t kMaxPayloadSize = 13; | 109 const size_t kMaxPayloadSize = 13; |
110 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, kStrict); | 110 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, 0, kStrict); |
111 packetizer.SetPayloadData(helper_->payload_data(), | 111 size_t num_packets = packetizer.SetPayloadData(helper_->payload_data(), |
112 helper_->payload_size(), | 112 helper_->payload_size(), |
113 helper_->fragmentation()); | 113 helper_->fragmentation()); |
114 | 114 |
115 // The expected sizes are obtained by running a verified good implementation. | 115 // The expected sizes are obtained by hand. |
116 const size_t kExpectedSizes[] = {9, 9, 12, 11, 11, 11, 10}; | 116 const size_t kExpectedSizes[] = {9, 9, 12, 13, 13, 13}; |
danilchap
2017/05/22 12:32:00
the result of this test changed not because you ad
ilnik
2017/05/22 14:14:09
No, in that particular test, it is just a bug that
| |
117 const int kExpectedPart[] = {0, 0, 1, 2, 2, 2, 2}; | 117 const int kExpectedPart[] = {0, 0, 1, 2, 2, 2}; |
118 const bool kExpectedFragStart[] = {true, false, true, true, | 118 const bool kExpectedFragStart[] = {true, false, true, true, false, false}; |
119 false, false, false}; | |
120 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); | 119 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); |
121 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); | 120 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); |
122 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); | 121 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); |
122 ASSERT_EQ(num_packets, kExpectedNum); | |
123 | 123 |
124 helper_->GetAllPacketsAndCheck(&packetizer, | 124 helper_->GetAllPacketsAndCheck(&packetizer, |
125 kExpectedSizes, | 125 kExpectedSizes, |
126 kExpectedPart, | 126 kExpectedPart, |
127 kExpectedFragStart, | 127 kExpectedFragStart, |
128 kExpectedNum); | 128 kExpectedNum); |
129 } | 129 } |
130 | 130 |
131 // Verify that we get a minimal number of packets if the partition plus header | 131 // Verify that we get a minimal number of packets if the partition plus header |
132 // size fits exactly in the maximum packet size. | 132 // size fits exactly in the maximum packet size. |
133 // Test is disabled: https://code.google.com/p/webrtc/issues/detail?id=4019. | 133 TEST_F(RtpPacketizerVp8Test, TestStrictEqualTightPartitions) { |
134 TEST_F(RtpPacketizerVp8Test, DISABLED_TestStrictEqualTightPartitions) { | |
135 const size_t kSizeVector[] = {10, 10, 10}; | 134 const size_t kSizeVector[] = {10, 10, 10}; |
136 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); | 135 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); |
137 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); | 136 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); |
138 | 137 |
139 hdr_info_.pictureId = 200; // > 0x7F should produce 2-byte PictureID. | 138 hdr_info_.pictureId = 200; // > 0x7F should produce 2-byte PictureID. |
140 const int kMaxPayloadSize = 14; | 139 const int kMaxPayloadSize = 14; |
141 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, kStrict); | 140 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, 0, kStrict); |
142 packetizer.SetPayloadData(helper_->payload_data(), helper_->payload_size(), | 141 size_t num_packets = packetizer.SetPayloadData(helper_->payload_data(), |
143 helper_->fragmentation()); | 142 helper_->payload_size(), |
143 helper_->fragmentation()); | |
144 | 144 |
145 // The expected sizes are obtained by running a verified good implementation. | 145 // The expected sizes are obtained by hand. |
146 const size_t kExpectedSizes[] = {14, 14, 14}; | 146 const size_t kExpectedSizes[] = {14, 14, 14}; |
147 const int kExpectedPart[] = {0, 1, 2}; | 147 const int kExpectedPart[] = {0, 1, 2}; |
148 const bool kExpectedFragStart[] = {true, true, true}; | 148 const bool kExpectedFragStart[] = {true, true, true}; |
149 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); | 149 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); |
150 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); | 150 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); |
151 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); | 151 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); |
152 ASSERT_EQ(num_packets, kExpectedNum); | |
152 | 153 |
153 helper_->GetAllPacketsAndCheck(&packetizer, kExpectedSizes, kExpectedPart, | 154 helper_->GetAllPacketsAndCheck(&packetizer, kExpectedSizes, kExpectedPart, |
154 kExpectedFragStart, kExpectedNum); | 155 kExpectedFragStart, kExpectedNum); |
155 } | 156 } |
156 | 157 |
157 TEST_F(RtpPacketizerVp8Test, TestAggregateMode) { | 158 TEST_F(RtpPacketizerVp8Test, TestAggregateMode) { |
158 const size_t kSizeVector[] = {60, 10, 10}; | 159 const size_t kSizeVector[] = {60, 10, 10}; |
159 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); | 160 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); |
160 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); | 161 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); |
161 | 162 |
162 hdr_info_.pictureId = 20; // <= 0x7F should produce 1-byte PictureID. | 163 hdr_info_.pictureId = 20; // <= 0x7F should produce 1-byte PictureID. |
163 const size_t kMaxPayloadSize = 25; | 164 const size_t kMaxPayloadSize = 25; |
164 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, kAggregate); | 165 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, 0, kAggregate); |
165 packetizer.SetPayloadData(helper_->payload_data(), | 166 size_t num_packets = packetizer.SetPayloadData(helper_->payload_data(), |
166 helper_->payload_size(), | 167 helper_->payload_size(), |
167 helper_->fragmentation()); | 168 helper_->fragmentation()); |
168 | 169 |
169 // The expected sizes are obtained by running a verified good implementation. | 170 // The expected sizes are obtained by hand. |
170 const size_t kExpectedSizes[] = {23, 23, 23, 23}; | 171 const size_t kExpectedSizes[] = {23, 23, 23, 23}; |
171 const int kExpectedPart[] = {0, 0, 0, 1}; | 172 const int kExpectedPart[] = {0, 0, 0, 1}; |
172 const bool kExpectedFragStart[] = {true, false, false, true}; | 173 const bool kExpectedFragStart[] = {true, false, false, true}; |
173 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); | 174 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); |
174 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); | 175 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); |
175 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); | 176 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); |
177 ASSERT_EQ(num_packets, kExpectedNum); | |
176 | 178 |
177 helper_->GetAllPacketsAndCheck(&packetizer, | 179 helper_->GetAllPacketsAndCheck(&packetizer, |
178 kExpectedSizes, | 180 kExpectedSizes, |
179 kExpectedPart, | 181 kExpectedPart, |
180 kExpectedFragStart, | 182 kExpectedFragStart, |
181 kExpectedNum); | 183 kExpectedNum); |
182 } | 184 } |
183 | 185 |
186 TEST_F(RtpPacketizerVp8Test, TestAggregateModePacketReductionCauseExtraPacket) { | |
187 const size_t kSizeVector[] = {60, 10, 10}; | |
188 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); | |
189 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); | |
190 | |
191 hdr_info_.pictureId = 20; // <= 0x7F should produce 1-byte PictureID. | |
192 const size_t kMaxPayloadSize = 25; | |
193 const size_t kLastPacketReductionLen = 5; | |
194 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, | |
195 kLastPacketReductionLen, kAggregate); | |
196 size_t num_packets = packetizer.SetPayloadData(helper_->payload_data(), | |
197 helper_->payload_size(), | |
198 helper_->fragmentation()); | |
199 | |
200 // The expected sizes are obtained by hand. | |
201 const size_t kExpectedSizes[] = {23, 23, 23, 13, 13}; | |
202 const int kExpectedPart[] = {0, 0, 0, 1, 2}; | |
203 const bool kExpectedFragStart[] = {true, false, false, true, true}; | |
204 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); | |
205 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); | |
206 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); | |
207 ASSERT_EQ(num_packets, kExpectedNum); | |
208 | |
209 helper_->GetAllPacketsAndCheck(&packetizer, kExpectedSizes, kExpectedPart, | |
210 kExpectedFragStart, kExpectedNum); | |
211 } | |
212 | |
213 TEST_F(RtpPacketizerVp8Test, TestAggregateModePacketReduction) { | |
214 const size_t kSizeVector[] = {60, 10, 10}; | |
215 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); | |
216 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); | |
217 | |
218 hdr_info_.pictureId = 20; // <= 0x7F should produce 1-byte PictureID. | |
219 const size_t kMaxPayloadSize = 25; | |
220 const size_t kLastPacketReductionLen = 1; | |
221 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, | |
222 kLastPacketReductionLen, kAggregate); | |
223 size_t num_packets = packetizer.SetPayloadData(helper_->payload_data(), | |
224 helper_->payload_size(), | |
225 helper_->fragmentation()); | |
226 | |
227 // The expected sizes are obtained by hand. | |
228 const size_t kExpectedSizes[] = {23, 23, 23, 23}; | |
229 const int kExpectedPart[] = {0, 0, 0, 1}; | |
230 const bool kExpectedFragStart[] = {true, false, false, true}; | |
231 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); | |
232 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); | |
233 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); | |
234 ASSERT_EQ(num_packets, kExpectedNum); | |
235 | |
236 helper_->GetAllPacketsAndCheck(&packetizer, kExpectedSizes, kExpectedPart, | |
237 kExpectedFragStart, kExpectedNum); | |
238 } | |
239 | |
240 TEST_F(RtpPacketizerVp8Test, TestAggregateModeSmallPartitions) { | |
241 const size_t kSizeVector[] = {3, 4, 2, 5, 2, 4}; | |
242 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); | |
243 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); | |
244 | |
245 hdr_info_.pictureId = 20; // <= 0x7F should produce 1-byte PictureID. | |
246 const size_t kMaxPayloadSize = 13; | |
247 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, 0, kAggregate); | |
248 size_t num_packets = packetizer.SetPayloadData(helper_->payload_data(), | |
249 helper_->payload_size(), | |
250 helper_->fragmentation()); | |
251 | |
252 // The expected sizes are obtained by hand. | |
253 const size_t kExpectedSizes[] = {10, 10, 9}; | |
254 const int kExpectedPart[] = {0, 2, 4}; | |
255 const bool kExpectedFragStart[] = {true, true, true}; | |
256 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); | |
257 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); | |
258 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); | |
259 ASSERT_EQ(num_packets, kExpectedNum); | |
260 | |
261 helper_->GetAllPacketsAndCheck(&packetizer, kExpectedSizes, kExpectedPart, | |
262 kExpectedFragStart, kExpectedNum); | |
263 } | |
264 | |
184 TEST_F(RtpPacketizerVp8Test, TestAggregateModeManyPartitions1) { | 265 TEST_F(RtpPacketizerVp8Test, TestAggregateModeManyPartitions1) { |
185 const size_t kSizeVector[] = {1600, 200, 200, 200, 200, 200, 200, 200, 200}; | 266 const size_t kSizeVector[] = {1600, 200, 200, 200, 200, 200, 200, 200, 200}; |
186 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); | 267 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); |
187 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); | 268 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); |
188 | 269 |
189 hdr_info_.pictureId = 20; // <= 0x7F should produce 1-byte PictureID. | 270 hdr_info_.pictureId = 20; // <= 0x7F should produce 1-byte PictureID. |
190 const size_t kMaxPayloadSize = 1000; | 271 const size_t kMaxPayloadSize = 1000; |
191 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, kAggregate); | 272 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, 0, kAggregate); |
192 packetizer.SetPayloadData(helper_->payload_data(), | 273 size_t num_packets = packetizer.SetPayloadData(helper_->payload_data(), |
193 helper_->payload_size(), | 274 helper_->payload_size(), |
194 helper_->fragmentation()); | 275 helper_->fragmentation()); |
195 | 276 |
196 // The expected sizes are obtained by running a verified good implementation. | 277 // The expected sizes are obtained by hand. |
197 const size_t kExpectedSizes[] = {803, 803, 803, 803}; | 278 const size_t kExpectedSizes[] = {803, 803, 803, 803}; |
198 const int kExpectedPart[] = {0, 0, 1, 5}; | 279 const int kExpectedPart[] = {0, 0, 1, 5}; |
199 const bool kExpectedFragStart[] = {true, false, true, true}; | 280 const bool kExpectedFragStart[] = {true, false, true, true}; |
200 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); | 281 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); |
201 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); | 282 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); |
202 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); | 283 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); |
284 ASSERT_EQ(num_packets, kExpectedNum); | |
203 | 285 |
204 helper_->GetAllPacketsAndCheck(&packetizer, | 286 helper_->GetAllPacketsAndCheck(&packetizer, |
205 kExpectedSizes, | 287 kExpectedSizes, |
206 kExpectedPart, | 288 kExpectedPart, |
207 kExpectedFragStart, | 289 kExpectedFragStart, |
208 kExpectedNum); | 290 kExpectedNum); |
209 } | 291 } |
210 | 292 |
211 TEST_F(RtpPacketizerVp8Test, TestAggregateModeManyPartitions2) { | 293 TEST_F(RtpPacketizerVp8Test, TestAggregateModeManyPartitions2) { |
212 const size_t kSizeVector[] = {1599, 200, 200, 200, 1600, 200, 200, 200, 200}; | 294 const size_t kSizeVector[] = {1599, 200, 200, 200, 1600, 200, 200, 200, 200}; |
213 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); | 295 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); |
214 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); | 296 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); |
215 | 297 |
216 hdr_info_.pictureId = 20; // <= 0x7F should produce 1-byte PictureID. | 298 hdr_info_.pictureId = 20; // <= 0x7F should produce 1-byte PictureID. |
217 const size_t kMaxPayloadSize = 1000; | 299 const size_t kMaxPayloadSize = 1000; |
218 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, kAggregate); | 300 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, 0, kAggregate); |
219 packetizer.SetPayloadData(helper_->payload_data(), | 301 size_t num_packets = packetizer.SetPayloadData(helper_->payload_data(), |
220 helper_->payload_size(), | 302 helper_->payload_size(), |
221 helper_->fragmentation()); | 303 helper_->fragmentation()); |
222 | 304 |
223 // The expected sizes are obtained by running a verified good implementation. | 305 // The expected sizes are obtained by hand. |
224 const size_t kExpectedSizes[] = {803, 802, 603, 803, 803, 803}; | 306 const size_t kExpectedSizes[] = {802, 803, 603, 803, 803, 803}; |
225 const int kExpectedPart[] = {0, 0, 1, 4, 4, 5}; | 307 const int kExpectedPart[] = {0, 0, 1, 4, 4, 5}; |
226 const bool kExpectedFragStart[] = {true, false, true, true, false, true}; | 308 const bool kExpectedFragStart[] = {true, false, true, true, false, true}; |
227 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); | 309 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); |
228 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); | 310 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); |
229 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); | 311 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); |
312 ASSERT_EQ(num_packets, kExpectedNum); | |
230 | 313 |
231 helper_->GetAllPacketsAndCheck(&packetizer, | 314 helper_->GetAllPacketsAndCheck(&packetizer, |
232 kExpectedSizes, | 315 kExpectedSizes, |
233 kExpectedPart, | 316 kExpectedPart, |
234 kExpectedFragStart, | 317 kExpectedFragStart, |
235 kExpectedNum); | 318 kExpectedNum); |
236 } | 319 } |
237 | 320 |
238 TEST_F(RtpPacketizerVp8Test, TestAggregateModeTwoLargePartitions) { | 321 TEST_F(RtpPacketizerVp8Test, TestAggregateModeTwoLargePartitions) { |
239 const size_t kSizeVector[] = {1654, 2268}; | 322 const size_t kSizeVector[] = {1654, 2268}; |
240 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); | 323 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); |
241 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); | 324 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); |
242 | 325 |
243 hdr_info_.pictureId = 20; // <= 0x7F should produce 1-byte PictureID. | 326 hdr_info_.pictureId = 20; // <= 0x7F should produce 1-byte PictureID. |
244 const size_t kMaxPayloadSize = 1460; | 327 const size_t kMaxPayloadSize = 1460; |
245 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, kAggregate); | 328 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, 0, kAggregate); |
246 packetizer.SetPayloadData(helper_->payload_data(), | 329 size_t num_packets = packetizer.SetPayloadData(helper_->payload_data(), |
247 helper_->payload_size(), | 330 helper_->payload_size(), |
248 helper_->fragmentation()); | 331 helper_->fragmentation()); |
249 | 332 |
250 // The expected sizes are obtained by running a verified good implementation. | 333 // The expected sizes are obtained by hand. |
251 const size_t kExpectedSizes[] = {830, 830, 1137, 1137}; | 334 const size_t kExpectedSizes[] = {830, 830, 1137, 1137}; |
252 const int kExpectedPart[] = {0, 0, 1, 1}; | 335 const int kExpectedPart[] = {0, 0, 1, 1}; |
253 const bool kExpectedFragStart[] = {true, false, true, false}; | 336 const bool kExpectedFragStart[] = {true, false, true, false}; |
254 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); | 337 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); |
255 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); | 338 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); |
256 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); | 339 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); |
340 ASSERT_EQ(num_packets, kExpectedNum); | |
257 | 341 |
258 helper_->GetAllPacketsAndCheck(&packetizer, | 342 helper_->GetAllPacketsAndCheck(&packetizer, |
259 kExpectedSizes, | 343 kExpectedSizes, |
260 kExpectedPart, | 344 kExpectedPart, |
261 kExpectedFragStart, | 345 kExpectedFragStart, |
262 kExpectedNum); | 346 kExpectedNum); |
263 } | 347 } |
264 | 348 |
265 // Verify that EqualSize mode is forced if fragmentation info is missing. | 349 // Verify that EqualSize mode is forced if fragmentation info is missing. |
266 TEST_F(RtpPacketizerVp8Test, TestEqualSizeModeFallback) { | 350 TEST_F(RtpPacketizerVp8Test, TestEqualSizeModeFallback) { |
267 const size_t kSizeVector[] = {10, 10, 10}; | 351 const size_t kSizeVector[] = {10, 10, 10}; |
268 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); | 352 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); |
269 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); | 353 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); |
270 | 354 |
271 hdr_info_.pictureId = 200; // > 0x7F should produce 2-byte PictureID | 355 hdr_info_.pictureId = 200; // > 0x7F should produce 2-byte PictureID |
272 const size_t kMaxPayloadSize = 12; // Small enough to produce 4 packets. | 356 const size_t kMaxPayloadSize = 12; // Small enough to produce 4 packets. |
273 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize); | 357 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, 0); |
274 packetizer.SetPayloadData( | 358 size_t num_packets = packetizer.SetPayloadData( |
275 helper_->payload_data(), helper_->payload_size(), NULL); | 359 helper_->payload_data(), helper_->payload_size(), nullptr); |
276 | 360 |
277 // Expecting three full packets, and one with the remainder. | 361 // Expecting three full packets, and one with the remainder. |
278 const size_t kExpectedSizes[] = {12, 11, 12, 11}; | 362 const size_t kExpectedSizes[] = {11, 11, 12, 12}; |
279 const int kExpectedPart[] = {0, 0, 0, 0}; // Always 0 for equal size mode. | 363 const int kExpectedPart[] = {0, 0, 0, 0}; // Always 0 for equal size mode. |
280 // Frag start only true for first packet in equal size mode. | 364 // Frag start only true for first packet in equal size mode. |
281 const bool kExpectedFragStart[] = {true, false, false, false}; | 365 const bool kExpectedFragStart[] = {true, false, false, false}; |
282 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); | 366 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); |
283 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); | 367 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); |
284 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); | 368 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); |
369 ASSERT_EQ(num_packets, kExpectedNum); | |
285 | 370 |
286 helper_->set_sloppy_partitioning(true); | 371 helper_->set_sloppy_partitioning(true); |
287 helper_->GetAllPacketsAndCheck(&packetizer, | 372 helper_->GetAllPacketsAndCheck(&packetizer, |
288 kExpectedSizes, | 373 kExpectedSizes, |
289 kExpectedPart, | 374 kExpectedPart, |
290 kExpectedFragStart, | 375 kExpectedFragStart, |
291 kExpectedNum); | 376 kExpectedNum); |
292 } | 377 } |
293 | 378 |
379 TEST_F(RtpPacketizerVp8Test, TestEqualSizeWithLastPacketReduction) { | |
380 const size_t kSizeVector[] = {30, 10, 3}; | |
381 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); | |
382 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); | |
383 | |
384 hdr_info_.pictureId = 200; // > 0x7F should produce 2-byte PictureID | |
385 const size_t kMaxPayloadSize = 15; // Small enough to produce 5 packets. | |
386 const size_t kLastPacketReduction = 5; | |
387 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, kLastPacketReduction); | |
388 size_t num_packets = packetizer.SetPayloadData( | |
389 helper_->payload_data(), helper_->payload_size(), nullptr); | |
390 | |
391 // Calculated by hand. VP8 payload descriptors are 4 byte each. 5 packets is | |
392 // minimum possible to fit 43 payload bytes into packets with capacity of | |
393 // 15-4=11 and leave 5 free bytes in the last packet. All packets are almost | |
danilchap
2017/05/22 12:32:00
nit: add spaces around binary operators: '15 - 4 =
ilnik
2017/05/22 14:14:09
Done.
| |
394 // equal in size, even last packet if counted with free space (which will be | |
395 // filled up the stack by extra long RTP header). | |
396 const size_t kExpectedSizes[] = {13, 13, 14, 14, 9}; | |
397 const int kExpectedPart[] = {0, 0, 0, 0, 0}; // Always 0 for equal size mode. | |
398 // Frag start only true for first packet in equal size mode. | |
399 const bool kExpectedFragStart[] = {true, false, false, false, false}; | |
400 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); | |
401 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); | |
402 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); | |
403 ASSERT_EQ(num_packets, kExpectedNum); | |
404 | |
405 helper_->set_sloppy_partitioning(true); | |
406 helper_->GetAllPacketsAndCheck(&packetizer, kExpectedSizes, kExpectedPart, | |
407 kExpectedFragStart, kExpectedNum); | |
408 } | |
409 | |
294 // Verify that non-reference bit is set. EqualSize mode fallback is expected. | 410 // Verify that non-reference bit is set. EqualSize mode fallback is expected. |
295 TEST_F(RtpPacketizerVp8Test, TestNonReferenceBit) { | 411 TEST_F(RtpPacketizerVp8Test, TestNonReferenceBit) { |
296 const size_t kSizeVector[] = {10, 10, 10}; | 412 const size_t kSizeVector[] = {10, 10, 10}; |
297 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); | 413 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); |
298 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); | 414 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); |
299 | 415 |
300 hdr_info_.nonReference = true; | 416 hdr_info_.nonReference = true; |
301 const size_t kMaxPayloadSize = 25; // Small enough to produce two packets. | 417 const size_t kMaxPayloadSize = 25; // Small enough to produce two packets. |
302 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize); | 418 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, 0); |
303 packetizer.SetPayloadData( | 419 size_t num_packets = packetizer.SetPayloadData( |
304 helper_->payload_data(), helper_->payload_size(), NULL); | 420 helper_->payload_data(), helper_->payload_size(), nullptr); |
305 | 421 |
306 // EqualSize mode => First packet full; other not. | 422 // EqualSize mode => First packet full; other not. |
307 const size_t kExpectedSizes[] = {16, 16}; | 423 const size_t kExpectedSizes[] = {16, 16}; |
308 const int kExpectedPart[] = {0, 0}; // Always 0 for equal size mode. | 424 const int kExpectedPart[] = {0, 0}; // Always 0 for equal size mode. |
309 // Frag start only true for first packet in equal size mode. | 425 // Frag start only true for first packet in equal size mode. |
310 const bool kExpectedFragStart[] = {true, false}; | 426 const bool kExpectedFragStart[] = {true, false}; |
311 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); | 427 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); |
312 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); | 428 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); |
313 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); | 429 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); |
430 ASSERT_EQ(num_packets, kExpectedNum); | |
314 | 431 |
315 helper_->set_sloppy_partitioning(true); | 432 helper_->set_sloppy_partitioning(true); |
316 helper_->GetAllPacketsAndCheck(&packetizer, | 433 helper_->GetAllPacketsAndCheck(&packetizer, |
317 kExpectedSizes, | 434 kExpectedSizes, |
318 kExpectedPart, | 435 kExpectedPart, |
319 kExpectedFragStart, | 436 kExpectedFragStart, |
320 kExpectedNum); | 437 kExpectedNum); |
321 } | 438 } |
322 | 439 |
323 // Verify Tl0PicIdx and TID fields, and layerSync bit. | 440 // Verify Tl0PicIdx and TID fields, and layerSync bit. |
324 TEST_F(RtpPacketizerVp8Test, TestTl0PicIdxAndTID) { | 441 TEST_F(RtpPacketizerVp8Test, TestTl0PicIdxAndTID) { |
325 const size_t kSizeVector[] = {10, 10, 10}; | 442 const size_t kSizeVector[] = {10, 10, 10}; |
326 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); | 443 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); |
327 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); | 444 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); |
328 | 445 |
329 hdr_info_.tl0PicIdx = 117; | 446 hdr_info_.tl0PicIdx = 117; |
330 hdr_info_.temporalIdx = 2; | 447 hdr_info_.temporalIdx = 2; |
331 hdr_info_.layerSync = true; | 448 hdr_info_.layerSync = true; |
332 // kMaxPayloadSize is only limited by allocated buffer size. | 449 // kMaxPayloadSize is only limited by allocated buffer size. |
333 const size_t kMaxPayloadSize = helper_->buffer_size(); | 450 const size_t kMaxPayloadSize = helper_->buffer_size(); |
334 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, kAggregate); | 451 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, 0, kAggregate); |
335 packetizer.SetPayloadData(helper_->payload_data(), | 452 size_t num_packets = packetizer.SetPayloadData(helper_->payload_data(), |
336 helper_->payload_size(), | 453 helper_->payload_size(), |
337 helper_->fragmentation()); | 454 helper_->fragmentation()); |
338 | 455 |
339 // Expect one single packet of payload_size() + 4 bytes header. | 456 // Expect one single packet of payload_size() + 4 bytes header. |
340 const size_t kExpectedSizes[1] = {helper_->payload_size() + 4}; | 457 const size_t kExpectedSizes[1] = {helper_->payload_size() + 4}; |
341 const int kExpectedPart[1] = {0}; // Packet starts with partition 0. | 458 const int kExpectedPart[1] = {0}; // Packet starts with partition 0. |
342 const bool kExpectedFragStart[1] = {true}; | 459 const bool kExpectedFragStart[1] = {true}; |
343 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); | 460 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); |
344 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); | 461 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); |
345 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); | 462 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); |
463 ASSERT_EQ(num_packets, kExpectedNum); | |
346 | 464 |
347 helper_->GetAllPacketsAndCheck(&packetizer, | 465 helper_->GetAllPacketsAndCheck(&packetizer, |
348 kExpectedSizes, | 466 kExpectedSizes, |
349 kExpectedPart, | 467 kExpectedPart, |
350 kExpectedFragStart, | 468 kExpectedFragStart, |
351 kExpectedNum); | 469 kExpectedNum); |
352 } | 470 } |
353 | 471 |
354 // Verify KeyIdx field. | 472 // Verify KeyIdx field. |
355 TEST_F(RtpPacketizerVp8Test, TestKeyIdx) { | 473 TEST_F(RtpPacketizerVp8Test, TestKeyIdx) { |
356 const size_t kSizeVector[] = {10, 10, 10}; | 474 const size_t kSizeVector[] = {10, 10, 10}; |
357 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); | 475 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); |
358 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); | 476 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); |
359 | 477 |
360 hdr_info_.keyIdx = 17; | 478 hdr_info_.keyIdx = 17; |
361 // kMaxPayloadSize is only limited by allocated buffer size. | 479 // kMaxPayloadSize is only limited by allocated buffer size. |
362 const size_t kMaxPayloadSize = helper_->buffer_size(); | 480 const size_t kMaxPayloadSize = helper_->buffer_size(); |
363 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, kAggregate); | 481 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, 0, kAggregate); |
364 packetizer.SetPayloadData(helper_->payload_data(), | 482 size_t num_packets = packetizer.SetPayloadData(helper_->payload_data(), |
365 helper_->payload_size(), | 483 helper_->payload_size(), |
366 helper_->fragmentation()); | 484 helper_->fragmentation()); |
367 | 485 |
368 // Expect one single packet of payload_size() + 3 bytes header. | 486 // Expect one single packet of payload_size() + 3 bytes header. |
369 const size_t kExpectedSizes[1] = {helper_->payload_size() + 3}; | 487 const size_t kExpectedSizes[1] = {helper_->payload_size() + 3}; |
370 const int kExpectedPart[1] = {0}; // Packet starts with partition 0. | 488 const int kExpectedPart[1] = {0}; // Packet starts with partition 0. |
371 const bool kExpectedFragStart[1] = {true}; | 489 const bool kExpectedFragStart[1] = {true}; |
372 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); | 490 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); |
373 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); | 491 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); |
374 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); | 492 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); |
493 ASSERT_EQ(num_packets, kExpectedNum); | |
375 | 494 |
376 helper_->GetAllPacketsAndCheck(&packetizer, | 495 helper_->GetAllPacketsAndCheck(&packetizer, |
377 kExpectedSizes, | 496 kExpectedSizes, |
378 kExpectedPart, | 497 kExpectedPart, |
379 kExpectedFragStart, | 498 kExpectedFragStart, |
380 kExpectedNum); | 499 kExpectedNum); |
381 } | 500 } |
382 | 501 |
383 // Verify TID field and KeyIdx field in combination. | 502 // Verify TID field and KeyIdx field in combination. |
384 TEST_F(RtpPacketizerVp8Test, TestTIDAndKeyIdx) { | 503 TEST_F(RtpPacketizerVp8Test, TestTIDAndKeyIdx) { |
385 const size_t kSizeVector[] = {10, 10, 10}; | 504 const size_t kSizeVector[] = {10, 10, 10}; |
386 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); | 505 const size_t kNumPartitions = GTEST_ARRAY_SIZE_(kSizeVector); |
387 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); | 506 ASSERT_TRUE(Init(kSizeVector, kNumPartitions)); |
388 | 507 |
389 hdr_info_.temporalIdx = 1; | 508 hdr_info_.temporalIdx = 1; |
390 hdr_info_.keyIdx = 5; | 509 hdr_info_.keyIdx = 5; |
391 // kMaxPayloadSize is only limited by allocated buffer size. | 510 // kMaxPayloadSize is only limited by allocated buffer size. |
392 const size_t kMaxPayloadSize = helper_->buffer_size(); | 511 const size_t kMaxPayloadSize = helper_->buffer_size(); |
393 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, kAggregate); | 512 RtpPacketizerVp8 packetizer(hdr_info_, kMaxPayloadSize, 0, kAggregate); |
394 packetizer.SetPayloadData(helper_->payload_data(), | 513 size_t num_packets = packetizer.SetPayloadData(helper_->payload_data(), |
395 helper_->payload_size(), | 514 helper_->payload_size(), |
396 helper_->fragmentation()); | 515 helper_->fragmentation()); |
397 | 516 |
398 // Expect one single packet of payload_size() + 3 bytes header. | 517 // Expect one single packet of payload_size() + 3 bytes header. |
399 const size_t kExpectedSizes[1] = {helper_->payload_size() + 3}; | 518 const size_t kExpectedSizes[1] = {helper_->payload_size() + 3}; |
400 const int kExpectedPart[1] = {0}; // Packet starts with partition 0. | 519 const int kExpectedPart[1] = {0}; // Packet starts with partition 0. |
401 const bool kExpectedFragStart[1] = {true}; | 520 const bool kExpectedFragStart[1] = {true}; |
402 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); | 521 const size_t kExpectedNum = GTEST_ARRAY_SIZE_(kExpectedSizes); |
403 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); | 522 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedPart); |
404 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); | 523 CHECK_ARRAY_SIZE(kExpectedNum, kExpectedFragStart); |
524 ASSERT_EQ(num_packets, kExpectedNum); | |
405 | 525 |
406 helper_->GetAllPacketsAndCheck(&packetizer, | 526 helper_->GetAllPacketsAndCheck(&packetizer, |
407 kExpectedSizes, | 527 kExpectedSizes, |
408 kExpectedPart, | 528 kExpectedPart, |
409 kExpectedFragStart, | 529 kExpectedFragStart, |
410 kExpectedNum); | 530 kExpectedNum); |
411 } | 531 } |
412 | 532 |
413 class RtpDepacketizerVp8Test : public ::testing::Test { | 533 class RtpDepacketizerVp8Test : public ::testing::Test { |
414 protected: | 534 protected: |
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
572 const uint8_t kHeaderLength = 5; | 692 const uint8_t kHeaderLength = 5; |
573 uint8_t data[10] = {0}; | 693 uint8_t data[10] = {0}; |
574 RtpPacketToSend packet(kNoExtensions); | 694 RtpPacketToSend packet(kNoExtensions); |
575 RTPVideoHeaderVP8 input_header; | 695 RTPVideoHeaderVP8 input_header; |
576 input_header.nonReference = true; | 696 input_header.nonReference = true; |
577 input_header.pictureId = 300; | 697 input_header.pictureId = 300; |
578 input_header.temporalIdx = 1; | 698 input_header.temporalIdx = 1; |
579 input_header.layerSync = false; | 699 input_header.layerSync = false; |
580 input_header.tl0PicIdx = kNoTl0PicIdx; // Disable. | 700 input_header.tl0PicIdx = kNoTl0PicIdx; // Disable. |
581 input_header.keyIdx = 31; | 701 input_header.keyIdx = 31; |
582 RtpPacketizerVp8 packetizer(input_header, 20); | 702 RtpPacketizerVp8 packetizer(input_header, 20, 0); |
583 packetizer.SetPayloadData(data, 10, NULL); | 703 EXPECT_EQ(packetizer.SetPayloadData(data, 10, NULL), 1u); |
584 bool last; | 704 ASSERT_TRUE(packetizer.NextPacket(&packet)); |
585 ASSERT_TRUE(packetizer.NextPacket(&packet, &last)); | |
586 EXPECT_TRUE(last); | |
587 EXPECT_TRUE(packet.Marker()); | 705 EXPECT_TRUE(packet.Marker()); |
588 | 706 |
589 auto rtp_payload = packet.payload(); | 707 auto rtp_payload = packet.payload(); |
590 RtpDepacketizer::ParsedPayload payload; | 708 RtpDepacketizer::ParsedPayload payload; |
591 ASSERT_TRUE( | 709 ASSERT_TRUE( |
592 depacketizer_->Parse(&payload, rtp_payload.data(), rtp_payload.size())); | 710 depacketizer_->Parse(&payload, rtp_payload.data(), rtp_payload.size())); |
593 auto vp8_payload = rtp_payload.subview(kHeaderLength); | 711 auto vp8_payload = rtp_payload.subview(kHeaderLength); |
594 ExpectPacket(&payload, vp8_payload.data(), vp8_payload.size()); | 712 ExpectPacket(&payload, vp8_payload.data(), vp8_payload.size()); |
595 EXPECT_EQ(kVideoFrameKey, payload.frame_type); | 713 EXPECT_EQ(kVideoFrameKey, payload.frame_type); |
596 EXPECT_EQ(kRtpVideoVp8, payload.type.Video.codec); | 714 EXPECT_EQ(kRtpVideoVp8, payload.type.Video.codec); |
597 VerifyBasicHeader(&payload.type, 1, 1, 0); | 715 VerifyBasicHeader(&payload.type, 1, 1, 0); |
598 VerifyExtensions(&payload.type, | 716 VerifyExtensions(&payload.type, |
599 input_header.pictureId, | 717 input_header.pictureId, |
600 input_header.tl0PicIdx, | 718 input_header.tl0PicIdx, |
601 input_header.temporalIdx, | 719 input_header.temporalIdx, |
602 input_header.keyIdx); | 720 input_header.keyIdx); |
603 EXPECT_EQ(payload.type.Video.codecHeader.VP8.layerSync, | 721 EXPECT_EQ(payload.type.Video.codecHeader.VP8.layerSync, |
604 input_header.layerSync); | 722 input_header.layerSync); |
605 } | 723 } |
606 | 724 |
607 TEST_F(RtpDepacketizerVp8Test, TestEmptyPayload) { | 725 TEST_F(RtpDepacketizerVp8Test, TestEmptyPayload) { |
608 // Using a wild pointer to crash on accesses from inside the depacketizer. | 726 // Using a wild pointer to crash on accesses from inside the depacketizer. |
609 uint8_t* garbage_ptr = reinterpret_cast<uint8_t*>(0x4711); | 727 uint8_t* garbage_ptr = reinterpret_cast<uint8_t*>(0x4711); |
610 RtpDepacketizer::ParsedPayload payload; | 728 RtpDepacketizer::ParsedPayload payload; |
611 EXPECT_FALSE(depacketizer_->Parse(&payload, garbage_ptr, 0)); | 729 EXPECT_FALSE(depacketizer_->Parse(&payload, garbage_ptr, 0)); |
612 } | 730 } |
613 } // namespace webrtc | 731 } // namespace webrtc |
OLD | NEW |