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

Side by Side Diff: media/cast/net/rtp/cast_message_builder_unittest.cc

Issue 540713002: Cast: Get rid of frame_id_map (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: removed unused variable Created 6 years, 3 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
« no previous file with comments | « media/cast/net/rtp/cast_message_builder.cc ('k') | media/cast/net/rtp/frame_buffer.h » ('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 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 <stdint.h> 5 #include <stdint.h>
6 6
7 #include "base/memory/scoped_ptr.h" 7 #include "base/memory/scoped_ptr.h"
8 #include "base/test/simple_test_tick_clock.h" 8 #include "base/test/simple_test_tick_clock.h"
9 #include "media/cast/net/rtcp/rtcp.h" 9 #include "media/cast/net/rtcp/rtcp.h"
10 #include "media/cast/net/rtp/cast_message_builder.h" 10 #include "media/cast/net/rtp/cast_message_builder.h"
11 #include "media/cast/net/rtp/framer.h"
11 #include "media/cast/net/rtp/rtp_receiver_defines.h" 12 #include "media/cast/net/rtp/rtp_receiver_defines.h"
12 #include "testing/gtest/include/gtest/gtest.h" 13 #include "testing/gtest/include/gtest/gtest.h"
13 14
14 namespace media { 15 namespace media {
15 namespace cast { 16 namespace cast {
16 17
17 namespace { 18 namespace {
18 static const uint32 kSsrc = 0x1234; 19 static const uint32 kSsrc = 0x1234;
19 static const uint32 kShortTimeIncrementMs = 10; 20 static const uint32 kShortTimeIncrementMs = 10;
20 static const uint32 kLongTimeIncrementMs = 40; 21 static const uint32 kLongTimeIncrementMs = 40;
(...skipping 54 matching lines...) Expand 10 before | Expand all | Expand 10 after
75 MissingPacketsMap missing_packets_; // Missing packets per frame. 76 MissingPacketsMap missing_packets_; // Missing packets per frame.
76 uint32 last_frame_acked_; 77 uint32 last_frame_acked_;
77 78
78 DISALLOW_COPY_AND_ASSIGN(NackFeedbackVerification); 79 DISALLOW_COPY_AND_ASSIGN(NackFeedbackVerification);
79 }; 80 };
80 } // namespace 81 } // namespace
81 82
82 class CastMessageBuilderTest : public ::testing::Test { 83 class CastMessageBuilderTest : public ::testing::Test {
83 protected: 84 protected:
84 CastMessageBuilderTest() 85 CastMessageBuilderTest()
85 : cast_msg_builder_(new CastMessageBuilder(&testing_clock_, 86 : framer_(&testing_clock_,
87 &feedback_,
88 kSsrc,
89 true,
90 10),
91 cast_msg_builder_(new CastMessageBuilder(&testing_clock_,
86 &feedback_, 92 &feedback_,
87 &frame_id_map_, 93 &framer_,
88 kSsrc, 94 kSsrc,
89 true, 95 true,
90 0)) { 96 0)) {
91 rtp_header_.sender_ssrc = kSsrc; 97 rtp_header_.sender_ssrc = kSsrc;
92 rtp_header_.is_key_frame = false; 98 rtp_header_.is_key_frame = false;
93 testing_clock_.Advance( 99 testing_clock_.Advance(
94 base::TimeDelta::FromMilliseconds(kStartMillisecond)); 100 base::TimeDelta::FromMilliseconds(kStartMillisecond));
95 } 101 }
96 102
97 virtual ~CastMessageBuilderTest() {} 103 virtual ~CastMessageBuilderTest() {}
98 104
99 void SetFrameIds(uint32 frame_id, uint32 reference_frame_id) { 105 void SetFrameIds(uint32 frame_id, uint32 reference_frame_id) {
100 rtp_header_.frame_id = frame_id; 106 rtp_header_.frame_id = frame_id;
101 rtp_header_.reference_frame_id = reference_frame_id; 107 rtp_header_.reference_frame_id = reference_frame_id;
102 } 108 }
103 109
104 void SetPacketId(uint16 packet_id) { rtp_header_.packet_id = packet_id; } 110 void SetPacketId(uint16 packet_id) { rtp_header_.packet_id = packet_id; }
105 111
106 void SetMaxPacketId(uint16 max_packet_id) { 112 void SetMaxPacketId(uint16 max_packet_id) {
107 rtp_header_.max_packet_id = max_packet_id; 113 rtp_header_.max_packet_id = max_packet_id;
108 } 114 }
109 115
110 void SetKeyFrame(bool is_key) { rtp_header_.is_key_frame = is_key; } 116 void SetKeyFrame(bool is_key) { rtp_header_.is_key_frame = is_key; }
111 117
112 void InsertPacket() { 118 void InsertPacket() {
113 PacketType packet_type = frame_id_map_.InsertPacket(rtp_header_); 119 bool duplicate;
114 if (packet_type == kNewPacketCompletingFrame) { 120 uint8 payload = 0;
121 if (framer_.InsertPacket(&payload, 1, rtp_header_, &duplicate)) {
115 cast_msg_builder_->CompleteFrameReceived(rtp_header_.frame_id); 122 cast_msg_builder_->CompleteFrameReceived(rtp_header_.frame_id);
116 } 123 }
117 cast_msg_builder_->UpdateCastMessage(); 124 cast_msg_builder_->UpdateCastMessage();
118 } 125 }
119 126
120 void SetDecoderSlowerThanMaxFrameRate(int max_unacked_frames) { 127 void SetDecoderSlowerThanMaxFrameRate(int max_unacked_frames) {
121 cast_msg_builder_.reset(new CastMessageBuilder(&testing_clock_, 128 cast_msg_builder_.reset(new CastMessageBuilder(&testing_clock_,
122 &feedback_, 129 &feedback_,
123 &frame_id_map_, 130 &framer_,
124 kSsrc, 131 kSsrc,
125 false, 132 false,
126 max_unacked_frames)); 133 max_unacked_frames));
127 } 134 }
128 135
129 NackFeedbackVerification feedback_; 136 NackFeedbackVerification feedback_;
137 Framer framer_;
130 scoped_ptr<CastMessageBuilder> cast_msg_builder_; 138 scoped_ptr<CastMessageBuilder> cast_msg_builder_;
131 RtpCastHeader rtp_header_; 139 RtpCastHeader rtp_header_;
132 FrameIdMap frame_id_map_;
133 base::SimpleTestTickClock testing_clock_; 140 base::SimpleTestTickClock testing_clock_;
134 141
135 DISALLOW_COPY_AND_ASSIGN(CastMessageBuilderTest); 142 DISALLOW_COPY_AND_ASSIGN(CastMessageBuilderTest);
136 }; 143 };
137 144
138 TEST_F(CastMessageBuilderTest, OneFrameNackList) { 145 TEST_F(CastMessageBuilderTest, OneFrameNackList) {
139 SetFrameIds(0, 0); 146 SetFrameIds(0, 0);
140 SetPacketId(4); 147 SetPacketId(4);
141 SetMaxPacketId(10); 148 SetMaxPacketId(10);
142 InsertPacket(); 149 InsertPacket();
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
189 EXPECT_EQ(2u, feedback_.last_frame_acked()); 196 EXPECT_EQ(2u, feedback_.last_frame_acked());
190 testing_clock_.Advance( 197 testing_clock_.Advance(
191 base::TimeDelta::FromMilliseconds(kLongTimeIncrementMs)); 198 base::TimeDelta::FromMilliseconds(kLongTimeIncrementMs));
192 SetFrameIds(5, 5); 199 SetFrameIds(5, 5);
193 SetPacketId(0); 200 SetPacketId(0);
194 SetMaxPacketId(0); 201 SetMaxPacketId(0);
195 SetKeyFrame(true); 202 SetKeyFrame(true);
196 InsertPacket(); 203 InsertPacket();
197 testing_clock_.Advance( 204 testing_clock_.Advance(
198 base::TimeDelta::FromMilliseconds(kLongTimeIncrementMs)); 205 base::TimeDelta::FromMilliseconds(kLongTimeIncrementMs));
199 frame_id_map_.RemoveOldFrames(5); // Simulate 5 being pulled for rendering. 206 framer_.RemoveOldFrames(5); // Simulate 5 being pulled for rendering.
200 cast_msg_builder_->UpdateCastMessage(); 207 cast_msg_builder_->UpdateCastMessage();
201 EXPECT_TRUE(feedback_.triggered()); 208 EXPECT_TRUE(feedback_.triggered());
202 EXPECT_EQ(5u, feedback_.last_frame_acked()); 209 EXPECT_EQ(5u, feedback_.last_frame_acked());
203 testing_clock_.Advance( 210 testing_clock_.Advance(
204 base::TimeDelta::FromMilliseconds(kShortTimeIncrementMs)); 211 base::TimeDelta::FromMilliseconds(kShortTimeIncrementMs));
205 SetFrameIds(1, 0); 212 SetFrameIds(1, 0);
206 SetPacketId(1); 213 SetPacketId(1);
207 SetMaxPacketId(1); 214 SetMaxPacketId(1);
208 InsertPacket(); 215 InsertPacket();
209 EXPECT_FALSE(feedback_.triggered()); 216 EXPECT_FALSE(feedback_.triggered());
(...skipping 66 matching lines...) Expand 10 before | Expand all | Expand 10 after
276 base::TimeDelta::FromMilliseconds(kLongTimeIncrementMs)); 283 base::TimeDelta::FromMilliseconds(kLongTimeIncrementMs));
277 EXPECT_TRUE(feedback_.triggered()); 284 EXPECT_TRUE(feedback_.triggered());
278 EXPECT_EQ(0u, feedback_.num_missing_packets(0)); 285 EXPECT_EQ(0u, feedback_.num_missing_packets(0));
279 } 286 }
280 287
281 TEST_F(CastMessageBuilderTest, Reset) { 288 TEST_F(CastMessageBuilderTest, Reset) {
282 InsertPacket(); 289 InsertPacket();
283 testing_clock_.Advance( 290 testing_clock_.Advance(
284 base::TimeDelta::FromMilliseconds(kLongTimeIncrementMs)); 291 base::TimeDelta::FromMilliseconds(kLongTimeIncrementMs));
285 cast_msg_builder_->Reset(); 292 cast_msg_builder_->Reset();
286 frame_id_map_.Clear(); 293 framer_.Reset();
287 // Should reset nack list state and request a key frame. 294 // Should reset nack list state and request a key frame.
288 cast_msg_builder_->UpdateCastMessage(); 295 cast_msg_builder_->UpdateCastMessage();
289 EXPECT_TRUE(feedback_.triggered()); 296 EXPECT_TRUE(feedback_.triggered());
290 EXPECT_EQ(0u, feedback_.num_missing_packets(0)); 297 EXPECT_EQ(0u, feedback_.num_missing_packets(0));
291 } 298 }
292 299
293 TEST_F(CastMessageBuilderTest, DeltaAfterReset) { 300 TEST_F(CastMessageBuilderTest, DeltaAfterReset) {
294 SetFrameIds(0, 0); 301 SetFrameIds(0, 0);
295 SetPacketId(0); 302 SetPacketId(0);
296 SetMaxPacketId(0); 303 SetMaxPacketId(0);
(...skipping 21 matching lines...) Expand all
318 base::TimeDelta::FromMilliseconds(kLongTimeIncrementMs)); 325 base::TimeDelta::FromMilliseconds(kLongTimeIncrementMs));
319 EXPECT_TRUE(feedback_.triggered()); 326 EXPECT_TRUE(feedback_.triggered());
320 EXPECT_EQ(0u, feedback_.last_frame_acked()); 327 EXPECT_EQ(0u, feedback_.last_frame_acked());
321 SetFrameIds(3, 0); 328 SetFrameIds(3, 0);
322 SetKeyFrame(false); 329 SetKeyFrame(false);
323 InsertPacket(); 330 InsertPacket();
324 EXPECT_TRUE(feedback_.triggered()); 331 EXPECT_TRUE(feedback_.triggered());
325 EXPECT_EQ(3u, feedback_.last_frame_acked()); 332 EXPECT_EQ(3u, feedback_.last_frame_acked());
326 testing_clock_.Advance( 333 testing_clock_.Advance(
327 base::TimeDelta::FromMilliseconds(kLongTimeIncrementMs)); 334 base::TimeDelta::FromMilliseconds(kLongTimeIncrementMs));
328 frame_id_map_.RemoveOldFrames(3); // Simulate 3 being pulled for rendering. 335 framer_.RemoveOldFrames(3); // Simulate 3 being pulled for rendering.
329 cast_msg_builder_->UpdateCastMessage(); 336 cast_msg_builder_->UpdateCastMessage();
330 EXPECT_TRUE(feedback_.triggered()); 337 EXPECT_TRUE(feedback_.triggered());
331 EXPECT_EQ(3u, feedback_.last_frame_acked()); 338 EXPECT_EQ(3u, feedback_.last_frame_acked());
332 } 339 }
333 340
334 TEST_F(CastMessageBuilderTest, InOrderRps) { 341 TEST_F(CastMessageBuilderTest, InOrderRps) {
335 // Create a pattern - skip to rps, and don't look back. 342 // Create a pattern - skip to rps, and don't look back.
336 SetFrameIds(0, 0); 343 SetFrameIds(0, 0);
337 SetPacketId(0); 344 SetPacketId(0);
338 SetMaxPacketId(0); 345 SetMaxPacketId(0);
(...skipping 11 matching lines...) Expand all
350 testing_clock_.Advance( 357 testing_clock_.Advance(
351 base::TimeDelta::FromMilliseconds(kShortTimeIncrementMs)); 358 base::TimeDelta::FromMilliseconds(kShortTimeIncrementMs));
352 EXPECT_FALSE(feedback_.triggered()); 359 EXPECT_FALSE(feedback_.triggered());
353 SetFrameIds(3, 0); 360 SetFrameIds(3, 0);
354 SetPacketId(0); 361 SetPacketId(0);
355 SetMaxPacketId(0); 362 SetMaxPacketId(0);
356 SetKeyFrame(false); 363 SetKeyFrame(false);
357 InsertPacket(); 364 InsertPacket();
358 testing_clock_.Advance( 365 testing_clock_.Advance(
359 base::TimeDelta::FromMilliseconds(kShortTimeIncrementMs)); 366 base::TimeDelta::FromMilliseconds(kShortTimeIncrementMs));
360 frame_id_map_.RemoveOldFrames(3); // Simulate 3 being pulled for rendering. 367 framer_.RemoveOldFrames(3); // Simulate 3 being pulled for rendering.
361 testing_clock_.Advance( 368 testing_clock_.Advance(
362 base::TimeDelta::FromMilliseconds(kShortTimeIncrementMs)); 369 base::TimeDelta::FromMilliseconds(kShortTimeIncrementMs));
363 cast_msg_builder_->UpdateCastMessage(); 370 cast_msg_builder_->UpdateCastMessage();
364 EXPECT_TRUE(feedback_.triggered()); 371 EXPECT_TRUE(feedback_.triggered());
365 EXPECT_EQ(3u, feedback_.last_frame_acked()); 372 EXPECT_EQ(3u, feedback_.last_frame_acked());
366 // Make an old frame complete - should not trigger an ack. 373 // Make an old frame complete - should not trigger an ack.
367 SetFrameIds(1, 0); 374 SetFrameIds(1, 0);
368 SetPacketId(1); 375 SetPacketId(1);
369 SetMaxPacketId(1); 376 SetMaxPacketId(1);
370 SetKeyFrame(false); 377 SetKeyFrame(false);
(...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after
407 EXPECT_EQ(expected_frame_id, feedback_.last_frame_acked()); 414 EXPECT_EQ(expected_frame_id, feedback_.last_frame_acked());
408 SetFrameIds(frame_id, frame_id - 1); 415 SetFrameIds(frame_id, frame_id - 1);
409 InsertPacket(); 416 InsertPacket();
410 testing_clock_.Advance( 417 testing_clock_.Advance(
411 base::TimeDelta::FromMilliseconds(kShortTimeIncrementMs)); 418 base::TimeDelta::FromMilliseconds(kShortTimeIncrementMs));
412 } 419 }
413 EXPECT_FALSE(feedback_.triggered()); 420 EXPECT_FALSE(feedback_.triggered());
414 EXPECT_EQ(expected_frame_id, feedback_.last_frame_acked()); 421 EXPECT_EQ(expected_frame_id, feedback_.last_frame_acked());
415 422
416 // Simulate frame_id being pulled for rendering. 423 // Simulate frame_id being pulled for rendering.
417 frame_id_map_.RemoveOldFrames(frame_id); 424 framer_.RemoveOldFrames(frame_id);
418 // We should now leave the slowdown ACK state. 425 // We should now leave the slowdown ACK state.
419 ++frame_id; 426 ++frame_id;
420 SetFrameIds(frame_id, frame_id - 1); 427 SetFrameIds(frame_id, frame_id - 1);
421 InsertPacket(); 428 InsertPacket();
422 testing_clock_.Advance( 429 testing_clock_.Advance(
423 base::TimeDelta::FromMilliseconds(kShortTimeIncrementMs)); 430 base::TimeDelta::FromMilliseconds(kShortTimeIncrementMs));
424 EXPECT_TRUE(feedback_.triggered()); 431 EXPECT_TRUE(feedback_.triggered());
425 EXPECT_EQ(frame_id, feedback_.last_frame_acked()); 432 EXPECT_EQ(frame_id, feedback_.last_frame_acked());
426 } 433 }
427 434
428 } // namespace cast 435 } // namespace cast
429 } // namespace media 436 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/net/rtp/cast_message_builder.cc ('k') | media/cast/net/rtp/frame_buffer.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698