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" |
(...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. | 98 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. |
99 TestRtcpTransport test_transport_; | 99 TestRtcpTransport test_transport_; |
100 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; | 100 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; |
101 scoped_refptr<CastEnvironment> cast_environment_; | 101 scoped_refptr<CastEnvironment> cast_environment_; |
102 scoped_ptr<RtcpSender> rtcp_sender_; | 102 scoped_ptr<RtcpSender> rtcp_sender_; |
103 | 103 |
104 DISALLOW_COPY_AND_ASSIGN(RtcpSenderTest); | 104 DISALLOW_COPY_AND_ASSIGN(RtcpSenderTest); |
105 }; | 105 }; |
106 | 106 |
107 TEST_F(RtcpSenderTest, RtcpReceiverReport) { | 107 TEST_F(RtcpSenderTest, RtcpReceiverReport) { |
108 // Empty receiver report. | |
109 TestRtcpPacketBuilder p1; | |
110 p1.AddRr(kSendingSsrc, 0); | |
111 test_transport_.SetExpectedRtcpPacket(p1.GetPacket()); | |
112 | |
113 rtcp_sender_->SendRtcpFromRtpReceiver( | |
114 kRtcpRr, NULL, NULL, NULL, NULL, kDefaultDelay); | |
115 | |
116 EXPECT_EQ(1, test_transport_.packet_count()); | |
117 | |
118 // Receiver report with report block. | 108 // Receiver report with report block. |
119 TestRtcpPacketBuilder p2; | 109 TestRtcpPacketBuilder p2; |
120 p2.AddRr(kSendingSsrc, 1); | 110 p2.AddRr(kSendingSsrc, 1); |
121 p2.AddRb(kMediaSsrc); | 111 p2.AddRb(kMediaSsrc); |
122 test_transport_.SetExpectedRtcpPacket(p2.GetPacket().Pass()); | 112 test_transport_.SetExpectedRtcpPacket(p2.GetPacket().Pass()); |
123 | 113 |
124 RtcpReportBlock report_block = GetReportBlock(); | 114 RtcpReportBlock report_block = GetReportBlock(); |
125 | 115 |
126 rtcp_sender_->SendRtcpFromRtpReceiver( | 116 rtcp_sender_->SendRtcpFromRtpReceiver( |
127 kRtcpRr, &report_block, NULL, NULL, NULL, kDefaultDelay); | 117 &report_block, NULL, NULL, NULL, kDefaultDelay); |
128 | 118 |
129 EXPECT_EQ(2, test_transport_.packet_count()); | 119 EXPECT_EQ(1, test_transport_.packet_count()); |
130 } | 120 } |
131 | 121 |
132 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtr) { | 122 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtr) { |
133 // Receiver report with report block. | 123 // Receiver report with report block. |
134 TestRtcpPacketBuilder p; | 124 TestRtcpPacketBuilder p; |
135 p.AddRr(kSendingSsrc, 1); | 125 p.AddRr(kSendingSsrc, 1); |
136 p.AddRb(kMediaSsrc); | 126 p.AddRb(kMediaSsrc); |
137 p.AddXrHeader(kSendingSsrc); | 127 p.AddXrHeader(kSendingSsrc); |
138 p.AddXrRrtrBlock(); | 128 p.AddXrRrtrBlock(); |
139 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); | 129 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
140 | 130 |
141 RtcpReportBlock report_block = GetReportBlock(); | 131 RtcpReportBlock report_block = GetReportBlock(); |
142 | 132 |
143 RtcpReceiverReferenceTimeReport rrtr; | 133 RtcpReceiverReferenceTimeReport rrtr; |
144 rrtr.ntp_seconds = kNtpHigh; | 134 rrtr.ntp_seconds = kNtpHigh; |
145 rrtr.ntp_fraction = kNtpLow; | 135 rrtr.ntp_fraction = kNtpLow; |
146 | 136 |
147 rtcp_sender_->SendRtcpFromRtpReceiver( | 137 rtcp_sender_->SendRtcpFromRtpReceiver( |
148 kRtcpRr | kRtcpRrtr, | |
149 &report_block, | 138 &report_block, |
150 &rrtr, | 139 &rrtr, |
151 NULL, | 140 NULL, |
152 NULL, | 141 NULL, |
153 kDefaultDelay); | 142 kDefaultDelay); |
154 | 143 |
155 EXPECT_EQ(1, test_transport_.packet_count()); | 144 EXPECT_EQ(1, test_transport_.packet_count()); |
156 } | 145 } |
157 | 146 |
158 TEST_F(RtcpSenderTest, RtcpReceiverReportWithCast) { | 147 TEST_F(RtcpSenderTest, RtcpReceiverReportWithCast) { |
(...skipping 11 matching lines...) Expand all Loading... |
170 PacketIdSet missing_packets; | 159 PacketIdSet missing_packets; |
171 cast_message.missing_frames_and_packets[kLostFrameId] = missing_packets; | 160 cast_message.missing_frames_and_packets[kLostFrameId] = missing_packets; |
172 | 161 |
173 missing_packets.insert(kLostPacketId1); | 162 missing_packets.insert(kLostPacketId1); |
174 missing_packets.insert(kLostPacketId2); | 163 missing_packets.insert(kLostPacketId2); |
175 missing_packets.insert(kLostPacketId3); | 164 missing_packets.insert(kLostPacketId3); |
176 cast_message.missing_frames_and_packets[kFrameIdWithLostPackets] = | 165 cast_message.missing_frames_and_packets[kFrameIdWithLostPackets] = |
177 missing_packets; | 166 missing_packets; |
178 | 167 |
179 rtcp_sender_->SendRtcpFromRtpReceiver( | 168 rtcp_sender_->SendRtcpFromRtpReceiver( |
180 kRtcpRr | kRtcpCast, | |
181 &report_block, | 169 &report_block, |
182 NULL, | 170 NULL, |
183 &cast_message, | 171 &cast_message, |
184 NULL, | 172 NULL, |
185 kDefaultDelay); | 173 kDefaultDelay); |
186 | 174 |
187 EXPECT_EQ(1, test_transport_.packet_count()); | 175 EXPECT_EQ(1, test_transport_.packet_count()); |
188 } | 176 } |
189 | 177 |
190 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtraAndCastMessage) { | 178 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtraAndCastMessage) { |
(...skipping 16 matching lines...) Expand all Loading... |
207 PacketIdSet missing_packets; | 195 PacketIdSet missing_packets; |
208 cast_message.missing_frames_and_packets[kLostFrameId] = missing_packets; | 196 cast_message.missing_frames_and_packets[kLostFrameId] = missing_packets; |
209 | 197 |
210 missing_packets.insert(kLostPacketId1); | 198 missing_packets.insert(kLostPacketId1); |
211 missing_packets.insert(kLostPacketId2); | 199 missing_packets.insert(kLostPacketId2); |
212 missing_packets.insert(kLostPacketId3); | 200 missing_packets.insert(kLostPacketId3); |
213 cast_message.missing_frames_and_packets[kFrameIdWithLostPackets] = | 201 cast_message.missing_frames_and_packets[kFrameIdWithLostPackets] = |
214 missing_packets; | 202 missing_packets; |
215 | 203 |
216 rtcp_sender_->SendRtcpFromRtpReceiver( | 204 rtcp_sender_->SendRtcpFromRtpReceiver( |
217 kRtcpRr | kRtcpRrtr | kRtcpCast, | |
218 &report_block, | 205 &report_block, |
219 &rrtr, | 206 &rrtr, |
220 &cast_message, | 207 &cast_message, |
221 NULL, | 208 NULL, |
222 kDefaultDelay); | 209 kDefaultDelay); |
223 | 210 |
224 EXPECT_EQ(1, test_transport_.packet_count()); | 211 EXPECT_EQ(1, test_transport_.packet_count()); |
225 } | 212 } |
226 | 213 |
227 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtrCastMessageAndLog) { | 214 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtrCastMessageAndLog) { |
(...skipping 22 matching lines...) Expand all Loading... |
250 missing_packets.insert(kLostPacketId1); | 237 missing_packets.insert(kLostPacketId1); |
251 missing_packets.insert(kLostPacketId2); | 238 missing_packets.insert(kLostPacketId2); |
252 missing_packets.insert(kLostPacketId3); | 239 missing_packets.insert(kLostPacketId3); |
253 cast_message.missing_frames_and_packets[kFrameIdWithLostPackets] = | 240 cast_message.missing_frames_and_packets[kFrameIdWithLostPackets] = |
254 missing_packets; | 241 missing_packets; |
255 | 242 |
256 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); | 243 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
257 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 244 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; |
258 | 245 |
259 rtcp_sender_->SendRtcpFromRtpReceiver( | 246 rtcp_sender_->SendRtcpFromRtpReceiver( |
260 kRtcpRr | kRtcpRrtr | kRtcpCast | | |
261 kRtcpReceiverLog, | |
262 &report_block, | 247 &report_block, |
263 &rrtr, | 248 &rrtr, |
264 &cast_message, | 249 &cast_message, |
265 &rtcp_events, | 250 &rtcp_events, |
266 kDefaultDelay); | 251 kDefaultDelay); |
267 | 252 |
268 base::SimpleTestTickClock testing_clock; | 253 base::SimpleTestTickClock testing_clock; |
269 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); | 254 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); |
270 | 255 |
271 p.AddReceiverLog(kSendingSsrc); | 256 p.AddReceiverLog(kSendingSsrc); |
(...skipping 15 matching lines...) Expand all Loading... |
287 packet_event.rtp_timestamp = kRtpTimestamp; | 272 packet_event.rtp_timestamp = kRtpTimestamp; |
288 packet_event.type = PACKET_RECEIVED; | 273 packet_event.type = PACKET_RECEIVED; |
289 packet_event.media_type = VIDEO_EVENT; | 274 packet_event.media_type = VIDEO_EVENT; |
290 packet_event.timestamp = testing_clock.NowTicks(); | 275 packet_event.timestamp = testing_clock.NowTicks(); |
291 packet_event.packet_id = kLostPacketId1; | 276 packet_event.packet_id = kLostPacketId1; |
292 event_subscriber.OnReceivePacketEvent(packet_event); | 277 event_subscriber.OnReceivePacketEvent(packet_event); |
293 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 278 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); |
294 EXPECT_EQ(2u, rtcp_events.size()); | 279 EXPECT_EQ(2u, rtcp_events.size()); |
295 | 280 |
296 rtcp_sender_->SendRtcpFromRtpReceiver( | 281 rtcp_sender_->SendRtcpFromRtpReceiver( |
297 kRtcpRr | kRtcpRrtr | kRtcpCast | | |
298 kRtcpReceiverLog, | |
299 &report_block, | 282 &report_block, |
300 &rrtr, | 283 &rrtr, |
301 &cast_message, | 284 &cast_message, |
302 &rtcp_events, | 285 &rtcp_events, |
303 kDefaultDelay); | 286 kDefaultDelay); |
304 | 287 |
305 EXPECT_EQ(2, test_transport_.packet_count()); | 288 EXPECT_EQ(2, test_transport_.packet_count()); |
306 } | 289 } |
307 | 290 |
308 TEST_F(RtcpSenderTest, RtcpReceiverReportWithOversizedFrameLog) { | 291 TEST_F(RtcpSenderTest, RtcpReceiverReportWithOversizedFrameLog) { |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
355 packet_event.timestamp = testing_clock.NowTicks(); | 338 packet_event.timestamp = testing_clock.NowTicks(); |
356 packet_event.packet_id = kLostPacketId1; | 339 packet_event.packet_id = kLostPacketId1; |
357 event_subscriber.OnReceivePacketEvent(packet_event); | 340 event_subscriber.OnReceivePacketEvent(packet_event); |
358 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); | 341 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); |
359 } | 342 } |
360 | 343 |
361 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 344 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; |
362 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 345 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); |
363 | 346 |
364 rtcp_sender_->SendRtcpFromRtpReceiver( | 347 rtcp_sender_->SendRtcpFromRtpReceiver( |
365 kRtcpRr | kRtcpReceiverLog, | |
366 &report_block, | 348 &report_block, |
367 NULL, | 349 NULL, |
368 NULL, | 350 NULL, |
369 &rtcp_events, | 351 &rtcp_events, |
370 kDefaultDelay); | 352 kDefaultDelay); |
371 | 353 |
372 EXPECT_EQ(1, test_transport_.packet_count()); | 354 EXPECT_EQ(1, test_transport_.packet_count()); |
373 } | 355 } |
374 | 356 |
375 TEST_F(RtcpSenderTest, RtcpReceiverReportWithTooManyLogFrames) { | 357 TEST_F(RtcpSenderTest, RtcpReceiverReportWithTooManyLogFrames) { |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
411 frame_event.media_type = VIDEO_EVENT; | 393 frame_event.media_type = VIDEO_EVENT; |
412 frame_event.timestamp = testing_clock.NowTicks(); | 394 frame_event.timestamp = testing_clock.NowTicks(); |
413 event_subscriber.OnReceiveFrameEvent(frame_event); | 395 event_subscriber.OnReceiveFrameEvent(frame_event); |
414 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); | 396 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); |
415 } | 397 } |
416 | 398 |
417 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 399 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; |
418 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 400 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); |
419 | 401 |
420 rtcp_sender_->SendRtcpFromRtpReceiver( | 402 rtcp_sender_->SendRtcpFromRtpReceiver( |
421 kRtcpRr | kRtcpReceiverLog, | |
422 &report_block, | 403 &report_block, |
423 NULL, | 404 NULL, |
424 NULL, | 405 NULL, |
425 &rtcp_events, | 406 &rtcp_events, |
426 kDefaultDelay); | 407 kDefaultDelay); |
427 | 408 |
428 EXPECT_EQ(1, test_transport_.packet_count()); | 409 EXPECT_EQ(1, test_transport_.packet_count()); |
429 } | 410 } |
430 | 411 |
431 TEST_F(RtcpSenderTest, RtcpReceiverReportWithOldLogFrames) { | 412 TEST_F(RtcpSenderTest, RtcpReceiverReportWithOldLogFrames) { |
(...skipping 29 matching lines...) Expand all Loading... |
461 frame_event.timestamp = testing_clock.NowTicks(); | 442 frame_event.timestamp = testing_clock.NowTicks(); |
462 event_subscriber.OnReceiveFrameEvent(frame_event); | 443 event_subscriber.OnReceiveFrameEvent(frame_event); |
463 testing_clock.Advance( | 444 testing_clock.Advance( |
464 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); | 445 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); |
465 } | 446 } |
466 | 447 |
467 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 448 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; |
468 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 449 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); |
469 | 450 |
470 rtcp_sender_->SendRtcpFromRtpReceiver( | 451 rtcp_sender_->SendRtcpFromRtpReceiver( |
471 kRtcpRr | kRtcpReceiverLog, | |
472 &report_block, | 452 &report_block, |
473 NULL, | 453 NULL, |
474 NULL, | 454 NULL, |
475 &rtcp_events, | 455 &rtcp_events, |
476 kDefaultDelay); | 456 kDefaultDelay); |
477 | 457 |
478 EXPECT_EQ(1, test_transport_.packet_count()); | 458 EXPECT_EQ(1, test_transport_.packet_count()); |
479 } | 459 } |
480 | 460 |
481 TEST_F(RtcpSenderTest, RtcpReceiverReportRedundancy) { | 461 TEST_F(RtcpSenderTest, RtcpReceiverReportRedundancy) { |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
519 frame_event.rtp_timestamp = kRtpTimestamp; | 499 frame_event.rtp_timestamp = kRtpTimestamp; |
520 frame_event.type = FRAME_ACK_SENT; | 500 frame_event.type = FRAME_ACK_SENT; |
521 frame_event.media_type = VIDEO_EVENT; | 501 frame_event.media_type = VIDEO_EVENT; |
522 frame_event.timestamp = testing_clock.NowTicks(); | 502 frame_event.timestamp = testing_clock.NowTicks(); |
523 event_subscriber.OnReceiveFrameEvent(frame_event); | 503 event_subscriber.OnReceiveFrameEvent(frame_event); |
524 | 504 |
525 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 505 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; |
526 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 506 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); |
527 | 507 |
528 rtcp_sender_->SendRtcpFromRtpReceiver( | 508 rtcp_sender_->SendRtcpFromRtpReceiver( |
529 kRtcpRr | kRtcpReceiverLog, | |
530 &report_block, | 509 &report_block, |
531 NULL, | 510 NULL, |
532 NULL, | 511 NULL, |
533 &rtcp_events, | 512 &rtcp_events, |
534 kDefaultDelay); | 513 kDefaultDelay); |
535 | 514 |
536 testing_clock.Advance( | 515 testing_clock.Advance( |
537 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); | 516 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); |
538 time_base_ms += kTimeBetweenEventsMs; | 517 time_base_ms += kTimeBetweenEventsMs; |
539 } | 518 } |
540 | 519 |
541 EXPECT_EQ(static_cast<int>(packet_count), test_transport_.packet_count()); | 520 EXPECT_EQ(static_cast<int>(packet_count), test_transport_.packet_count()); |
542 } | 521 } |
543 | 522 |
544 TEST_F(RtcpSenderTest, RtcpSenderReport) { | 523 TEST_F(RtcpSenderTest, RtcpSenderReport) { |
545 RtcpSenderInfo sender_info; | 524 RtcpSenderInfo sender_info; |
546 sender_info.ntp_seconds = kNtpHigh; | 525 sender_info.ntp_seconds = kNtpHigh; |
547 sender_info.ntp_fraction = kNtpLow; | 526 sender_info.ntp_fraction = kNtpLow; |
548 sender_info.rtp_timestamp = kRtpTimestamp; | 527 sender_info.rtp_timestamp = kRtpTimestamp; |
549 sender_info.send_packet_count = kSendPacketCount; | 528 sender_info.send_packet_count = kSendPacketCount; |
550 sender_info.send_octet_count = kSendOctetCount; | 529 sender_info.send_octet_count = kSendOctetCount; |
551 | 530 |
552 RtcpDlrrReportBlock dlrr_rb; | |
553 dlrr_rb.last_rr = kLastRr; | |
554 dlrr_rb.delay_since_last_rr = kDelayLastRr; | |
555 | |
556 // Sender report. | 531 // Sender report. |
557 TestRtcpPacketBuilder p; | 532 TestRtcpPacketBuilder p; |
558 p.AddSr(kSendingSsrc, 0); | 533 p.AddSr(kSendingSsrc, 0); |
559 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); | 534 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
560 | 535 |
561 rtcp_sender_->SendRtcpFromRtpSender(kRtcpSr, | 536 rtcp_sender_->SendRtcpFromRtpSender(&sender_info, NULL); |
562 sender_info, | |
563 dlrr_rb); | |
564 | 537 |
565 EXPECT_EQ(1, test_transport_.packet_count()); | 538 EXPECT_EQ(1, test_transport_.packet_count()); |
566 } | 539 } |
567 | 540 |
568 TEST_F(RtcpSenderTest, RtcpSenderReportWithDlrr) { | 541 TEST_F(RtcpSenderTest, RtcpSenderReportWithDlrr) { |
569 RtcpSenderInfo sender_info; | 542 RtcpSenderInfo sender_info; |
570 sender_info.ntp_seconds = kNtpHigh; | 543 sender_info.ntp_seconds = kNtpHigh; |
571 sender_info.ntp_fraction = kNtpLow; | 544 sender_info.ntp_fraction = kNtpLow; |
572 sender_info.rtp_timestamp = kRtpTimestamp; | 545 sender_info.rtp_timestamp = kRtpTimestamp; |
573 sender_info.send_packet_count = kSendPacketCount; | 546 sender_info.send_packet_count = kSendPacketCount; |
574 sender_info.send_octet_count = kSendOctetCount; | 547 sender_info.send_octet_count = kSendOctetCount; |
575 | 548 |
576 // Sender report + dlrr. | 549 // Sender report + dlrr. |
577 TestRtcpPacketBuilder p1; | 550 TestRtcpPacketBuilder p1; |
578 p1.AddSr(kSendingSsrc, 0); | 551 p1.AddSr(kSendingSsrc, 0); |
579 p1.AddXrHeader(kSendingSsrc); | 552 p1.AddXrHeader(kSendingSsrc); |
580 p1.AddXrDlrrBlock(kSendingSsrc); | 553 p1.AddXrDlrrBlock(kSendingSsrc); |
581 test_transport_.SetExpectedRtcpPacket(p1.GetPacket().Pass()); | 554 test_transport_.SetExpectedRtcpPacket(p1.GetPacket().Pass()); |
582 | 555 |
583 RtcpDlrrReportBlock dlrr_rb; | 556 RtcpDlrrReportBlock dlrr_rb; |
584 dlrr_rb.last_rr = kLastRr; | 557 dlrr_rb.last_rr = kLastRr; |
585 dlrr_rb.delay_since_last_rr = kDelayLastRr; | 558 dlrr_rb.delay_since_last_rr = kDelayLastRr; |
586 | 559 |
587 rtcp_sender_->SendRtcpFromRtpSender( | 560 rtcp_sender_->SendRtcpFromRtpSender(&sender_info, &dlrr_rb); |
588 kRtcpSr | kRtcpDlrr, | |
589 sender_info, | |
590 dlrr_rb); | |
591 | 561 |
592 EXPECT_EQ(1, test_transport_.packet_count()); | 562 EXPECT_EQ(1, test_transport_.packet_count()); |
593 } | 563 } |
594 | 564 |
595 } // namespace cast | 565 } // namespace cast |
596 } // namespace media | 566 } // namespace media |
OLD | NEW |