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

Side by Side Diff: media/cast/receiver/frame_receiver_unittest.cc

Issue 765643006: Cast: Make receiver use cast_transport (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: fix end2end test Created 6 years 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 <deque> 5 #include <deque>
6 #include <utility> 6 #include <utility>
7 7
8 #include "base/bind.h" 8 #include "base/bind.h"
9 #include "base/memory/ref_counted.h" 9 #include "base/memory/ref_counted.h"
10 #include "base/memory/scoped_ptr.h" 10 #include "base/memory/scoped_ptr.h"
11 #include "base/test/simple_test_tick_clock.h" 11 #include "base/test/simple_test_tick_clock.h"
12 #include "media/cast/cast_defines.h" 12 #include "media/cast/cast_defines.h"
13 #include "media/cast/cast_environment.h" 13 #include "media/cast/cast_environment.h"
14 #include "media/cast/logging/simple_event_subscriber.h" 14 #include "media/cast/logging/simple_event_subscriber.h"
15 #include "media/cast/net/pacing/mock_paced_packet_sender.h" 15 #include "media/cast/net/cast_transport_sender_impl.h"
16 #include "media/cast/net/mock_cast_transport_sender.h"
16 #include "media/cast/net/rtcp/test_rtcp_packet_builder.h" 17 #include "media/cast/net/rtcp/test_rtcp_packet_builder.h"
17 #include "media/cast/receiver/frame_receiver.h" 18 #include "media/cast/receiver/frame_receiver.h"
18 #include "media/cast/test/fake_single_thread_task_runner.h" 19 #include "media/cast/test/fake_single_thread_task_runner.h"
19 #include "media/cast/test/utility/default_config.h" 20 #include "media/cast/test/utility/default_config.h"
20 #include "testing/gmock/include/gmock/gmock.h" 21 #include "testing/gmock/include/gmock/gmock.h"
21 22
22 using ::testing::_; 23 using ::testing::_;
23 24
24 namespace media { 25 namespace media {
25 namespace cast { 26 namespace cast {
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
129 ntp_seconds, ntp_fraction, 130 ntp_seconds, ntp_fraction,
130 static_cast<uint32>(rtp_timestamp)); 131 static_cast<uint32>(rtp_timestamp));
131 ASSERT_TRUE(receiver_->ProcessPacket(rtcp_packet.GetPacket().Pass())); 132 ASSERT_TRUE(receiver_->ProcessPacket(rtcp_packet.GetPacket().Pass()));
132 } 133 }
133 134
134 FrameReceiverConfig config_; 135 FrameReceiverConfig config_;
135 std::vector<uint8> payload_; 136 std::vector<uint8> payload_;
136 RtpCastHeader rtp_header_; 137 RtpCastHeader rtp_header_;
137 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. 138 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment.
138 base::TimeTicks start_time_; 139 base::TimeTicks start_time_;
139 MockPacedPacketSender mock_transport_; 140 MockCastTransportSender mock_transport_;
140 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; 141 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_;
141 scoped_refptr<CastEnvironment> cast_environment_; 142 scoped_refptr<CastEnvironment> cast_environment_;
142 FakeFrameClient frame_client_; 143 FakeFrameClient frame_client_;
143 144
144 // Important for the FrameReceiver to be declared last, since its dependencies 145 // Important for the FrameReceiver to be declared last, since its dependencies
145 // must remain alive until after its destruction. 146 // must remain alive until after its destruction.
146 scoped_ptr<FrameReceiver> receiver_; 147 scoped_ptr<FrameReceiver> receiver_;
147 148
148 DISALLOW_COPY_AND_ASSIGN(FrameReceiverTest); 149 DISALLOW_COPY_AND_ASSIGN(FrameReceiverTest);
149 }; 150 };
(...skipping 14 matching lines...) Expand all
164 EXPECT_TRUE(frame_events.empty()); 165 EXPECT_TRUE(frame_events.empty());
165 cast_environment_->Logging()->RemoveRawEventSubscriber(&event_subscriber); 166 cast_environment_->Logging()->RemoveRawEventSubscriber(&event_subscriber);
166 } 167 }
167 168
168 TEST_F(FrameReceiverTest, ReceivesOneFrame) { 169 TEST_F(FrameReceiverTest, ReceivesOneFrame) {
169 CreateFrameReceiverOfAudio(); 170 CreateFrameReceiverOfAudio();
170 171
171 SimpleEventSubscriber event_subscriber; 172 SimpleEventSubscriber event_subscriber;
172 cast_environment_->Logging()->AddRawEventSubscriber(&event_subscriber); 173 cast_environment_->Logging()->AddRawEventSubscriber(&event_subscriber);
173 174
174 EXPECT_CALL(mock_transport_, SendRtcpPacket(_, _)) 175 EXPECT_CALL(mock_transport_, SendRtcpFromRtpReceiver(_, _, _, _, _, _, _))
175 .WillRepeatedly(testing::Return(true)); 176 .WillRepeatedly(testing::Return());
176 177
177 FeedLipSyncInfoIntoReceiver(); 178 FeedLipSyncInfoIntoReceiver();
178 task_runner_->RunTasks(); 179 task_runner_->RunTasks();
179 180
180 // Enqueue a request for a frame. 181 // Enqueue a request for a frame.
181 receiver_->RequestEncodedFrame( 182 receiver_->RequestEncodedFrame(
182 base::Bind(&FakeFrameClient::DeliverEncodedFrame, 183 base::Bind(&FakeFrameClient::DeliverEncodedFrame,
183 base::Unretained(&frame_client_))); 184 base::Unretained(&frame_client_)));
184 185
185 // The request should not be satisfied since no packets have been received. 186 // The request should not be satisfied since no packets have been received.
(...skipping 19 matching lines...) Expand all
205 EXPECT_EQ(rtp_header_.rtp_timestamp, frame_events.begin()->rtp_timestamp); 206 EXPECT_EQ(rtp_header_.rtp_timestamp, frame_events.begin()->rtp_timestamp);
206 cast_environment_->Logging()->RemoveRawEventSubscriber(&event_subscriber); 207 cast_environment_->Logging()->RemoveRawEventSubscriber(&event_subscriber);
207 } 208 }
208 209
209 TEST_F(FrameReceiverTest, ReceivesFramesSkippingWhenAppropriate) { 210 TEST_F(FrameReceiverTest, ReceivesFramesSkippingWhenAppropriate) {
210 CreateFrameReceiverOfAudio(); 211 CreateFrameReceiverOfAudio();
211 212
212 SimpleEventSubscriber event_subscriber; 213 SimpleEventSubscriber event_subscriber;
213 cast_environment_->Logging()->AddRawEventSubscriber(&event_subscriber); 214 cast_environment_->Logging()->AddRawEventSubscriber(&event_subscriber);
214 215
215 EXPECT_CALL(mock_transport_, SendRtcpPacket(_, _)) 216 EXPECT_CALL(mock_transport_, SendRtcpFromRtpReceiver(_, _, _, _, _, _, _))
216 .WillRepeatedly(testing::Return(true)); 217 .WillRepeatedly(testing::Return());
217 218
218 const uint32 rtp_advance_per_frame = 219 const uint32 rtp_advance_per_frame =
219 config_.frequency / config_.max_frame_rate; 220 config_.frequency / config_.max_frame_rate;
220 const base::TimeDelta time_advance_per_frame = 221 const base::TimeDelta time_advance_per_frame =
221 base::TimeDelta::FromSeconds(1) / config_.max_frame_rate; 222 base::TimeDelta::FromSeconds(1) / config_.max_frame_rate;
222 223
223 // Feed and process lip sync in receiver. 224 // Feed and process lip sync in receiver.
224 FeedLipSyncInfoIntoReceiver(); 225 FeedLipSyncInfoIntoReceiver();
225 task_runner_->RunTasks(); 226 task_runner_->RunTasks();
226 const base::TimeTicks first_frame_capture_time = testing_clock_->NowTicks(); 227 const base::TimeTicks first_frame_capture_time = testing_clock_->NowTicks();
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
308 } 309 }
309 cast_environment_->Logging()->RemoveRawEventSubscriber(&event_subscriber); 310 cast_environment_->Logging()->RemoveRawEventSubscriber(&event_subscriber);
310 } 311 }
311 312
312 TEST_F(FrameReceiverTest, ReceivesFramesRefusingToSkipAny) { 313 TEST_F(FrameReceiverTest, ReceivesFramesRefusingToSkipAny) {
313 CreateFrameReceiverOfVideo(); 314 CreateFrameReceiverOfVideo();
314 315
315 SimpleEventSubscriber event_subscriber; 316 SimpleEventSubscriber event_subscriber;
316 cast_environment_->Logging()->AddRawEventSubscriber(&event_subscriber); 317 cast_environment_->Logging()->AddRawEventSubscriber(&event_subscriber);
317 318
318 EXPECT_CALL(mock_transport_, SendRtcpPacket(_, _)) 319 EXPECT_CALL(mock_transport_, SendRtcpFromRtpReceiver(_, _, _, _, _, _, _))
319 .WillRepeatedly(testing::Return(true)); 320 .WillRepeatedly(testing::Return());
320 321
321 const uint32 rtp_advance_per_frame = 322 const uint32 rtp_advance_per_frame =
322 config_.frequency / config_.max_frame_rate; 323 config_.frequency / config_.max_frame_rate;
323 const base::TimeDelta time_advance_per_frame = 324 const base::TimeDelta time_advance_per_frame =
324 base::TimeDelta::FromSeconds(1) / config_.max_frame_rate; 325 base::TimeDelta::FromSeconds(1) / config_.max_frame_rate;
325 326
326 // Feed and process lip sync in receiver. 327 // Feed and process lip sync in receiver.
327 FeedLipSyncInfoIntoReceiver(); 328 FeedLipSyncInfoIntoReceiver();
328 task_runner_->RunTasks(); 329 task_runner_->RunTasks();
329 const base::TimeTicks first_frame_capture_time = testing_clock_->NowTicks(); 330 const base::TimeTicks first_frame_capture_time = testing_clock_->NowTicks();
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 EXPECT_GE(kFirstFrameId + 3, frame_events[i].frame_id); 411 EXPECT_GE(kFirstFrameId + 3, frame_events[i].frame_id);
411 const int frame_offset = frame_events[i].frame_id - kFirstFrameId; 412 const int frame_offset = frame_events[i].frame_id - kFirstFrameId;
412 EXPECT_EQ(frame_offset * rtp_advance_per_frame, 413 EXPECT_EQ(frame_offset * rtp_advance_per_frame,
413 frame_events[i].rtp_timestamp); 414 frame_events[i].rtp_timestamp);
414 } 415 }
415 cast_environment_->Logging()->RemoveRawEventSubscriber(&event_subscriber); 416 cast_environment_->Logging()->RemoveRawEventSubscriber(&event_subscriber);
416 } 417 }
417 418
418 } // namespace cast 419 } // namespace cast
419 } // namespace media 420 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698