Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(45)

Side by Side Diff: media/cast/net/rtcp/rtcp_unittest.cc

Issue 1709863002: Add Cast PLI support on sender side. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 69 matching lines...) Expand 10 before | Expand all | Expand 10 after
80 : sender_clock_(new base::SimpleTestTickClock()), 80 : sender_clock_(new base::SimpleTestTickClock()),
81 receiver_clock_(new test::SkewedTickClock(sender_clock_.get())), 81 receiver_clock_(new test::SkewedTickClock(sender_clock_.get())),
82 sender_to_receiver_(sender_clock_.get()), 82 sender_to_receiver_(sender_clock_.get()),
83 receiver_to_sender_(sender_clock_.get()), 83 receiver_to_sender_(sender_clock_.get()),
84 rtcp_for_sender_( 84 rtcp_for_sender_(
85 base::Bind(&RtcpTest::OnReceivedCastFeedback, 85 base::Bind(&RtcpTest::OnReceivedCastFeedback,
86 base::Unretained(this)), 86 base::Unretained(this)),
87 base::Bind(&RtcpTest::OnMeasuredRoundTripTime, 87 base::Bind(&RtcpTest::OnMeasuredRoundTripTime,
88 base::Unretained(this)), 88 base::Unretained(this)),
89 base::Bind(&RtcpTest::OnReceivedLogs, base::Unretained(this)), 89 base::Bind(&RtcpTest::OnReceivedLogs, base::Unretained(this)),
90 base::Bind(&RtcpTest::OnReceivedPli, base::Unretained(this)),
90 sender_clock_.get(), 91 sender_clock_.get(),
91 &sender_to_receiver_, 92 &sender_to_receiver_,
92 kSenderSsrc, 93 kSenderSsrc,
93 kReceiverSsrc), 94 kReceiverSsrc),
94 rtcp_for_receiver_(receiver_clock_.get(), 95 rtcp_for_receiver_(receiver_clock_.get(),
95 &receiver_to_sender_, 96 &receiver_to_sender_,
96 kReceiverSsrc, 97 kReceiverSsrc,
97 kSenderSsrc) { 98 kSenderSsrc),
99 received_pli_(false) {
98 sender_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); 100 sender_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks());
99 receiver_clock_->SetSkew( 101 receiver_clock_->SetSkew(
100 1.0, // No skew. 102 1.0, // No skew.
101 base::TimeDelta::FromSeconds(kInitialReceiverClockOffsetSeconds)); 103 base::TimeDelta::FromSeconds(kInitialReceiverClockOffsetSeconds));
102 104
103 sender_to_receiver_.set_rtcp_destination(&rtcp_for_receiver_); 105 sender_to_receiver_.set_rtcp_destination(&rtcp_for_receiver_);
104 receiver_to_sender_.set_rtcp_destination(&rtcp_for_sender_); 106 receiver_to_sender_.set_rtcp_destination(&rtcp_for_sender_);
105 } 107 }
106 108
107 ~RtcpTest() override {} 109 ~RtcpTest() override {}
(...skipping 18 matching lines...) Expand all
126 RtcpReceiverEventLogMessage event_log; 128 RtcpReceiverEventLogMessage event_log;
127 event_log.type = event_log_msg.type; 129 event_log.type = event_log_msg.type;
128 event_log.event_timestamp = event_log_msg.event_timestamp; 130 event_log.event_timestamp = event_log_msg.event_timestamp;
129 event_log.delay_delta = event_log_msg.delay_delta; 131 event_log.delay_delta = event_log_msg.delay_delta;
130 event_log.packet_id = event_log_msg.packet_id; 132 event_log.packet_id = event_log_msg.packet_id;
131 last_logs_.back().event_log_messages_.push_back(event_log); 133 last_logs_.back().event_log_messages_.push_back(event_log);
132 } 134 }
133 } 135 }
134 } 136 }
135 137
138 void OnReceivedPli() { received_pli_ = true; }
139
136 scoped_ptr<base::SimpleTestTickClock> sender_clock_; 140 scoped_ptr<base::SimpleTestTickClock> sender_clock_;
137 scoped_ptr<test::SkewedTickClock> receiver_clock_; 141 scoped_ptr<test::SkewedTickClock> receiver_clock_;
138 FakeRtcpTransport sender_to_receiver_; 142 FakeRtcpTransport sender_to_receiver_;
139 FakeRtcpTransport receiver_to_sender_; 143 FakeRtcpTransport receiver_to_sender_;
140 SenderRtcpSession rtcp_for_sender_; 144 SenderRtcpSession rtcp_for_sender_;
141 ReceiverRtcpSession rtcp_for_receiver_; 145 ReceiverRtcpSession rtcp_for_receiver_;
142 146
143 base::TimeDelta current_round_trip_time_; 147 base::TimeDelta current_round_trip_time_;
144 RtcpCastMessage last_cast_message_; 148 RtcpCastMessage last_cast_message_;
145 RtcpReceiverLogMessage last_logs_; 149 RtcpReceiverLogMessage last_logs_;
150 bool received_pli_;
146 151
147 private: 152 private:
148 DISALLOW_COPY_AND_ASSIGN(RtcpTest); 153 DISALLOW_COPY_AND_ASSIGN(RtcpTest);
149 }; 154 };
150 155
151 TEST_F(RtcpTest, LipSyncGleanedFromSenderReport) { 156 TEST_F(RtcpTest, LipSyncGleanedFromSenderReport) {
152 // Initially, expect no lip-sync info receiver-side without having first 157 // Initially, expect no lip-sync info receiver-side without having first
153 // received a RTCP packet. 158 // received a RTCP packet.
154 base::TimeTicks reference_time; 159 base::TimeTicks reference_time;
155 RtpTimeTicks rtp_timestamp; 160 RtpTimeTicks rtp_timestamp;
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 EXPECT_EQ(last_cast_message_.ack_frame_id, cast_message.ack_frame_id); 236 EXPECT_EQ(last_cast_message_.ack_frame_id, cast_message.ack_frame_id);
232 EXPECT_EQ(last_cast_message_.target_delay_ms, kTargetDelayMs); 237 EXPECT_EQ(last_cast_message_.target_delay_ms, kTargetDelayMs);
233 EXPECT_EQ(last_cast_message_.missing_frames_and_packets.size(), 238 EXPECT_EQ(last_cast_message_.missing_frames_and_packets.size(),
234 cast_message.missing_frames_and_packets.size()); 239 cast_message.missing_frames_and_packets.size());
235 EXPECT_TRUE( 240 EXPECT_TRUE(
236 std::equal(cast_message.missing_frames_and_packets.begin(), 241 std::equal(cast_message.missing_frames_and_packets.begin(),
237 cast_message.missing_frames_and_packets.end(), 242 cast_message.missing_frames_and_packets.end(),
238 last_cast_message_.missing_frames_and_packets.begin())); 243 last_cast_message_.missing_frames_and_packets.begin()));
239 } 244 }
240 245
246 TEST_F(RtcpTest, ReportPli) {
247 RtcpCastMessage cast_message(kSenderSsrc);
248 cast_message.picture_loss_indicator = true;
249 rtcp_for_receiver_.SendRtcpReport(
250 CreateRtcpTimeData(base::TimeTicks()), &cast_message,
251 base::TimeDelta::FromMilliseconds(kTargetDelayMs), nullptr, nullptr);
252 EXPECT_TRUE(received_pli_);
253 }
254
241 TEST_F(RtcpTest, DropLateRtcpPacket) { 255 TEST_F(RtcpTest, DropLateRtcpPacket) {
242 RtcpCastMessage cast_message(kSenderSsrc); 256 RtcpCastMessage cast_message(kSenderSsrc);
243 cast_message.ack_frame_id = 1; 257 cast_message.ack_frame_id = 1;
244 rtcp_for_receiver_.SendRtcpReport( 258 rtcp_for_receiver_.SendRtcpReport(
245 CreateRtcpTimeData(receiver_clock_->NowTicks()), &cast_message, 259 CreateRtcpTimeData(receiver_clock_->NowTicks()), &cast_message,
246 base::TimeDelta::FromMilliseconds(kTargetDelayMs), nullptr, nullptr); 260 base::TimeDelta::FromMilliseconds(kTargetDelayMs), nullptr, nullptr);
247 261
248 // Send a packet with old timestamp 262 // Send a packet with old timestamp
249 RtcpCastMessage late_cast_message(kSenderSsrc); 263 RtcpCastMessage late_cast_message(kSenderSsrc);
250 late_cast_message.ack_frame_id = 2; 264 late_cast_message.ack_frame_id = 2;
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
294 // Only 24 bits of event timestamp sent on wire. 308 // Only 24 bits of event timestamp sent on wire.
295 uint32_t event_ts = 309 uint32_t event_ts =
296 (event.timestamp - base::TimeTicks()).InMilliseconds() & 0xffffff; 310 (event.timestamp - base::TimeTicks()).InMilliseconds() & 0xffffff;
297 uint32_t log_msg_ts = 311 uint32_t log_msg_ts =
298 (log_msg.event_timestamp - base::TimeTicks()).InMilliseconds() & 0xffffff; 312 (log_msg.event_timestamp - base::TimeTicks()).InMilliseconds() & 0xffffff;
299 EXPECT_EQ(log_msg_ts, event_ts); 313 EXPECT_EQ(log_msg_ts, event_ts);
300 } 314 }
301 315
302 } // namespace cast 316 } // namespace cast
303 } // namespace media 317 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698