OLD | NEW |
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 <vector> | 5 #include <vector> |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
10 #include "media/base/video_frame.h" | 10 #include "media/base/video_frame.h" |
(...skipping 12 matching lines...) Expand all Loading... |
23 protected: | 23 protected: |
24 VideoEncoderImplTest() | 24 VideoEncoderImplTest() |
25 : testing_clock_(new base::SimpleTestTickClock()), | 25 : testing_clock_(new base::SimpleTestTickClock()), |
26 task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)), | 26 task_runner_(new test::FakeSingleThreadTaskRunner(testing_clock_)), |
27 cast_environment_(new CastEnvironment( | 27 cast_environment_(new CastEnvironment( |
28 scoped_ptr<base::TickClock>(testing_clock_).Pass(), | 28 scoped_ptr<base::TickClock>(testing_clock_).Pass(), |
29 task_runner_, | 29 task_runner_, |
30 task_runner_, | 30 task_runner_, |
31 task_runner_)), | 31 task_runner_)), |
32 video_config_(GetDefaultVideoSenderConfig()), | 32 video_config_(GetDefaultVideoSenderConfig()), |
| 33 operational_status_(STATUS_UNINITIALIZED), |
33 count_frames_delivered_(0) { | 34 count_frames_delivered_(0) { |
34 testing_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); | 35 testing_clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); |
35 first_frame_time_ = testing_clock_->NowTicks(); | 36 first_frame_time_ = testing_clock_->NowTicks(); |
36 } | 37 } |
37 | 38 |
38 ~VideoEncoderImplTest() override {} | 39 ~VideoEncoderImplTest() override {} |
39 | 40 |
40 void SetUp() override { | 41 void SetUp() override { |
41 video_config_.codec = GetParam(); | 42 video_config_.codec = GetParam(); |
42 } | 43 } |
43 | 44 |
44 void TearDown() override { | 45 void TearDown() override { |
45 video_encoder_.reset(); | 46 video_encoder_.reset(); |
46 task_runner_->RunTasks(); | 47 task_runner_->RunTasks(); |
47 } | 48 } |
48 | 49 |
49 void CreateEncoder(bool three_buffer_mode) { | 50 void CreateEncoder(bool three_buffer_mode) { |
| 51 ASSERT_EQ(STATUS_UNINITIALIZED, operational_status_); |
50 video_config_.max_number_of_video_buffers_used = | 52 video_config_.max_number_of_video_buffers_used = |
51 (three_buffer_mode ? 3 : 1); | 53 (three_buffer_mode ? 3 : 1); |
52 video_encoder_.reset(new VideoEncoderImpl( | 54 video_encoder_.reset(new VideoEncoderImpl( |
53 cast_environment_, | 55 cast_environment_, |
54 video_config_, | 56 video_config_, |
55 CastInitializationCallback())); | 57 base::Bind(&VideoEncoderImplTest::OnOperationalStatusChange, |
| 58 base::Unretained(this)))); |
56 task_runner_->RunTasks(); | 59 task_runner_->RunTasks(); |
| 60 ASSERT_EQ(STATUS_INITIALIZED, operational_status_); |
57 } | 61 } |
58 | 62 |
59 VideoEncoder* video_encoder() const { | 63 VideoEncoder* video_encoder() const { |
60 return video_encoder_.get(); | 64 return video_encoder_.get(); |
61 } | 65 } |
62 | 66 |
63 void AdvanceClock() { | 67 void AdvanceClock() { |
64 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(33)); | 68 testing_clock_->Advance(base::TimeDelta::FromMilliseconds(33)); |
65 } | 69 } |
66 | 70 |
(...skipping 29 matching lines...) Expand all Loading... |
96 const gfx::Size& size) const { | 100 const gfx::Size& size) const { |
97 const scoped_refptr<media::VideoFrame> frame = | 101 const scoped_refptr<media::VideoFrame> frame = |
98 media::VideoFrame::CreateFrame( | 102 media::VideoFrame::CreateFrame( |
99 VideoFrame::I420, size, gfx::Rect(size), size, | 103 VideoFrame::I420, size, gfx::Rect(size), size, |
100 testing_clock_->NowTicks() - first_frame_time_); | 104 testing_clock_->NowTicks() - first_frame_time_); |
101 PopulateVideoFrame(frame.get(), 123); | 105 PopulateVideoFrame(frame.get(), 123); |
102 return frame; | 106 return frame; |
103 } | 107 } |
104 | 108 |
105 private: | 109 private: |
| 110 void OnOperationalStatusChange(OperationalStatus status) { |
| 111 operational_status_ = status; |
| 112 } |
| 113 |
106 // Checks that |encoded_frame| matches expected values. This is the method | 114 // Checks that |encoded_frame| matches expected values. This is the method |
107 // bound in the callback returned from CreateFrameDeliverCallback(). | 115 // bound in the callback returned from CreateFrameDeliverCallback(). |
108 void DeliverEncodedVideoFrame( | 116 void DeliverEncodedVideoFrame( |
109 uint32 expected_frame_id, | 117 uint32 expected_frame_id, |
110 uint32 expected_last_referenced_frame_id, | 118 uint32 expected_last_referenced_frame_id, |
111 uint32 expected_rtp_timestamp, | 119 uint32 expected_rtp_timestamp, |
112 const base::TimeTicks& expected_reference_time, | 120 const base::TimeTicks& expected_reference_time, |
113 scoped_ptr<EncodedFrame> encoded_frame) { | 121 scoped_ptr<EncodedFrame> encoded_frame) { |
114 if (expected_frame_id != expected_last_referenced_frame_id) { | 122 if (expected_frame_id != expected_last_referenced_frame_id) { |
115 EXPECT_EQ(EncodedFrame::DEPENDENT, encoded_frame->dependency); | 123 EXPECT_EQ(EncodedFrame::DEPENDENT, encoded_frame->dependency); |
116 } else if (video_config_.max_number_of_video_buffers_used == 1) { | 124 } else if (video_config_.max_number_of_video_buffers_used == 1) { |
117 EXPECT_EQ(EncodedFrame::KEY, encoded_frame->dependency); | 125 EXPECT_EQ(EncodedFrame::KEY, encoded_frame->dependency); |
118 } | 126 } |
119 EXPECT_EQ(expected_frame_id, encoded_frame->frame_id); | 127 EXPECT_EQ(expected_frame_id, encoded_frame->frame_id); |
120 EXPECT_EQ(expected_last_referenced_frame_id, | 128 EXPECT_EQ(expected_last_referenced_frame_id, |
121 encoded_frame->referenced_frame_id) | 129 encoded_frame->referenced_frame_id) |
122 << "frame id: " << expected_frame_id; | 130 << "frame id: " << expected_frame_id; |
123 EXPECT_EQ(expected_rtp_timestamp, encoded_frame->rtp_timestamp); | 131 EXPECT_EQ(expected_rtp_timestamp, encoded_frame->rtp_timestamp); |
124 EXPECT_EQ(expected_reference_time, encoded_frame->reference_time); | 132 EXPECT_EQ(expected_reference_time, encoded_frame->reference_time); |
125 EXPECT_FALSE(encoded_frame->data.empty()); | 133 EXPECT_FALSE(encoded_frame->data.empty()); |
126 ++count_frames_delivered_; | 134 ++count_frames_delivered_; |
127 } | 135 } |
128 | 136 |
129 base::SimpleTestTickClock* const testing_clock_; // Owned by CastEnvironment. | 137 base::SimpleTestTickClock* const testing_clock_; // Owned by CastEnvironment. |
130 const scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; | 138 const scoped_refptr<test::FakeSingleThreadTaskRunner> task_runner_; |
131 const scoped_refptr<CastEnvironment> cast_environment_; | 139 const scoped_refptr<CastEnvironment> cast_environment_; |
132 VideoSenderConfig video_config_; | 140 VideoSenderConfig video_config_; |
133 base::TimeTicks first_frame_time_; | 141 base::TimeTicks first_frame_time_; |
| 142 OperationalStatus operational_status_; |
134 scoped_ptr<VideoEncoder> video_encoder_; | 143 scoped_ptr<VideoEncoder> video_encoder_; |
135 | 144 |
136 int count_frames_delivered_; | 145 int count_frames_delivered_; |
137 | 146 |
138 DISALLOW_COPY_AND_ASSIGN(VideoEncoderImplTest); | 147 DISALLOW_COPY_AND_ASSIGN(VideoEncoderImplTest); |
139 }; | 148 }; |
140 | 149 |
141 // A simple test to encode ten frames of video, expecting to see one key frame | 150 // A simple test to encode ten frames of video, expecting to see one key frame |
142 // followed by nine delta frames. | 151 // followed by nine delta frames. |
143 TEST_P(VideoEncoderImplTest, GeneratesKeyFrameThenOnlyDeltaFrames) { | 152 TEST_P(VideoEncoderImplTest, GeneratesKeyFrameThenOnlyDeltaFrames) { |
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
295 | 304 |
296 EXPECT_EQ(static_cast<int>(frame_id), count_frames_delivered()); | 305 EXPECT_EQ(static_cast<int>(frame_id), count_frames_delivered()); |
297 } | 306 } |
298 | 307 |
299 INSTANTIATE_TEST_CASE_P(, | 308 INSTANTIATE_TEST_CASE_P(, |
300 VideoEncoderImplTest, | 309 VideoEncoderImplTest, |
301 ::testing::Values(CODEC_VIDEO_FAKE, CODEC_VIDEO_VP8)); | 310 ::testing::Values(CODEC_VIDEO_FAKE, CODEC_VIDEO_VP8)); |
302 | 311 |
303 } // namespace cast | 312 } // namespace cast |
304 } // namespace media | 313 } // namespace media |
OLD | NEW |