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 <stdint.h> | 5 #include <stdint.h> |
6 | 6 |
7 #include <queue> | 7 #include <queue> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
11 #include "base/macros.h" | 11 #include "base/macros.h" |
12 #include "base/message_loop/message_loop.h" | 12 #include "base/message_loop/message_loop.h" |
13 #include "base/power_monitor/power_monitor.h" | 13 #include "base/power_monitor/power_monitor.h" |
| 14 #include "base/run_loop.h" |
14 #include "base/test/launcher/unit_test_launcher.h" | 15 #include "base/test/launcher/unit_test_launcher.h" |
15 #include "base/test/power_monitor_test_base.h" | 16 #include "base/test/power_monitor_test_base.h" |
16 #include "base/test/simple_test_tick_clock.h" | 17 #include "base/test/simple_test_tick_clock.h" |
17 #include "base/test/test_suite.h" | 18 #include "base/test/test_suite.h" |
18 #include "media/base/cdm_context.h" | 19 #include "media/base/cdm_context.h" |
19 #include "media/base/decoder_buffer.h" | 20 #include "media/base/decoder_buffer.h" |
20 #include "media/base/media.h" | 21 #include "media/base/media.h" |
21 #include "media/base/media_switches.h" | 22 #include "media/base/media_switches.h" |
22 #include "media/base/media_util.h" | 23 #include "media/base/media_util.h" |
23 #include "media/cast/common/rtp_time.h" | 24 #include "media/cast/common/rtp_time.h" |
(...skipping 114 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
138 : public base::RefCountedThreadSafe<EndToEndFrameChecker> { | 139 : public base::RefCountedThreadSafe<EndToEndFrameChecker> { |
139 public: | 140 public: |
140 explicit EndToEndFrameChecker(const VideoDecoderConfig& config) | 141 explicit EndToEndFrameChecker(const VideoDecoderConfig& config) |
141 : decoder_(), count_frames_checked_(0) { | 142 : decoder_(), count_frames_checked_(0) { |
142 bool decoder_init_result; | 143 bool decoder_init_result; |
143 decoder_.Initialize( | 144 decoder_.Initialize( |
144 config, false, nullptr, | 145 config, false, nullptr, |
145 base::Bind(&SaveDecoderInitResult, &decoder_init_result), | 146 base::Bind(&SaveDecoderInitResult, &decoder_init_result), |
146 base::Bind(&EndToEndFrameChecker::CompareFrameWithExpected, | 147 base::Bind(&EndToEndFrameChecker::CompareFrameWithExpected, |
147 base::Unretained(this))); | 148 base::Unretained(this))); |
148 base::MessageLoop::current()->RunUntilIdle(); | 149 base::RunLoop().RunUntilIdle(); |
149 EXPECT_TRUE(decoder_init_result); | 150 EXPECT_TRUE(decoder_init_result); |
150 } | 151 } |
151 | 152 |
152 void PushExpectation(const scoped_refptr<VideoFrame>& frame) { | 153 void PushExpectation(const scoped_refptr<VideoFrame>& frame) { |
153 expectations_.push(frame); | 154 expectations_.push(frame); |
154 } | 155 } |
155 | 156 |
156 void EncodeDone(std::unique_ptr<SenderEncodedFrame> encoded_frame) { | 157 void EncodeDone(std::unique_ptr<SenderEncodedFrame> encoded_frame) { |
157 auto buffer = DecoderBuffer::CopyFrom(encoded_frame->bytes(), | 158 auto buffer = DecoderBuffer::CopyFrom(encoded_frame->bytes(), |
158 encoded_frame->data.size()); | 159 encoded_frame->data.size()); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
198 CVPixelBufferUnlockBaseAddress(cv_pixel_buffer, 0); | 199 CVPixelBufferUnlockBaseAddress(cv_pixel_buffer, 0); |
199 } | 200 } |
200 | 201 |
201 void NoopFrameEncodedCallback( | 202 void NoopFrameEncodedCallback( |
202 std::unique_ptr<media::cast::SenderEncodedFrame> /*encoded_frame*/) {} | 203 std::unique_ptr<media::cast::SenderEncodedFrame> /*encoded_frame*/) {} |
203 | 204 |
204 class TestPowerSource : public base::PowerMonitorSource { | 205 class TestPowerSource : public base::PowerMonitorSource { |
205 public: | 206 public: |
206 void GenerateSuspendEvent() { | 207 void GenerateSuspendEvent() { |
207 ProcessPowerEvent(SUSPEND_EVENT); | 208 ProcessPowerEvent(SUSPEND_EVENT); |
208 base::MessageLoop::current()->RunUntilIdle(); | 209 base::RunLoop().RunUntilIdle(); |
209 } | 210 } |
210 void GenerateResumeEvent() { | 211 void GenerateResumeEvent() { |
211 ProcessPowerEvent(RESUME_EVENT); | 212 ProcessPowerEvent(RESUME_EVENT); |
212 base::MessageLoop::current()->RunUntilIdle(); | 213 base::RunLoop().RunUntilIdle(); |
213 } | 214 } |
214 | 215 |
215 private: | 216 private: |
216 bool IsOnBatteryPowerImpl() final { return false; } | 217 bool IsOnBatteryPowerImpl() final { return false; } |
217 }; | 218 }; |
218 | 219 |
219 class H264VideoToolboxEncoderTest : public ::testing::Test { | 220 class H264VideoToolboxEncoderTest : public ::testing::Test { |
220 protected: | 221 protected: |
221 H264VideoToolboxEncoderTest() = default; | 222 H264VideoToolboxEncoderTest() = default; |
222 | 223 |
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
412 gfx::Size(kVideoWidth, kVideoHeight), base::TimeDelta())); | 413 gfx::Size(kVideoWidth, kVideoHeight), base::TimeDelta())); |
413 | 414 |
414 // After a power resume event, the factory should produce frames right away | 415 // After a power resume event, the factory should produce frames right away |
415 // because the encoder re-initializes on its own. | 416 // because the encoder re-initializes on its own. |
416 power_source_->GenerateResumeEvent(); | 417 power_source_->GenerateResumeEvent(); |
417 CreateFrameAndMemsetPlane(video_frame_factory.get()); | 418 CreateFrameAndMemsetPlane(video_frame_factory.get()); |
418 } | 419 } |
419 | 420 |
420 } // namespace cast | 421 } // namespace cast |
421 } // namespace media | 422 } // namespace media |
OLD | NEW |