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

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

Issue 388663003: Cast: Reshuffle files under media/cast (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: missing includes Created 6 years, 5 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 | Annotate | Revision Log
« no previous file with comments | « media/cast/net/rtcp/rtcp_sender.cc ('k') | media/cast/net/rtcp/rtcp_unittest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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/net/cast_transport_defines.h"
10 #include "media/cast/rtcp/rtcp_sender.h" 10 #include "media/cast/net/pacing/paced_sender.h"
11 #include "media/cast/rtcp/rtcp_utility.h" 11 #include "media/cast/net/rtcp/receiver_rtcp_event_subscriber.h"
12 #include "media/cast/rtcp/test_rtcp_packet_builder.h" 12 #include "media/cast/net/rtcp/rtcp_sender.h"
13 #include "media/cast/net/rtcp/rtcp_utility.h"
14 #include "media/cast/net/rtcp/test_rtcp_packet_builder.h"
13 #include "media/cast/test/fake_single_thread_task_runner.h" 15 #include "media/cast/test/fake_single_thread_task_runner.h"
14 #include "media/cast/transport/cast_transport_defines.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 base::TimeDelta kDefaultDelay = 24 static const base::TimeDelta kDefaultDelay =
25 base::TimeDelta::FromMilliseconds(100); 25 base::TimeDelta::FromMilliseconds(100);
26 static const std::string kCName("test@10.1.1.1"); 26 static const std::string kCName("test@10.1.1.1");
27 27
28 transport::RtcpReportBlock GetReportBlock() { 28 RtcpReportBlock GetReportBlock() {
29 transport::RtcpReportBlock report_block; 29 RtcpReportBlock report_block;
30 // Initialize remote_ssrc to a "clearly illegal" value. 30 // Initialize remote_ssrc to a "clearly illegal" value.
31 report_block.remote_ssrc = 0xDEAD; 31 report_block.remote_ssrc = 0xDEAD;
32 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender. 32 report_block.media_ssrc = kMediaSsrc; // SSRC of the RTP packet sender.
33 report_block.fraction_lost = kLoss >> 24; 33 report_block.fraction_lost = kLoss >> 24;
34 report_block.cumulative_lost = kLoss; // 24 bits valid. 34 report_block.cumulative_lost = kLoss; // 24 bits valid.
35 report_block.extended_high_sequence_number = kExtendedMax; 35 report_block.extended_high_sequence_number = kExtendedMax;
36 report_block.jitter = kTestJitter; 36 report_block.jitter = kTestJitter;
37 report_block.last_sr = kLastSr; 37 report_block.last_sr = kLastSr;
38 report_block.delay_since_last_sr = kDelayLastSr; 38 report_block.delay_since_last_sr = kDelayLastSr;
39 return report_block; 39 return report_block;
40 } 40 }
41 41
42 } // namespace 42 } // namespace
43 43
44 class TestRtcpTransport : public transport::PacedPacketSender { 44 class TestRtcpTransport : public PacedPacketSender {
45 public: 45 public:
46 TestRtcpTransport() : packet_count_(0) {} 46 TestRtcpTransport() : packet_count_(0) {}
47 47
48 virtual bool SendRtcpPacket(uint32 ssrc, 48 virtual bool SendRtcpPacket(uint32 ssrc,
49 transport::PacketRef packet) OVERRIDE { 49 PacketRef packet) OVERRIDE {
50 EXPECT_EQ(expected_packet_.size(), packet->data.size()); 50 EXPECT_EQ(expected_packet_.size(), packet->data.size());
51 EXPECT_EQ(0, memcmp(expected_packet_.data(), 51 EXPECT_EQ(0, memcmp(expected_packet_.data(),
52 packet->data.data(), 52 packet->data.data(),
53 packet->data.size())); 53 packet->data.size()));
54 packet_count_++; 54 packet_count_++;
55 return true; 55 return true;
56 } 56 }
57 57
58 virtual bool SendPackets( 58 virtual bool SendPackets(
59 const transport::SendPacketVector& packets) OVERRIDE { 59 const SendPacketVector& packets) OVERRIDE {
60 return false; 60 return false;
61 } 61 }
62 virtual bool ResendPackets( 62 virtual bool ResendPackets(
63 const transport::SendPacketVector& packets, 63 const SendPacketVector& packets,
64 base::TimeDelta dedupe_window) OVERRIDE { 64 base::TimeDelta dedupe_window) OVERRIDE {
65 return false; 65 return false;
66 } 66 }
67 67
68 virtual void CancelSendingPacket( 68 virtual void CancelSendingPacket(
69 const transport::PacketKey& packet_key) OVERRIDE { 69 const PacketKey& packet_key) OVERRIDE {
70 } 70 }
71 71
72 void SetExpectedRtcpPacket(scoped_ptr<Packet> packet) { 72 void SetExpectedRtcpPacket(scoped_ptr<Packet> packet) {
73 expected_packet_.swap(*packet); 73 expected_packet_.swap(*packet);
74 } 74 }
75 75
76 int packet_count() const { return packet_count_; } 76 int packet_count() const { return packet_count_; }
77 77
78 private: 78 private:
79 Packet expected_packet_; 79 Packet expected_packet_;
(...skipping 27 matching lines...) Expand all
107 }; 107 };
108 108
109 TEST_F(RtcpSenderTest, RtcpReceiverReport) { 109 TEST_F(RtcpSenderTest, RtcpReceiverReport) {
110 // Empty receiver report + c_name. 110 // Empty receiver report + c_name.
111 TestRtcpPacketBuilder p1; 111 TestRtcpPacketBuilder p1;
112 p1.AddRr(kSendingSsrc, 0); 112 p1.AddRr(kSendingSsrc, 0);
113 p1.AddSdesCname(kSendingSsrc, kCName); 113 p1.AddSdesCname(kSendingSsrc, kCName);
114 test_transport_.SetExpectedRtcpPacket(p1.GetPacket()); 114 test_transport_.SetExpectedRtcpPacket(p1.GetPacket());
115 115
116 rtcp_sender_->SendRtcpFromRtpReceiver( 116 rtcp_sender_->SendRtcpFromRtpReceiver(
117 transport::kRtcpRr, NULL, NULL, NULL, NULL, kDefaultDelay); 117 kRtcpRr, NULL, NULL, NULL, NULL, kDefaultDelay);
118 118
119 EXPECT_EQ(1, test_transport_.packet_count()); 119 EXPECT_EQ(1, test_transport_.packet_count());
120 120
121 // Receiver report with report block + c_name. 121 // Receiver report with report block + c_name.
122 TestRtcpPacketBuilder p2; 122 TestRtcpPacketBuilder p2;
123 p2.AddRr(kSendingSsrc, 1); 123 p2.AddRr(kSendingSsrc, 1);
124 p2.AddRb(kMediaSsrc); 124 p2.AddRb(kMediaSsrc);
125 p2.AddSdesCname(kSendingSsrc, kCName); 125 p2.AddSdesCname(kSendingSsrc, kCName);
126 test_transport_.SetExpectedRtcpPacket(p2.GetPacket().Pass()); 126 test_transport_.SetExpectedRtcpPacket(p2.GetPacket().Pass());
127 127
128 transport::RtcpReportBlock report_block = GetReportBlock(); 128 RtcpReportBlock report_block = GetReportBlock();
129 129
130 rtcp_sender_->SendRtcpFromRtpReceiver( 130 rtcp_sender_->SendRtcpFromRtpReceiver(
131 transport::kRtcpRr, &report_block, NULL, NULL, NULL, kDefaultDelay); 131 kRtcpRr, &report_block, NULL, NULL, NULL, kDefaultDelay);
132 132
133 EXPECT_EQ(2, test_transport_.packet_count()); 133 EXPECT_EQ(2, test_transport_.packet_count());
134 } 134 }
135 135
136 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtr) { 136 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtr) {
137 // Receiver report with report block + c_name. 137 // Receiver report with report block + c_name.
138 TestRtcpPacketBuilder p; 138 TestRtcpPacketBuilder p;
139 p.AddRr(kSendingSsrc, 1); 139 p.AddRr(kSendingSsrc, 1);
140 p.AddRb(kMediaSsrc); 140 p.AddRb(kMediaSsrc);
141 p.AddSdesCname(kSendingSsrc, kCName); 141 p.AddSdesCname(kSendingSsrc, kCName);
142 p.AddXrHeader(kSendingSsrc); 142 p.AddXrHeader(kSendingSsrc);
143 p.AddXrRrtrBlock(); 143 p.AddXrRrtrBlock();
144 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); 144 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass());
145 145
146 transport::RtcpReportBlock report_block = GetReportBlock(); 146 RtcpReportBlock report_block = GetReportBlock();
147 147
148 RtcpReceiverReferenceTimeReport rrtr; 148 RtcpReceiverReferenceTimeReport rrtr;
149 rrtr.ntp_seconds = kNtpHigh; 149 rrtr.ntp_seconds = kNtpHigh;
150 rrtr.ntp_fraction = kNtpLow; 150 rrtr.ntp_fraction = kNtpLow;
151 151
152 rtcp_sender_->SendRtcpFromRtpReceiver( 152 rtcp_sender_->SendRtcpFromRtpReceiver(
153 transport::kRtcpRr | transport::kRtcpRrtr, 153 kRtcpRr | kRtcpRrtr,
154 &report_block, 154 &report_block,
155 &rrtr, 155 &rrtr,
156 NULL, 156 NULL,
157 NULL, 157 NULL,
158 kDefaultDelay); 158 kDefaultDelay);
159 159
160 EXPECT_EQ(1, test_transport_.packet_count()); 160 EXPECT_EQ(1, test_transport_.packet_count());
161 } 161 }
162 162
163 TEST_F(RtcpSenderTest, RtcpReceiverReportWithCast) { 163 TEST_F(RtcpSenderTest, RtcpReceiverReportWithCast) {
164 // Receiver report with report block + c_name. 164 // Receiver report with report block + c_name.
165 TestRtcpPacketBuilder p; 165 TestRtcpPacketBuilder p;
166 p.AddRr(kSendingSsrc, 1); 166 p.AddRr(kSendingSsrc, 1);
167 p.AddRb(kMediaSsrc); 167 p.AddRb(kMediaSsrc);
168 p.AddSdesCname(kSendingSsrc, kCName); 168 p.AddSdesCname(kSendingSsrc, kCName);
169 p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay); 169 p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay);
170 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); 170 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass());
171 171
172 transport::RtcpReportBlock report_block = GetReportBlock(); 172 RtcpReportBlock report_block = GetReportBlock();
173 173
174 RtcpCastMessage cast_message(kMediaSsrc); 174 RtcpCastMessage cast_message(kMediaSsrc);
175 cast_message.ack_frame_id_ = kAckFrameId; 175 cast_message.ack_frame_id_ = kAckFrameId;
176 PacketIdSet missing_packets; 176 PacketIdSet missing_packets;
177 cast_message.missing_frames_and_packets_[kLostFrameId] = missing_packets; 177 cast_message.missing_frames_and_packets_[kLostFrameId] = missing_packets;
178 178
179 missing_packets.insert(kLostPacketId1); 179 missing_packets.insert(kLostPacketId1);
180 missing_packets.insert(kLostPacketId2); 180 missing_packets.insert(kLostPacketId2);
181 missing_packets.insert(kLostPacketId3); 181 missing_packets.insert(kLostPacketId3);
182 cast_message.missing_frames_and_packets_[kFrameIdWithLostPackets] = 182 cast_message.missing_frames_and_packets_[kFrameIdWithLostPackets] =
183 missing_packets; 183 missing_packets;
184 184
185 rtcp_sender_->SendRtcpFromRtpReceiver( 185 rtcp_sender_->SendRtcpFromRtpReceiver(
186 transport::kRtcpRr | transport::kRtcpCast, 186 kRtcpRr | kRtcpCast,
187 &report_block, 187 &report_block,
188 NULL, 188 NULL,
189 &cast_message, 189 &cast_message,
190 NULL, 190 NULL,
191 kDefaultDelay); 191 kDefaultDelay);
192 192
193 EXPECT_EQ(1, test_transport_.packet_count()); 193 EXPECT_EQ(1, test_transport_.packet_count());
194 } 194 }
195 195
196 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtraAndCastMessage) { 196 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtraAndCastMessage) {
197 TestRtcpPacketBuilder p; 197 TestRtcpPacketBuilder p;
198 p.AddRr(kSendingSsrc, 1); 198 p.AddRr(kSendingSsrc, 1);
199 p.AddRb(kMediaSsrc); 199 p.AddRb(kMediaSsrc);
200 p.AddSdesCname(kSendingSsrc, kCName); 200 p.AddSdesCname(kSendingSsrc, kCName);
201 p.AddXrHeader(kSendingSsrc); 201 p.AddXrHeader(kSendingSsrc);
202 p.AddXrRrtrBlock(); 202 p.AddXrRrtrBlock();
203 p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay); 203 p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay);
204 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); 204 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass());
205 205
206 transport::RtcpReportBlock report_block = GetReportBlock(); 206 RtcpReportBlock report_block = GetReportBlock();
207 207
208 RtcpReceiverReferenceTimeReport rrtr; 208 RtcpReceiverReferenceTimeReport rrtr;
209 rrtr.ntp_seconds = kNtpHigh; 209 rrtr.ntp_seconds = kNtpHigh;
210 rrtr.ntp_fraction = kNtpLow; 210 rrtr.ntp_fraction = kNtpLow;
211 211
212 RtcpCastMessage cast_message(kMediaSsrc); 212 RtcpCastMessage cast_message(kMediaSsrc);
213 cast_message.ack_frame_id_ = kAckFrameId; 213 cast_message.ack_frame_id_ = kAckFrameId;
214 PacketIdSet missing_packets; 214 PacketIdSet missing_packets;
215 cast_message.missing_frames_and_packets_[kLostFrameId] = missing_packets; 215 cast_message.missing_frames_and_packets_[kLostFrameId] = missing_packets;
216 216
217 missing_packets.insert(kLostPacketId1); 217 missing_packets.insert(kLostPacketId1);
218 missing_packets.insert(kLostPacketId2); 218 missing_packets.insert(kLostPacketId2);
219 missing_packets.insert(kLostPacketId3); 219 missing_packets.insert(kLostPacketId3);
220 cast_message.missing_frames_and_packets_[kFrameIdWithLostPackets] = 220 cast_message.missing_frames_and_packets_[kFrameIdWithLostPackets] =
221 missing_packets; 221 missing_packets;
222 222
223 rtcp_sender_->SendRtcpFromRtpReceiver( 223 rtcp_sender_->SendRtcpFromRtpReceiver(
224 transport::kRtcpRr | transport::kRtcpRrtr | transport::kRtcpCast, 224 kRtcpRr | kRtcpRrtr | kRtcpCast,
225 &report_block, 225 &report_block,
226 &rrtr, 226 &rrtr,
227 &cast_message, 227 &cast_message,
228 NULL, 228 NULL,
229 kDefaultDelay); 229 kDefaultDelay);
230 230
231 EXPECT_EQ(1, test_transport_.packet_count()); 231 EXPECT_EQ(1, test_transport_.packet_count());
232 } 232 }
233 233
234 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtrCastMessageAndLog) { 234 TEST_F(RtcpSenderTest, RtcpReceiverReportWithRrtrCastMessageAndLog) {
235 static const uint32 kTimeBaseMs = 12345678; 235 static const uint32 kTimeBaseMs = 12345678;
236 static const uint32 kTimeDelayMs = 10; 236 static const uint32 kTimeDelayMs = 10;
237 237
238 TestRtcpPacketBuilder p; 238 TestRtcpPacketBuilder p;
239 p.AddRr(kSendingSsrc, 1); 239 p.AddRr(kSendingSsrc, 1);
240 p.AddRb(kMediaSsrc); 240 p.AddRb(kMediaSsrc);
241 p.AddSdesCname(kSendingSsrc, kCName); 241 p.AddSdesCname(kSendingSsrc, kCName);
242 p.AddXrHeader(kSendingSsrc); 242 p.AddXrHeader(kSendingSsrc);
243 p.AddXrRrtrBlock(); 243 p.AddXrRrtrBlock();
244 p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay); 244 p.AddCast(kSendingSsrc, kMediaSsrc, kDefaultDelay);
245 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass()); 245 test_transport_.SetExpectedRtcpPacket(p.GetPacket().Pass());
246 246
247 transport::RtcpReportBlock report_block = GetReportBlock(); 247 RtcpReportBlock report_block = GetReportBlock();
248 248
249 RtcpReceiverReferenceTimeReport rrtr; 249 RtcpReceiverReferenceTimeReport rrtr;
250 rrtr.ntp_seconds = kNtpHigh; 250 rrtr.ntp_seconds = kNtpHigh;
251 rrtr.ntp_fraction = kNtpLow; 251 rrtr.ntp_fraction = kNtpLow;
252 252
253 RtcpCastMessage cast_message(kMediaSsrc); 253 RtcpCastMessage cast_message(kMediaSsrc);
254 cast_message.ack_frame_id_ = kAckFrameId; 254 cast_message.ack_frame_id_ = kAckFrameId;
255 PacketIdSet missing_packets; 255 PacketIdSet missing_packets;
256 cast_message.missing_frames_and_packets_[kLostFrameId] = missing_packets; 256 cast_message.missing_frames_and_packets_[kLostFrameId] = missing_packets;
257 257
258 missing_packets.insert(kLostPacketId1); 258 missing_packets.insert(kLostPacketId1);
259 missing_packets.insert(kLostPacketId2); 259 missing_packets.insert(kLostPacketId2);
260 missing_packets.insert(kLostPacketId3); 260 missing_packets.insert(kLostPacketId3);
261 cast_message.missing_frames_and_packets_[kFrameIdWithLostPackets] = 261 cast_message.missing_frames_and_packets_[kFrameIdWithLostPackets] =
262 missing_packets; 262 missing_packets;
263 263
264 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); 264 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT);
265 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; 265 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events;
266 266
267 rtcp_sender_->SendRtcpFromRtpReceiver( 267 rtcp_sender_->SendRtcpFromRtpReceiver(
268 transport::kRtcpRr | transport::kRtcpRrtr | transport::kRtcpCast | 268 kRtcpRr | kRtcpRrtr | kRtcpCast |
269 transport::kRtcpReceiverLog, 269 kRtcpReceiverLog,
270 &report_block, 270 &report_block,
271 &rrtr, 271 &rrtr,
272 &cast_message, 272 &cast_message,
273 &rtcp_events, 273 &rtcp_events,
274 kDefaultDelay); 274 kDefaultDelay);
275 275
276 base::SimpleTestTickClock testing_clock; 276 base::SimpleTestTickClock testing_clock;
277 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); 277 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs));
278 278
279 p.AddReceiverLog(kSendingSsrc); 279 p.AddReceiverLog(kSendingSsrc);
(...skipping 15 matching lines...) Expand all
295 packet_event.rtp_timestamp = kRtpTimestamp; 295 packet_event.rtp_timestamp = kRtpTimestamp;
296 packet_event.type = PACKET_RECEIVED; 296 packet_event.type = PACKET_RECEIVED;
297 packet_event.media_type = VIDEO_EVENT; 297 packet_event.media_type = VIDEO_EVENT;
298 packet_event.timestamp = testing_clock.NowTicks(); 298 packet_event.timestamp = testing_clock.NowTicks();
299 packet_event.packet_id = kLostPacketId1; 299 packet_event.packet_id = kLostPacketId1;
300 event_subscriber.OnReceivePacketEvent(packet_event); 300 event_subscriber.OnReceivePacketEvent(packet_event);
301 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); 301 event_subscriber.GetRtcpEventsAndReset(&rtcp_events);
302 EXPECT_EQ(2u, rtcp_events.size()); 302 EXPECT_EQ(2u, rtcp_events.size());
303 303
304 rtcp_sender_->SendRtcpFromRtpReceiver( 304 rtcp_sender_->SendRtcpFromRtpReceiver(
305 transport::kRtcpRr | transport::kRtcpRrtr | transport::kRtcpCast | 305 kRtcpRr | kRtcpRrtr | kRtcpCast |
306 transport::kRtcpReceiverLog, 306 kRtcpReceiverLog,
307 &report_block, 307 &report_block,
308 &rrtr, 308 &rrtr,
309 &cast_message, 309 &cast_message,
310 &rtcp_events, 310 &rtcp_events,
311 kDefaultDelay); 311 kDefaultDelay);
312 312
313 EXPECT_EQ(2, test_transport_.packet_count()); 313 EXPECT_EQ(2, test_transport_.packet_count());
314 } 314 }
315 315
316 TEST_F(RtcpSenderTest, RtcpReceiverReportWithOversizedFrameLog) { 316 TEST_F(RtcpSenderTest, RtcpReceiverReportWithOversizedFrameLog) {
317 static const uint32 kTimeBaseMs = 12345678; 317 static const uint32 kTimeBaseMs = 12345678;
318 static const uint32 kTimeDelayMs = 10; 318 static const uint32 kTimeDelayMs = 10;
319 319
320 TestRtcpPacketBuilder p; 320 TestRtcpPacketBuilder p;
321 p.AddRr(kSendingSsrc, 1); 321 p.AddRr(kSendingSsrc, 1);
322 p.AddRb(kMediaSsrc); 322 p.AddRb(kMediaSsrc);
323 p.AddSdesCname(kSendingSsrc, kCName); 323 p.AddSdesCname(kSendingSsrc, kCName);
324 324
325 transport::RtcpReportBlock report_block = GetReportBlock(); 325 RtcpReportBlock report_block = GetReportBlock();
326 326
327 base::SimpleTestTickClock testing_clock; 327 base::SimpleTestTickClock testing_clock;
328 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); 328 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs));
329 329
330 p.AddReceiverLog(kSendingSsrc); 330 p.AddReceiverLog(kSendingSsrc);
331 331
332 int remaining_bytes = kMaxReceiverLogBytes; 332 int remaining_bytes = kMaxReceiverLogBytes;
333 remaining_bytes -= kRtcpCastLogHeaderSize; 333 remaining_bytes -= kRtcpCastLogHeaderSize;
334 334
335 remaining_bytes -= kRtcpReceiverFrameLogSize; 335 remaining_bytes -= kRtcpReceiverFrameLogSize;
(...skipping 28 matching lines...) Expand all
364 packet_event.timestamp = testing_clock.NowTicks(); 364 packet_event.timestamp = testing_clock.NowTicks();
365 packet_event.packet_id = kLostPacketId1; 365 packet_event.packet_id = kLostPacketId1;
366 event_subscriber.OnReceivePacketEvent(packet_event); 366 event_subscriber.OnReceivePacketEvent(packet_event);
367 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); 367 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs));
368 } 368 }
369 369
370 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; 370 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events;
371 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); 371 event_subscriber.GetRtcpEventsAndReset(&rtcp_events);
372 372
373 rtcp_sender_->SendRtcpFromRtpReceiver( 373 rtcp_sender_->SendRtcpFromRtpReceiver(
374 transport::kRtcpRr | transport::kRtcpReceiverLog, 374 kRtcpRr | kRtcpReceiverLog,
375 &report_block, 375 &report_block,
376 NULL, 376 NULL,
377 NULL, 377 NULL,
378 &rtcp_events, 378 &rtcp_events,
379 kDefaultDelay); 379 kDefaultDelay);
380 380
381 EXPECT_EQ(1, test_transport_.packet_count()); 381 EXPECT_EQ(1, test_transport_.packet_count());
382 } 382 }
383 383
384 TEST_F(RtcpSenderTest, RtcpReceiverReportWithTooManyLogFrames) { 384 TEST_F(RtcpSenderTest, RtcpReceiverReportWithTooManyLogFrames) {
385 static const uint32 kTimeBaseMs = 12345678; 385 static const uint32 kTimeBaseMs = 12345678;
386 static const uint32 kTimeDelayMs = 10; 386 static const uint32 kTimeDelayMs = 10;
387 387
388 TestRtcpPacketBuilder p; 388 TestRtcpPacketBuilder p;
389 p.AddRr(kSendingSsrc, 1); 389 p.AddRr(kSendingSsrc, 1);
390 p.AddRb(kMediaSsrc); 390 p.AddRb(kMediaSsrc);
391 p.AddSdesCname(kSendingSsrc, kCName); 391 p.AddSdesCname(kSendingSsrc, kCName);
392 392
393 transport::RtcpReportBlock report_block = GetReportBlock(); 393 RtcpReportBlock report_block = GetReportBlock();
394 394
395 base::SimpleTestTickClock testing_clock; 395 base::SimpleTestTickClock testing_clock;
396 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); 396 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs));
397 397
398 p.AddReceiverLog(kSendingSsrc); 398 p.AddReceiverLog(kSendingSsrc);
399 399
400 int remaining_bytes = kMaxReceiverLogBytes; 400 int remaining_bytes = kMaxReceiverLogBytes;
401 remaining_bytes -= kRtcpCastLogHeaderSize; 401 remaining_bytes -= kRtcpCastLogHeaderSize;
402 402
403 int num_events = 403 int num_events =
(...skipping 17 matching lines...) Expand all
421 frame_event.media_type = VIDEO_EVENT; 421 frame_event.media_type = VIDEO_EVENT;
422 frame_event.timestamp = testing_clock.NowTicks(); 422 frame_event.timestamp = testing_clock.NowTicks();
423 event_subscriber.OnReceiveFrameEvent(frame_event); 423 event_subscriber.OnReceiveFrameEvent(frame_event);
424 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs)); 424 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeDelayMs));
425 } 425 }
426 426
427 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; 427 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events;
428 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); 428 event_subscriber.GetRtcpEventsAndReset(&rtcp_events);
429 429
430 rtcp_sender_->SendRtcpFromRtpReceiver( 430 rtcp_sender_->SendRtcpFromRtpReceiver(
431 transport::kRtcpRr | transport::kRtcpReceiverLog, 431 kRtcpRr | kRtcpReceiverLog,
432 &report_block, 432 &report_block,
433 NULL, 433 NULL,
434 NULL, 434 NULL,
435 &rtcp_events, 435 &rtcp_events,
436 kDefaultDelay); 436 kDefaultDelay);
437 437
438 EXPECT_EQ(1, test_transport_.packet_count()); 438 EXPECT_EQ(1, test_transport_.packet_count());
439 } 439 }
440 440
441 TEST_F(RtcpSenderTest, RtcpReceiverReportWithOldLogFrames) { 441 TEST_F(RtcpSenderTest, RtcpReceiverReportWithOldLogFrames) {
442 static const uint32 kTimeBaseMs = 12345678; 442 static const uint32 kTimeBaseMs = 12345678;
443 443
444 TestRtcpPacketBuilder p; 444 TestRtcpPacketBuilder p;
445 p.AddRr(kSendingSsrc, 1); 445 p.AddRr(kSendingSsrc, 1);
446 p.AddRb(kMediaSsrc); 446 p.AddRb(kMediaSsrc);
447 p.AddSdesCname(kSendingSsrc, kCName); 447 p.AddSdesCname(kSendingSsrc, kCName);
448 448
449 transport::RtcpReportBlock report_block = GetReportBlock(); 449 RtcpReportBlock report_block = GetReportBlock();
450 450
451 base::SimpleTestTickClock testing_clock; 451 base::SimpleTestTickClock testing_clock;
452 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs)); 452 testing_clock.Advance(base::TimeDelta::FromMilliseconds(kTimeBaseMs));
453 453
454 p.AddReceiverLog(kSendingSsrc); 454 p.AddReceiverLog(kSendingSsrc);
455 455
456 // Log 11 events for a single frame, each |kTimeBetweenEventsMs| apart. 456 // Log 11 events for a single frame, each |kTimeBetweenEventsMs| apart.
457 // Only last 10 events will be sent because the first event is more than 457 // Only last 10 events will be sent because the first event is more than
458 // 4095 milliseconds away from latest event. 458 // 4095 milliseconds away from latest event.
459 const int kTimeBetweenEventsMs = 410; 459 const int kTimeBetweenEventsMs = 410;
(...skipping 12 matching lines...) Expand all
472 frame_event.timestamp = testing_clock.NowTicks(); 472 frame_event.timestamp = testing_clock.NowTicks();
473 event_subscriber.OnReceiveFrameEvent(frame_event); 473 event_subscriber.OnReceiveFrameEvent(frame_event);
474 testing_clock.Advance( 474 testing_clock.Advance(
475 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); 475 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs));
476 } 476 }
477 477
478 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; 478 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events;
479 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); 479 event_subscriber.GetRtcpEventsAndReset(&rtcp_events);
480 480
481 rtcp_sender_->SendRtcpFromRtpReceiver( 481 rtcp_sender_->SendRtcpFromRtpReceiver(
482 transport::kRtcpRr | transport::kRtcpReceiverLog, 482 kRtcpRr | kRtcpReceiverLog,
483 &report_block, 483 &report_block,
484 NULL, 484 NULL,
485 NULL, 485 NULL,
486 &rtcp_events, 486 &rtcp_events,
487 kDefaultDelay); 487 kDefaultDelay);
488 488
489 EXPECT_EQ(1, test_transport_.packet_count()); 489 EXPECT_EQ(1, test_transport_.packet_count());
490 } 490 }
491 491
492 TEST_F(RtcpSenderTest, RtcpReceiverReportRedundancy) { 492 TEST_F(RtcpSenderTest, RtcpReceiverReportRedundancy) {
493 uint32 time_base_ms = 12345678; 493 uint32 time_base_ms = 12345678;
494 int kTimeBetweenEventsMs = 10; 494 int kTimeBetweenEventsMs = 10;
495 495
496 transport::RtcpReportBlock report_block = GetReportBlock(); 496 RtcpReportBlock report_block = GetReportBlock();
497 497
498 base::SimpleTestTickClock testing_clock; 498 base::SimpleTestTickClock testing_clock;
499 testing_clock.Advance(base::TimeDelta::FromMilliseconds(time_base_ms)); 499 testing_clock.Advance(base::TimeDelta::FromMilliseconds(time_base_ms));
500 500
501 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT); 501 ReceiverRtcpEventSubscriber event_subscriber(500, VIDEO_EVENT);
502 size_t packet_count = kReceiveLogMessageHistorySize + 10; 502 size_t packet_count = kReceiveLogMessageHistorySize + 10;
503 for (size_t i = 0; i < packet_count; i++) { 503 for (size_t i = 0; i < packet_count; i++) {
504 TestRtcpPacketBuilder p; 504 TestRtcpPacketBuilder p;
505 p.AddRr(kSendingSsrc, 1); 505 p.AddRr(kSendingSsrc, 1);
506 p.AddRb(kMediaSsrc); 506 p.AddRb(kMediaSsrc);
(...skipping 24 matching lines...) Expand all
531 frame_event.rtp_timestamp = kRtpTimestamp; 531 frame_event.rtp_timestamp = kRtpTimestamp;
532 frame_event.type = FRAME_ACK_SENT; 532 frame_event.type = FRAME_ACK_SENT;
533 frame_event.media_type = VIDEO_EVENT; 533 frame_event.media_type = VIDEO_EVENT;
534 frame_event.timestamp = testing_clock.NowTicks(); 534 frame_event.timestamp = testing_clock.NowTicks();
535 event_subscriber.OnReceiveFrameEvent(frame_event); 535 event_subscriber.OnReceiveFrameEvent(frame_event);
536 536
537 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events; 537 ReceiverRtcpEventSubscriber::RtcpEventMultiMap rtcp_events;
538 event_subscriber.GetRtcpEventsAndReset(&rtcp_events); 538 event_subscriber.GetRtcpEventsAndReset(&rtcp_events);
539 539
540 rtcp_sender_->SendRtcpFromRtpReceiver( 540 rtcp_sender_->SendRtcpFromRtpReceiver(
541 transport::kRtcpRr | transport::kRtcpReceiverLog, 541 kRtcpRr | kRtcpReceiverLog,
542 &report_block, 542 &report_block,
543 NULL, 543 NULL,
544 NULL, 544 NULL,
545 &rtcp_events, 545 &rtcp_events,
546 kDefaultDelay); 546 kDefaultDelay);
547 547
548 testing_clock.Advance( 548 testing_clock.Advance(
549 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs)); 549 base::TimeDelta::FromMilliseconds(kTimeBetweenEventsMs));
550 time_base_ms += kTimeBetweenEventsMs; 550 time_base_ms += kTimeBetweenEventsMs;
551 } 551 }
552 552
553 EXPECT_EQ(static_cast<int>(packet_count), test_transport_.packet_count()); 553 EXPECT_EQ(static_cast<int>(packet_count), test_transport_.packet_count());
554 } 554 }
555 555
556 } // namespace cast 556 } // namespace cast
557 } // namespace media 557 } // namespace media
OLDNEW
« no previous file with comments | « media/cast/net/rtcp/rtcp_sender.cc ('k') | media/cast/net/rtcp/rtcp_unittest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698