| 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/cast_environment.h" |
| 7 #include "media/cast/pacing/paced_sender.h" | 8 #include "media/cast/pacing/paced_sender.h" |
| 8 #include "media/cast/rtcp/mock_rtcp_receiver_feedback.h" | 9 #include "media/cast/rtcp/mock_rtcp_receiver_feedback.h" |
| 9 #include "media/cast/rtcp/mock_rtcp_sender_feedback.h" | 10 #include "media/cast/rtcp/mock_rtcp_sender_feedback.h" |
| 10 #include "media/cast/rtcp/rtcp.h" | 11 #include "media/cast/rtcp/rtcp.h" |
| 11 #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_task_runner.h" |
| 12 #include "testing/gmock/include/gmock/gmock.h" | 14 #include "testing/gmock/include/gmock/gmock.h" |
| 13 | 15 |
| 14 namespace media { | 16 namespace media { |
| 15 namespace cast { | 17 namespace cast { |
| 16 | 18 |
| 17 using testing::_; | 19 using testing::_; |
| 18 | 20 |
| 19 static const uint32 kSenderSsrc = 0x10203; | 21 static const uint32 kSenderSsrc = 0x10203; |
| 20 static const uint32 kReceiverSsrc = 0x40506; | 22 static const uint32 kReceiverSsrc = 0x40506; |
| 21 static const std::string kCName("test@10.1.1.1"); | 23 static const std::string kCName("test@10.1.1.1"); |
| 22 static const uint32 kRtcpIntervalMs = 500; | 24 static const uint32 kRtcpIntervalMs = 500; |
| 23 static const int64 kStartMillisecond = GG_INT64_C(12345678900000); | 25 static const int64 kStartMillisecond = GG_INT64_C(12345678900000); |
| 24 static const int64 kAddedDelay = 123; | 26 static const int64 kAddedDelay = 123; |
| 25 static const int64 kAddedShortDelay= 100; | 27 static const int64 kAddedShortDelay= 100; |
| 26 | 28 |
| 27 class LocalRtcpTransport : public PacedPacketSender { | 29 class LocalRtcpTransport : public PacedPacketSender { |
| 28 public: | 30 public: |
| 29 explicit LocalRtcpTransport(base::SimpleTestTickClock* testing_clock) | 31 explicit LocalRtcpTransport(scoped_refptr<CastEnvironment> cast_environment, |
| 32 base::SimpleTestTickClock* testing_clock) |
| 30 : drop_packets_(false), | 33 : drop_packets_(false), |
| 31 short_delay_(false), | 34 short_delay_(false), |
| 32 testing_clock_(testing_clock) {} | 35 testing_clock_(testing_clock) {} |
| 33 | 36 |
| 34 void SetRtcpReceiver(Rtcp* rtcp) { rtcp_ = rtcp; } | 37 void SetRtcpReceiver(Rtcp* rtcp) { rtcp_ = rtcp; } |
| 35 | 38 |
| 36 void SetShortDelay() { short_delay_ = true; } | 39 void SetShortDelay() { short_delay_ = true; } |
| 37 | 40 |
| 38 void SetDropPackets(bool drop_packets) { drop_packets_ = drop_packets; } | 41 void SetDropPackets(bool drop_packets) { drop_packets_ = drop_packets; } |
| 39 | 42 |
| (...skipping 17 matching lines...) Expand all Loading... |
| 57 | 60 |
| 58 virtual bool ResendPackets(const PacketList& packets) OVERRIDE { | 61 virtual bool ResendPackets(const PacketList& packets) OVERRIDE { |
| 59 return false; | 62 return false; |
| 60 } | 63 } |
| 61 | 64 |
| 62 private: | 65 private: |
| 63 bool drop_packets_; | 66 bool drop_packets_; |
| 64 bool short_delay_; | 67 bool short_delay_; |
| 65 Rtcp* rtcp_; | 68 Rtcp* rtcp_; |
| 66 base::SimpleTestTickClock* testing_clock_; | 69 base::SimpleTestTickClock* testing_clock_; |
| 70 scoped_refptr<CastEnvironment> cast_environment_; |
| 67 }; | 71 }; |
| 68 | 72 |
| 69 class RtcpPeer : public Rtcp { | 73 class RtcpPeer : public Rtcp { |
| 70 public: | 74 public: |
| 71 RtcpPeer(base::TickClock* clock, | 75 RtcpPeer(scoped_refptr<CastEnvironment> cast_environment, |
| 72 RtcpSenderFeedback* sender_feedback, | 76 RtcpSenderFeedback* sender_feedback, |
| 73 PacedPacketSender* const paced_packet_sender, | 77 PacedPacketSender* const paced_packet_sender, |
| 74 RtpSenderStatistics* rtp_sender_statistics, | 78 RtpSenderStatistics* rtp_sender_statistics, |
| 75 RtpReceiverStatistics* rtp_receiver_statistics, | 79 RtpReceiverStatistics* rtp_receiver_statistics, |
| 76 RtcpMode rtcp_mode, | 80 RtcpMode rtcp_mode, |
| 77 const base::TimeDelta& rtcp_interval, | 81 const base::TimeDelta& rtcp_interval, |
| 78 uint32 local_ssrc, | 82 uint32 local_ssrc, |
| 79 uint32 remote_ssrc, | 83 uint32 remote_ssrc, |
| 80 const std::string& c_name) | 84 const std::string& c_name) |
| 81 : Rtcp(clock, | 85 : Rtcp(cast_environment, |
| 82 sender_feedback, | 86 sender_feedback, |
| 83 paced_packet_sender, | 87 paced_packet_sender, |
| 84 rtp_sender_statistics, | 88 rtp_sender_statistics, |
| 85 rtp_receiver_statistics, | 89 rtp_receiver_statistics, |
| 86 rtcp_mode, | 90 rtcp_mode, |
| 87 rtcp_interval, | 91 rtcp_interval, |
| 88 local_ssrc, | 92 local_ssrc, |
| 89 remote_ssrc, | 93 remote_ssrc, |
| 90 c_name) { | 94 c_name) { |
| 91 } | 95 } |
| 92 | 96 |
| 93 using Rtcp::CheckForWrapAround; | 97 using Rtcp::CheckForWrapAround; |
| 94 using Rtcp::OnReceivedLipSyncInfo; | 98 using Rtcp::OnReceivedLipSyncInfo; |
| 95 }; | 99 }; |
| 96 | 100 |
| 97 class RtcpTest : public ::testing::Test { | 101 class RtcpTest : public ::testing::Test { |
| 98 protected: | 102 protected: |
| 99 RtcpTest() | 103 RtcpTest() |
| 100 : transport_(&testing_clock_) { | 104 : task_runner_(new test::FakeTaskRunner(&testing_clock_)), |
| 105 cast_environment_(new CastEnvironment(&testing_clock_, task_runner_, |
| 106 task_runner_, task_runner_, task_runner_, task_runner_, |
| 107 GetDefaultCastLoggingConfig())), |
| 108 transport_(cast_environment_, &testing_clock_) { |
| 101 testing_clock_.Advance( | 109 testing_clock_.Advance( |
| 102 base::TimeDelta::FromMilliseconds(kStartMillisecond)); | 110 base::TimeDelta::FromMilliseconds(kStartMillisecond)); |
| 103 } | 111 } |
| 104 | 112 |
| 105 virtual ~RtcpTest() {} | 113 virtual ~RtcpTest() {} |
| 106 | 114 |
| 107 virtual void SetUp() { | 115 virtual void SetUp() { |
| 108 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(0); | 116 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(0); |
| 109 } | 117 } |
| 110 | 118 |
| 111 base::SimpleTestTickClock testing_clock_; | 119 base::SimpleTestTickClock testing_clock_; |
| 120 scoped_refptr<test::FakeTaskRunner> task_runner_; |
| 121 scoped_refptr<CastEnvironment> cast_environment_; |
| 112 LocalRtcpTransport transport_; | 122 LocalRtcpTransport transport_; |
| 113 MockRtcpSenderFeedback mock_sender_feedback_; | 123 MockRtcpSenderFeedback mock_sender_feedback_; |
| 114 }; | 124 }; |
| 115 | 125 |
| 116 TEST_F(RtcpTest, TimeToSend) { | 126 TEST_F(RtcpTest, TimeToSend) { |
| 117 base::TimeTicks start_time; | 127 base::TimeTicks start_time; |
| 118 start_time += base::TimeDelta::FromMilliseconds(kStartMillisecond); | 128 start_time += base::TimeDelta::FromMilliseconds(kStartMillisecond); |
| 119 Rtcp rtcp(&testing_clock_, | 129 Rtcp rtcp(cast_environment_, |
| 120 &mock_sender_feedback_, | 130 &mock_sender_feedback_, |
| 121 &transport_, | 131 &transport_, |
| 122 NULL, | 132 NULL, |
| 123 NULL, | 133 NULL, |
| 124 kRtcpCompound, | 134 kRtcpCompound, |
| 125 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 135 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
| 126 kSenderSsrc, | 136 kSenderSsrc, |
| 127 kReceiverSsrc, | 137 kReceiverSsrc, |
| 128 kCName); | 138 kCName); |
| 129 transport_.SetRtcpReceiver(&rtcp); | 139 transport_.SetRtcpReceiver(&rtcp); |
| 130 EXPECT_LE(start_time, rtcp.TimeToSendNextRtcpReport()); | 140 EXPECT_LE(start_time, rtcp.TimeToSendNextRtcpReport()); |
| 131 EXPECT_GE(start_time + base::TimeDelta::FromMilliseconds( | 141 EXPECT_GE(start_time + base::TimeDelta::FromMilliseconds( |
| 132 kRtcpIntervalMs * 3 / 2), | 142 kRtcpIntervalMs * 3 / 2), |
| 133 rtcp.TimeToSendNextRtcpReport()); | 143 rtcp.TimeToSendNextRtcpReport()); |
| 134 base::TimeDelta delta = rtcp.TimeToSendNextRtcpReport() - start_time; | 144 base::TimeDelta delta = rtcp.TimeToSendNextRtcpReport() - start_time; |
| 135 testing_clock_.Advance(delta); | 145 testing_clock_.Advance(delta); |
| 136 EXPECT_EQ(testing_clock_.NowTicks(), rtcp.TimeToSendNextRtcpReport()); | 146 EXPECT_EQ(testing_clock_.NowTicks(), rtcp.TimeToSendNextRtcpReport()); |
| 137 } | 147 } |
| 138 | 148 |
| 139 TEST_F(RtcpTest, BasicSenderReport) { | 149 TEST_F(RtcpTest, BasicSenderReport) { |
| 140 Rtcp rtcp(&testing_clock_, | 150 Rtcp rtcp(cast_environment_, |
| 141 &mock_sender_feedback_, | 151 &mock_sender_feedback_, |
| 142 &transport_, | 152 &transport_, |
| 143 NULL, | 153 NULL, |
| 144 NULL, | 154 NULL, |
| 145 kRtcpCompound, | 155 kRtcpCompound, |
| 146 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 156 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
| 147 kSenderSsrc, | 157 kSenderSsrc, |
| 148 kReceiverSsrc, | 158 kReceiverSsrc, |
| 149 kCName); | 159 kCName); |
| 150 transport_.SetRtcpReceiver(&rtcp); | 160 transport_.SetRtcpReceiver(&rtcp); |
| 151 rtcp.SendRtcpFromRtpSender(NULL); | 161 rtcp.SendRtcpFromRtpSender(NULL); |
| 152 } | 162 } |
| 153 | 163 |
| 154 TEST_F(RtcpTest, BasicReceiverReport) { | 164 TEST_F(RtcpTest, BasicReceiverReport) { |
| 155 Rtcp rtcp(&testing_clock_, | 165 Rtcp rtcp(cast_environment_, |
| 156 &mock_sender_feedback_, | 166 &mock_sender_feedback_, |
| 157 &transport_, | 167 &transport_, |
| 158 NULL, | 168 NULL, |
| 159 NULL, | 169 NULL, |
| 160 kRtcpCompound, | 170 kRtcpCompound, |
| 161 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 171 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
| 162 kSenderSsrc, | 172 kSenderSsrc, |
| 163 kReceiverSsrc, | 173 kReceiverSsrc, |
| 164 kCName); | 174 kCName); |
| 165 transport_.SetRtcpReceiver(&rtcp); | 175 transport_.SetRtcpReceiver(&rtcp); |
| 166 rtcp.SendRtcpFromRtpReceiver(NULL, NULL); | 176 rtcp.SendRtcpFromRtpReceiver(NULL, NULL); |
| 167 } | 177 } |
| 168 | 178 |
| 169 TEST_F(RtcpTest, BasicCast) { | 179 TEST_F(RtcpTest, BasicCast) { |
| 170 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(1); | 180 EXPECT_CALL(mock_sender_feedback_, OnReceivedCastFeedback(_)).Times(1); |
| 171 | 181 |
| 172 // Media receiver. | 182 // Media receiver. |
| 173 Rtcp rtcp(&testing_clock_, | 183 Rtcp rtcp(cast_environment_, |
| 174 &mock_sender_feedback_, | 184 &mock_sender_feedback_, |
| 175 &transport_, | 185 &transport_, |
| 176 NULL, | 186 NULL, |
| 177 NULL, | 187 NULL, |
| 178 kRtcpReducedSize, | 188 kRtcpReducedSize, |
| 179 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 189 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
| 180 kSenderSsrc, | 190 kSenderSsrc, |
| 181 kSenderSsrc, | 191 kSenderSsrc, |
| 182 kCName); | 192 kCName); |
| 183 transport_.SetRtcpReceiver(&rtcp); | 193 transport_.SetRtcpReceiver(&rtcp); |
| 184 RtcpCastMessage cast_message(kSenderSsrc); | 194 RtcpCastMessage cast_message(kSenderSsrc); |
| 185 cast_message.ack_frame_id_ = kAckFrameId; | 195 cast_message.ack_frame_id_ = kAckFrameId; |
| 186 PacketIdSet missing_packets; | 196 PacketIdSet missing_packets; |
| 187 cast_message.missing_frames_and_packets_[ | 197 cast_message.missing_frames_and_packets_[ |
| 188 kLostFrameId] = missing_packets; | 198 kLostFrameId] = missing_packets; |
| 189 | 199 |
| 190 missing_packets.insert(kLostPacketId1); | 200 missing_packets.insert(kLostPacketId1); |
| 191 missing_packets.insert(kLostPacketId2); | 201 missing_packets.insert(kLostPacketId2); |
| 192 missing_packets.insert(kLostPacketId3); | 202 missing_packets.insert(kLostPacketId3); |
| 193 cast_message.missing_frames_and_packets_[kFrameIdWithLostPackets] = | 203 cast_message.missing_frames_and_packets_[kFrameIdWithLostPackets] = |
| 194 missing_packets; | 204 missing_packets; |
| 195 rtcp.SendRtcpFromRtpReceiver(&cast_message, NULL); | 205 rtcp.SendRtcpFromRtpReceiver(&cast_message, NULL); |
| 196 } | 206 } |
| 197 | 207 |
| 198 TEST_F(RtcpTest, RttReducedSizeRtcp) { | 208 TEST_F(RtcpTest, RttReducedSizeRtcp) { |
| 199 // Media receiver. | 209 // Media receiver. |
| 200 LocalRtcpTransport receiver_transport(&testing_clock_); | 210 LocalRtcpTransport receiver_transport(cast_environment_, &testing_clock_); |
| 201 Rtcp rtcp_receiver(&testing_clock_, | 211 Rtcp rtcp_receiver(cast_environment_, |
| 202 &mock_sender_feedback_, | 212 &mock_sender_feedback_, |
| 203 &receiver_transport, | 213 &receiver_transport, |
| 204 NULL, | 214 NULL, |
| 205 NULL, | 215 NULL, |
| 206 kRtcpReducedSize, | 216 kRtcpReducedSize, |
| 207 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 217 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
| 208 kReceiverSsrc, | 218 kReceiverSsrc, |
| 209 kSenderSsrc, | 219 kSenderSsrc, |
| 210 kCName); | 220 kCName); |
| 211 | 221 |
| 212 // Media sender. | 222 // Media sender. |
| 213 LocalRtcpTransport sender_transport(&testing_clock_); | 223 LocalRtcpTransport sender_transport(cast_environment_, &testing_clock_); |
| 214 Rtcp rtcp_sender(&testing_clock_, | 224 Rtcp rtcp_sender(cast_environment_, |
| 215 &mock_sender_feedback_, | 225 &mock_sender_feedback_, |
| 216 &sender_transport, | 226 &sender_transport, |
| 217 NULL, | 227 NULL, |
| 218 NULL, | 228 NULL, |
| 219 kRtcpReducedSize, | 229 kRtcpReducedSize, |
| 220 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 230 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
| 221 kSenderSsrc, | 231 kSenderSsrc, |
| 222 kReceiverSsrc, | 232 kReceiverSsrc, |
| 223 kCName); | 233 kCName); |
| 224 | 234 |
| (...skipping 19 matching lines...) Expand all Loading... |
| 244 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 254 EXPECT_TRUE(rtcp_receiver.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 245 | 255 |
| 246 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 1); | 256 EXPECT_NEAR(2 * kAddedDelay, rtt.InMilliseconds(), 1); |
| 247 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 1); | 257 EXPECT_NEAR(2 * kAddedDelay, avg_rtt.InMilliseconds(), 1); |
| 248 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 1); | 258 EXPECT_NEAR(2 * kAddedDelay, min_rtt.InMilliseconds(), 1); |
| 249 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); | 259 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); |
| 250 } | 260 } |
| 251 | 261 |
| 252 TEST_F(RtcpTest, Rtt) { | 262 TEST_F(RtcpTest, Rtt) { |
| 253 // Media receiver. | 263 // Media receiver. |
| 254 LocalRtcpTransport receiver_transport(&testing_clock_); | 264 LocalRtcpTransport receiver_transport(cast_environment_, &testing_clock_); |
| 255 Rtcp rtcp_receiver(&testing_clock_, | 265 Rtcp rtcp_receiver(cast_environment_, |
| 256 &mock_sender_feedback_, | 266 &mock_sender_feedback_, |
| 257 &receiver_transport, | 267 &receiver_transport, |
| 258 NULL, | 268 NULL, |
| 259 NULL, | 269 NULL, |
| 260 kRtcpCompound, | 270 kRtcpCompound, |
| 261 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 271 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
| 262 kReceiverSsrc, | 272 kReceiverSsrc, |
| 263 kSenderSsrc, | 273 kSenderSsrc, |
| 264 kCName); | 274 kCName); |
| 265 | 275 |
| 266 // Media sender. | 276 // Media sender. |
| 267 LocalRtcpTransport sender_transport(&testing_clock_); | 277 LocalRtcpTransport sender_transport(cast_environment_, &testing_clock_); |
| 268 Rtcp rtcp_sender(&testing_clock_, | 278 Rtcp rtcp_sender(cast_environment_, |
| 269 &mock_sender_feedback_, | 279 &mock_sender_feedback_, |
| 270 &sender_transport, | 280 &sender_transport, |
| 271 NULL, | 281 NULL, |
| 272 NULL, | 282 NULL, |
| 273 kRtcpCompound, | 283 kRtcpCompound, |
| 274 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 284 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
| 275 kSenderSsrc, | 285 kSenderSsrc, |
| 276 kReceiverSsrc, | 286 kReceiverSsrc, |
| 277 kCName); | 287 kCName); |
| 278 | 288 |
| (...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 330 | 340 |
| 331 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); | 341 rtcp_receiver.SendRtcpFromRtpReceiver(NULL, NULL); |
| 332 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); | 342 EXPECT_TRUE(rtcp_sender.Rtt(&rtt, &avg_rtt, &min_rtt, &max_rtt)); |
| 333 EXPECT_NEAR(2 * kAddedShortDelay, rtt.InMilliseconds(), 1); | 343 EXPECT_NEAR(2 * kAddedShortDelay, rtt.InMilliseconds(), 1); |
| 334 EXPECT_NEAR(2 * kAddedShortDelay, min_rtt.InMilliseconds(), 1); | 344 EXPECT_NEAR(2 * kAddedShortDelay, min_rtt.InMilliseconds(), 1); |
| 335 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); | 345 EXPECT_NEAR(2 * kAddedDelay, max_rtt.InMilliseconds(), 1); |
| 336 } | 346 } |
| 337 | 347 |
| 338 TEST_F(RtcpTest, RttWithPacketLoss) { | 348 TEST_F(RtcpTest, RttWithPacketLoss) { |
| 339 // Media receiver. | 349 // Media receiver. |
| 340 LocalRtcpTransport receiver_transport(&testing_clock_); | 350 LocalRtcpTransport receiver_transport(cast_environment_, &testing_clock_); |
| 341 Rtcp rtcp_receiver(&testing_clock_, | 351 Rtcp rtcp_receiver(cast_environment_, |
| 342 &mock_sender_feedback_, | 352 &mock_sender_feedback_, |
| 343 &receiver_transport, | 353 &receiver_transport, |
| 344 NULL, | 354 NULL, |
| 345 NULL, | 355 NULL, |
| 346 kRtcpReducedSize, | 356 kRtcpReducedSize, |
| 347 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 357 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
| 348 kSenderSsrc, | 358 kSenderSsrc, |
| 349 kReceiverSsrc, | 359 kReceiverSsrc, |
| 350 kCName); | 360 kCName); |
| 351 | 361 |
| 352 // Media sender. | 362 // Media sender. |
| 353 LocalRtcpTransport sender_transport(&testing_clock_); | 363 LocalRtcpTransport sender_transport(cast_environment_, &testing_clock_); |
| 354 Rtcp rtcp_sender(&testing_clock_, | 364 Rtcp rtcp_sender(cast_environment_, |
| 355 &mock_sender_feedback_, | 365 &mock_sender_feedback_, |
| 356 &sender_transport, | 366 &sender_transport, |
| 357 NULL, | 367 NULL, |
| 358 NULL, | 368 NULL, |
| 359 kRtcpReducedSize, | 369 kRtcpReducedSize, |
| 360 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 370 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
| 361 kReceiverSsrc, | 371 kReceiverSsrc, |
| 362 kSenderSsrc, | 372 kSenderSsrc, |
| 363 kCName); | 373 kCName); |
| 364 | 374 |
| (...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 430 ConvertTimeTicksToNtp(input_time, &ntp_seconds_3, &ntp_fractions_3); | 440 ConvertTimeTicksToNtp(input_time, &ntp_seconds_3, &ntp_fractions_3); |
| 431 base::TimeTicks out_3 = ConvertNtpToTimeTicks(ntp_seconds_3, ntp_fractions_3); | 441 base::TimeTicks out_3 = ConvertNtpToTimeTicks(ntp_seconds_3, ntp_fractions_3); |
| 432 EXPECT_EQ(input_time, out_3); // Verify inverse. | 442 EXPECT_EQ(input_time, out_3); // Verify inverse. |
| 433 | 443 |
| 434 // Verify delta. | 444 // Verify delta. |
| 435 EXPECT_EQ((out_3 - out_2), time_delta); | 445 EXPECT_EQ((out_3 - out_2), time_delta); |
| 436 EXPECT_NEAR((ntp_fractions_3 - ntp_fractions_2), 0xffffffff / 2, 1); | 446 EXPECT_NEAR((ntp_fractions_3 - ntp_fractions_2), 0xffffffff / 2, 1); |
| 437 } | 447 } |
| 438 | 448 |
| 439 TEST_F(RtcpTest, WrapAround) { | 449 TEST_F(RtcpTest, WrapAround) { |
| 440 RtcpPeer rtcp_peer(&testing_clock_, | 450 RtcpPeer rtcp_peer(cast_environment_, |
| 441 &mock_sender_feedback_, | 451 &mock_sender_feedback_, |
| 442 NULL, | 452 NULL, |
| 443 NULL, | 453 NULL, |
| 444 NULL, | 454 NULL, |
| 445 kRtcpReducedSize, | 455 kRtcpReducedSize, |
| 446 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 456 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
| 447 kReceiverSsrc, | 457 kReceiverSsrc, |
| 448 kSenderSsrc, | 458 kSenderSsrc, |
| 449 kCName); | 459 kCName); |
| 450 uint32 new_timestamp = 0; | 460 uint32 new_timestamp = 0; |
| 451 uint32 old_timestamp = 0; | 461 uint32 old_timestamp = 0; |
| 452 EXPECT_EQ(0, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); | 462 EXPECT_EQ(0, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); |
| 453 new_timestamp = 1234567890; | 463 new_timestamp = 1234567890; |
| 454 old_timestamp = 1234567000; | 464 old_timestamp = 1234567000; |
| 455 EXPECT_EQ(0, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); | 465 EXPECT_EQ(0, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); |
| 456 new_timestamp = 1234567000; | 466 new_timestamp = 1234567000; |
| 457 old_timestamp = 1234567890; | 467 old_timestamp = 1234567890; |
| 458 EXPECT_EQ(0, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); | 468 EXPECT_EQ(0, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); |
| 459 new_timestamp = 123; | 469 new_timestamp = 123; |
| 460 old_timestamp = 4234567890u; | 470 old_timestamp = 4234567890u; |
| 461 EXPECT_EQ(1, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); | 471 EXPECT_EQ(1, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); |
| 462 new_timestamp = 4234567890u; | 472 new_timestamp = 4234567890u; |
| 463 old_timestamp = 123; | 473 old_timestamp = 123; |
| 464 EXPECT_EQ(-1, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); | 474 EXPECT_EQ(-1, rtcp_peer.CheckForWrapAround(new_timestamp, old_timestamp)); |
| 465 } | 475 } |
| 466 | 476 |
| 467 TEST_F(RtcpTest, RtpTimestampInSenderTime) { | 477 TEST_F(RtcpTest, RtpTimestampInSenderTime) { |
| 468 RtcpPeer rtcp_peer(&testing_clock_, | 478 RtcpPeer rtcp_peer(cast_environment_, |
| 469 &mock_sender_feedback_, | 479 &mock_sender_feedback_, |
| 470 NULL, | 480 NULL, |
| 471 NULL, | 481 NULL, |
| 472 NULL, | 482 NULL, |
| 473 kRtcpReducedSize, | 483 kRtcpReducedSize, |
| 474 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), | 484 base::TimeDelta::FromMilliseconds(kRtcpIntervalMs), |
| 475 kReceiverSsrc, | 485 kReceiverSsrc, |
| 476 kSenderSsrc, | 486 kSenderSsrc, |
| 477 kCName); | 487 kCName); |
| 478 int frequency = 32000; | 488 int frequency = 32000; |
| (...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 522 rtcp_peer.OnReceivedLipSyncInfo(rtp_timestamp, ntp_seconds, ntp_fractions); | 532 rtcp_peer.OnReceivedLipSyncInfo(rtp_timestamp, ntp_seconds, ntp_fractions); |
| 523 rtp_timestamp = 64000; | 533 rtp_timestamp = 64000; |
| 524 EXPECT_TRUE(rtcp_peer.RtpTimestampInSenderTime(frequency, rtp_timestamp, | 534 EXPECT_TRUE(rtcp_peer.RtpTimestampInSenderTime(frequency, rtp_timestamp, |
| 525 &rtp_timestamp_in_ticks)); | 535 &rtp_timestamp_in_ticks)); |
| 526 EXPECT_EQ(input_time + base::TimeDelta::FromMilliseconds(4000), | 536 EXPECT_EQ(input_time + base::TimeDelta::FromMilliseconds(4000), |
| 527 rtp_timestamp_in_ticks); | 537 rtp_timestamp_in_ticks); |
| 528 } | 538 } |
| 529 | 539 |
| 530 } // namespace cast | 540 } // namespace cast |
| 531 } // namespace media | 541 } // namespace media |
| OLD | NEW |