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