OLD | NEW |
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 "base/memory/scoped_ptr.h" | 5 #include "base/memory/scoped_ptr.h" |
6 #include "base/test/simple_test_tick_clock.h" | 6 #include "base/test/simple_test_tick_clock.h" |
7 #include "media/cast/cast_defines.h" | 7 #include "media/cast/cast_defines.h" |
8 #include "media/cast/cast_environment.h" | 8 #include "media/cast/cast_environment.h" |
9 #include "media/cast/net/cast_transport_defines.h" | 9 #include "media/cast/net/cast_transport_defines.h" |
10 #include "media/cast/net/pacing/paced_sender.h" | 10 #include "media/cast/net/pacing/paced_sender.h" |
11 #include "media/cast/net/rtcp/receiver_rtcp_event_subscriber.h" | 11 #include "media/cast/net/rtcp/receiver_rtcp_event_subscriber.h" |
12 #include "media/cast/net/rtcp/rtcp_sender.h" | 12 #include "media/cast/net/rtcp/rtcp_sender.h" |
13 #include "media/cast/net/rtcp/rtcp_utility.h" | 13 #include "media/cast/net/rtcp/rtcp_utility.h" |
14 #include "media/cast/net/rtcp/test_rtcp_packet_builder.h" | 14 #include "media/cast/net/rtcp/test_rtcp_packet_builder.h" |
15 #include "media/cast/test/fake_single_thread_task_runner.h" | 15 #include "media/cast/test/fake_single_thread_task_runner.h" |
16 #include "testing/gmock/include/gmock/gmock.h" | 16 #include "testing/gmock/include/gmock/gmock.h" |
17 | 17 |
18 namespace media { | 18 namespace media { |
19 namespace cast { | 19 namespace cast { |
20 | 20 |
21 namespace { | 21 namespace { |
22 static const uint32 kSendingSsrc = 0x12345678; | 22 static const uint32 kSendingSsrc = 0x12345678; |
23 static const uint32 kMediaSsrc = 0x87654321; | 23 static const uint32 kMediaSsrc = 0x87654321; |
24 static const base::TimeDelta kDefaultDelay = | 24 static const base::TimeDelta kDefaultDelay = |
25 base::TimeDelta::FromMilliseconds(100); | 25 base::TimeDelta::FromMilliseconds(100); |
26 static const std::string kCName("test@10.1.1.1"); | |
27 | 26 |
28 RtcpReportBlock GetReportBlock() { | 27 RtcpReportBlock GetReportBlock() { |
29 RtcpReportBlock report_block; | 28 RtcpReportBlock report_block; |
30 // Initialize remote_ssrc to a "clearly illegal" value. | 29 // Initialize remote_ssrc to a "clearly illegal" value. |
31 report_block.remote_ssrc = 0xDEAD; | 30 report_block.remote_ssrc = 0xDEAD; |
32 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender. | 31 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender. |
33 report_block.fraction_lost = kLoss >> 24; | 32 report_block.fraction_lost = kLoss >> 24; |
34 report_block.cumulative_lost = kLoss; // 24 bits valid. | 33 report_block.cumulative_lost = kLoss; // 24 bits valid. |
35 report_block.extended_high_sequence_number = kExtendedMax; | 34 report_block.extended_high_sequence_number = kExtendedMax; |
36 report_block.jitter = kTestJitter; | 35 report_block.jitter = kTestJitter; |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
87 class RtcpSenderTest : public ::testing::Test { | 86 class RtcpSenderTest : public ::testing::Test { |
88 protected: | 87 protected: |
89 RtcpSenderTest() | 88 RtcpSenderTest() |
90 : testing_clock_(new base::SimpleTestTickClock()), | 89 : testing_clock_(new base::SimpleTestTickClock()), |
91 task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)), | 90 task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)), |
92 cast_environment_(new CastEnvironment( | 91 cast_environment_(new CastEnvironment( |
93 scoped_ptr<base::TickClock>(testing_clock_).Pass(), | 92 scoped_ptr<base::TickClock>(testing_clock_).Pass(), |
94 task_runner_, | 93 task_runner_, |
95 task_runner_, | 94 task_runner_, |
96 task_runner_)), | 95 task_runner_)), |
97 rtcp_sender_(new RtcpSender(&test_transport_, kSendingSsrc, kCName)) {} | 96 rtcp_sender_(new RtcpSender(&test_transport_, kSendingSsrc)) {} |
98 | 97 |
99 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. | 98 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. |
100 TestRtcpTransport test_transport_; | 99 TestRtcpTransport test_transport_; |
101 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; | 100 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; |
102 scoped_refptr<CastEnvironment> cast_environment_; | 101 scoped_refptr<CastEnvironment> cast_environment_; |
103 scoped_ptr<RtcpSender> rtcp_sender_; | 102 scoped_ptr<RtcpSender> rtcp_sender_; |
104 | 103 |
105 DISALLOW_COPY_AND_ASSIGN(RtcpSenderTest); | 104 DISALLOW_COPY_AND_ASSIGN(RtcpSenderTest); |
106 }; | 105 }; |
107 | 106 |
108 TEST_F(RtcpSenderTest, RtcpReceiverReport) { | 107 TEST_F(RtcpSenderTest, RtcpReceiverReport) { |
109 // Empty receiver report + c_name. | 108 // Empty receiver report. |
110 TestRtcpPacketBuilder p1; | 109 TestRtcpPacketBuilder p1; |
111 p1.AddRr(kSendingSsrc, 0); | 110 p1.AddRr(kSendingSsrc, 0); |
112 p1.AddSdesCname(kSendingSsrc, kCName); | |
113 test_transport_.SetExpectedRtcpPacket(p1.GetPacket()); | 111 test_transport_.SetExpectedRtcpPacket(p1.GetPacket()); |
114 | 112 |
115 rtcp_sender_->SendRtcpFromRtpReceiver( | 113 rtcp_sender_->SendRtcpFromRtpReceiver( |
116 kRtcpRr, NULL, NULL, NULL, NULL, kDefaultDelay); | 114 kRtcpRr, NULL, NULL, NULL, NULL, kDefaultDelay); |
117 | 115 |
118 EXPECT_EQ(1, test_transport_.packet_count()); | 116 EXPECT_EQ(1, test_transport_.packet_count()); |
119 | 117 |
120 // Receiver report with report block + c_name. | 118 // Receiver report with report block. |
121 TestRtcpPacketBuilder p2; | 119 TestRtcpPacketBuilder p2; |
122 p2.AddRr(kSendingSsrc, 1); | 120 p2.AddRr(kSendingSsrc, 1); |
123 p2.AddRb(kMediaSsrc); | 121 p2.AddRb(kMediaSsrc); |
124 p2.AddSdesCname(kSendingSsrc, kCName); | |
125 test_transport_.SetExpectedRtcpPacket(p2.GetPacket().Pass()); | 122 test_transport_.SetExpectedRtcpPacket(p2.GetPacket().Pass()); |
126 | 123 |
127 RtcpReportBlock report_block = GetReportBlock(); | 124 RtcpReportBlock report_block = GetReportBlock(); |
128 | 125 |
129 rtcp_sender_->SendRtcpFromRtpReceiver( | 126 rtcp_sender_->SendRtcpFromRtpReceiver( |
130 kRtcpRr, &report_block, NULL, NULL, NULL, kDefaultDelay); | 127 kRtcpRr, &report_block, NULL, NULL, NULL, kDefaultDelay); |
131 | 128 |
132 EXPECT_EQ(2, test_transport_.packet_count()); | 129 EXPECT_EQ(2, test_transport_.packet_count()); |
133 } | 130 } |
134 | 131 |
135 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtr) { | 132 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtr) { |
136 // Receiver report with report block + c_name. | 133 // Receiver report with report block. |
137 TestRtcpPacketBuilder p; | 134 TestRtcpPacketBuilder p; |
138 p.AddRr(kSendingSsrc, 1); | 135 p.AddRr(kSendingSsrc, 1); |
139 p.AddRb(kMediaSsrc); | 136 p.AddRb(kMediaSsrc); |
140 p.AddSdesCname(kSendingSsrc, kCName); | |
141 p.AddXrHeader(kSendingSsrc); | 137 p.AddXrHeader(kSendingSsrc); |
142 p.AddXrRrtrBlock(); | 138 p.AddXrRrtrBlock(); |
143 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); | 139 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
144 | 140 |
145 RtcpReportBlock report_block = GetReportBlock(); | 141 RtcpReportBlock report_block = GetReportBlock(); |
146 | 142 |
147 RtcpReceiverReferenceTimeReport rrtr; | 143 RtcpReceiverReferenceTimeReport rrtr; |
148 rrtr.ntp_seconds = kNtpHigh; | 144 rrtr.ntp_seconds = kNtpHigh; |
149 rrtr.ntp_fraction = kNtpLow; | 145 rrtr.ntp_fraction = kNtpLow; |
150 | 146 |
151 rtcp_sender_->SendRtcpFromRtpReceiver( | 147 rtcp_sender_->SendRtcpFromRtpReceiver( |
152 kRtcpRr | kRtcpRrtr, | 148 kRtcpRr | kRtcpRrtr, |
153 &report_block, | 149 &report_block, |
154 &rrtr, | 150 &rrtr, |
155 NULL, | 151 NULL, |
156 NULL, | 152 NULL, |
157 kDefaultDelay); | 153 kDefaultDelay); |
158 | 154 |
159 EXPECT_EQ(1, test_transport_.packet_count()); | 155 EXPECT_EQ(1, test_transport_.packet_count()); |
160 } | 156 } |
161 | 157 |
162 TEST_F(RtcpSenderTest, RtcpReceiverReportWithCast) { | 158 TEST_F(RtcpSenderTest, RtcpReceiverReportWithCast) { |
163 // Receiver report with report block + c_name. | 159 // Receiver report with report block. |
164 TestRtcpPacketBuilder p; | 160 TestRtcpPacketBuilder p; |
165 p.AddRr(kSendingSsrc, 1); | 161 p.AddRr(kSendingSsrc, 1); |
166 p.AddRb(kMediaSsrc); | 162 p.AddRb(kMediaSsrc); |
167 p.AddSdesCname(kSendingSsrc, kCName); | |
168 p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay); | 163 p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay); |
169 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); | 164 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
170 | 165 |
171 RtcpReportBlock report_block = GetReportBlock(); | 166 RtcpReportBlock report_block = GetReportBlock(); |
172 | 167 |
173 RtcpCastMessage cast_message(kMediaSsrc); | 168 RtcpCastMessage cast_message(kMediaSsrc); |
174 cast_message.ack_frame_id = kAckFrameId; | 169 cast_message.ack_frame_id = kAckFrameId; |
175 PacketIdSet missing_packets; | 170 PacketIdSet missing_packets; |
176 cast_message.missing_frames_and_packets[kLostFrameId] = missing_packets; | 171 cast_message.missing_frames_and_packets[kLostFrameId] = missing_packets; |
177 | 172 |
(...skipping 11 matching lines...) Expand all Loading... |
189 NULL, | 184 NULL, |
190 kDefaultDelay); | 185 kDefaultDelay); |
191 | 186 |
192 EXPECT_EQ(1, test_transport_.packet_count()); | 187 EXPECT_EQ(1, test_transport_.packet_count()); |
193 } | 188 } |
194 | 189 |
195 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtraAndCastMessage) { | 190 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtraAndCastMessage) { |
196 TestRtcpPacketBuilder p; | 191 TestRtcpPacketBuilder p; |
197 p.AddRr(kSendingSsrc, 1); | 192 p.AddRr(kSendingSsrc, 1); |
198 p.AddRb(kMediaSsrc); | 193 p.AddRb(kMediaSsrc); |
199 p.AddSdesCname(kSendingSsrc, kCName); | |
200 p.AddXrHeader(kSendingSsrc); | 194 p.AddXrHeader(kSendingSsrc); |
201 p.AddXrRrtrBlock(); | 195 p.AddXrRrtrBlock(); |
202 p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay); | 196 p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay); |
203 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); | 197 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
204 | 198 |
205 RtcpReportBlock report_block = GetReportBlock(); | 199 RtcpReportBlock report_block = GetReportBlock(); |
206 | 200 |
207 RtcpReceiverReferenceTimeReport rrtr; | 201 RtcpReceiverReferenceTimeReport rrtr; |
208 rrtr.ntp_seconds = kNtpHigh; | 202 rrtr.ntp_seconds = kNtpHigh; |
209 rrtr.ntp_fraction = kNtpLow; | 203 rrtr.ntp_fraction = kNtpLow; |
(...skipping 20 matching lines...) Expand all Loading... |
230 EXPECT_EQ(1, test_transport_.packet_count()); | 224 EXPECT_EQ(1, test_transport_.packet_count()); |
231 } | 225 } |
232 | 226 |
233 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtrCastMessageAndLog) { | 227 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtrCastMessageAndLog) { |
234 static const uint32 kTimeBaseMs = 12345678; | 228 static const uint32 kTimeBaseMs = 12345678; |
235 static const uint32 kTimeDelayMs = 10; | 229 static const uint32 kTimeDelayMs = 10; |
236 | 230 |
237 TestRtcpPacketBuilder p; | 231 TestRtcpPacketBuilder p; |
238 p.AddRr(kSendingSsrc, 1); | 232 p.AddRr(kSendingSsrc, 1); |
239 p.AddRb(kMediaSsrc); | 233 p.AddRb(kMediaSsrc); |
240 p.AddSdesCname(kSendingSsrc, kCName); | |
241 p.AddXrHeader(kSendingSsrc); | 234 p.AddXrHeader(kSendingSsrc); |
242 p.AddXrRrtrBlock(); | 235 p.AddXrRrtrBlock(); |
243 p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay); | 236 p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay); |
244 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); | 237 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
245 | 238 |
246 RtcpReportBlock report_block = GetReportBlock(); | 239 RtcpReportBlock report_block = GetReportBlock(); |
247 | 240 |
248 RtcpReceiverReferenceTimeReport rrtr; | 241 RtcpReceiverReferenceTimeReport rrtr; |
249 rrtr.ntp_seconds = kNtpHigh; | 242 rrtr.ntp_seconds = kNtpHigh; |
250 rrtr.ntp_fraction = kNtpLow; | 243 rrtr.ntp_fraction = kNtpLow; |
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
312 EXPECT_EQ(2, test_transport_.packet_count()); | 305 EXPECT_EQ(2, test_transport_.packet_count()); |
313 } | 306 } |
314 | 307 |
315 TEST_F(RtcpSenderTest, RtcpReceiverReportWithOversizedFrameLog) { | 308 TEST_F(RtcpSenderTest, RtcpReceiverReportWithOversizedFrameLog) { |
316 static const uint32 kTimeBaseMs = 12345678; | 309 static const uint32 kTimeBaseMs = 12345678; |
317 static const uint32 kTimeDelayMs = 10; | 310 static const uint32 kTimeDelayMs = 10; |
318 | 311 |
319 TestRtcpPacketBuilder p; | 312 TestRtcpPacketBuilder p; |
320 p.AddRr(kSendingSsrc, 1); | 313 p.AddRr(kSendingSsrc, 1); |
321 p.AddRb(kMediaSsrc); | 314 p.AddRb(kMediaSsrc); |
322 p.AddSdesCname(kSendingSsrc, kCName); | |
323 | 315 |
324 RtcpReportBlock report_block = GetReportBlock(); | 316 RtcpReportBlock report_block = GetReportBlock(); |
325 | 317 |
326 base::SimpleTestTickClock testing_clock; | 318 base::SimpleTestTickClock testing_clock; |
327 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); | 319 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); |
328 | 320 |
329 p.AddReceiverLog(kSendingSsrc); | 321 p.AddReceiverLog(kSendingSsrc); |
330 | 322 |
331 int remaining_bytes = kMaxReceiverLogBytes; | 323 int remaining_bytes = kMaxReceiverLogBytes; |
332 remaining_bytes -= kRtcpCastLogHeaderSize; | 324 remaining_bytes -= kRtcpCastLogHeaderSize; |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
380 EXPECT_EQ(1, test_transport_.packet_count()); | 372 EXPECT_EQ(1, test_transport_.packet_count()); |
381 } | 373 } |
382 | 374 |
383 TEST_F(RtcpSenderTest, RtcpReceiverReportWithTooManyLogFrames) { | 375 TEST_F(RtcpSenderTest, RtcpReceiverReportWithTooManyLogFrames) { |
384 static const uint32 kTimeBaseMs = 12345678; | 376 static const uint32 kTimeBaseMs = 12345678; |
385 static const uint32 kTimeDelayMs = 10; | 377 static const uint32 kTimeDelayMs = 10; |
386 | 378 |
387 TestRtcpPacketBuilder p; | 379 TestRtcpPacketBuilder p; |
388 p.AddRr(kSendingSsrc, 1); | 380 p.AddRr(kSendingSsrc, 1); |
389 p.AddRb(kMediaSsrc); | 381 p.AddRb(kMediaSsrc); |
390 p.AddSdesCname(kSendingSsrc, kCName); | |
391 | 382 |
392 RtcpReportBlock report_block = GetReportBlock(); | 383 RtcpReportBlock report_block = GetReportBlock(); |
393 | 384 |
394 base::SimpleTestTickClock testing_clock; | 385 base::SimpleTestTickClock testing_clock; |
395 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); | 386 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); |
396 | 387 |
397 p.AddReceiverLog(kSendingSsrc); | 388 p.AddReceiverLog(kSendingSsrc); |
398 | 389 |
399 int remaining_bytes = kMaxReceiverLogBytes; | 390 int remaining_bytes = kMaxReceiverLogBytes; |
400 remaining_bytes -= kRtcpCastLogHeaderSize; | 391 remaining_bytes -= kRtcpCastLogHeaderSize; |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
436 | 427 |
437 EXPECT_EQ(1, test_transport_.packet_count()); | 428 EXPECT_EQ(1, test_transport_.packet_count()); |
438 } | 429 } |
439 | 430 |
440 TEST_F(RtcpSenderTest, RtcpReceiverReportWithOldLogFrames) { | 431 TEST_F(RtcpSenderTest, RtcpReceiverReportWithOldLogFrames) { |
441 static const uint32 kTimeBaseMs = 12345678; | 432 static const uint32 kTimeBaseMs = 12345678; |
442 | 433 |
443 TestRtcpPacketBuilder p; | 434 TestRtcpPacketBuilder p; |
444 p.AddRr(kSendingSsrc, 1); | 435 p.AddRr(kSendingSsrc, 1); |
445 p.AddRb(kMediaSsrc); | 436 p.AddRb(kMediaSsrc); |
446 p.AddSdesCname(kSendingSsrc, kCName); | |
447 | 437 |
448 RtcpReportBlock report_block = GetReportBlock(); | 438 RtcpReportBlock report_block = GetReportBlock(); |
449 | 439 |
450 base::SimpleTestTickClock testing_clock; | 440 base::SimpleTestTickClock testing_clock; |
451 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); | 441 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); |
452 | 442 |
453 p.AddReceiverLog(kSendingSsrc); | 443 p.AddReceiverLog(kSendingSsrc); |
454 | 444 |
455 // Log 11 events for a single frame, each |kTimeBetweenEventsMs| apart. | 445 // Log 11 events for a single frame, each |kTimeBetweenEventsMs| apart. |
456 // Only last 10 events will be sent because the first event is more than | 446 // Only last 10 events will be sent because the first event is more than |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
496 | 486 |
497 base::SimpleTestTickClock testing_clock; | 487 base::SimpleTestTickClock testing_clock; |
498 testing_clock.Advance(base::TimeDelta::FromMilliseconds(time_base_ms)); | 488 testing_clock.Advance(base::TimeDelta::FromMilliseconds(time_base_ms)); |
499 | 489 |
500 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); | 490 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
501 size_t packet_count = kReceiveLogMessageHistorySize + 10; | 491 size_t packet_count = kReceiveLogMessageHistorySize + 10; |
502 for (size_t i = 0; i < packet_count; i++) { | 492 for (size_t i = 0; i < packet_count; i++) { |
503 TestRtcpPacketBuilder p; | 493 TestRtcpPacketBuilder p; |
504 p.AddRr(kSendingSsrc, 1); | 494 p.AddRr(kSendingSsrc, 1); |
505 p.AddRb(kMediaSsrc); | 495 p.AddRb(kMediaSsrc); |
506 p.AddSdesCname(kSendingSsrc, kCName); | |
507 | 496 |
508 p.AddReceiverLog(kSendingSsrc); | 497 p.AddReceiverLog(kSendingSsrc); |
509 | 498 |
510 if (i >= kSecondRedundancyOffset) { | 499 if (i >= kSecondRedundancyOffset) { |
511 p.AddReceiverFrameLog( | 500 p.AddReceiverFrameLog( |
512 kRtpTimestamp, | 501 kRtpTimestamp, |
513 1, | 502 1, |
514 time_base_ms - kSecondRedundancyOffset * kTimeBetweenEventsMs); | 503 time_base_ms - kSecondRedundancyOffset * kTimeBetweenEventsMs); |
515 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); | 504 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); |
516 } | 505 } |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
557 sender_info.ntp_seconds = kNtpHigh; | 546 sender_info.ntp_seconds = kNtpHigh; |
558 sender_info.ntp_fraction = kNtpLow; | 547 sender_info.ntp_fraction = kNtpLow; |
559 sender_info.rtp_timestamp = kRtpTimestamp; | 548 sender_info.rtp_timestamp = kRtpTimestamp; |
560 sender_info.send_packet_count = kSendPacketCount; | 549 sender_info.send_packet_count = kSendPacketCount; |
561 sender_info.send_octet_count = kSendOctetCount; | 550 sender_info.send_octet_count = kSendOctetCount; |
562 | 551 |
563 RtcpDlrrReportBlock dlrr_rb; | 552 RtcpDlrrReportBlock dlrr_rb; |
564 dlrr_rb.last_rr = kLastRr; | 553 dlrr_rb.last_rr = kLastRr; |
565 dlrr_rb.delay_since_last_rr = kDelayLastRr; | 554 dlrr_rb.delay_since_last_rr = kDelayLastRr; |
566 | 555 |
567 // Sender report + c_name. | 556 // Sender report. |
568 TestRtcpPacketBuilder p; | 557 TestRtcpPacketBuilder p; |
569 p.AddSr(kSendingSsrc, 0); | 558 p.AddSr(kSendingSsrc, 0); |
570 p.AddSdesCname(kSendingSsrc, kCName); | |
571 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); | 559 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
572 | 560 |
573 rtcp_sender_->SendRtcpFromRtpSender(kRtcpSr, | 561 rtcp_sender_->SendRtcpFromRtpSender(kRtcpSr, |
574 sender_info, | 562 sender_info, |
575 dlrr_rb); | 563 dlrr_rb); |
576 | 564 |
577 EXPECT_EQ(1, test_transport_.packet_count()); | 565 EXPECT_EQ(1, test_transport_.packet_count()); |
578 } | 566 } |
579 | 567 |
580 TEST_F(RtcpSenderTest, RtcpSenderReportWithDlrr) { | 568 TEST_F(RtcpSenderTest, RtcpSenderReportWithDlrr) { |
581 RtcpSenderInfo sender_info; | 569 RtcpSenderInfo sender_info; |
582 sender_info.ntp_seconds = kNtpHigh; | 570 sender_info.ntp_seconds = kNtpHigh; |
583 sender_info.ntp_fraction = kNtpLow; | 571 sender_info.ntp_fraction = kNtpLow; |
584 sender_info.rtp_timestamp = kRtpTimestamp; | 572 sender_info.rtp_timestamp = kRtpTimestamp; |
585 sender_info.send_packet_count = kSendPacketCount; | 573 sender_info.send_packet_count = kSendPacketCount; |
586 sender_info.send_octet_count = kSendOctetCount; | 574 sender_info.send_octet_count = kSendOctetCount; |
587 | 575 |
588 // Sender report + c_name + dlrr. | 576 // Sender report + dlrr. |
589 TestRtcpPacketBuilder p1; | 577 TestRtcpPacketBuilder p1; |
590 p1.AddSr(kSendingSsrc, 0); | 578 p1.AddSr(kSendingSsrc, 0); |
591 p1.AddSdesCname(kSendingSsrc, kCName); | |
592 p1.AddXrHeader(kSendingSsrc); | 579 p1.AddXrHeader(kSendingSsrc); |
593 p1.AddXrDlrrBlock(kSendingSsrc); | 580 p1.AddXrDlrrBlock(kSendingSsrc); |
594 test_transport_.SetExpectedRtcpPacket(p1.GetPacket().Pass()); | 581 test_transport_.SetExpectedRtcpPacket(p1.GetPacket().Pass()); |
595 | 582 |
596 RtcpDlrrReportBlock dlrr_rb; | 583 RtcpDlrrReportBlock dlrr_rb; |
597 dlrr_rb.last_rr = kLastRr; | 584 dlrr_rb.last_rr = kLastRr; |
598 dlrr_rb.delay_since_last_rr = kDelayLastRr; | 585 dlrr_rb.delay_since_last_rr = kDelayLastRr; |
599 | 586 |
600 rtcp_sender_->SendRtcpFromRtpSender( | 587 rtcp_sender_->SendRtcpFromRtpSender( |
601 kRtcpSr | kRtcpDlrr, | 588 kRtcpSr | kRtcpDlrr, |
602 sender_info, | 589 sender_info, |
603 dlrr_rb); | 590 dlrr_rb); |
604 | 591 |
605 EXPECT_EQ(1, test_transport_.packet_count()); | 592 EXPECT_EQ(1, test_transport_.packet_count()); |
606 } | 593 } |
607 | 594 |
608 } // namespace cast | 595 } // namespace cast |
609 } // namespace media | 596 } // namespace media |
OLD | NEW |