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

Side by Side Diff: media/cast/framer/framer_unittest.cc

Issue 250363002: [Cast] Clean-up RtpCastHeader and RtpParser, removing the last WebRTC dependency. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Addressed hubbe's comment. Created 6 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « media/cast/framer/frame_id_map.cc ('k') | media/cast/rtp_receiver/receiver_stats.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/test/simple_test_tick_clock.h" 5 #include "base/test/simple_test_tick_clock.h"
6 #include "media/cast/framer/framer.h" 6 #include "media/cast/framer/framer.h"
7 #include "media/cast/rtp_receiver/mock_rtp_payload_feedback.h" 7 #include "media/cast/rtp_receiver/mock_rtp_payload_feedback.h"
8 #include "testing/gtest/include/gtest/gtest.h" 8 #include "testing/gtest/include/gtest/gtest.h"
9 9
10 namespace media { 10 namespace media {
11 namespace cast { 11 namespace cast {
12 12
13 class FramerTest : public ::testing::Test { 13 class FramerTest : public ::testing::Test {
14 protected: 14 protected:
15 FramerTest() 15 FramerTest()
16 : mock_rtp_payload_feedback_(), 16 : mock_rtp_payload_feedback_(),
17 framer_(&testing_clock_, &mock_rtp_payload_feedback_, 0, true, 0) { 17 framer_(&testing_clock_, &mock_rtp_payload_feedback_, 0, true, 0) {
18 // Build a default one packet frame - populate webrtc header.
19 rtp_header_.is_key_frame = false;
20 rtp_header_.frame_id = 0;
21 rtp_header_.packet_id = 0;
22 rtp_header_.max_packet_id = 0;
23 rtp_header_.is_reference = false;
24 rtp_header_.reference_frame_id = 0;
25 payload_.assign(kMaxIpPacketSize, 0); 18 payload_.assign(kMaxIpPacketSize, 0);
26 19
27 EXPECT_CALL(mock_rtp_payload_feedback_, CastFeedback(testing::_)) 20 EXPECT_CALL(mock_rtp_payload_feedback_, CastFeedback(testing::_))
28 .WillRepeatedly(testing::Return()); 21 .WillRepeatedly(testing::Return());
29 } 22 }
30 23
31 virtual ~FramerTest() {} 24 virtual ~FramerTest() {}
32 25
33 std::vector<uint8> payload_; 26 std::vector<uint8> payload_;
34 RtpCastHeader rtp_header_; 27 RtpCastHeader rtp_header_;
(...skipping 15 matching lines...) Expand all
50 bool next_frame = false; 43 bool next_frame = false;
51 bool complete = false; 44 bool complete = false;
52 bool duplicate = false; 45 bool duplicate = false;
53 46
54 // Insert non key first frame. 47 // Insert non key first frame.
55 complete = framer_.InsertPacket( 48 complete = framer_.InsertPacket(
56 payload_.data(), payload_.size(), rtp_header_, &duplicate); 49 payload_.data(), payload_.size(), rtp_header_, &duplicate);
57 EXPECT_TRUE(complete); 50 EXPECT_TRUE(complete);
58 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); 51 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame));
59 rtp_header_.frame_id = 1; 52 rtp_header_.frame_id = 1;
53 rtp_header_.reference_frame_id = 1;
60 rtp_header_.is_key_frame = true; 54 rtp_header_.is_key_frame = true;
61 complete = framer_.InsertPacket( 55 complete = framer_.InsertPacket(
62 payload_.data(), payload_.size(), rtp_header_, &duplicate); 56 payload_.data(), payload_.size(), rtp_header_, &duplicate);
63 EXPECT_TRUE(complete); 57 EXPECT_TRUE(complete);
64 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); 58 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame));
65 EXPECT_TRUE(next_frame); 59 EXPECT_TRUE(next_frame);
66 EXPECT_EQ(1u, frame.frame_id); 60 EXPECT_EQ(1u, frame.frame_id);
67 EXPECT_TRUE(frame.key_frame); 61 EXPECT_TRUE(frame.key_frame);
68 framer_.ReleaseFrame(frame.frame_id); 62 framer_.ReleaseFrame(frame.frame_id);
69 } 63 }
(...skipping 10 matching lines...) Expand all
80 payload_.data(), payload_.size(), rtp_header_, &duplicate); 74 payload_.data(), payload_.size(), rtp_header_, &duplicate);
81 EXPECT_TRUE(complete); 75 EXPECT_TRUE(complete);
82 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); 76 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame));
83 EXPECT_TRUE(next_frame); 77 EXPECT_TRUE(next_frame);
84 EXPECT_EQ(0u, frame.frame_id); 78 EXPECT_EQ(0u, frame.frame_id);
85 EXPECT_TRUE(frame.key_frame); 79 EXPECT_TRUE(frame.key_frame);
86 framer_.ReleaseFrame(frame.frame_id); 80 framer_.ReleaseFrame(frame.frame_id);
87 81
88 // Incomplete delta. 82 // Incomplete delta.
89 ++rtp_header_.frame_id; 83 ++rtp_header_.frame_id;
84 rtp_header_.reference_frame_id = rtp_header_.frame_id - 1;
90 rtp_header_.is_key_frame = false; 85 rtp_header_.is_key_frame = false;
91 rtp_header_.max_packet_id = 2; 86 rtp_header_.max_packet_id = 2;
92 complete = framer_.InsertPacket( 87 complete = framer_.InsertPacket(
93 payload_.data(), payload_.size(), rtp_header_, &duplicate); 88 payload_.data(), payload_.size(), rtp_header_, &duplicate);
94 EXPECT_FALSE(complete); 89 EXPECT_FALSE(complete);
95 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); 90 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame));
96 91
97 // Complete delta - can't skip, as incomplete sequence. 92 // Complete delta - can't skip, as incomplete sequence.
98 ++rtp_header_.frame_id; 93 ++rtp_header_.frame_id;
94 rtp_header_.reference_frame_id = rtp_header_.frame_id - 1;
99 rtp_header_.max_packet_id = 0; 95 rtp_header_.max_packet_id = 0;
100 complete = framer_.InsertPacket( 96 complete = framer_.InsertPacket(
101 payload_.data(), payload_.size(), rtp_header_, &duplicate); 97 payload_.data(), payload_.size(), rtp_header_, &duplicate);
102 EXPECT_TRUE(complete); 98 EXPECT_TRUE(complete);
103 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); 99 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame));
104 } 100 }
105 101
106 TEST_F(FramerTest, DuplicatePackets) { 102 TEST_F(FramerTest, DuplicatePackets) {
107 transport::EncodedVideoFrame frame; 103 transport::EncodedVideoFrame frame;
108 bool next_frame = false; 104 bool next_frame = false;
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after
142 complete = framer_.InsertPacket( 138 complete = framer_.InsertPacket(
143 payload_.data(), payload_.size(), rtp_header_, &duplicate); 139 payload_.data(), payload_.size(), rtp_header_, &duplicate);
144 EXPECT_FALSE(complete); 140 EXPECT_FALSE(complete);
145 EXPECT_TRUE(duplicate); 141 EXPECT_TRUE(duplicate);
146 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); 142 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame));
147 EXPECT_EQ(0u, frame.frame_id); 143 EXPECT_EQ(0u, frame.frame_id);
148 framer_.ReleaseFrame(frame.frame_id); 144 framer_.ReleaseFrame(frame.frame_id);
149 145
150 // Incomplete delta frame. 146 // Incomplete delta frame.
151 ++rtp_header_.frame_id; 147 ++rtp_header_.frame_id;
148 rtp_header_.reference_frame_id = rtp_header_.frame_id - 1;
152 rtp_header_.packet_id = 0; 149 rtp_header_.packet_id = 0;
153 rtp_header_.is_key_frame = false; 150 rtp_header_.is_key_frame = false;
154 duplicate = true; 151 duplicate = true;
155 complete = framer_.InsertPacket( 152 complete = framer_.InsertPacket(
156 payload_.data(), payload_.size(), rtp_header_, &duplicate); 153 payload_.data(), payload_.size(), rtp_header_, &duplicate);
157 EXPECT_FALSE(complete); 154 EXPECT_FALSE(complete);
158 EXPECT_FALSE(duplicate); 155 EXPECT_FALSE(duplicate);
159 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); 156 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame));
160 157
161 // Add same packet again in incomplete delta frame. 158 // Add same packet again in incomplete delta frame.
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
198 payload_.data(), payload_.size(), rtp_header_, &duplicate); 195 payload_.data(), payload_.size(), rtp_header_, &duplicate);
199 EXPECT_TRUE(complete); 196 EXPECT_TRUE(complete);
200 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); 197 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame));
201 EXPECT_TRUE(next_frame); 198 EXPECT_TRUE(next_frame);
202 EXPECT_EQ(0u, frame.frame_id); 199 EXPECT_EQ(0u, frame.frame_id);
203 EXPECT_TRUE(frame.key_frame); 200 EXPECT_TRUE(frame.key_frame);
204 framer_.ReleaseFrame(frame.frame_id); 201 framer_.ReleaseFrame(frame.frame_id);
205 202
206 // Complete - not continuous. 203 // Complete - not continuous.
207 rtp_header_.frame_id = 2; 204 rtp_header_.frame_id = 2;
205 rtp_header_.reference_frame_id = rtp_header_.frame_id - 1;
208 rtp_header_.is_key_frame = false; 206 rtp_header_.is_key_frame = false;
209 complete = framer_.InsertPacket( 207 complete = framer_.InsertPacket(
210 payload_.data(), payload_.size(), rtp_header_, &duplicate); 208 payload_.data(), payload_.size(), rtp_header_, &duplicate);
211 EXPECT_TRUE(complete); 209 EXPECT_TRUE(complete);
212 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); 210 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame));
213 } 211 }
214 212
215 TEST_F(FramerTest, Wrap) { 213 TEST_F(FramerTest, Wrap) {
216 // Insert key frame, frame_id = 255 (will jump to that) 214 // Insert key frame, frame_id = 255 (will jump to that)
217 transport::EncodedVideoFrame frame; 215 transport::EncodedVideoFrame frame;
218 bool next_frame = false; 216 bool next_frame = false;
219 bool duplicate = false; 217 bool duplicate = false;
220 218
221 // Start with a complete key frame. 219 // Start with a complete key frame.
222 rtp_header_.is_key_frame = true; 220 rtp_header_.is_key_frame = true;
223 rtp_header_.frame_id = 255u; 221 rtp_header_.frame_id = 255;
222 rtp_header_.reference_frame_id = 255;
224 framer_.InsertPacket( 223 framer_.InsertPacket(
225 payload_.data(), payload_.size(), rtp_header_, &duplicate); 224 payload_.data(), payload_.size(), rtp_header_, &duplicate);
226 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); 225 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame));
227 EXPECT_TRUE(next_frame); 226 EXPECT_TRUE(next_frame);
228 EXPECT_EQ(255u, frame.frame_id); 227 EXPECT_EQ(255u, frame.frame_id);
229 framer_.ReleaseFrame(frame.frame_id); 228 framer_.ReleaseFrame(frame.frame_id);
230 229
231 // Insert wrapped delta frame - should be continuous. 230 // Insert wrapped delta frame - should be continuous.
232 rtp_header_.is_key_frame = false; 231 rtp_header_.is_key_frame = false;
233 rtp_header_.frame_id = 256; 232 rtp_header_.frame_id = 256;
(...skipping 22 matching lines...) Expand all
256 255
257 TEST_F(FramerTest, RequireKeyAfterReset) { 256 TEST_F(FramerTest, RequireKeyAfterReset) {
258 transport::EncodedVideoFrame frame; 257 transport::EncodedVideoFrame frame;
259 bool next_frame = false; 258 bool next_frame = false;
260 bool duplicate = false; 259 bool duplicate = false;
261 260
262 framer_.Reset(); 261 framer_.Reset();
263 262
264 // Start with a complete key frame. 263 // Start with a complete key frame.
265 rtp_header_.is_key_frame = false; 264 rtp_header_.is_key_frame = false;
266 rtp_header_.frame_id = 0u; 265 rtp_header_.frame_id = 0;
267 framer_.InsertPacket( 266 framer_.InsertPacket(
268 payload_.data(), payload_.size(), rtp_header_, &duplicate); 267 payload_.data(), payload_.size(), rtp_header_, &duplicate);
269 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); 268 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame));
270 rtp_header_.frame_id = 1; 269 rtp_header_.frame_id = 1;
270 rtp_header_.reference_frame_id = 1;
271 rtp_header_.is_key_frame = true; 271 rtp_header_.is_key_frame = true;
272 framer_.InsertPacket( 272 framer_.InsertPacket(
273 payload_.data(), payload_.size(), rtp_header_, &duplicate); 273 payload_.data(), payload_.size(), rtp_header_, &duplicate);
274 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); 274 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame));
275 EXPECT_TRUE(next_frame); 275 EXPECT_TRUE(next_frame);
276 } 276 }
277 277
278 TEST_F(FramerTest, BasicNonLastReferenceId) { 278 TEST_F(FramerTest, BasicNonLastReferenceId) {
279 transport::EncodedVideoFrame frame; 279 transport::EncodedVideoFrame frame;
280 bool next_frame = false; 280 bool next_frame = false;
281 bool duplicate = false; 281 bool duplicate = false;
282 282
283 rtp_header_.is_key_frame = true; 283 rtp_header_.is_key_frame = true;
284 rtp_header_.frame_id = 0; 284 rtp_header_.frame_id = 0;
285 framer_.InsertPacket( 285 framer_.InsertPacket(
286 payload_.data(), payload_.size(), rtp_header_, &duplicate); 286 payload_.data(), payload_.size(), rtp_header_, &duplicate);
287 287
288 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); 288 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame));
289 framer_.ReleaseFrame(frame.frame_id); 289 framer_.ReleaseFrame(frame.frame_id);
290 290
291 rtp_header_.is_key_frame = false; 291 rtp_header_.is_key_frame = false;
292 rtp_header_.is_reference = true;
293 rtp_header_.reference_frame_id = 0; 292 rtp_header_.reference_frame_id = 0;
294 rtp_header_.frame_id = 5u; 293 rtp_header_.frame_id = 5;
295 framer_.InsertPacket( 294 framer_.InsertPacket(
296 payload_.data(), payload_.size(), rtp_header_, &duplicate); 295 payload_.data(), payload_.size(), rtp_header_, &duplicate);
297 296
298 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); 297 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame));
299 EXPECT_FALSE(next_frame); 298 EXPECT_FALSE(next_frame);
300 } 299 }
301 300
302 TEST_F(FramerTest, InOrderReferenceFrameSelection) { 301 TEST_F(FramerTest, InOrderReferenceFrameSelection) {
303 // Create pattern: 0, 1, 4, 5. 302 // Create pattern: 0, 1, 4, 5.
304 transport::EncodedVideoFrame frame; 303 transport::EncodedVideoFrame frame;
305 bool next_frame = false; 304 bool next_frame = false;
306 bool duplicate = false; 305 bool duplicate = false;
307 306
308 rtp_header_.is_key_frame = true; 307 rtp_header_.is_key_frame = true;
309 rtp_header_.frame_id = 0; 308 rtp_header_.frame_id = 0;
310 framer_.InsertPacket( 309 framer_.InsertPacket(
311 payload_.data(), payload_.size(), rtp_header_, &duplicate); 310 payload_.data(), payload_.size(), rtp_header_, &duplicate);
312 rtp_header_.is_key_frame = false; 311 rtp_header_.is_key_frame = false;
313 rtp_header_.frame_id = 1; 312 rtp_header_.frame_id = 1;
314 framer_.InsertPacket( 313 framer_.InsertPacket(
315 payload_.data(), payload_.size(), rtp_header_, &duplicate); 314 payload_.data(), payload_.size(), rtp_header_, &duplicate);
316 315
317 // Insert frame #2 partially. 316 // Insert frame #2 partially.
318 rtp_header_.frame_id = 2; 317 rtp_header_.frame_id = 2;
319 rtp_header_.max_packet_id = 1; 318 rtp_header_.max_packet_id = 1;
320 framer_.InsertPacket( 319 framer_.InsertPacket(
321 payload_.data(), payload_.size(), rtp_header_, &duplicate); 320 payload_.data(), payload_.size(), rtp_header_, &duplicate);
322 rtp_header_.frame_id = 4; 321 rtp_header_.frame_id = 4;
323 rtp_header_.max_packet_id = 0; 322 rtp_header_.max_packet_id = 0;
324 rtp_header_.is_reference = true;
325 rtp_header_.reference_frame_id = 0; 323 rtp_header_.reference_frame_id = 0;
326 framer_.InsertPacket( 324 framer_.InsertPacket(
327 payload_.data(), payload_.size(), rtp_header_, &duplicate); 325 payload_.data(), payload_.size(), rtp_header_, &duplicate);
328 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); 326 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame));
329 EXPECT_EQ(0u, frame.frame_id); 327 EXPECT_EQ(0u, frame.frame_id);
330 framer_.ReleaseFrame(frame.frame_id); 328 framer_.ReleaseFrame(frame.frame_id);
331 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); 329 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame));
332 EXPECT_TRUE(next_frame); 330 EXPECT_TRUE(next_frame);
333 EXPECT_EQ(1u, frame.frame_id); 331 EXPECT_EQ(1u, frame.frame_id);
334 framer_.ReleaseFrame(frame.frame_id); 332 framer_.ReleaseFrame(frame.frame_id);
335 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); 333 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame));
336 EXPECT_FALSE(next_frame); 334 EXPECT_FALSE(next_frame);
337 EXPECT_EQ(4u, frame.frame_id); 335 EXPECT_EQ(4u, frame.frame_id);
338 framer_.ReleaseFrame(frame.frame_id); 336 framer_.ReleaseFrame(frame.frame_id);
339 // Insert remaining packet of frame #2 - should no be continuous. 337 // Insert remaining packet of frame #2 - should no be continuous.
340 rtp_header_.frame_id = 2; 338 rtp_header_.frame_id = 2;
341 rtp_header_.packet_id = 1; 339 rtp_header_.packet_id = 1;
342 framer_.InsertPacket( 340 framer_.InsertPacket(
343 payload_.data(), payload_.size(), rtp_header_, &duplicate); 341 payload_.data(), payload_.size(), rtp_header_, &duplicate);
344 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); 342 EXPECT_FALSE(framer_.GetEncodedVideoFrame(&frame, &next_frame));
345 rtp_header_.is_reference = false;
346 rtp_header_.frame_id = 5; 343 rtp_header_.frame_id = 5;
344 rtp_header_.reference_frame_id = rtp_header_.frame_id - 1;
347 rtp_header_.packet_id = 0; 345 rtp_header_.packet_id = 0;
348 rtp_header_.max_packet_id = 0; 346 rtp_header_.max_packet_id = 0;
349 framer_.InsertPacket( 347 framer_.InsertPacket(
350 payload_.data(), payload_.size(), rtp_header_, &duplicate); 348 payload_.data(), payload_.size(), rtp_header_, &duplicate);
351 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame)); 349 EXPECT_TRUE(framer_.GetEncodedVideoFrame(&frame, &next_frame));
352 EXPECT_TRUE(next_frame); 350 EXPECT_TRUE(next_frame);
353 EXPECT_EQ(5u, frame.frame_id); 351 EXPECT_EQ(5u, frame.frame_id);
354 } 352 }
355 353
356 TEST_F(FramerTest, AudioWrap) { 354 TEST_F(FramerTest, AudioWrap) {
357 // All audio frames are marked as key frames. 355 // All audio frames are marked as key frames.
358 transport::EncodedAudioFrame frame; 356 transport::EncodedAudioFrame frame;
359 bool next_frame = false; 357 bool next_frame = false;
360 bool duplicate = false; 358 bool duplicate = false;
361 359
362 rtp_header_.is_key_frame = true; 360 rtp_header_.is_key_frame = true;
363 rtp_header_.frame_id = 254; 361 rtp_header_.frame_id = 254;
362 rtp_header_.reference_frame_id = 254;
364 363
365 framer_.InsertPacket( 364 framer_.InsertPacket(
366 payload_.data(), payload_.size(), rtp_header_, &duplicate); 365 payload_.data(), payload_.size(), rtp_header_, &duplicate);
367 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &next_frame)); 366 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &next_frame));
368 EXPECT_TRUE(next_frame); 367 EXPECT_TRUE(next_frame);
369 EXPECT_EQ(254u, frame.frame_id); 368 EXPECT_EQ(254u, frame.frame_id);
370 framer_.ReleaseFrame(frame.frame_id); 369 framer_.ReleaseFrame(frame.frame_id);
371 370
372 rtp_header_.frame_id = 255; 371 rtp_header_.frame_id = 255;
372 rtp_header_.reference_frame_id = 255;
373 framer_.InsertPacket( 373 framer_.InsertPacket(
374 payload_.data(), payload_.size(), rtp_header_, &duplicate); 374 payload_.data(), payload_.size(), rtp_header_, &duplicate);
375 375
376 // Insert wrapped frame - should be continuous. 376 // Insert wrapped frame - should be continuous.
377 rtp_header_.frame_id = 256; 377 rtp_header_.frame_id = 256;
378 rtp_header_.reference_frame_id = 256;
378 framer_.InsertPacket( 379 framer_.InsertPacket(
379 payload_.data(), payload_.size(), rtp_header_, &duplicate); 380 payload_.data(), payload_.size(), rtp_header_, &duplicate);
380 381
381 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &next_frame)); 382 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &next_frame));
382 EXPECT_TRUE(next_frame); 383 EXPECT_TRUE(next_frame);
383 EXPECT_EQ(255u, frame.frame_id); 384 EXPECT_EQ(255u, frame.frame_id);
384 framer_.ReleaseFrame(frame.frame_id); 385 framer_.ReleaseFrame(frame.frame_id);
385 386
386 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &next_frame)); 387 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &next_frame));
387 EXPECT_TRUE(next_frame); 388 EXPECT_TRUE(next_frame);
388 EXPECT_EQ(256u, frame.frame_id); 389 EXPECT_EQ(256u, frame.frame_id);
389 framer_.ReleaseFrame(frame.frame_id); 390 framer_.ReleaseFrame(frame.frame_id);
390 } 391 }
391 392
392 TEST_F(FramerTest, AudioWrapWithMissingFrame) { 393 TEST_F(FramerTest, AudioWrapWithMissingFrame) {
393 // All audio frames are marked as key frames. 394 // All audio frames are marked as key frames.
394 transport::EncodedAudioFrame frame; 395 transport::EncodedAudioFrame frame;
395 bool next_frame = false; 396 bool next_frame = false;
396 bool duplicate = false; 397 bool duplicate = false;
397 398
398 // Insert and get first packet. 399 // Insert and get first packet.
399 rtp_header_.is_key_frame = true; 400 rtp_header_.is_key_frame = true;
400 rtp_header_.frame_id = 253; 401 rtp_header_.frame_id = 253;
402 rtp_header_.reference_frame_id = 253;
401 framer_.InsertPacket( 403 framer_.InsertPacket(
402 payload_.data(), payload_.size(), rtp_header_, &duplicate); 404 payload_.data(), payload_.size(), rtp_header_, &duplicate);
403 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &next_frame)); 405 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &next_frame));
404 EXPECT_TRUE(next_frame); 406 EXPECT_TRUE(next_frame);
405 EXPECT_EQ(253u, frame.frame_id); 407 EXPECT_EQ(253u, frame.frame_id);
406 framer_.ReleaseFrame(frame.frame_id); 408 framer_.ReleaseFrame(frame.frame_id);
407 409
408 // Insert third and fourth packets. 410 // Insert third and fourth packets.
409 rtp_header_.frame_id = 255; 411 rtp_header_.frame_id = 255;
412 rtp_header_.reference_frame_id = 255;
410 framer_.InsertPacket( 413 framer_.InsertPacket(
411 payload_.data(), payload_.size(), rtp_header_, &duplicate); 414 payload_.data(), payload_.size(), rtp_header_, &duplicate);
412 rtp_header_.frame_id = 256; 415 rtp_header_.frame_id = 256;
416 rtp_header_.reference_frame_id = 256;
413 framer_.InsertPacket( 417 framer_.InsertPacket(
414 payload_.data(), payload_.size(), rtp_header_, &duplicate); 418 payload_.data(), payload_.size(), rtp_header_, &duplicate);
415 419
416 // Get third and fourth packets. 420 // Get third and fourth packets.
417 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &next_frame)); 421 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &next_frame));
418 EXPECT_FALSE(next_frame); 422 EXPECT_FALSE(next_frame);
419 EXPECT_EQ(255u, frame.frame_id); 423 EXPECT_EQ(255u, frame.frame_id);
420 framer_.ReleaseFrame(frame.frame_id); 424 framer_.ReleaseFrame(frame.frame_id);
421 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &next_frame)); 425 EXPECT_TRUE(framer_.GetEncodedAudioFrame(&frame, &next_frame));
422 EXPECT_TRUE(next_frame); 426 EXPECT_TRUE(next_frame);
423 EXPECT_EQ(256u, frame.frame_id); 427 EXPECT_EQ(256u, frame.frame_id);
424 framer_.ReleaseFrame(frame.frame_id); 428 framer_.ReleaseFrame(frame.frame_id);
425 } 429 }
426 430
427 } // namespace cast 431 } // namespace cast
428 } // namespace media 432 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/framer/frame_id_map.cc ('k') | media/cast/rtp_receiver/receiver_stats.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698