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/test/simple_test_tick_clock.h" | 5 #include "base/test/simple_test_tick_clock.h" |
6 #include "media/cast/cast_defines.h" | 6 #include "media/cast/cast_defines.h" |
7 #include "media/cast/pacing/paced_sender.h" | 7 #include "media/cast/pacing/paced_sender.h" |
8 #include "media/cast/rtcp/mock_rtcp_receiver_feedback.h" | 8 #include "media/cast/rtcp/mock_rtcp_receiver_feedback.h" |
9 #include "media/cast/rtcp/mock_rtcp_sender_feedback.h" | 9 #include "media/cast/rtcp/mock_rtcp_sender_feedback.h" |
10 #include "media/cast/rtcp/rtcp.h" | 10 #include "media/cast/rtcp/rtcp.h" |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
62 | 62 |
63 class RtcpPeer : public Rtcp { | 63 class RtcpPeer : public Rtcp { |
64 public: | 64 public: |
65 RtcpPeer(base::TickClock* clock, | 65 RtcpPeer(base::TickClock* clock, |
66 RtcpSenderFeedback* sender_feedback, | 66 RtcpSenderFeedback* sender_feedback, |
67 PacedPacketSender* const paced_packet_sender, | 67 PacedPacketSender* const paced_packet_sender, |
68 RtpSenderStatistics* rtp_sender_statistics, | 68 RtpSenderStatistics* rtp_sender_statistics, |
69 RtpReceiverStatistics* rtp_receiver_statistics, | 69 RtpReceiverStatistics* rtp_receiver_statistics, |
70 RtcpMode rtcp_mode, | 70 RtcpMode rtcp_mode, |
71 const base::TimeDelta& rtcp_interval, | 71 const base::TimeDelta& rtcp_interval, |
72 bool sending_media, | |
73 uint32 local_ssrc, | 72 uint32 local_ssrc, |
| 73 uint32 remote_ssrc, |
74 const std::string& c_name) | 74 const std::string& c_name) |
75 : Rtcp(clock, | 75 : Rtcp(clock, |
76 sender_feedback, | 76 sender_feedback, |
77 paced_packet_sender, | 77 paced_packet_sender, |
78 rtp_sender_statistics, | 78 rtp_sender_statistics, |
79 rtp_receiver_statistics, | 79 rtp_receiver_statistics, |
80 rtcp_mode, | 80 rtcp_mode, |
81 rtcp_interval, | 81 rtcp_interval, |
82 sending_media, | |
83 local_ssrc, | 82 local_ssrc, |
| 83 remote_ssrc, |
84 c_name) { | 84 c_name) { |
85 } | 85 } |
86 | 86 |
87 using Rtcp::CheckForWrapAround; | 87 using Rtcp::CheckForWrapAround; |
88 using Rtcp::OnReceivedLipSyncInfo; | 88 using Rtcp::OnReceivedLipSyncInfo; |
89 }; | 89 }; |
90 | 90 |
91 class RtcpTest : public ::testing::Test { | 91 class RtcpTest : public ::testing::Test { |
92 protected: | 92 protected: |
93 RtcpTest() | 93 RtcpTest() |
(...skipping 16 matching lines...) Expand all Loading... |
110 TEST_F(RtcpTest, TimeToSend) { | 110 TEST_F(RtcpTest, TimeToSend) { |
111 base::TimeTicks start_time; | 111 base::TimeTicks start_time; |
112 start_time += base::TimeDelta::FromMilliseconds(kStartMillisecond); | 112 start_time += base::TimeDelta::FromMilliseconds(kStartMillisecond); |
113 Rtcp rtcp(&testing_clock_, | 113 Rtcp rtcp(&testing_clock_, |
114 &mock_sender_feedback_, | 114 &mock_sender_feedback_, |
115 &transport_, | 115 &transport_, |
116 NULL, | 116 NULL, |
117 NULL, | 117 NULL, |
118 kRtcpCompound, | 118 kRtcpCompound, |
119 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 119 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
120 true, // Media sender. | |
121 kSenderSsrc, | 120 kSenderSsrc, |
| 121 kReceiverSsrc, |
122 kCName); | 122 kCName); |
123 transport_.SetRtcpReceiver(&rtcp); | 123 transport_.SetRtcpReceiver(&rtcp); |
124 EXPECT_LE(start_time, rtcp.TimeToSendNextRtcpReport()); | 124 EXPECT_LE(start_time, rtcp.TimeToSendNextRtcpReport()); |
125 EXPECT_GE(start_time + base::TimeDelta::FromMilliseconds( | 125 EXPECT_GE(start_time + base::TimeDelta::FromMilliseconds( |
126 kRtcpIntervalMs * 3 / 2), | 126 kRtcpIntervalMs * 3 / 2), |
127 rtcp.TimeToSendNextRtcpReport()); | 127 rtcp.TimeToSendNextRtcpReport()); |
128 base::TimeDelta delta = rtcp.TimeToSendNextRtcpReport() - start_time; | 128 base::TimeDelta delta = rtcp.TimeToSendNextRtcpReport() - start_time; |
129 testing_clock_.Advance(delta); | 129 testing_clock_.Advance(delta); |
130 EXPECT_EQ(testing_clock_.NowTicks(), rtcp.TimeToSendNextRtcpReport()); | 130 EXPECT_EQ(testing_clock_.NowTicks(), rtcp.TimeToSendNextRtcpReport()); |
131 } | 131 } |
132 | 132 |
133 TEST_F(RtcpTest, BasicSenderReport) { | 133 TEST_F(RtcpTest, BasicSenderReport) { |
134 Rtcp rtcp(&testing_clock_, | 134 Rtcp rtcp(&testing_clock_, |
135 &mock_sender_feedback_, | 135 &mock_sender_feedback_, |
136 &transport_, | 136 &transport_, |
137 NULL, | 137 NULL, |
138 NULL, | 138 NULL, |
139 kRtcpCompound, | 139 kRtcpCompound, |
140 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 140 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
141 true, // Media sender. | |
142 kSenderSsrc, | 141 kSenderSsrc, |
| 142 kReceiverSsrc, |
143 kCName); | 143 kCName); |
144 transport_.SetRtcpReceiver(&rtcp); | 144 transport_.SetRtcpReceiver(&rtcp); |
145 rtcp.SendRtcpReport(kUnknownSsrc); | 145 rtcp.SendRtcpFromRtpSender(NULL); |
146 } | 146 } |
147 | 147 |
148 TEST_F(RtcpTest, BasicReceiverReport) { | 148 TEST_F(RtcpTest, BasicReceiverReport) { |
149 Rtcp rtcp(&testing_clock_, | 149 Rtcp rtcp(&testing_clock_, |
150 &mock_sender_feedback_, | 150 &mock_sender_feedback_, |
151 &transport_, | 151 &transport_, |
152 NULL, | 152 NULL, |
153 NULL, | 153 NULL, |
154 kRtcpCompound, | 154 kRtcpCompound, |
155 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 155 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
156 false, // Media receiver. | |
157 kSenderSsrc, | 156 kSenderSsrc, |
| 157 kReceiverSsrc, |
158 kCName); | 158 kCName); |
159 transport_.SetRtcpReceiver(&rtcp); | 159 transport_.SetRtcpReceiver(&rtcp); |
160 rtcp.SetRemoteSSRC(kSenderSsrc); | 160 rtcp.SendRtcpFromRtpReceiver(NULL, NULL); |
161 rtcp.SendRtcpReport(kSenderSsrc); | |
162 } | 161 } |
163 | 162 |
164 TEST_F(RtcpTest, BasicCast) { | 163 TEST_F(RtcpTest, BasicCast) { |
165 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(1); | 164 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(1); |
166 | 165 |
167 // Media receiver. | 166 // Media receiver. |
168 Rtcp rtcp(&testing_clock_, | 167 Rtcp rtcp(&testing_clock_, |
169 &mock_sender_feedback_, | 168 &mock_sender_feedback_, |
170 &transport_, | 169 &transport_, |
171 NULL, | 170 NULL, |
172 NULL, | 171 NULL, |
173 kRtcpReducedSize, | 172 kRtcpReducedSize, |
174 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 173 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
175 false, | 174 kSenderSsrc, |
176 kSenderSsrc, | 175 kSenderSsrc, |
177 kCName); | 176 kCName); |
178 transport_.SetRtcpReceiver(&rtcp); | 177 transport_.SetRtcpReceiver(&rtcp); |
179 rtcp.SetRemoteSSRC(kSenderSsrc); | |
180 RtcpCastMessage cast_message(kSenderSsrc); | 178 RtcpCastMessage cast_message(kSenderSsrc); |
181 cast_message.ack_frame_id_ = kAckFrameId; | 179 cast_message.ack_frame_id_ = kAckFrameId; |
182 PacketIdSet missing_packets; | 180 PacketIdSet missing_packets; |
183 cast_message.missing_frames_and_packets_[ | 181 cast_message.missing_frames_and_packets_[ |
184 kLostFrameId] = missing_packets; | 182 kLostFrameId] = missing_packets; |
185 | 183 |
186 missing_packets.insert(kLostPacketId1); | 184 missing_packets.insert(kLostPacketId1); |
187 missing_packets.insert(kLostPacketId2); | 185 missing_packets.insert(kLostPacketId2); |
188 missing_packets.insert(kLostPacketId3); | 186 missing_packets.insert(kLostPacketId3); |
189 cast_message.missing_frames_and_packets_[ | 187 cast_message.missing_frames_and_packets_[kFrameIdWithLostPackets] = |
190 kFrameIdWithLostPackets] = missing_packets; | 188 missing_packets; |
191 rtcp.SendRtcpCast(cast_message); | 189 rtcp.SendRtcpFromRtpReceiver(&cast_message, NULL); |
192 } | 190 } |
193 | 191 |
194 TEST_F(RtcpTest, Rtt) { | 192 TEST_F(RtcpTest, RttReducedSizeRtcp) { |
195 // Media receiver. | 193 // Media receiver. |
196 LocalRtcpTransport receiver_transport(&testing_clock_); | 194 LocalRtcpTransport receiver_transport(&testing_clock_); |
197 Rtcp rtcp_receiver(&testing_clock_, | 195 Rtcp rtcp_receiver(&testing_clock_, |
198 &mock_sender_feedback_, | 196 &mock_sender_feedback_, |
199 &receiver_transport, | 197 &receiver_transport, |
200 NULL, | 198 NULL, |
201 NULL, | 199 NULL, |
202 kRtcpReducedSize, | 200 kRtcpReducedSize, |
203 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 201 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
204 false, | |
205 kReceiverSsrc, | 202 kReceiverSsrc, |
| 203 kSenderSsrc, |
206 kCName); | 204 kCName); |
207 | 205 |
208 // Media sender. | 206 // Media sender. |
209 LocalRtcpTransport sender_transport(&testing_clock_); | 207 LocalRtcpTransport sender_transport(&testing_clock_); |
210 Rtcp rtcp_sender(&testing_clock_, | 208 Rtcp rtcp_sender(&testing_clock_, |
211 &mock_sender_feedback_, | 209 &mock_sender_feedback_, |
212 &sender_transport, | 210 &sender_transport, |
213 NULL, | 211 NULL, |
214 NULL, | 212 NULL, |
215 kRtcpReducedSize, | 213 kRtcpReducedSize, |
216 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 214 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
217 true, | |
218 kSenderSsrc, | 215 kSenderSsrc, |
| 216 kReceiverSsrc, |
219 kCName); | 217 kCName); |
220 | 218 |
221 receiver_transport.SetRtcpReceiver(&rtcp_sender); | 219 receiver_transport.SetRtcpReceiver(&rtcp_sender); |
222 sender_transport.SetRtcpReceiver(&rtcp_receiver); | 220 sender_transport.SetRtcpReceiver(&rtcp_receiver); |
223 | 221 |
224 rtcp_sender.SetRemoteSSRC(kReceiverSsrc); | |
225 rtcp_receiver.SetRemoteSSRC(kSenderSsrc); | |
226 | |
227 base::TimeDelta rtt; | 222 base::TimeDelta rtt; |
228 base::TimeDelta avg_rtt; | 223 base::TimeDelta avg_rtt; |
229 base::TimeDelta min_rtt; | 224 base::TimeDelta min_rtt; |
230 base::TimeDelta max_rtt; | 225 base::TimeDelta max_rtt; |
231 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 226 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
232 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 227 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
233 | 228 |
234 rtcp_sender.SendRtcpReport(kSenderSsrc); | 229 rtcp_sender.SendRtcpFromRtpSender(NULL); |
235 rtcp_receiver.SendRtcpReport(kSenderSsrc); | 230 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
236 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 231 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
237 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 232 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
238 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 1); | 233 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 1); |
239 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 1); | 234 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 1); |
240 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 1); | 235 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 1); |
241 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); | 236 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); |
242 rtcp_sender.SendRtcpReport(kSenderSsrc); | 237 rtcp_sender.SendRtcpFromRtpSender(NULL); |
243 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 238 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
244 | 239 |
245 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 1); | 240 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 1); |
246 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 1); | 241 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 1); |
247 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 1); | 242 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 1); |
248 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); | 243 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); |
| 244 } |
| 245 |
| 246 TEST_F(RtcpTest, Rtt) { |
| 247 // Media receiver. |
| 248 LocalRtcpTransport receiver_transport(&testing_clock_); |
| 249 Rtcp rtcp_receiver(&testing_clock_, |
| 250 &mock_sender_feedback_, |
| 251 &receiver_transport, |
| 252 NULL, |
| 253 NULL, |
| 254 kRtcpCompound, |
| 255 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
| 256 kReceiverSsrc, |
| 257 kSenderSsrc, |
| 258 kCName); |
| 259 |
| 260 // Media sender. |
| 261 LocalRtcpTransport sender_transport(&testing_clock_); |
| 262 Rtcp rtcp_sender(&testing_clock_, |
| 263 &mock_sender_feedback_, |
| 264 &sender_transport, |
| 265 NULL, |
| 266 NULL, |
| 267 kRtcpCompound, |
| 268 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
| 269 kSenderSsrc, |
| 270 kReceiverSsrc, |
| 271 kCName); |
| 272 |
| 273 receiver_transport.SetRtcpReceiver(&rtcp_sender); |
| 274 sender_transport.SetRtcpReceiver(&rtcp_receiver); |
| 275 |
| 276 base::TimeDelta rtt; |
| 277 base::TimeDelta avg_rtt; |
| 278 base::TimeDelta min_rtt; |
| 279 base::TimeDelta max_rtt; |
| 280 EXPECT_FALSE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 281 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 282 |
| 283 rtcp_sender.SendRtcpFromRtpSender(NULL); |
| 284 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
| 285 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 286 EXPECT_FALSE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 287 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 1); |
| 288 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 1); |
| 289 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 1); |
| 290 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); |
| 291 |
| 292 rtcp_sender.SendRtcpFromRtpSender(NULL); |
| 293 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 294 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 1); |
| 295 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 1); |
| 296 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 1); |
| 297 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); |
249 | 298 |
250 receiver_transport.SetShortDelay(); | 299 receiver_transport.SetShortDelay(); |
251 sender_transport.SetShortDelay(); | 300 sender_transport.SetShortDelay(); |
252 rtcp_receiver.SendRtcpReport(kSenderSsrc); | 301 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
253 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 302 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
254 | |
255 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, rtt.InMilliseconds(), 1); | 303 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, rtt.InMilliseconds(), 1); |
256 EXPECT_NEAR((kAddedShortDelay + 3 * kAddedDelay) / 2, | 304 EXPECT_NEAR((kAddedShortDelay + 3 * kAddedDelay) / 2, |
257 avg_rtt.InMilliseconds(), | 305 avg_rtt.InMilliseconds(), |
258 1); | 306 1); |
259 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, min_rtt.InMilliseconds(), 1); | 307 EXPECT_NEAR(kAddedDelay + kAddedShortDelay, min_rtt.InMilliseconds(), 1); |
260 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); | 308 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); |
261 rtcp_sender.SendRtcpReport(kSenderSsrc); | 309 |
| 310 rtcp_sender.SendRtcpFromRtpSender(NULL); |
262 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 311 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
263 | |
264 EXPECT_NEAR(2 * kAddedShortDelay, rtt.InMilliseconds(), 1); | 312 EXPECT_NEAR(2 * kAddedShortDelay, rtt.InMilliseconds(), 1); |
265 EXPECT_NEAR((2 * kAddedShortDelay + 2 * kAddedDelay) / 2, | 313 EXPECT_NEAR((2 * kAddedShortDelay + 2 * kAddedDelay) / 2, |
266 avg_rtt.InMilliseconds(), | 314 avg_rtt.InMilliseconds(), |
267 1); | 315 1); |
268 EXPECT_NEAR(2 * kAddedShortDelay, min_rtt.InMilliseconds(), 1); | 316 EXPECT_NEAR(2 * kAddedShortDelay, min_rtt.InMilliseconds(), 1); |
269 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); | 317 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); |
| 318 |
| 319 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
| 320 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 321 EXPECT_NEAR(2 * kAddedShortDelay, rtt.InMilliseconds(), 1); |
| 322 EXPECT_NEAR(2 * kAddedShortDelay, min_rtt.InMilliseconds(), 1); |
| 323 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); |
| 324 |
| 325 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
| 326 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 327 EXPECT_NEAR(2 * kAddedShortDelay, rtt.InMilliseconds(), 1); |
| 328 EXPECT_NEAR(2 * kAddedShortDelay, min_rtt.InMilliseconds(), 1); |
| 329 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); |
270 } | 330 } |
271 | 331 |
272 TEST_F(RtcpTest, NtpAndTime) { | 332 TEST_F(RtcpTest, NtpAndTime) { |
273 const int64 kSecondsbetweenYear1900and2010 = GG_INT64_C(40176 * 24 * 60 * 60); | 333 const int64 kSecondsbetweenYear1900and2010 = GG_INT64_C(40176 * 24 * 60 * 60); |
274 const int64 kSecondsbetweenYear1900and2030 = GG_INT64_C(47481 * 24 * 60 * 60); | 334 const int64 kSecondsbetweenYear1900and2030 = GG_INT64_C(47481 * 24 * 60 * 60); |
275 | 335 |
276 uint32 ntp_seconds_1 = 0; | 336 uint32 ntp_seconds_1 = 0; |
277 uint32 ntp_fractions_1 = 0; | 337 uint32 ntp_fractions_1 = 0; |
278 base::TimeTicks input_time = base::TimeTicks::Now(); | 338 base::TimeTicks input_time = base::TimeTicks::Now(); |
279 ConvertTimeTicksToNtp(input_time, &ntp_seconds_1, &ntp_fractions_1); | 339 ConvertTimeTicksToNtp(input_time, &ntp_seconds_1, &ntp_fractions_1); |
(...skipping 22 matching lines...) Expand all Loading... |
302 } | 362 } |
303 | 363 |
304 TEST_F(RtcpTest, WrapAround) { | 364 TEST_F(RtcpTest, WrapAround) { |
305 RtcpPeer rtcp_peer(&testing_clock_, | 365 RtcpPeer rtcp_peer(&testing_clock_, |
306 &mock_sender_feedback_, | 366 &mock_sender_feedback_, |
307 NULL, | 367 NULL, |
308 NULL, | 368 NULL, |
309 NULL, | 369 NULL, |
310 kRtcpReducedSize, | 370 kRtcpReducedSize, |
311 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 371 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
312 false, | |
313 kReceiverSsrc, | 372 kReceiverSsrc, |
| 373 kSenderSsrc, |
314 kCName); | 374 kCName); |
315 uint32 new_timestamp = 0; | 375 uint32 new_timestamp = 0; |
316 uint32 old_timestamp = 0; | 376 uint32 old_timestamp = 0; |
317 EXPECT_EQ(0, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); | 377 EXPECT_EQ(0, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); |
318 new_timestamp = 1234567890; | 378 new_timestamp = 1234567890; |
319 old_timestamp = 1234567000; | 379 old_timestamp = 1234567000; |
320 EXPECT_EQ(0, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); | 380 EXPECT_EQ(0, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); |
321 new_timestamp = 1234567000; | 381 new_timestamp = 1234567000; |
322 old_timestamp = 1234567890; | 382 old_timestamp = 1234567890; |
323 EXPECT_EQ(0, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); | 383 EXPECT_EQ(0, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); |
324 new_timestamp = 123; | 384 new_timestamp = 123; |
325 old_timestamp = 4234567890u; | 385 old_timestamp = 4234567890u; |
326 EXPECT_EQ(1, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); | 386 EXPECT_EQ(1, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); |
327 new_timestamp = 4234567890u; | 387 new_timestamp = 4234567890u; |
328 old_timestamp = 123; | 388 old_timestamp = 123; |
329 EXPECT_EQ(-1, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); | 389 EXPECT_EQ(-1, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); |
330 } | 390 } |
331 | 391 |
332 TEST_F(RtcpTest, RtpTimestampInSenderTime) { | 392 TEST_F(RtcpTest, RtpTimestampInSenderTime) { |
333 RtcpPeer rtcp_peer(&testing_clock_, | 393 RtcpPeer rtcp_peer(&testing_clock_, |
334 &mock_sender_feedback_, | 394 &mock_sender_feedback_, |
335 NULL, | 395 NULL, |
336 NULL, | 396 NULL, |
337 NULL, | 397 NULL, |
338 kRtcpReducedSize, | 398 kRtcpReducedSize, |
339 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 399 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
340 false, | |
341 kReceiverSsrc, | 400 kReceiverSsrc, |
| 401 kSenderSsrc, |
342 kCName); | 402 kCName); |
343 int frequency = 32000; | 403 int frequency = 32000; |
344 uint32 rtp_timestamp = 64000; | 404 uint32 rtp_timestamp = 64000; |
345 base::TimeTicks rtp_timestamp_in_ticks; | 405 base::TimeTicks rtp_timestamp_in_ticks; |
346 | 406 |
347 // Test fail before we get a OnReceivedLipSyncInfo. | 407 // Test fail before we get a OnReceivedLipSyncInfo. |
348 EXPECT_FALSE(rtcp_peer.RtpTimestampInSenderTime(frequency, rtp_timestamp, | 408 EXPECT_FALSE(rtcp_peer.RtpTimestampInSenderTime(frequency, rtp_timestamp, |
349 &rtp_timestamp_in_ticks)); | 409 &rtp_timestamp_in_ticks)); |
350 | 410 |
351 uint32 ntp_seconds = 0; | 411 uint32 ntp_seconds = 0; |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
387 rtcp_peer.OnReceivedLipSyncInfo(rtp_timestamp, ntp_seconds, ntp_fractions); | 447 rtcp_peer.OnReceivedLipSyncInfo(rtp_timestamp, ntp_seconds, ntp_fractions); |
388 rtp_timestamp = 64000; | 448 rtp_timestamp = 64000; |
389 EXPECT_TRUE(rtcp_peer.RtpTimestampInSenderTime(frequency, rtp_timestamp, | 449 EXPECT_TRUE(rtcp_peer.RtpTimestampInSenderTime(frequency, rtp_timestamp, |
390 &rtp_timestamp_in_ticks)); | 450 &rtp_timestamp_in_ticks)); |
391 EXPECT_EQ(input_time + base::TimeDelta::FromMilliseconds(4000), | 451 EXPECT_EQ(input_time + base::TimeDelta::FromMilliseconds(4000), |
392 rtp_timestamp_in_ticks); | 452 rtp_timestamp_in_ticks); |
393 } | 453 } |
394 | 454 |
395 } // namespace cast | 455 } // namespace cast |
396 } // namespace media | 456 } // namespace media |
OLD | NEW |