OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/rtcp/receiver_rtcp_event_subscriber.h" | 9 #include "media/cast/rtcp/receiver_rtcp_event_subscriber.h" |
10 #include "media/cast/rtcp/rtcp_sender.h" | 10 #include "media/cast/rtcp/rtcp_sender.h" |
11 #include "media/cast/rtcp/rtcp_utility.h" | 11 #include "media/cast/rtcp/rtcp_utility.h" |
12 #include "media/cast/rtcp/test_rtcp_packet_builder.h" | 12 #include "media/cast/rtcp/test_rtcp_packet_builder.h" |
13 #include "media/cast/test/fake_single_thread_task_runner.h" | 13 #include "media/cast/test/fake_single_thread_task_runner.h" |
14 #include "media/cast/transport/cast_transport_defines.h" | 14 #include "media/cast/transport/cast_transport_defines.h" |
15 #include "media/cast/transport/pacing/paced_sender.h" | 15 #include "media/cast/transport/pacing/paced_sender.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 int16 kDefaultDelay = 100; |
24 static const std::string kCName("test@10.1.1.1"); | 25 static const std::string kCName("test@10.1.1.1"); |
25 | 26 |
26 transport::RtcpReportBlock GetReportBlock() { | 27 transport::RtcpReportBlock GetReportBlock() { |
27 transport::RtcpReportBlock report_block; | 28 transport::RtcpReportBlock report_block; |
28 // Initialize remote_ssrc to a "clearly illegal" value. | 29 // Initialize remote_ssrc to a "clearly illegal" value. |
29 report_block.remote_ssrc = 0xDEAD; | 30 report_block.remote_ssrc = 0xDEAD; |
30 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender. | 31 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender. |
31 report_block.fraction_lost = kLoss >> 24; | 32 report_block.fraction_lost = kLoss >> 24; |
32 report_block.cumulative_lost = kLoss; // 24 bits valid. | 33 report_block.cumulative_lost = kLoss; // 24 bits valid. |
33 report_block.extended_high_sequence_number = kExtendedMax; | 34 report_block.extended_high_sequence_number = kExtendedMax; |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
98 }; | 99 }; |
99 | 100 |
100 TEST_F(RtcpSenderTest, RtcpReceiverReport) { | 101 TEST_F(RtcpSenderTest, RtcpReceiverReport) { |
101 // Empty receiver report + c_name. | 102 // Empty receiver report + c_name. |
102 TestRtcpPacketBuilder p1; | 103 TestRtcpPacketBuilder p1; |
103 p1.AddRr(kSendingSsrc, 0); | 104 p1.AddRr(kSendingSsrc, 0); |
104 p1.AddSdesCname(kSendingSsrc, kCName); | 105 p1.AddSdesCname(kSendingSsrc, kCName); |
105 test_transport_.SetExpectedRtcpPacket(p1.GetPacket()); | 106 test_transport_.SetExpectedRtcpPacket(p1.GetPacket()); |
106 | 107 |
107 rtcp_sender_->SendRtcpFromRtpReceiver( | 108 rtcp_sender_->SendRtcpFromRtpReceiver( |
108 RtcpSender::kRtcpRr, NULL, NULL, NULL, NULL); | 109 transport::kRtcpRr, NULL, NULL, NULL, NULL, kDefaultDelay); |
109 | 110 |
110 EXPECT_EQ(1, test_transport_.packet_count()); | 111 EXPECT_EQ(1, test_transport_.packet_count()); |
111 | 112 |
112 // Receiver report with report block + c_name. | 113 // Receiver report with report block + c_name. |
113 TestRtcpPacketBuilder p2; | 114 TestRtcpPacketBuilder p2; |
114 p2.AddRr(kSendingSsrc, 1); | 115 p2.AddRr(kSendingSsrc, 1); |
115 p2.AddRb(kMediaSsrc); | 116 p2.AddRb(kMediaSsrc); |
116 p2.AddSdesCname(kSendingSsrc, kCName); | 117 p2.AddSdesCname(kSendingSsrc, kCName); |
117 test_transport_.SetExpectedRtcpPacket(p2.GetPacket().Pass()); | 118 test_transport_.SetExpectedRtcpPacket(p2.GetPacket().Pass()); |
118 | 119 |
119 transport::RtcpReportBlock report_block = GetReportBlock(); | 120 transport::RtcpReportBlock report_block = GetReportBlock(); |
120 | 121 |
121 rtcp_sender_->SendRtcpFromRtpReceiver( | 122 rtcp_sender_->SendRtcpFromRtpReceiver( |
122 RtcpSender::kRtcpRr, &report_block, NULL, NULL, NULL); | 123 transport::kRtcpRr, &report_block, NULL, NULL, NULL, kDefaultDelay); |
123 | 124 |
124 EXPECT_EQ(2, test_transport_.packet_count()); | 125 EXPECT_EQ(2, test_transport_.packet_count()); |
125 } | 126 } |
126 | 127 |
127 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtr) { | 128 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtr) { |
128 // Receiver report with report block + c_name. | 129 // Receiver report with report block + c_name. |
129 TestRtcpPacketBuilder p; | 130 TestRtcpPacketBuilder p; |
130 p.AddRr(kSendingSsrc, 1); | 131 p.AddRr(kSendingSsrc, 1); |
131 p.AddRb(kMediaSsrc); | 132 p.AddRb(kMediaSsrc); |
132 p.AddSdesCname(kSendingSsrc, kCName); | 133 p.AddSdesCname(kSendingSsrc, kCName); |
133 p.AddXrHeader(kSendingSsrc); | 134 p.AddXrHeader(kSendingSsrc); |
134 p.AddXrRrtrBlock(); | 135 p.AddXrRrtrBlock(); |
135 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); | 136 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
136 | 137 |
137 transport::RtcpReportBlock report_block = GetReportBlock(); | 138 transport::RtcpReportBlock report_block = GetReportBlock(); |
138 | 139 |
139 RtcpReceiverReferenceTimeReport rrtr; | 140 RtcpReceiverReferenceTimeReport rrtr; |
140 rrtr.ntp_seconds = kNtpHigh; | 141 rrtr.ntp_seconds = kNtpHigh; |
141 rrtr.ntp_fraction = kNtpLow; | 142 rrtr.ntp_fraction = kNtpLow; |
142 | 143 |
143 rtcp_sender_->SendRtcpFromRtpReceiver( | 144 rtcp_sender_->SendRtcpFromRtpReceiver( |
144 RtcpSender::kRtcpRr | RtcpSender::kRtcpRrtr, | 145 transport::kRtcpRr | transport::kRtcpRrtr, |
145 &report_block, | 146 &report_block, |
146 &rrtr, | 147 &rrtr, |
147 NULL, | 148 NULL, |
148 NULL); | 149 NULL, |
| 150 kDefaultDelay); |
149 | 151 |
150 EXPECT_EQ(1, test_transport_.packet_count()); | 152 EXPECT_EQ(1, test_transport_.packet_count()); |
151 } | 153 } |
152 | 154 |
153 TEST_F(RtcpSenderTest, RtcpReceiverReportWithCast) { | 155 TEST_F(RtcpSenderTest, RtcpReceiverReportWithCast) { |
154 // Receiver report with report block + c_name. | 156 // Receiver report with report block + c_name. |
155 TestRtcpPacketBuilder p; | 157 TestRtcpPacketBuilder p; |
156 p.AddRr(kSendingSsrc, 1); | 158 p.AddRr(kSendingSsrc, 1); |
157 p.AddRb(kMediaSsrc); | 159 p.AddRb(kMediaSsrc); |
158 p.AddSdesCname(kSendingSsrc, kCName); | 160 p.AddSdesCname(kSendingSsrc, kCName); |
159 p.AddCast(kSendingSsrc, kMediaSsrc); | 161 p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay); |
160 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); | 162 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
161 | 163 |
162 transport::RtcpReportBlock report_block = GetReportBlock(); | 164 transport::RtcpReportBlock report_block = GetReportBlock(); |
163 | 165 |
164 RtcpCastMessage cast_message(kMediaSsrc); | 166 RtcpCastMessage cast_message(kMediaSsrc); |
165 cast_message.ack_frame_id_ = kAckFrameId; | 167 cast_message.ack_frame_id_ = kAckFrameId; |
166 PacketIdSet missing_packets; | 168 PacketIdSet missing_packets; |
167 cast_message.missing_frames_and_packets_[kLostFrameId] = missing_packets; | 169 cast_message.missing_frames_and_packets_[kLostFrameId] = missing_packets; |
168 | 170 |
169 missing_packets.insert(kLostPacketId1); | 171 missing_packets.insert(kLostPacketId1); |
170 missing_packets.insert(kLostPacketId2); | 172 missing_packets.insert(kLostPacketId2); |
171 missing_packets.insert(kLostPacketId3); | 173 missing_packets.insert(kLostPacketId3); |
172 cast_message.missing_frames_and_packets_[kFrameIdWithLostPackets] = | 174 cast_message.missing_frames_and_packets_[kFrameIdWithLostPackets] = |
173 missing_packets; | 175 missing_packets; |
174 | 176 |
175 rtcp_sender_->SendRtcpFromRtpReceiver( | 177 rtcp_sender_->SendRtcpFromRtpReceiver( |
176 RtcpSender::kRtcpRr | RtcpSender::kRtcpCast, | 178 transport::kRtcpRr | transport::kRtcpCast, |
177 &report_block, | 179 &report_block, |
178 NULL, | 180 NULL, |
179 &cast_message, | 181 &cast_message, |
180 NULL); | 182 NULL, |
| 183 kDefaultDelay); |
181 | 184 |
182 EXPECT_EQ(1, test_transport_.packet_count()); | 185 EXPECT_EQ(1, test_transport_.packet_count()); |
183 } | 186 } |
184 | 187 |
185 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtraAndCastMessage) { | 188 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtraAndCastMessage) { |
186 TestRtcpPacketBuilder p; | 189 TestRtcpPacketBuilder p; |
187 p.AddRr(kSendingSsrc, 1); | 190 p.AddRr(kSendingSsrc, 1); |
188 p.AddRb(kMediaSsrc); | 191 p.AddRb(kMediaSsrc); |
189 p.AddSdesCname(kSendingSsrc, kCName); | 192 p.AddSdesCname(kSendingSsrc, kCName); |
190 p.AddXrHeader(kSendingSsrc); | 193 p.AddXrHeader(kSendingSsrc); |
191 p.AddXrRrtrBlock(); | 194 p.AddXrRrtrBlock(); |
192 p.AddCast(kSendingSsrc, kMediaSsrc); | 195 p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay); |
193 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); | 196 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
194 | 197 |
195 transport::RtcpReportBlock report_block = GetReportBlock(); | 198 transport::RtcpReportBlock report_block = GetReportBlock(); |
196 | 199 |
197 RtcpReceiverReferenceTimeReport rrtr; | 200 RtcpReceiverReferenceTimeReport rrtr; |
198 rrtr.ntp_seconds = kNtpHigh; | 201 rrtr.ntp_seconds = kNtpHigh; |
199 rrtr.ntp_fraction = kNtpLow; | 202 rrtr.ntp_fraction = kNtpLow; |
200 | 203 |
201 RtcpCastMessage cast_message(kMediaSsrc); | 204 RtcpCastMessage cast_message(kMediaSsrc); |
202 cast_message.ack_frame_id_ = kAckFrameId; | 205 cast_message.ack_frame_id_ = kAckFrameId; |
203 PacketIdSet missing_packets; | 206 PacketIdSet missing_packets; |
204 cast_message.missing_frames_and_packets_[kLostFrameId] = missing_packets; | 207 cast_message.missing_frames_and_packets_[kLostFrameId] = missing_packets; |
205 | 208 |
206 missing_packets.insert(kLostPacketId1); | 209 missing_packets.insert(kLostPacketId1); |
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 rtcp_sender_->SendRtcpFromRtpReceiver( | 215 rtcp_sender_->SendRtcpFromRtpReceiver( |
213 RtcpSender::kRtcpRr | RtcpSender::kRtcpRrtr | RtcpSender::kRtcpCast, | 216 transport::kRtcpRr | transport::kRtcpRrtr | transport::kRtcpCast, |
214 &report_block, | 217 &report_block, |
215 &rrtr, | 218 &rrtr, |
216 &cast_message, | 219 &cast_message, |
217 NULL); | 220 NULL, |
| 221 kDefaultDelay); |
218 | 222 |
219 EXPECT_EQ(1, test_transport_.packet_count()); | 223 EXPECT_EQ(1, test_transport_.packet_count()); |
220 } | 224 } |
221 | 225 |
222 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtrCastMessageAndLog) { | 226 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtrCastMessageAndLog) { |
223 static const uint32 kTimeBaseMs = 12345678; | 227 static const uint32 kTimeBaseMs = 12345678; |
224 static const uint32 kTimeDelayMs = 10; | 228 static const uint32 kTimeDelayMs = 10; |
225 | 229 |
226 TestRtcpPacketBuilder p; | 230 TestRtcpPacketBuilder p; |
227 p.AddRr(kSendingSsrc, 1); | 231 p.AddRr(kSendingSsrc, 1); |
228 p.AddRb(kMediaSsrc); | 232 p.AddRb(kMediaSsrc); |
229 p.AddSdesCname(kSendingSsrc, kCName); | 233 p.AddSdesCname(kSendingSsrc, kCName); |
230 p.AddXrHeader(kSendingSsrc); | 234 p.AddXrHeader(kSendingSsrc); |
231 p.AddXrRrtrBlock(); | 235 p.AddXrRrtrBlock(); |
232 p.AddCast(kSendingSsrc, kMediaSsrc); | 236 p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay); |
233 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); | 237 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
234 | 238 |
235 transport::RtcpReportBlock report_block = GetReportBlock(); | 239 transport::RtcpReportBlock report_block = GetReportBlock(); |
236 | 240 |
237 RtcpReceiverReferenceTimeReport rrtr; | 241 RtcpReceiverReferenceTimeReport rrtr; |
238 rrtr.ntp_seconds = kNtpHigh; | 242 rrtr.ntp_seconds = kNtpHigh; |
239 rrtr.ntp_fraction = kNtpLow; | 243 rrtr.ntp_fraction = kNtpLow; |
240 | 244 |
241 RtcpCastMessage cast_message(kMediaSsrc); | 245 RtcpCastMessage cast_message(kMediaSsrc); |
242 cast_message.ack_frame_id_ = kAckFrameId; | 246 cast_message.ack_frame_id_ = kAckFrameId; |
243 PacketIdSet missing_packets; | 247 PacketIdSet missing_packets; |
244 cast_message.missing_frames_and_packets_[kLostFrameId] = missing_packets; | 248 cast_message.missing_frames_and_packets_[kLostFrameId] = missing_packets; |
245 | 249 |
246 missing_packets.insert(kLostPacketId1); | 250 missing_packets.insert(kLostPacketId1); |
247 missing_packets.insert(kLostPacketId2); | 251 missing_packets.insert(kLostPacketId2); |
248 missing_packets.insert(kLostPacketId3); | 252 missing_packets.insert(kLostPacketId3); |
249 cast_message.missing_frames_and_packets_[kFrameIdWithLostPackets] = | 253 cast_message.missing_frames_and_packets_[kFrameIdWithLostPackets] = |
250 missing_packets; | 254 missing_packets; |
251 | 255 |
252 ReceiverRtcpEventSubscriber event_subscriber( | 256 ReceiverRtcpEventSubscriber event_subscriber( |
253 500, ReceiverRtcpEventSubscriber::kVideoEventSubscriber); | 257 500, ReceiverRtcpEventSubscriber::kVideoEventSubscriber); |
254 | 258 |
255 rtcp_sender_->SendRtcpFromRtpReceiver( | 259 rtcp_sender_->SendRtcpFromRtpReceiver( |
256 RtcpSender::kRtcpRr | RtcpSender::kRtcpRrtr | RtcpSender::kRtcpCast | | 260 transport::kRtcpRr | transport::kRtcpRrtr | transport::kRtcpCast | |
257 RtcpSender::kRtcpReceiverLog, | 261 transport::kRtcpReceiverLog, |
258 &report_block, | 262 &report_block, |
259 &rrtr, | 263 &rrtr, |
260 &cast_message, | 264 &cast_message, |
261 &event_subscriber); | 265 &event_subscriber, |
| 266 kDefaultDelay); |
262 | 267 |
263 base::SimpleTestTickClock testing_clock; | 268 base::SimpleTestTickClock testing_clock; |
264 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); | 269 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); |
265 | 270 |
266 p.AddReceiverLog(kSendingSsrc); | 271 p.AddReceiverLog(kSendingSsrc); |
267 p.AddReceiverFrameLog(kRtpTimestamp, 2, kTimeBaseMs); | 272 p.AddReceiverFrameLog(kRtpTimestamp, 2, kTimeBaseMs); |
268 p.AddReceiverEventLog(0, 5, 0); | 273 p.AddReceiverEventLog(0, 5, 0); |
269 p.AddReceiverEventLog(kLostPacketId1, 8, kTimeDelayMs); | 274 p.AddReceiverEventLog(kLostPacketId1, 8, kTimeDelayMs); |
270 | 275 |
271 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); | 276 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); |
272 | 277 |
273 FrameEvent frame_event; | 278 FrameEvent frame_event; |
274 frame_event.rtp_timestamp = kRtpTimestamp; | 279 frame_event.rtp_timestamp = kRtpTimestamp; |
275 frame_event.type = kVideoAckSent; | 280 frame_event.type = kVideoAckSent; |
276 frame_event.timestamp = testing_clock.NowTicks(); | 281 frame_event.timestamp = testing_clock.NowTicks(); |
277 event_subscriber.OnReceiveFrameEvent(frame_event); | 282 event_subscriber.OnReceiveFrameEvent(frame_event); |
278 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); | 283 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); |
279 | 284 |
280 PacketEvent packet_event; | 285 PacketEvent packet_event; |
281 packet_event.rtp_timestamp = kRtpTimestamp; | 286 packet_event.rtp_timestamp = kRtpTimestamp; |
282 packet_event.type = kVideoPacketReceived; | 287 packet_event.type = kVideoPacketReceived; |
283 packet_event.timestamp = testing_clock.NowTicks(); | 288 packet_event.timestamp = testing_clock.NowTicks(); |
284 packet_event.packet_id = kLostPacketId1; | 289 packet_event.packet_id = kLostPacketId1; |
285 event_subscriber.OnReceivePacketEvent(packet_event); | 290 event_subscriber.OnReceivePacketEvent(packet_event); |
286 EXPECT_EQ(2u, event_subscriber.get_rtcp_events().size()); | 291 EXPECT_EQ(2u, event_subscriber.get_rtcp_events().size()); |
287 | 292 |
288 rtcp_sender_->SendRtcpFromRtpReceiver( | 293 rtcp_sender_->SendRtcpFromRtpReceiver( |
289 RtcpSender::kRtcpRr | RtcpSender::kRtcpRrtr | RtcpSender::kRtcpCast | | 294 transport::kRtcpRr | transport::kRtcpRrtr | transport::kRtcpCast | |
290 RtcpSender::kRtcpReceiverLog, | 295 transport::kRtcpReceiverLog, |
291 &report_block, | 296 &report_block, |
292 &rrtr, | 297 &rrtr, |
293 &cast_message, | 298 &cast_message, |
294 &event_subscriber); | 299 &event_subscriber, |
| 300 kDefaultDelay); |
295 | 301 |
296 EXPECT_EQ(2, test_transport_.packet_count()); | 302 EXPECT_EQ(2, test_transport_.packet_count()); |
297 | 303 |
298 // We expect to see the same packet because we send redundant events. | 304 // We expect to see the same packet because we send redundant events. |
299 rtcp_sender_->SendRtcpFromRtpReceiver( | 305 rtcp_sender_->SendRtcpFromRtpReceiver( |
300 RtcpSender::kRtcpRr | RtcpSender::kRtcpRrtr | RtcpSender::kRtcpCast | | 306 transport::kRtcpRr | transport::kRtcpRrtr | transport::kRtcpCast | |
301 RtcpSender::kRtcpReceiverLog, | 307 transport::kRtcpReceiverLog, |
302 &report_block, | 308 &report_block, |
303 &rrtr, | 309 &rrtr, |
304 &cast_message, | 310 &cast_message, |
305 &event_subscriber); | 311 &event_subscriber, |
| 312 kDefaultDelay); |
306 | 313 |
307 EXPECT_EQ(3, test_transport_.packet_count()); | 314 EXPECT_EQ(3, test_transport_.packet_count()); |
308 } | 315 } |
309 | 316 |
310 TEST_F(RtcpSenderTest, RtcpReceiverReportWithOversizedFrameLog) { | 317 TEST_F(RtcpSenderTest, RtcpReceiverReportWithOversizedFrameLog) { |
311 static const uint32 kTimeBaseMs = 12345678; | 318 static const uint32 kTimeBaseMs = 12345678; |
312 static const uint32 kTimeDelayMs = 10; | 319 static const uint32 kTimeDelayMs = 10; |
313 | 320 |
314 TestRtcpPacketBuilder p; | 321 TestRtcpPacketBuilder p; |
315 p.AddRr(kSendingSsrc, 1); | 322 p.AddRr(kSendingSsrc, 1); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
353 PacketEvent packet_event; | 360 PacketEvent packet_event; |
354 packet_event.rtp_timestamp = kRtpTimestamp + 2345; | 361 packet_event.rtp_timestamp = kRtpTimestamp + 2345; |
355 packet_event.type = kVideoPacketReceived; | 362 packet_event.type = kVideoPacketReceived; |
356 packet_event.timestamp = testing_clock.NowTicks(); | 363 packet_event.timestamp = testing_clock.NowTicks(); |
357 packet_event.packet_id = kLostPacketId1; | 364 packet_event.packet_id = kLostPacketId1; |
358 event_subscriber.OnReceivePacketEvent(packet_event); | 365 event_subscriber.OnReceivePacketEvent(packet_event); |
359 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); | 366 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); |
360 } | 367 } |
361 | 368 |
362 rtcp_sender_->SendRtcpFromRtpReceiver( | 369 rtcp_sender_->SendRtcpFromRtpReceiver( |
363 RtcpSender::kRtcpRr | RtcpSender::kRtcpReceiverLog, | 370 transport::kRtcpRr | transport::kRtcpReceiverLog, |
364 &report_block, | 371 &report_block, |
365 NULL, | 372 NULL, |
366 NULL, | 373 NULL, |
367 &event_subscriber); | 374 &event_subscriber, |
| 375 kDefaultDelay); |
368 | 376 |
369 EXPECT_EQ(1, test_transport_.packet_count()); | 377 EXPECT_EQ(1, test_transport_.packet_count()); |
370 } | 378 } |
371 | 379 |
372 TEST_F(RtcpSenderTest, RtcpReceiverReportWithTooManyLogFrames) { | 380 TEST_F(RtcpSenderTest, RtcpReceiverReportWithTooManyLogFrames) { |
373 static const uint32 kTimeBaseMs = 12345678; | 381 static const uint32 kTimeBaseMs = 12345678; |
374 static const uint32 kTimeDelayMs = 10; | 382 static const uint32 kTimeDelayMs = 10; |
375 | 383 |
376 TestRtcpPacketBuilder p; | 384 TestRtcpPacketBuilder p; |
377 p.AddRr(kSendingSsrc, 1); | 385 p.AddRr(kSendingSsrc, 1); |
(...skipping 28 matching lines...) Expand all Loading... |
406 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) { | 414 for (size_t i = 0; i < kRtcpMaxReceiverLogMessages; ++i) { |
407 FrameEvent frame_event; | 415 FrameEvent frame_event; |
408 frame_event.rtp_timestamp = kRtpTimestamp + static_cast<int>(i); | 416 frame_event.rtp_timestamp = kRtpTimestamp + static_cast<int>(i); |
409 frame_event.type = media::cast::kVideoAckSent; | 417 frame_event.type = media::cast::kVideoAckSent; |
410 frame_event.timestamp = testing_clock.NowTicks(); | 418 frame_event.timestamp = testing_clock.NowTicks(); |
411 event_subscriber.OnReceiveFrameEvent(frame_event); | 419 event_subscriber.OnReceiveFrameEvent(frame_event); |
412 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); | 420 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); |
413 } | 421 } |
414 | 422 |
415 rtcp_sender_->SendRtcpFromRtpReceiver( | 423 rtcp_sender_->SendRtcpFromRtpReceiver( |
416 RtcpSender::kRtcpRr | RtcpSender::kRtcpReceiverLog, | 424 transport::kRtcpRr | transport::kRtcpReceiverLog, |
417 &report_block, | 425 &report_block, |
418 NULL, | 426 NULL, |
419 NULL, | 427 NULL, |
420 &event_subscriber); | 428 &event_subscriber, |
| 429 kDefaultDelay); |
421 | 430 |
422 EXPECT_EQ(1, test_transport_.packet_count()); | 431 EXPECT_EQ(1, test_transport_.packet_count()); |
423 } | 432 } |
424 | 433 |
425 TEST_F(RtcpSenderTest, RtcpReceiverReportWithOldLogFrames) { | 434 TEST_F(RtcpSenderTest, RtcpReceiverReportWithOldLogFrames) { |
426 static const uint32 kTimeBaseMs = 12345678; | 435 static const uint32 kTimeBaseMs = 12345678; |
427 | 436 |
428 TestRtcpPacketBuilder p; | 437 TestRtcpPacketBuilder p; |
429 p.AddRr(kSendingSsrc, 1); | 438 p.AddRr(kSendingSsrc, 1); |
430 p.AddRb(kMediaSsrc); | 439 p.AddRb(kMediaSsrc); |
(...skipping 22 matching lines...) Expand all Loading... |
453 FrameEvent frame_event; | 462 FrameEvent frame_event; |
454 frame_event.rtp_timestamp = kRtpTimestamp; | 463 frame_event.rtp_timestamp = kRtpTimestamp; |
455 frame_event.type = media::cast::kVideoAckSent; | 464 frame_event.type = media::cast::kVideoAckSent; |
456 frame_event.timestamp = testing_clock.NowTicks(); | 465 frame_event.timestamp = testing_clock.NowTicks(); |
457 event_subscriber.OnReceiveFrameEvent(frame_event); | 466 event_subscriber.OnReceiveFrameEvent(frame_event); |
458 testing_clock.Advance( | 467 testing_clock.Advance( |
459 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); | 468 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); |
460 } | 469 } |
461 | 470 |
462 rtcp_sender_->SendRtcpFromRtpReceiver( | 471 rtcp_sender_->SendRtcpFromRtpReceiver( |
463 RtcpSender::kRtcpRr | RtcpSender::kRtcpReceiverLog, | 472 transport::kRtcpRr | transport::kRtcpReceiverLog, |
464 &report_block, | 473 &report_block, |
465 NULL, | 474 NULL, |
466 NULL, | 475 NULL, |
467 &event_subscriber); | 476 &event_subscriber, |
| 477 kDefaultDelay); |
468 | 478 |
469 EXPECT_EQ(1, test_transport_.packet_count()); | 479 EXPECT_EQ(1, test_transport_.packet_count()); |
470 } | 480 } |
471 | 481 |
472 } // namespace cast | 482 } // namespace cast |
473 } // namespace media | 483 } // namespace media |
OLD | NEW |