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 29 matching lines...) Expand all Loading... |
40 } // namespace | 40 } // namespace |
41 | 41 |
42 | 42 |
43 class RtcpBuilderTest : public ::testing::Test { | 43 class RtcpBuilderTest : public ::testing::Test { |
44 protected: | 44 protected: |
45 RtcpBuilderTest() | 45 RtcpBuilderTest() |
46 : rtcp_builder_(new RtcpBuilder(kSendingSsrc)) {} | 46 : rtcp_builder_(new RtcpBuilder(kSendingSsrc)) {} |
47 | 47 |
48 void ExpectPacketEQ(scoped_ptr<Packet> golden_packet, | 48 void ExpectPacketEQ(scoped_ptr<Packet> golden_packet, |
49 PacketRef packet) { | 49 PacketRef packet) { |
| 50 int diffs = 0; |
50 EXPECT_EQ(golden_packet->size(), packet->data.size()); | 51 EXPECT_EQ(golden_packet->size(), packet->data.size()); |
51 if (golden_packet->size() == packet->data.size()) { | 52 if (golden_packet->size() == packet->data.size()) { |
52 for (size_t x = 0; x < golden_packet->size(); x++) { | 53 for (size_t x = 0; x < golden_packet->size(); x++) { |
53 EXPECT_EQ((*golden_packet)[x], packet->data[x]); | 54 EXPECT_EQ((*golden_packet)[x], packet->data[x]) << |
54 if ((*golden_packet)[x] != packet->data[x]) | 55 "x = " << x << " / " << golden_packet->size(); |
55 break; | 56 if ((*golden_packet)[x] != packet->data[x]) { |
| 57 if (++diffs > 5) |
| 58 break; |
| 59 } |
56 } | 60 } |
57 } | 61 } |
58 } | 62 } |
59 | 63 |
60 scoped_ptr<RtcpBuilder> rtcp_builder_; | 64 scoped_ptr<RtcpBuilder> rtcp_builder_; |
61 | 65 |
62 DISALLOW_COPY_AND_ASSIGN(RtcpBuilderTest); | 66 DISALLOW_COPY_AND_ASSIGN(RtcpBuilderTest); |
63 }; | 67 }; |
64 | 68 |
65 TEST_F(RtcpBuilderTest, RtcpReceiverReport) { | 69 TEST_F(RtcpBuilderTest, RtcpReceiverReport) { |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
184 PacketIdSet missing_packets; | 188 PacketIdSet missing_packets; |
185 cast_message.missing_frames_and_packets[kLostFrameId] = missing_packets; | 189 cast_message.missing_frames_and_packets[kLostFrameId] = missing_packets; |
186 | 190 |
187 missing_packets.insert(kLostPacketId1); | 191 missing_packets.insert(kLostPacketId1); |
188 missing_packets.insert(kLostPacketId2); | 192 missing_packets.insert(kLostPacketId2); |
189 missing_packets.insert(kLostPacketId3); | 193 missing_packets.insert(kLostPacketId3); |
190 cast_message.missing_frames_and_packets[kFrameIdWithLostPackets] = | 194 cast_message.missing_frames_and_packets[kFrameIdWithLostPackets] = |
191 missing_packets; | 195 missing_packets; |
192 | 196 |
193 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); | 197 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
194 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 198 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; |
195 | 199 |
196 ExpectPacketEQ(p.GetPacket().Pass(), | 200 ExpectPacketEQ(p.GetPacket().Pass(), |
197 rtcp_builder_->BuildRtcpFromReceiver( | 201 rtcp_builder_->BuildRtcpFromReceiver( |
198 &report_block, | 202 &report_block, |
199 &rrtr, | 203 &rrtr, |
200 &cast_message, | 204 &cast_message, |
201 &rtcp_events, | 205 &rtcp_events, |
202 kDefaultDelay)); | 206 kDefaultDelay)); |
203 | 207 |
204 base::SimpleTestTickClock testing_clock; | 208 base::SimpleTestTickClock testing_clock; |
(...skipping 12 matching lines...) Expand all Loading... |
217 event_subscriber.OnReceiveFrameEvent(frame_event); | 221 event_subscriber.OnReceiveFrameEvent(frame_event); |
218 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); | 222 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); |
219 | 223 |
220 PacketEvent packet_event; | 224 PacketEvent packet_event; |
221 packet_event.rtp_timestamp = kRtpTimestamp; | 225 packet_event.rtp_timestamp = kRtpTimestamp; |
222 packet_event.type = PACKET_RECEIVED; | 226 packet_event.type = PACKET_RECEIVED; |
223 packet_event.media_type = VIDEO_EVENT; | 227 packet_event.media_type = VIDEO_EVENT; |
224 packet_event.timestamp = testing_clock.NowTicks(); | 228 packet_event.timestamp = testing_clock.NowTicks(); |
225 packet_event.packet_id = kLostPacketId1; | 229 packet_event.packet_id = kLostPacketId1; |
226 event_subscriber.OnReceivePacketEvent(packet_event); | 230 event_subscriber.OnReceivePacketEvent(packet_event); |
227 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 231 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); |
228 EXPECT_EQ(2u, rtcp_events.size()); | 232 EXPECT_EQ(2u, rtcp_events.size()); |
229 | 233 |
230 ExpectPacketEQ( | 234 ExpectPacketEQ( |
231 p.GetPacket().Pass(), | 235 p.GetPacket().Pass(), |
232 rtcp_builder_->BuildRtcpFromReceiver( | 236 rtcp_builder_->BuildRtcpFromReceiver( |
233 &report_block, | 237 &report_block, |
234 &rrtr, | 238 &rrtr, |
235 &cast_message, | 239 &cast_message, |
236 &rtcp_events, | 240 &rtcp_events, |
237 kDefaultDelay)); | 241 kDefaultDelay)); |
238 } | 242 } |
239 | 243 |
240 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithOversizedFrameLog) { | 244 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithOversizedFrameLog) { |
241 static const uint32 kTimeBaseMs = 12345678; | 245 static const uint32 kTimeBaseMs = 12345678; |
242 static const uint32 kTimeDelayMs = 10; | 246 static const uint32 kTimeDelayMs = 10; |
243 | 247 |
244 TestRtcpPacketBuilder p; | 248 TestRtcpPacketBuilder p; |
245 p.AddRr(kSendingSsrc, 1); | 249 p.AddRr(kSendingSsrc, 1); |
246 p.AddRb(kMediaSsrc); | 250 p.AddRb(kMediaSsrc); |
247 | 251 |
248 RtcpReportBlock report_block = GetReportBlock(); | 252 RtcpReportBlock report_block = GetReportBlock(); |
249 | 253 |
250 base::SimpleTestTickClock testing_clock; | 254 base::SimpleTestTickClock testing_clock; |
251 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); | 255 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); |
252 | 256 |
253 p.AddReceiverLog(kSendingSsrc); | 257 p.AddReceiverLog(kSendingSsrc); |
254 | 258 |
255 int remaining_bytes = kMaxReceiverLogBytes; | 259 int num_events = kMaxEventsPerRTCP; |
256 remaining_bytes -= kRtcpCastLogHeaderSize; | |
257 | 260 |
258 remaining_bytes -= kRtcpReceiverFrameLogSize; | |
259 int num_events = remaining_bytes / kRtcpReceiverEventLogSize; | |
260 EXPECT_LE(num_events, static_cast<int>(kRtcpMaxReceiverLogMessages)); | 261 EXPECT_LE(num_events, static_cast<int>(kRtcpMaxReceiverLogMessages)); |
261 // Only the last |num_events| events are sent due to receiver log size cap. | |
262 p.AddReceiverFrameLog( | 262 p.AddReceiverFrameLog( |
263 kRtpTimestamp + 2345, | 263 kRtpTimestamp + 2345, |
264 num_events, | 264 num_events, |
265 kTimeBaseMs + (kRtcpMaxReceiverLogMessages - num_events) * kTimeDelayMs); | 265 kTimeBaseMs); |
266 for (int i = 0; i < num_events; i++) { | 266 for (int i = 0; i < num_events; i++) { |
267 p.AddReceiverEventLog( | 267 p.AddReceiverEventLog( |
268 kLostPacketId1, PACKET_RECEIVED, | 268 kLostPacketId1, |
| 269 PACKET_RECEIVED, |
269 static_cast<uint16>(kTimeDelayMs * i)); | 270 static_cast<uint16>(kTimeDelayMs * i)); |
270 } | 271 } |
271 | 272 |
272 | 273 |
273 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); | 274 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
274 FrameEvent frame_event; | |
275 frame_event.rtp_timestamp = kRtpTimestamp; | |
276 frame_event.type = FRAME_ACK_SENT; | |
277 frame_event.media_type = VIDEO_EVENT; | |
278 frame_event.timestamp = testing_clock.NowTicks(); | |
279 event_subscriber.OnReceiveFrameEvent(frame_event); | |
280 | 275 |
281 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) { | 276 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) { |
282 PacketEvent packet_event; | 277 PacketEvent packet_event; |
283 packet_event.rtp_timestamp = kRtpTimestamp + 2345; | 278 packet_event.rtp_timestamp = kRtpTimestamp + 2345; |
284 packet_event.type = PACKET_RECEIVED; | 279 packet_event.type = PACKET_RECEIVED; |
285 packet_event.media_type = VIDEO_EVENT; | 280 packet_event.media_type = VIDEO_EVENT; |
286 packet_event.timestamp = testing_clock.NowTicks(); | 281 packet_event.timestamp = testing_clock.NowTicks(); |
287 packet_event.packet_id = kLostPacketId1; | 282 packet_event.packet_id = kLostPacketId1; |
288 event_subscriber.OnReceivePacketEvent(packet_event); | 283 event_subscriber.OnReceivePacketEvent(packet_event); |
289 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); | 284 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); |
290 } | 285 } |
291 | 286 |
292 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 287 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; |
293 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 288 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); |
294 | 289 |
295 ExpectPacketEQ(p.GetPacket().Pass(), | 290 ExpectPacketEQ(p.GetPacket().Pass(), |
296 rtcp_builder_->BuildRtcpFromReceiver( | 291 rtcp_builder_->BuildRtcpFromReceiver( |
297 &report_block, | 292 &report_block, |
298 NULL, | 293 NULL, |
299 NULL, | 294 NULL, |
300 &rtcp_events, | 295 &rtcp_events, |
301 kDefaultDelay)); | 296 kDefaultDelay)); |
302 } | 297 } |
303 | 298 |
304 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithTooManyLogFrames) { | 299 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithTooManyLogFrames) { |
305 static const uint32 kTimeBaseMs = 12345678; | 300 static const uint32 kTimeBaseMs = 12345678; |
306 static const uint32 kTimeDelayMs = 10; | 301 static const uint32 kTimeDelayMs = 10; |
307 | 302 |
308 TestRtcpPacketBuilder p; | 303 TestRtcpPacketBuilder p; |
309 p.AddRr(kSendingSsrc, 1); | 304 p.AddRr(kSendingSsrc, 1); |
310 p.AddRb(kMediaSsrc); | 305 p.AddRb(kMediaSsrc); |
311 | 306 |
312 RtcpReportBlock report_block = GetReportBlock(); | 307 RtcpReportBlock report_block = GetReportBlock(); |
313 | 308 |
314 base::SimpleTestTickClock testing_clock; | 309 base::SimpleTestTickClock testing_clock; |
315 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); | 310 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); |
316 | 311 |
317 p.AddReceiverLog(kSendingSsrc); | 312 p.AddReceiverLog(kSendingSsrc); |
318 | 313 |
319 int remaining_bytes = kMaxReceiverLogBytes; | 314 int num_events = kMaxEventsPerRTCP; |
320 remaining_bytes -= kRtcpCastLogHeaderSize; | |
321 | 315 |
322 int num_events = | 316 for (int i = 0; i < num_events; i++) { |
323 remaining_bytes / (kRtcpReceiverFrameLogSize + kRtcpReceiverEventLogSize); | |
324 | |
325 // The last |num_events| events are sent due to receiver log size cap. | |
326 for (size_t i = kRtcpMaxReceiverLogMessages - num_events; | |
327 i < kRtcpMaxReceiverLogMessages; | |
328 ++i) { | |
329 p.AddReceiverFrameLog(kRtpTimestamp + i, 1, kTimeBaseMs + i * kTimeDelayMs); | 317 p.AddReceiverFrameLog(kRtpTimestamp + i, 1, kTimeBaseMs + i * kTimeDelayMs); |
330 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); | 318 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); |
331 } | 319 } |
332 | 320 |
333 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); | 321 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
334 | 322 |
335 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) { | 323 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) { |
336 FrameEvent frame_event; | 324 FrameEvent frame_event; |
337 frame_event.rtp_timestamp = kRtpTimestamp + static_cast<int>(i); | 325 frame_event.rtp_timestamp = kRtpTimestamp + static_cast<int>(i); |
338 frame_event.type = FRAME_ACK_SENT; | 326 frame_event.type = FRAME_ACK_SENT; |
339 frame_event.media_type = VIDEO_EVENT; | 327 frame_event.media_type = VIDEO_EVENT; |
340 frame_event.timestamp = testing_clock.NowTicks(); | 328 frame_event.timestamp = testing_clock.NowTicks(); |
341 event_subscriber.OnReceiveFrameEvent(frame_event); | 329 event_subscriber.OnReceiveFrameEvent(frame_event); |
342 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); | 330 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); |
343 } | 331 } |
344 | 332 |
345 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 333 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; |
346 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 334 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); |
347 | 335 |
348 ExpectPacketEQ(p.GetPacket().Pass(), | 336 ExpectPacketEQ(p.GetPacket().Pass(), |
349 rtcp_builder_->BuildRtcpFromReceiver( | 337 rtcp_builder_->BuildRtcpFromReceiver( |
350 &report_block, | 338 &report_block, |
351 NULL, | 339 NULL, |
352 NULL, | 340 NULL, |
353 &rtcp_events, | 341 &rtcp_events, |
354 kDefaultDelay)); | 342 kDefaultDelay)); |
355 } | 343 } |
356 | 344 |
(...skipping 25 matching lines...) Expand all Loading... |
382 FrameEvent frame_event; | 370 FrameEvent frame_event; |
383 frame_event.rtp_timestamp = kRtpTimestamp; | 371 frame_event.rtp_timestamp = kRtpTimestamp; |
384 frame_event.type = FRAME_ACK_SENT; | 372 frame_event.type = FRAME_ACK_SENT; |
385 frame_event.media_type = VIDEO_EVENT; | 373 frame_event.media_type = VIDEO_EVENT; |
386 frame_event.timestamp = testing_clock.NowTicks(); | 374 frame_event.timestamp = testing_clock.NowTicks(); |
387 event_subscriber.OnReceiveFrameEvent(frame_event); | 375 event_subscriber.OnReceiveFrameEvent(frame_event); |
388 testing_clock.Advance( | 376 testing_clock.Advance( |
389 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); | 377 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); |
390 } | 378 } |
391 | 379 |
392 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 380 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; |
393 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 381 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); |
394 | 382 |
395 ExpectPacketEQ(p.GetPacket().Pass(), | 383 ExpectPacketEQ(p.GetPacket().Pass(), |
396 rtcp_builder_->BuildRtcpFromReceiver( | 384 rtcp_builder_->BuildRtcpFromReceiver( |
397 &report_block, | 385 &report_block, |
398 NULL, | 386 NULL, |
399 NULL, | 387 NULL, |
400 &rtcp_events, | 388 &rtcp_events, |
401 kDefaultDelay)); | 389 kDefaultDelay)); |
402 } | 390 } |
403 | 391 |
404 TEST_F(RtcpBuilderTest, RtcpReceiverReportRedundancy) { | 392 TEST_F(RtcpBuilderTest, RtcpReceiverReportRedundancy) { |
405 uint32 time_base_ms = 12345678; | 393 uint32 time_base_ms = 12345678; |
406 int kTimeBetweenEventsMs = 10; | 394 int kTimeBetweenEventsMs = 10; |
407 | 395 |
408 RtcpReportBlock report_block = GetReportBlock(); | 396 RtcpReportBlock report_block = GetReportBlock(); |
409 | 397 |
410 base::SimpleTestTickClock testing_clock; | 398 base::SimpleTestTickClock testing_clock; |
411 testing_clock.Advance(base::TimeDelta::FromMilliseconds(time_base_ms)); | 399 testing_clock.Advance(base::TimeDelta::FromMilliseconds(time_base_ms)); |
412 | 400 |
413 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); | 401 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
414 size_t packet_count = kReceiveLogMessageHistorySize + 10; | 402 size_t packet_count = kNumResends * kResendDelay + 10; |
415 for (size_t i = 0; i < packet_count; i++) { | 403 for (size_t i = 0; i < packet_count; i++) { |
416 TestRtcpPacketBuilder p; | 404 TestRtcpPacketBuilder p; |
417 p.AddRr(kSendingSsrc, 1); | 405 p.AddRr(kSendingSsrc, 1); |
418 p.AddRb(kMediaSsrc); | 406 p.AddRb(kMediaSsrc); |
419 | 407 |
420 p.AddReceiverLog(kSendingSsrc); | 408 p.AddReceiverLog(kSendingSsrc); |
421 | 409 |
422 if (i >= kSecondRedundancyOffset) { | 410 int num_events = (i + kResendDelay) / kResendDelay; |
423 p.AddReceiverFrameLog( | 411 num_events = std::min<int>(num_events, kNumResends); |
424 kRtpTimestamp, | 412 p.AddReceiverFrameLog(kRtpTimestamp, num_events, |
425 1, | 413 time_base_ms - (num_events - 1) * kResendDelay * |
426 time_base_ms - kSecondRedundancyOffset * kTimeBetweenEventsMs); | 414 kTimeBetweenEventsMs); |
427 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); | 415 for (int i = 0; i < num_events; i++) { |
| 416 p.AddReceiverEventLog(0, FRAME_ACK_SENT, |
| 417 i * kResendDelay * kTimeBetweenEventsMs); |
428 } | 418 } |
429 if (i >= kFirstRedundancyOffset) { | |
430 p.AddReceiverFrameLog( | |
431 kRtpTimestamp, | |
432 1, | |
433 time_base_ms - kFirstRedundancyOffset * kTimeBetweenEventsMs); | |
434 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); | |
435 } | |
436 p.AddReceiverFrameLog(kRtpTimestamp, 1, time_base_ms); | |
437 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); | |
438 | 419 |
439 FrameEvent frame_event; | 420 FrameEvent frame_event; |
440 frame_event.rtp_timestamp = kRtpTimestamp; | 421 frame_event.rtp_timestamp = kRtpTimestamp; |
441 frame_event.type = FRAME_ACK_SENT; | 422 frame_event.type = FRAME_ACK_SENT; |
442 frame_event.media_type = VIDEO_EVENT; | 423 frame_event.media_type = VIDEO_EVENT; |
443 frame_event.timestamp = testing_clock.NowTicks(); | 424 frame_event.timestamp = testing_clock.NowTicks(); |
444 event_subscriber.OnReceiveFrameEvent(frame_event); | 425 event_subscriber.OnReceiveFrameEvent(frame_event); |
445 | 426 |
446 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; | 427 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; |
447 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); | 428 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); |
448 | 429 |
449 ExpectPacketEQ(p.GetPacket().Pass(), | 430 ExpectPacketEQ(p.GetPacket().Pass(), |
450 rtcp_builder_->BuildRtcpFromReceiver( | 431 rtcp_builder_->BuildRtcpFromReceiver( |
451 &report_block, | 432 &report_block, |
452 NULL, | 433 NULL, |
453 NULL, | 434 NULL, |
454 &rtcp_events, | 435 &rtcp_events, |
455 kDefaultDelay)); | 436 kDefaultDelay)); |
456 | 437 |
457 testing_clock.Advance( | 438 testing_clock.Advance( |
(...skipping 13 matching lines...) Expand all Loading... |
471 // Sender report. | 452 // Sender report. |
472 TestRtcpPacketBuilder p; | 453 TestRtcpPacketBuilder p; |
473 p.AddSr(kSendingSsrc, 0); | 454 p.AddSr(kSendingSsrc, 0); |
474 | 455 |
475 ExpectPacketEQ(p.GetPacket().Pass(), | 456 ExpectPacketEQ(p.GetPacket().Pass(), |
476 rtcp_builder_->BuildRtcpFromSender(sender_info)); | 457 rtcp_builder_->BuildRtcpFromSender(sender_info)); |
477 } | 458 } |
478 | 459 |
479 } // namespace cast | 460 } // namespace cast |
480 } // namespace media | 461 } // namespace media |
OLD | NEW |