| 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 |