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 <stddef.h> | 5 #include <stddef.h> |
6 #include <stdint.h> | 6 #include <stdint.h> |
7 | 7 |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "base/test/simple_test_tick_clock.h" | 10 #include "base/test/simple_test_tick_clock.h" |
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
66 } | 66 } |
67 | 67 |
68 static RtpTimeTicks test_rtp_timestamp() { | 68 static RtpTimeTicks test_rtp_timestamp() { |
69 return RtpTimeTicks().Expand(kRtpTimestamp); | 69 return RtpTimeTicks().Expand(kRtpTimestamp); |
70 } | 70 } |
71 | 71 |
72 PacketRef BuildRtcpFromReceiver( | 72 PacketRef BuildRtcpFromReceiver( |
73 const RtcpReportBlock* report_block, | 73 const RtcpReportBlock* report_block, |
74 const RtcpReceiverReferenceTimeReport* rrtr, | 74 const RtcpReceiverReferenceTimeReport* rrtr, |
75 const RtcpCastMessage* cast_message, | 75 const RtcpCastMessage* cast_message, |
| 76 const RtcpPliMessage* pli_message, |
76 const ReceiverRtcpEventSubscriber::RtcpEvents* rtcp_events, | 77 const ReceiverRtcpEventSubscriber::RtcpEvents* rtcp_events, |
77 base::TimeDelta target_delay) { | 78 base::TimeDelta target_delay) { |
78 DCHECK(rtcp_builder_); | 79 DCHECK(rtcp_builder_); |
79 | 80 |
80 rtcp_builder_->Start(); | 81 rtcp_builder_->Start(); |
81 if (report_block) | 82 if (report_block) |
82 rtcp_builder_->AddRR(report_block); | 83 rtcp_builder_->AddRR(report_block); |
83 if (rrtr) | 84 if (rrtr) |
84 rtcp_builder_->AddRrtr(*rrtr); | 85 rtcp_builder_->AddRrtr(*rrtr); |
85 if (cast_message) | 86 if (cast_message) |
86 rtcp_builder_->AddCast(*cast_message, target_delay); | 87 rtcp_builder_->AddCast(*cast_message, target_delay); |
| 88 if (pli_message) |
| 89 rtcp_builder_->AddPli(*pli_message); |
87 if (rtcp_events) | 90 if (rtcp_events) |
88 rtcp_builder_->AddReceiverLog(*rtcp_events); | 91 rtcp_builder_->AddReceiverLog(*rtcp_events); |
89 return rtcp_builder_->Finish(); | 92 return rtcp_builder_->Finish(); |
90 } | 93 } |
91 | 94 |
92 scoped_ptr<RtcpBuilder> rtcp_builder_; | 95 scoped_ptr<RtcpBuilder> rtcp_builder_; |
93 | 96 |
94 DISALLOW_COPY_AND_ASSIGN(RtcpBuilderTest); | 97 DISALLOW_COPY_AND_ASSIGN(RtcpBuilderTest); |
95 }; | 98 }; |
96 | 99 |
97 TEST_F(RtcpBuilderTest, RtcpReceiverReport) { | 100 TEST_F(RtcpBuilderTest, RtcpReceiverReport) { |
98 // Receiver report with report block. | 101 // Receiver report with report block. |
99 TestRtcpPacketBuilder p2; | 102 TestRtcpPacketBuilder p2; |
100 p2.AddRr(kSendingSsrc, 1); | 103 p2.AddRr(kSendingSsrc, 1); |
101 p2.AddRb(kMediaSsrc); | 104 p2.AddRb(kMediaSsrc); |
102 | 105 |
103 RtcpReportBlock report_block = GetReportBlock(); | 106 RtcpReportBlock report_block = GetReportBlock(); |
104 | 107 |
105 ExpectPacketEQ( | 108 ExpectPacketEQ(p2.GetPacket(), |
106 p2.GetPacket(), | 109 BuildRtcpFromReceiver(&report_block, nullptr, nullptr, nullptr, |
107 BuildRtcpFromReceiver(&report_block, NULL, NULL, NULL, kDefaultDelay)); | 110 nullptr, kDefaultDelay)); |
108 } | 111 } |
109 | 112 |
110 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithRrtr) { | 113 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithRrtr) { |
111 // Receiver report with report block. | 114 // Receiver report with report block. |
112 TestRtcpPacketBuilder p; | 115 TestRtcpPacketBuilder p; |
113 p.AddRr(kSendingSsrc, 1); | 116 p.AddRr(kSendingSsrc, 1); |
114 p.AddRb(kMediaSsrc); | 117 p.AddRb(kMediaSsrc); |
115 p.AddXrHeader(kSendingSsrc); | 118 p.AddXrHeader(kSendingSsrc); |
116 p.AddXrRrtrBlock(); | 119 p.AddXrRrtrBlock(); |
117 | 120 |
118 RtcpReportBlock report_block = GetReportBlock(); | 121 RtcpReportBlock report_block = GetReportBlock(); |
119 | 122 |
120 RtcpReceiverReferenceTimeReport rrtr; | 123 RtcpReceiverReferenceTimeReport rrtr; |
121 rrtr.ntp_seconds = kNtpHigh; | 124 rrtr.ntp_seconds = kNtpHigh; |
122 rrtr.ntp_fraction = kNtpLow; | 125 rrtr.ntp_fraction = kNtpLow; |
123 | 126 |
124 ExpectPacketEQ( | 127 ExpectPacketEQ(p.GetPacket(), |
125 p.GetPacket(), | 128 BuildRtcpFromReceiver(&report_block, &rrtr, nullptr, nullptr, |
126 BuildRtcpFromReceiver(&report_block, &rrtr, NULL, NULL, kDefaultDelay)); | 129 nullptr, kDefaultDelay)); |
127 } | 130 } |
128 | 131 |
129 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithCast) { | 132 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithCast) { |
130 // Receiver report with report block. | 133 // Receiver report with report block. |
131 TestRtcpPacketBuilder p; | 134 TestRtcpPacketBuilder p; |
132 p.AddRr(kSendingSsrc, 1); | 135 p.AddRr(kSendingSsrc, 1); |
133 p.AddRb(kMediaSsrc); | 136 p.AddRb(kMediaSsrc); |
134 p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay); | 137 p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay); |
135 | 138 |
136 RtcpReportBlock report_block = GetReportBlock(); | 139 RtcpReportBlock report_block = GetReportBlock(); |
137 | 140 |
138 RtcpCastMessage cast_message(kMediaSsrc); | 141 RtcpCastMessage cast_message(kMediaSsrc); |
139 cast_message.ack_frame_id = kAckFrameId; | 142 cast_message.ack_frame_id = kAckFrameId; |
140 PacketIdSet missing_packets; | 143 PacketIdSet missing_packets; |
141 cast_message.missing_frames_and_packets[kLostFrameId] = missing_packets; | 144 cast_message.missing_frames_and_packets[kLostFrameId] = missing_packets; |
142 | 145 |
143 missing_packets.insert(kLostPacketId1); | 146 missing_packets.insert(kLostPacketId1); |
144 missing_packets.insert(kLostPacketId2); | 147 missing_packets.insert(kLostPacketId2); |
145 missing_packets.insert(kLostPacketId3); | 148 missing_packets.insert(kLostPacketId3); |
146 cast_message.missing_frames_and_packets[kFrameIdWithLostPackets] = | 149 cast_message.missing_frames_and_packets[kFrameIdWithLostPackets] = |
147 missing_packets; | 150 missing_packets; |
148 | 151 |
149 ExpectPacketEQ(p.GetPacket(), | 152 ExpectPacketEQ(p.GetPacket(), |
150 BuildRtcpFromReceiver(&report_block, NULL, &cast_message, NULL, | 153 BuildRtcpFromReceiver(&report_block, nullptr, &cast_message, |
151 kDefaultDelay)); | 154 nullptr, nullptr, kDefaultDelay)); |
152 } | 155 } |
153 | 156 |
154 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithRrtraAndCastMessage) { | 157 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithRrtraAndCastMessage) { |
155 TestRtcpPacketBuilder p; | 158 TestRtcpPacketBuilder p; |
156 p.AddRr(kSendingSsrc, 1); | 159 p.AddRr(kSendingSsrc, 1); |
157 p.AddRb(kMediaSsrc); | 160 p.AddRb(kMediaSsrc); |
158 p.AddXrHeader(kSendingSsrc); | 161 p.AddXrHeader(kSendingSsrc); |
159 p.AddXrRrtrBlock(); | 162 p.AddXrRrtrBlock(); |
160 p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay); | 163 p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay); |
161 | 164 |
162 RtcpReportBlock report_block = GetReportBlock(); | 165 RtcpReportBlock report_block = GetReportBlock(); |
163 | 166 |
164 RtcpReceiverReferenceTimeReport rrtr; | 167 RtcpReceiverReferenceTimeReport rrtr; |
165 rrtr.ntp_seconds = kNtpHigh; | 168 rrtr.ntp_seconds = kNtpHigh; |
166 rrtr.ntp_fraction = kNtpLow; | 169 rrtr.ntp_fraction = kNtpLow; |
167 | 170 |
168 RtcpCastMessage cast_message(kMediaSsrc); | 171 RtcpCastMessage cast_message(kMediaSsrc); |
169 cast_message.ack_frame_id = kAckFrameId; | 172 cast_message.ack_frame_id = kAckFrameId; |
170 PacketIdSet missing_packets; | 173 PacketIdSet missing_packets; |
171 cast_message.missing_frames_and_packets[kLostFrameId] = missing_packets; | 174 cast_message.missing_frames_and_packets[kLostFrameId] = missing_packets; |
172 | 175 |
173 missing_packets.insert(kLostPacketId1); | 176 missing_packets.insert(kLostPacketId1); |
174 missing_packets.insert(kLostPacketId2); | 177 missing_packets.insert(kLostPacketId2); |
175 missing_packets.insert(kLostPacketId3); | 178 missing_packets.insert(kLostPacketId3); |
176 cast_message.missing_frames_and_packets[kFrameIdWithLostPackets] = | 179 cast_message.missing_frames_and_packets[kFrameIdWithLostPackets] = |
177 missing_packets; | 180 missing_packets; |
178 | 181 |
179 ExpectPacketEQ(p.GetPacket(), | 182 ExpectPacketEQ(p.GetPacket(), |
180 BuildRtcpFromReceiver(&report_block, &rrtr, &cast_message, | 183 BuildRtcpFromReceiver(&report_block, &rrtr, &cast_message, |
181 NULL, kDefaultDelay)); | 184 nullptr, nullptr, kDefaultDelay)); |
182 } | 185 } |
183 | 186 |
184 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithRrtrCastMessageAndLog) { | 187 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithRrtrCastMessageAndLog) { |
185 static const uint32_t kTimeBaseMs = 12345678; | 188 static const uint32_t kTimeBaseMs = 12345678; |
186 static const uint32_t kTimeDelayMs = 10; | 189 static const uint32_t kTimeDelayMs = 10; |
187 | 190 |
188 TestRtcpPacketBuilder p; | 191 TestRtcpPacketBuilder p; |
189 p.AddRr(kSendingSsrc, 1); | 192 p.AddRr(kSendingSsrc, 1); |
190 p.AddRb(kMediaSsrc); | 193 p.AddRb(kMediaSsrc); |
191 p.AddXrHeader(kSendingSsrc); | 194 p.AddXrHeader(kSendingSsrc); |
(...skipping 15 matching lines...) Expand all Loading... |
207 missing_packets.insert(kLostPacketId2); | 210 missing_packets.insert(kLostPacketId2); |
208 missing_packets.insert(kLostPacketId3); | 211 missing_packets.insert(kLostPacketId3); |
209 cast_message.missing_frames_and_packets[kFrameIdWithLostPackets] = | 212 cast_message.missing_frames_and_packets[kFrameIdWithLostPackets] = |
210 missing_packets; | 213 missing_packets; |
211 | 214 |
212 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); | 215 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); |
213 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; | 216 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; |
214 | 217 |
215 ExpectPacketEQ(p.GetPacket(), | 218 ExpectPacketEQ(p.GetPacket(), |
216 BuildRtcpFromReceiver(&report_block, &rrtr, &cast_message, | 219 BuildRtcpFromReceiver(&report_block, &rrtr, &cast_message, |
217 &rtcp_events, kDefaultDelay)); | 220 nullptr, &rtcp_events, kDefaultDelay)); |
218 | 221 |
219 base::SimpleTestTickClock testing_clock; | 222 base::SimpleTestTickClock testing_clock; |
220 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); | 223 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); |
221 | 224 |
222 p.AddReceiverLog(kSendingSsrc); | 225 p.AddReceiverLog(kSendingSsrc); |
223 p.AddReceiverFrameLog(test_rtp_timestamp().lower_32_bits(), 2, kTimeBaseMs); | 226 p.AddReceiverFrameLog(test_rtp_timestamp().lower_32_bits(), 2, kTimeBaseMs); |
224 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); | 227 p.AddReceiverEventLog(0, FRAME_ACK_SENT, 0); |
225 p.AddReceiverEventLog(kLostPacketId1, PACKET_RECEIVED, kTimeDelayMs); | 228 p.AddReceiverEventLog(kLostPacketId1, PACKET_RECEIVED, kTimeDelayMs); |
226 | 229 |
227 FrameEvent frame_event; | 230 FrameEvent frame_event; |
228 frame_event.rtp_timestamp = test_rtp_timestamp(); | 231 frame_event.rtp_timestamp = test_rtp_timestamp(); |
229 frame_event.type = FRAME_ACK_SENT; | 232 frame_event.type = FRAME_ACK_SENT; |
230 frame_event.media_type = VIDEO_EVENT; | 233 frame_event.media_type = VIDEO_EVENT; |
231 frame_event.timestamp = testing_clock.NowTicks(); | 234 frame_event.timestamp = testing_clock.NowTicks(); |
232 event_subscriber.OnReceiveFrameEvent(frame_event); | 235 event_subscriber.OnReceiveFrameEvent(frame_event); |
233 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); | 236 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); |
234 | 237 |
235 PacketEvent packet_event; | 238 PacketEvent packet_event; |
236 packet_event.rtp_timestamp = test_rtp_timestamp(); | 239 packet_event.rtp_timestamp = test_rtp_timestamp(); |
237 packet_event.type = PACKET_RECEIVED; | 240 packet_event.type = PACKET_RECEIVED; |
238 packet_event.media_type = VIDEO_EVENT; | 241 packet_event.media_type = VIDEO_EVENT; |
239 packet_event.timestamp = testing_clock.NowTicks(); | 242 packet_event.timestamp = testing_clock.NowTicks(); |
240 packet_event.packet_id = kLostPacketId1; | 243 packet_event.packet_id = kLostPacketId1; |
241 event_subscriber.OnReceivePacketEvent(packet_event); | 244 event_subscriber.OnReceivePacketEvent(packet_event); |
242 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); | 245 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); |
243 EXPECT_EQ(2u, rtcp_events.size()); | 246 EXPECT_EQ(2u, rtcp_events.size()); |
244 | 247 |
245 ExpectPacketEQ(p.GetPacket(), | 248 ExpectPacketEQ(p.GetPacket(), |
246 BuildRtcpFromReceiver(&report_block, &rrtr, &cast_message, | 249 BuildRtcpFromReceiver(&report_block, &rrtr, &cast_message, |
247 &rtcp_events, kDefaultDelay)); | 250 nullptr, &rtcp_events, kDefaultDelay)); |
248 } | 251 } |
249 | 252 |
250 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithOversizedFrameLog) { | 253 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithOversizedFrameLog) { |
251 static const uint32_t kTimeBaseMs = 12345678; | 254 static const uint32_t kTimeBaseMs = 12345678; |
252 static const uint32_t kTimeDelayMs = 10; | 255 static const uint32_t kTimeDelayMs = 10; |
253 | 256 |
254 TestRtcpPacketBuilder p; | 257 TestRtcpPacketBuilder p; |
255 p.AddRr(kSendingSsrc, 1); | 258 p.AddRr(kSendingSsrc, 1); |
256 p.AddRb(kMediaSsrc); | 259 p.AddRb(kMediaSsrc); |
257 | 260 |
(...skipping 28 matching lines...) Expand all Loading... |
286 packet_event.timestamp = testing_clock.NowTicks(); | 289 packet_event.timestamp = testing_clock.NowTicks(); |
287 packet_event.packet_id = kLostPacketId1; | 290 packet_event.packet_id = kLostPacketId1; |
288 event_subscriber.OnReceivePacketEvent(packet_event); | 291 event_subscriber.OnReceivePacketEvent(packet_event); |
289 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); | 292 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); |
290 } | 293 } |
291 | 294 |
292 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; | 295 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; |
293 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); | 296 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); |
294 | 297 |
295 ExpectPacketEQ(p.GetPacket(), | 298 ExpectPacketEQ(p.GetPacket(), |
296 BuildRtcpFromReceiver(&report_block, NULL, NULL, &rtcp_events, | 299 BuildRtcpFromReceiver(&report_block, nullptr, nullptr, nullptr, |
297 kDefaultDelay)); | 300 &rtcp_events, kDefaultDelay)); |
298 } | 301 } |
299 | 302 |
300 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithTooManyLogFrames) { | 303 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithTooManyLogFrames) { |
301 static const uint32_t kTimeBaseMs = 12345678; | 304 static const uint32_t kTimeBaseMs = 12345678; |
302 static const uint32_t kTimeDelayMs = 10; | 305 static const uint32_t kTimeDelayMs = 10; |
303 | 306 |
304 TestRtcpPacketBuilder p; | 307 TestRtcpPacketBuilder p; |
305 p.AddRr(kSendingSsrc, 1); | 308 p.AddRr(kSendingSsrc, 1); |
306 p.AddRb(kMediaSsrc); | 309 p.AddRb(kMediaSsrc); |
307 | 310 |
(...skipping 23 matching lines...) Expand all Loading... |
331 frame_event.media_type = VIDEO_EVENT; | 334 frame_event.media_type = VIDEO_EVENT; |
332 frame_event.timestamp = testing_clock.NowTicks(); | 335 frame_event.timestamp = testing_clock.NowTicks(); |
333 event_subscriber.OnReceiveFrameEvent(frame_event); | 336 event_subscriber.OnReceiveFrameEvent(frame_event); |
334 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); | 337 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); |
335 } | 338 } |
336 | 339 |
337 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; | 340 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; |
338 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); | 341 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); |
339 | 342 |
340 ExpectPacketEQ(p.GetPacket(), | 343 ExpectPacketEQ(p.GetPacket(), |
341 BuildRtcpFromReceiver(&report_block, NULL, NULL, &rtcp_events, | 344 BuildRtcpFromReceiver(&report_block, nullptr, nullptr, nullptr, |
342 kDefaultDelay)); | 345 &rtcp_events, kDefaultDelay)); |
343 } | 346 } |
344 | 347 |
345 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithOldLogFrames) { | 348 TEST_F(RtcpBuilderTest, RtcpReceiverReportWithOldLogFrames) { |
346 static const uint32_t kTimeBaseMs = 12345678; | 349 static const uint32_t kTimeBaseMs = 12345678; |
347 | 350 |
348 TestRtcpPacketBuilder p; | 351 TestRtcpPacketBuilder p; |
349 p.AddRr(kSendingSsrc, 1); | 352 p.AddRr(kSendingSsrc, 1); |
350 p.AddRb(kMediaSsrc); | 353 p.AddRb(kMediaSsrc); |
351 | 354 |
352 RtcpReportBlock report_block = GetReportBlock(); | 355 RtcpReportBlock report_block = GetReportBlock(); |
(...skipping 22 matching lines...) Expand all Loading... |
375 frame_event.timestamp = testing_clock.NowTicks(); | 378 frame_event.timestamp = testing_clock.NowTicks(); |
376 event_subscriber.OnReceiveFrameEvent(frame_event); | 379 event_subscriber.OnReceiveFrameEvent(frame_event); |
377 testing_clock.Advance( | 380 testing_clock.Advance( |
378 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); | 381 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); |
379 } | 382 } |
380 | 383 |
381 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; | 384 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; |
382 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); | 385 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); |
383 | 386 |
384 ExpectPacketEQ(p.GetPacket(), | 387 ExpectPacketEQ(p.GetPacket(), |
385 BuildRtcpFromReceiver(&report_block, NULL, NULL, &rtcp_events, | 388 BuildRtcpFromReceiver(&report_block, nullptr, nullptr, nullptr, |
386 kDefaultDelay)); | 389 &rtcp_events, kDefaultDelay)); |
387 } | 390 } |
388 | 391 |
389 TEST_F(RtcpBuilderTest, RtcpReceiverReportRedundancy) { | 392 TEST_F(RtcpBuilderTest, RtcpReceiverReportRedundancy) { |
390 uint32_t time_base_ms = 12345678; | 393 uint32_t time_base_ms = 12345678; |
391 int kTimeBetweenEventsMs = 10; | 394 int kTimeBetweenEventsMs = 10; |
392 | 395 |
393 RtcpReportBlock report_block = GetReportBlock(); | 396 RtcpReportBlock report_block = GetReportBlock(); |
394 | 397 |
395 base::SimpleTestTickClock testing_clock; | 398 base::SimpleTestTickClock testing_clock; |
396 testing_clock.Advance(base::TimeDelta::FromMilliseconds(time_base_ms)); | 399 testing_clock.Advance(base::TimeDelta::FromMilliseconds(time_base_ms)); |
(...skipping 22 matching lines...) Expand all Loading... |
419 frame_event.rtp_timestamp = test_rtp_timestamp(); | 422 frame_event.rtp_timestamp = test_rtp_timestamp(); |
420 frame_event.type = FRAME_ACK_SENT; | 423 frame_event.type = FRAME_ACK_SENT; |
421 frame_event.media_type = VIDEO_EVENT; | 424 frame_event.media_type = VIDEO_EVENT; |
422 frame_event.timestamp = testing_clock.NowTicks(); | 425 frame_event.timestamp = testing_clock.NowTicks(); |
423 event_subscriber.OnReceiveFrameEvent(frame_event); | 426 event_subscriber.OnReceiveFrameEvent(frame_event); |
424 | 427 |
425 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; | 428 ReceiverRtcpEventSubscriber::RtcpEvents rtcp_events; |
426 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); | 429 event_subscriber.GetRtcpEventsWithRedundancy(&rtcp_events); |
427 | 430 |
428 ExpectPacketEQ(p.GetPacket(), | 431 ExpectPacketEQ(p.GetPacket(), |
429 BuildRtcpFromReceiver(&report_block, NULL, NULL, | 432 BuildRtcpFromReceiver(&report_block, nullptr, nullptr, |
430 &rtcp_events, kDefaultDelay)); | 433 nullptr, &rtcp_events, kDefaultDelay)); |
431 | 434 |
432 testing_clock.Advance( | 435 testing_clock.Advance( |
433 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); | 436 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); |
434 time_base_ms += kTimeBetweenEventsMs; | 437 time_base_ms += kTimeBetweenEventsMs; |
435 } | 438 } |
436 } | 439 } |
437 | 440 |
438 TEST_F(RtcpBuilderTest, RtcpSenderReport) { | 441 TEST_F(RtcpBuilderTest, RtcpSenderReport) { |
439 RtcpSenderInfo sender_info; | 442 RtcpSenderInfo sender_info; |
440 sender_info.ntp_seconds = kNtpHigh; | 443 sender_info.ntp_seconds = kNtpHigh; |
441 sender_info.ntp_fraction = kNtpLow; | 444 sender_info.ntp_fraction = kNtpLow; |
442 sender_info.rtp_timestamp = test_rtp_timestamp(); | 445 sender_info.rtp_timestamp = test_rtp_timestamp(); |
443 sender_info.send_packet_count = kSendPacketCount; | 446 sender_info.send_packet_count = kSendPacketCount; |
444 sender_info.send_octet_count = kSendOctetCount; | 447 sender_info.send_octet_count = kSendOctetCount; |
445 | 448 |
446 // Sender report. | 449 // Sender report. |
447 TestRtcpPacketBuilder p; | 450 TestRtcpPacketBuilder p; |
448 p.AddSr(kSendingSsrc, 0); | 451 p.AddSr(kSendingSsrc, 0); |
449 | 452 |
450 ExpectPacketEQ(p.GetPacket(), | 453 ExpectPacketEQ(p.GetPacket(), |
451 rtcp_builder_->BuildRtcpFromSender(sender_info)); | 454 rtcp_builder_->BuildRtcpFromSender(sender_info)); |
452 } | 455 } |
453 | 456 |
454 } // namespace cast | 457 } // namespace cast |
455 } // namespace media | 458 } // namespace media |
OLD | NEW |