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

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

Issue 760963003: Adds fake hardware video encoder. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: rebase 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 <stdint.h> 5 #include <stdint.h>
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.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/base/video_frame.h" 12 #include "media/base/video_frame.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/cast_transport_config.h" 15 #include "media/cast/net/cast_transport_config.h"
16 #include "media/cast/net/cast_transport_sender_impl.h" 16 #include "media/cast/net/cast_transport_sender_impl.h"
17 #include "media/cast/net/pacing/paced_sender.h" 17 #include "media/cast/net/pacing/paced_sender.h"
18 #include "media/cast/sender/video_frame_factory.h" 18 #include "media/cast/sender/video_frame_factory.h"
19 #include "media/cast/sender/video_sender.h" 19 #include "media/cast/sender/video_sender.h"
20 #include "media/cast/test/fake_single_thread_task_runner.h" 20 #include "media/cast/test/fake_single_thread_task_runner.h"
21 #include "media/cast/test/fake_video_encode_accelerator.h"
22 #include "media/cast/test/utility/default_config.h" 21 #include "media/cast/test/utility/default_config.h"
23 #include "media/cast/test/utility/video_utility.h" 22 #include "media/cast/test/utility/video_utility.h"
23 #include "media/video/fake_video_encode_accelerator.h"
24 #include "testing/gmock/include/gmock/gmock.h" 24 #include "testing/gmock/include/gmock/gmock.h"
25 #include "testing/gtest/include/gtest/gtest.h" 25 #include "testing/gtest/include/gtest/gtest.h"
26 26
27 namespace media { 27 namespace media {
28 namespace cast { 28 namespace cast {
29 29
30 namespace { 30 namespace {
31 static const uint8 kPixelValue = 123; 31 static const uint8 kPixelValue = 123;
32 static const int kWidth = 320; 32 static const int kWidth = 320;
33 static const int kHeight = 240; 33 static const int kHeight = 240;
(...skipping 92 matching lines...) Expand 10 before | Expand all | Expand 10 after
126 create_vea_cb, 126 create_vea_cb,
127 create_video_encode_mem_cb, 127 create_video_encode_mem_cb,
128 transport_sender, 128 transport_sender,
129 base::Bind(&IgnorePlayoutDelayChanges)) {} 129 base::Bind(&IgnorePlayoutDelayChanges)) {}
130 using VideoSender::OnReceivedCastFeedback; 130 using VideoSender::OnReceivedCastFeedback;
131 }; 131 };
132 } // namespace 132 } // namespace
133 133
134 class VideoSenderTest : public ::testing::Test { 134 class VideoSenderTest : public ::testing::Test {
135 protected: 135 protected:
136 VideoSenderTest() { 136 VideoSenderTest()
137 : stored_bitrates_(NULL) {
137 testing_clock_ = new base::SimpleTestTickClock(); 138 testing_clock_ = new base::SimpleTestTickClock();
138 testing_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); 139 testing_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks());
139 task_runner_ = new test::FakeSingleThreadTaskRunner(testing_clock_); 140 task_runner_ = new test::FakeSingleThreadTaskRunner(testing_clock_);
140 cast_environment_ = 141 cast_environment_ =
141 new CastEnvironment(scoped_ptr<base::TickClock>(testing_clock_).Pass(), 142 new CastEnvironment(scoped_ptr<base::TickClock>(testing_clock_).Pass(),
142 task_runner_, 143 task_runner_,
143 task_runner_, 144 task_runner_,
144 task_runner_); 145 task_runner_);
145 last_pixel_value_ = kPixelValue; 146 last_pixel_value_ = kPixelValue;
146 net::IPEndPoint dummy_endpoint; 147 net::IPEndPoint dummy_endpoint;
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after
184 video_config.min_bitrate = 1000000; 185 video_config.min_bitrate = 1000000;
185 video_config.start_bitrate = 1000000; 186 video_config.start_bitrate = 1000000;
186 video_config.max_qp = 56; 187 video_config.max_qp = 56;
187 video_config.min_qp = 0; 188 video_config.min_qp = 0;
188 video_config.max_frame_rate = 30; 189 video_config.max_frame_rate = 30;
189 video_config.max_number_of_video_buffers_used = 1; 190 video_config.max_number_of_video_buffers_used = 1;
190 video_config.codec = CODEC_VIDEO_VP8; 191 video_config.codec = CODEC_VIDEO_VP8;
191 CastInitializationStatus status = STATUS_VIDEO_UNINITIALIZED; 192 CastInitializationStatus status = STATUS_VIDEO_UNINITIALIZED;
192 193
193 if (external) { 194 if (external) {
194 test::FakeVideoEncodeAccelerator* fake_vea = 195 media::FakeVideoEncodeAccelerator* fake_vea =
195 new test::FakeVideoEncodeAccelerator( 196 new media::FakeVideoEncodeAccelerator(task_runner_);
196 task_runner_, &stored_bitrates_); 197 stored_bitrates_ = &fake_vea->stored_bitrates();
197 fake_vea->SetWillInitializationSucceed(expect_init_success); 198 fake_vea->SetWillInitializationSucceed(expect_init_success);
198 scoped_ptr<VideoEncodeAccelerator> fake_vea_owner(fake_vea); 199 scoped_ptr<VideoEncodeAccelerator> fake_vea_owner(fake_vea);
199 video_sender_.reset( 200 video_sender_.reset(
200 new PeerVideoSender(cast_environment_, 201 new PeerVideoSender(cast_environment_,
201 video_config, 202 video_config,
202 base::Bind(&SaveInitializationStatus, 203 base::Bind(&SaveInitializationStatus,
203 &status), 204 &status),
204 base::Bind(&CreateVideoEncodeAccelerator, 205 base::Bind(&CreateVideoEncodeAccelerator,
205 task_runner_, 206 task_runner_,
206 base::Passed(&fake_vea_owner)), 207 base::Passed(&fake_vea_owner)),
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after
246 247
247 void RunTasks(int during_ms) { 248 void RunTasks(int during_ms) {
248 task_runner_->Sleep(base::TimeDelta::FromMilliseconds(during_ms)); 249 task_runner_->Sleep(base::TimeDelta::FromMilliseconds(during_ms));
249 } 250 }
250 251
251 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment. 252 base::SimpleTestTickClock* testing_clock_; // Owned by CastEnvironment.
252 TestPacketSender transport_; 253 TestPacketSender transport_;
253 scoped_ptr<CastTransportSenderImpl> transport_sender_; 254 scoped_ptr<CastTransportSenderImpl> transport_sender_;
254 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; 255 scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_;
255 scoped_ptr<PeerVideoSender> video_sender_; 256 scoped_ptr<PeerVideoSender> video_sender_;
256 std::vector<uint32> stored_bitrates_; 257 const std::vector<uint32>* stored_bitrates_;
miu 2014/12/20 03:37:57 Please add a " // Owned by |video_sender_|." comm
hellner1 2015/01/07 16:41:31 Done.
257 scoped_refptr<CastEnvironment> cast_environment_; 258 scoped_refptr<CastEnvironment> cast_environment_;
258 int last_pixel_value_; 259 int last_pixel_value_;
259 base::TimeTicks first_frame_timestamp_; 260 base::TimeTicks first_frame_timestamp_;
260 261
261 DISALLOW_COPY_AND_ASSIGN(VideoSenderTest); 262 DISALLOW_COPY_AND_ASSIGN(VideoSenderTest);
262 }; 263 };
263 264
264 TEST_F(VideoSenderTest, BuiltInEncoder) { 265 TEST_F(VideoSenderTest, BuiltInEncoder) {
265 EXPECT_EQ(STATUS_VIDEO_INITIALIZED, InitEncoder(false, true)); 266 EXPECT_EQ(STATUS_VIDEO_INITIALIZED, InitEncoder(false, true));
266 scoped_refptr<media::VideoFrame> video_frame = GetNewVideoFrame(); 267 scoped_refptr<media::VideoFrame> video_frame = GetNewVideoFrame();
(...skipping 14 matching lines...) Expand all
281 const base::TimeTicks reference_time = testing_clock_->NowTicks(); 282 const base::TimeTicks reference_time = testing_clock_->NowTicks();
282 video_sender_->InsertRawVideoFrame(video_frame, reference_time); 283 video_sender_->InsertRawVideoFrame(video_frame, reference_time);
283 task_runner_->RunTasks(); 284 task_runner_->RunTasks();
284 video_sender_->InsertRawVideoFrame(video_frame, reference_time); 285 video_sender_->InsertRawVideoFrame(video_frame, reference_time);
285 task_runner_->RunTasks(); 286 task_runner_->RunTasks();
286 video_sender_->InsertRawVideoFrame(video_frame, reference_time); 287 video_sender_->InsertRawVideoFrame(video_frame, reference_time);
287 task_runner_->RunTasks(); 288 task_runner_->RunTasks();
288 289
289 // Fixed bitrate is used for external encoder. Bitrate is only once 290 // Fixed bitrate is used for external encoder. Bitrate is only once
290 // to the encoder. 291 // to the encoder.
291 EXPECT_EQ(1u, stored_bitrates_.size()); 292 EXPECT_EQ(1u, stored_bitrates_->size());
292 video_sender_.reset(NULL); 293 video_sender_.reset(NULL);
293 task_runner_->RunTasks(); 294 task_runner_->RunTasks();
294 } 295 }
295 296
296 TEST_F(VideoSenderTest, ExternalEncoderInitFails) { 297 TEST_F(VideoSenderTest, ExternalEncoderInitFails) {
297 EXPECT_EQ(STATUS_HW_VIDEO_ENCODER_NOT_SUPPORTED, 298 EXPECT_EQ(STATUS_HW_VIDEO_ENCODER_NOT_SUPPORTED,
298 InitEncoder(true, false)); 299 InitEncoder(true, false));
299 video_sender_.reset(NULL); 300 video_sender_.reset(NULL);
300 task_runner_->RunTasks(); 301 task_runner_->RunTasks();
301 } 302 }
(...skipping 237 matching lines...) Expand 10 before | Expand all | Expand 10 after
539 EXPECT_EQ(0, transport_.number_of_rtp_packets()); 540 EXPECT_EQ(0, transport_.number_of_rtp_packets());
540 } 541 }
541 542
542 TEST_F(VideoSenderTest, CheckVideoFrameFactoryIsNull) { 543 TEST_F(VideoSenderTest, CheckVideoFrameFactoryIsNull) {
543 EXPECT_EQ(STATUS_VIDEO_INITIALIZED, InitEncoder(false, true)); 544 EXPECT_EQ(STATUS_VIDEO_INITIALIZED, InitEncoder(false, true));
544 EXPECT_EQ(nullptr, video_sender_->CreateVideoFrameFactory().get()); 545 EXPECT_EQ(nullptr, video_sender_->CreateVideoFrameFactory().get());
545 } 546 }
546 547
547 } // namespace cast 548 } // namespace cast
548 } // namespace media 549 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698