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

Side by Side Diff: media/cast/sender/video_sender_unittest.cc

Issue 1878883003: Refactor: simplify interface of SenderRtcpSession and CastTransport. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 4 years, 8 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 7
8 #include <vector> 8 #include <vector>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
11 #include "base/macros.h" 11 #include "base/macros.h"
12 #include "base/memory/scoped_ptr.h" 12 #include "base/memory/ptr_util.h"
13 #include "base/test/simple_test_tick_clock.h" 13 #include "base/test/simple_test_tick_clock.h"
14 #include "media/base/fake_single_thread_task_runner.h" 14 #include "media/base/fake_single_thread_task_runner.h"
15 #include "media/base/video_frame.h" 15 #include "media/base/video_frame.h"
16 #include "media/cast/cast_environment.h" 16 #include "media/cast/cast_environment.h"
17 #include "media/cast/constants.h" 17 #include "media/cast/constants.h"
18 #include "media/cast/logging/simple_event_subscriber.h" 18 #include "media/cast/logging/simple_event_subscriber.h"
19 #include "media/cast/net/cast_transport_config.h" 19 #include "media/cast/net/cast_transport_config.h"
20 #include "media/cast/net/cast_transport_impl.h" 20 #include "media/cast/net/cast_transport_impl.h"
21 #include "media/cast/net/pacing/paced_sender.h" 21 #include "media/cast/net/pacing/paced_sender.h"
22 #include "media/cast/sender/fake_video_encode_accelerator_factory.h" 22 #include "media/cast/sender/fake_video_encode_accelerator_factory.h"
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after
100 bool paused_; 100 bool paused_;
101 base::Closure callback_; 101 base::Closure callback_;
102 PacketRef stored_packet_; 102 PacketRef stored_packet_;
103 103
104 DISALLOW_COPY_AND_ASSIGN(TestPacketSender); 104 DISALLOW_COPY_AND_ASSIGN(TestPacketSender);
105 }; 105 };
106 106
107 void IgnorePlayoutDelayChanges(base::TimeDelta unused_playout_delay) { 107 void IgnorePlayoutDelayChanges(base::TimeDelta unused_playout_delay) {
108 } 108 }
109 109
110 class PeerVideoSender : public VideoSender {
111 public:
112 PeerVideoSender(
113 scoped_refptr<CastEnvironment> cast_environment,
114 const VideoSenderConfig& video_config,
115 const StatusChangeCallback& status_change_cb,
116 const CreateVideoEncodeAcceleratorCallback& create_vea_cb,
117 const CreateVideoEncodeMemoryCallback& create_video_encode_mem_cb,
118 CastTransport* const transport_sender)
119 : VideoSender(cast_environment,
120 video_config,
121 status_change_cb,
122 create_vea_cb,
123 create_video_encode_mem_cb,
124 transport_sender,
125 base::Bind(&IgnorePlayoutDelayChanges)) {}
126 using VideoSender::OnReceivedCastFeedback;
127 using VideoSender::OnReceivedPli;
128 };
129
130 class TransportClient : public CastTransport::Client { 110 class TransportClient : public CastTransport::Client {
131 public: 111 public:
132 TransportClient() {} 112 TransportClient() {}
133 113
134 void OnStatusChanged(CastTransportStatus status) final { 114 void OnStatusChanged(CastTransportStatus status) final {
135 EXPECT_EQ(TRANSPORT_VIDEO_INITIALIZED, status); 115 EXPECT_EQ(TRANSPORT_VIDEO_INITIALIZED, status);
136 }; 116 };
137 void OnLoggingEventsReceived( 117 void OnLoggingEventsReceived(
138 scoped_ptr<std::vector<FrameEvent>> frame_events, 118 std::unique_ptr<std::vector<FrameEvent>> frame_events,
139 scoped_ptr<std::vector<PacketEvent>> packet_events) final{}; 119 std::unique_ptr<std::vector<PacketEvent>> packet_events) final{};
140 void ProcessRtpPacket(scoped_ptr<Packet> packet) final{}; 120 void ProcessRtpPacket(std::unique_ptr<Packet> packet) final{};
141 121
142 DISALLOW_COPY_AND_ASSIGN(TransportClient); 122 DISALLOW_COPY_AND_ASSIGN(TransportClient);
143 }; 123 };
144 124
145 } // namespace 125 } // namespace
146 126
147 class VideoSenderTest : public ::testing::Test { 127 class VideoSenderTest : public ::testing::Test {
148 protected: 128 protected:
149 VideoSenderTest() 129 VideoSenderTest()
150 : testing_clock_(new base::SimpleTestTickClock()), 130 : testing_clock_(new base::SimpleTestTickClock()),
151 task_runner_(new FakeSingleThreadTaskRunner(testing_clock_)), 131 task_runner_(new FakeSingleThreadTaskRunner(testing_clock_)),
152 cast_environment_( 132 cast_environment_(new CastEnvironment(
153 new CastEnvironment(scoped_ptr<base::TickClock>(testing_clock_), 133 std::unique_ptr<base::TickClock>(testing_clock_),
154 task_runner_, 134 task_runner_,
155 task_runner_, 135 task_runner_,
156 task_runner_)), 136 task_runner_)),
157 operational_status_(STATUS_UNINITIALIZED), 137 operational_status_(STATUS_UNINITIALIZED),
158 vea_factory_(task_runner_) { 138 vea_factory_(task_runner_) {
159 testing_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); 139 testing_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks());
160 vea_factory_.SetAutoRespond(true); 140 vea_factory_.SetAutoRespond(true);
161 last_pixel_value_ = kPixelValue; 141 last_pixel_value_ = kPixelValue;
162 transport_ = new TestPacketSender(); 142 transport_ = new TestPacketSender();
163 transport_sender_.reset( 143 transport_sender_.reset(
164 new CastTransportImpl(testing_clock_, base::TimeDelta(), 144 new CastTransportImpl(testing_clock_, base::TimeDelta(),
165 make_scoped_ptr(new TransportClient()), 145 base::WrapUnique(new TransportClient()),
166 make_scoped_ptr(transport_), task_runner_)); 146 base::WrapUnique(transport_), task_runner_));
167 } 147 }
168 148
169 ~VideoSenderTest() override {} 149 ~VideoSenderTest() override {}
170 150
171 void TearDown() final { 151 void TearDown() final {
172 video_sender_.reset(); 152 video_sender_.reset();
173 task_runner_->RunTasks(); 153 task_runner_->RunTasks();
174 } 154 }
175 155
176 // If |external| is true then external video encoder (VEA) is used. 156 // If |external| is true then external video encoder (VEA) is used.
177 // |expect_init_success| is true if initialization is expected to succeed. 157 // |expect_init_success| is true if initialization is expected to succeed.
178 void InitEncoder(bool external, bool expect_init_success) { 158 void InitEncoder(bool external, bool expect_init_success) {
179 VideoSenderConfig video_config = GetDefaultVideoSenderConfig(); 159 VideoSenderConfig video_config = GetDefaultVideoSenderConfig();
180 video_config.use_external_encoder = external; 160 video_config.use_external_encoder = external;
181 161
182 ASSERT_EQ(operational_status_, STATUS_UNINITIALIZED); 162 ASSERT_EQ(operational_status_, STATUS_UNINITIALIZED);
183 163
184 if (external) { 164 if (external) {
185 vea_factory_.SetInitializationWillSucceed(expect_init_success); 165 vea_factory_.SetInitializationWillSucceed(expect_init_success);
186 video_sender_.reset(new PeerVideoSender( 166 video_sender_.reset(new VideoSender(
187 cast_environment_, 167 cast_environment_, video_config,
188 video_config,
189 base::Bind(&SaveOperationalStatus, &operational_status_), 168 base::Bind(&SaveOperationalStatus, &operational_status_),
190 base::Bind( 169 base::Bind(
191 &FakeVideoEncodeAcceleratorFactory::CreateVideoEncodeAccelerator, 170 &FakeVideoEncodeAcceleratorFactory::CreateVideoEncodeAccelerator,
192 base::Unretained(&vea_factory_)), 171 base::Unretained(&vea_factory_)),
193 base::Bind(&FakeVideoEncodeAcceleratorFactory::CreateSharedMemory, 172 base::Bind(&FakeVideoEncodeAcceleratorFactory::CreateSharedMemory,
194 base::Unretained(&vea_factory_)), 173 base::Unretained(&vea_factory_)),
195 transport_sender_.get())); 174 transport_sender_.get(), base::Bind(&IgnorePlayoutDelayChanges)));
196 } else { 175 } else {
197 video_sender_.reset(new PeerVideoSender( 176 video_sender_.reset(new VideoSender(
198 cast_environment_, 177 cast_environment_, video_config,
199 video_config,
200 base::Bind(&SaveOperationalStatus, &operational_status_), 178 base::Bind(&SaveOperationalStatus, &operational_status_),
201 CreateDefaultVideoEncodeAcceleratorCallback(), 179 CreateDefaultVideoEncodeAcceleratorCallback(),
202 CreateDefaultVideoEncodeMemoryCallback(), 180 CreateDefaultVideoEncodeMemoryCallback(), transport_sender_.get(),
203 transport_sender_.get())); 181 base::Bind(&IgnorePlayoutDelayChanges)));
204 } 182 }
205 task_runner_->RunTasks(); 183 task_runner_->RunTasks();
206 } 184 }
207 185
208 scoped_refptr<media::VideoFrame> GetNewVideoFrame() { 186 scoped_refptr<media::VideoFrame> GetNewVideoFrame() {
209 if (first_frame_timestamp_.is_null()) 187 if (first_frame_timestamp_.is_null())
210 first_frame_timestamp_ = testing_clock_->NowTicks(); 188 first_frame_timestamp_ = testing_clock_->NowTicks();
211 gfx::Size size(kWidth, kHeight); 189 gfx::Size size(kWidth, kHeight);
212 scoped_refptr<media::VideoFrame> video_frame = 190 scoped_refptr<media::VideoFrame> video_frame =
213 media::VideoFrame::CreateFrame( 191 media::VideoFrame::CreateFrame(
(...skipping 18 matching lines...) Expand all
232 void RunTasks(int during_ms) { 210 void RunTasks(int during_ms) {
233 task_runner_->Sleep(base::TimeDelta::FromMilliseconds(during_ms)); 211 task_runner_->Sleep(base::TimeDelta::FromMilliseconds(during_ms));
234 } 212 }
235 213
236 base::SimpleTestTickClock* const testing_clock_; // Owned by CastEnvironment. 214 base::SimpleTestTickClock* const testing_clock_; // Owned by CastEnvironment.
237 const scoped_refptr<FakeSingleThreadTaskRunner> task_runner_; 215 const scoped_refptr<FakeSingleThreadTaskRunner> task_runner_;
238 const scoped_refptr<CastEnvironment> cast_environment_; 216 const scoped_refptr<CastEnvironment> cast_environment_;
239 OperationalStatus operational_status_; 217 OperationalStatus operational_status_;
240 FakeVideoEncodeAcceleratorFactory vea_factory_; 218 FakeVideoEncodeAcceleratorFactory vea_factory_;
241 TestPacketSender* transport_; // Owned by CastTransport. 219 TestPacketSender* transport_; // Owned by CastTransport.
242 scoped_ptr<CastTransportImpl> transport_sender_; 220 std::unique_ptr<CastTransportImpl> transport_sender_;
243 scoped_ptr<PeerVideoSender> video_sender_; 221 std::unique_ptr<VideoSender> video_sender_;
244 int last_pixel_value_; 222 int last_pixel_value_;
245 base::TimeTicks first_frame_timestamp_; 223 base::TimeTicks first_frame_timestamp_;
246 224
247 private: 225 private:
248 DISALLOW_COPY_AND_ASSIGN(VideoSenderTest); 226 DISALLOW_COPY_AND_ASSIGN(VideoSenderTest);
249 }; 227 };
250 228
251 TEST_F(VideoSenderTest, BuiltInEncoder) { 229 TEST_F(VideoSenderTest, BuiltInEncoder) {
252 InitEncoder(false, true); 230 InitEncoder(false, true);
253 ASSERT_EQ(STATUS_INITIALIZED, operational_status_); 231 ASSERT_EQ(STATUS_INITIALIZED, operational_status_);
(...skipping 380 matching lines...) Expand 10 before | Expand all | Expand 10 after
634 video_frame, 612 video_frame,
635 testing_clock_->NowTicks() + base::TimeDelta::FromMilliseconds(1000)); 613 testing_clock_->NowTicks() + base::TimeDelta::FromMilliseconds(1000));
636 RunTasks(33); 614 RunTasks(33);
637 transport_->SetPause(false); 615 transport_->SetPause(false);
638 RunTasks(33); 616 RunTasks(33);
639 EXPECT_EQ(2, transport_->number_of_rtp_packets()); 617 EXPECT_EQ(2, transport_->number_of_rtp_packets());
640 } 618 }
641 619
642 } // namespace cast 620 } // namespace cast
643 } // namespace media 621 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698