| 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" |
| (...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 90 void PushExpectation(uint32_t expected_frame_id, | 90 void PushExpectation(uint32_t expected_frame_id, |
| 91 uint32_t expected_last_referenced_frame_id, | 91 uint32_t expected_last_referenced_frame_id, |
| 92 RtpTimeTicks expected_rtp_timestamp, | 92 RtpTimeTicks expected_rtp_timestamp, |
| 93 const base::TimeTicks& expected_reference_time) { | 93 const base::TimeTicks& expected_reference_time) { |
| 94 expectations_.push(Expectation{expected_frame_id, | 94 expectations_.push(Expectation{expected_frame_id, |
| 95 expected_last_referenced_frame_id, | 95 expected_last_referenced_frame_id, |
| 96 expected_rtp_timestamp, | 96 expected_rtp_timestamp, |
| 97 expected_reference_time}); | 97 expected_reference_time}); |
| 98 } | 98 } |
| 99 | 99 |
| 100 void CompareFrameWithExpected(scoped_ptr<SenderEncodedFrame> encoded_frame) { | 100 void CompareFrameWithExpected( |
| 101 std::unique_ptr<SenderEncodedFrame> encoded_frame) { |
| 101 ASSERT_LT(0u, expectations_.size()); | 102 ASSERT_LT(0u, expectations_.size()); |
| 102 auto e = expectations_.front(); | 103 auto e = expectations_.front(); |
| 103 expectations_.pop(); | 104 expectations_.pop(); |
| 104 if (e.expected_frame_id != e.expected_last_referenced_frame_id) { | 105 if (e.expected_frame_id != e.expected_last_referenced_frame_id) { |
| 105 EXPECT_EQ(EncodedFrame::DEPENDENT, encoded_frame->dependency); | 106 EXPECT_EQ(EncodedFrame::DEPENDENT, encoded_frame->dependency); |
| 106 } else { | 107 } else { |
| 107 EXPECT_EQ(EncodedFrame::KEY, encoded_frame->dependency); | 108 EXPECT_EQ(EncodedFrame::KEY, encoded_frame->dependency); |
| 108 } | 109 } |
| 109 EXPECT_EQ(e.expected_frame_id, encoded_frame->frame_id); | 110 EXPECT_EQ(e.expected_frame_id, encoded_frame->frame_id); |
| 110 EXPECT_EQ(e.expected_last_referenced_frame_id, | 111 EXPECT_EQ(e.expected_last_referenced_frame_id, |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 145 base::Bind(&EndToEndFrameChecker::CompareFrameWithExpected, | 146 base::Bind(&EndToEndFrameChecker::CompareFrameWithExpected, |
| 146 base::Unretained(this))); | 147 base::Unretained(this))); |
| 147 base::MessageLoop::current()->RunUntilIdle(); | 148 base::MessageLoop::current()->RunUntilIdle(); |
| 148 EXPECT_TRUE(decoder_init_result); | 149 EXPECT_TRUE(decoder_init_result); |
| 149 } | 150 } |
| 150 | 151 |
| 151 void PushExpectation(const scoped_refptr<VideoFrame>& frame) { | 152 void PushExpectation(const scoped_refptr<VideoFrame>& frame) { |
| 152 expectations_.push(frame); | 153 expectations_.push(frame); |
| 153 } | 154 } |
| 154 | 155 |
| 155 void EncodeDone(scoped_ptr<SenderEncodedFrame> encoded_frame) { | 156 void EncodeDone(std::unique_ptr<SenderEncodedFrame> encoded_frame) { |
| 156 auto buffer = DecoderBuffer::CopyFrom(encoded_frame->bytes(), | 157 auto buffer = DecoderBuffer::CopyFrom(encoded_frame->bytes(), |
| 157 encoded_frame->data.size()); | 158 encoded_frame->data.size()); |
| 158 decoder_.Decode(buffer, base::Bind(&EndToEndFrameChecker::DecodeDone, | 159 decoder_.Decode(buffer, base::Bind(&EndToEndFrameChecker::DecodeDone, |
| 159 base::Unretained(this))); | 160 base::Unretained(this))); |
| 160 } | 161 } |
| 161 | 162 |
| 162 void CompareFrameWithExpected(const scoped_refptr<VideoFrame>& frame) { | 163 void CompareFrameWithExpected(const scoped_refptr<VideoFrame>& frame) { |
| 163 ASSERT_LT(0u, expectations_.size()); | 164 ASSERT_LT(0u, expectations_.size()); |
| 164 auto& e = expectations_.front(); | 165 auto& e = expectations_.front(); |
| 165 expectations_.pop(); | 166 expectations_.pop(); |
| (...skipping 25 matching lines...) Expand all Loading... |
| 191 ASSERT_TRUE(cv_pixel_buffer); | 192 ASSERT_TRUE(cv_pixel_buffer); |
| 192 CVPixelBufferLockBaseAddress(cv_pixel_buffer, 0); | 193 CVPixelBufferLockBaseAddress(cv_pixel_buffer, 0); |
| 193 auto ptr = CVPixelBufferGetBaseAddressOfPlane(cv_pixel_buffer, 0); | 194 auto ptr = CVPixelBufferGetBaseAddressOfPlane(cv_pixel_buffer, 0); |
| 194 ASSERT_TRUE(ptr); | 195 ASSERT_TRUE(ptr); |
| 195 memset(ptr, 0xfe, CVPixelBufferGetBytesPerRowOfPlane(cv_pixel_buffer, 0) * | 196 memset(ptr, 0xfe, CVPixelBufferGetBytesPerRowOfPlane(cv_pixel_buffer, 0) * |
| 196 CVPixelBufferGetHeightOfPlane(cv_pixel_buffer, 0)); | 197 CVPixelBufferGetHeightOfPlane(cv_pixel_buffer, 0)); |
| 197 CVPixelBufferUnlockBaseAddress(cv_pixel_buffer, 0); | 198 CVPixelBufferUnlockBaseAddress(cv_pixel_buffer, 0); |
| 198 } | 199 } |
| 199 | 200 |
| 200 void NoopFrameEncodedCallback( | 201 void NoopFrameEncodedCallback( |
| 201 scoped_ptr<media::cast::SenderEncodedFrame> /*encoded_frame*/) { | 202 std::unique_ptr<media::cast::SenderEncodedFrame> /*encoded_frame*/) {} |
| 202 } | |
| 203 | 203 |
| 204 class TestPowerSource : public base::PowerMonitorSource { | 204 class TestPowerSource : public base::PowerMonitorSource { |
| 205 public: | 205 public: |
| 206 void GenerateSuspendEvent() { | 206 void GenerateSuspendEvent() { |
| 207 ProcessPowerEvent(SUSPEND_EVENT); | 207 ProcessPowerEvent(SUSPEND_EVENT); |
| 208 base::MessageLoop::current()->RunUntilIdle(); | 208 base::MessageLoop::current()->RunUntilIdle(); |
| 209 } | 209 } |
| 210 void GenerateResumeEvent() { | 210 void GenerateResumeEvent() { |
| 211 ProcessPowerEvent(RESUME_EVENT); | 211 ProcessPowerEvent(RESUME_EVENT); |
| 212 base::MessageLoop::current()->RunUntilIdle(); | 212 base::MessageLoop::current()->RunUntilIdle(); |
| 213 } | 213 } |
| 214 | 214 |
| 215 private: | 215 private: |
| 216 bool IsOnBatteryPowerImpl() final { return false; } | 216 bool IsOnBatteryPowerImpl() final { return false; } |
| 217 }; | 217 }; |
| 218 | 218 |
| 219 class H264VideoToolboxEncoderTest : public ::testing::Test { | 219 class H264VideoToolboxEncoderTest : public ::testing::Test { |
| 220 protected: | 220 protected: |
| 221 H264VideoToolboxEncoderTest() = default; | 221 H264VideoToolboxEncoderTest() = default; |
| 222 | 222 |
| 223 void SetUp() final { | 223 void SetUp() final { |
| 224 clock_ = new base::SimpleTestTickClock(); | 224 clock_ = new base::SimpleTestTickClock(); |
| 225 clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); | 225 clock_->Advance(base::TimeTicks::Now() - base::TimeTicks()); |
| 226 | 226 |
| 227 power_source_ = new TestPowerSource(); | 227 power_source_ = new TestPowerSource(); |
| 228 power_monitor_.reset( | 228 power_monitor_.reset(new base::PowerMonitor( |
| 229 new base::PowerMonitor(scoped_ptr<TestPowerSource>(power_source_))); | 229 std::unique_ptr<TestPowerSource>(power_source_))); |
| 230 | 230 |
| 231 cast_environment_ = new CastEnvironment( | 231 cast_environment_ = new CastEnvironment( |
| 232 scoped_ptr<base::TickClock>(clock_), message_loop_.task_runner(), | 232 std::unique_ptr<base::TickClock>(clock_), message_loop_.task_runner(), |
| 233 message_loop_.task_runner(), message_loop_.task_runner()); | 233 message_loop_.task_runner(), message_loop_.task_runner()); |
| 234 encoder_.reset(new H264VideoToolboxEncoder( | 234 encoder_.reset(new H264VideoToolboxEncoder( |
| 235 cast_environment_, video_sender_config_, | 235 cast_environment_, video_sender_config_, |
| 236 base::Bind(&SaveOperationalStatus, &operational_status_))); | 236 base::Bind(&SaveOperationalStatus, &operational_status_))); |
| 237 message_loop_.RunUntilIdle(); | 237 message_loop_.RunUntilIdle(); |
| 238 EXPECT_EQ(STATUS_INITIALIZED, operational_status_); | 238 EXPECT_EQ(STATUS_INITIALIZED, operational_status_); |
| 239 } | 239 } |
| 240 | 240 |
| 241 void TearDown() final { | 241 void TearDown() final { |
| 242 encoder_.reset(); | 242 encoder_.reset(); |
| (...skipping 18 matching lines...) Expand all Loading... |
| 261 } | 261 } |
| 262 | 262 |
| 263 static void TearDownTestCase() { frame_ = nullptr; } | 263 static void TearDownTestCase() { frame_ = nullptr; } |
| 264 | 264 |
| 265 static scoped_refptr<media::VideoFrame> frame_; | 265 static scoped_refptr<media::VideoFrame> frame_; |
| 266 static VideoSenderConfig video_sender_config_; | 266 static VideoSenderConfig video_sender_config_; |
| 267 | 267 |
| 268 base::SimpleTestTickClock* clock_; // Owned by CastEnvironment. | 268 base::SimpleTestTickClock* clock_; // Owned by CastEnvironment. |
| 269 base::MessageLoop message_loop_; | 269 base::MessageLoop message_loop_; |
| 270 scoped_refptr<CastEnvironment> cast_environment_; | 270 scoped_refptr<CastEnvironment> cast_environment_; |
| 271 scoped_ptr<VideoEncoder> encoder_; | 271 std::unique_ptr<VideoEncoder> encoder_; |
| 272 OperationalStatus operational_status_; | 272 OperationalStatus operational_status_; |
| 273 TestPowerSource* power_source_; // Owned by the power monitor. | 273 TestPowerSource* power_source_; // Owned by the power monitor. |
| 274 scoped_ptr<base::PowerMonitor> power_monitor_; | 274 std::unique_ptr<base::PowerMonitor> power_monitor_; |
| 275 | 275 |
| 276 private: | 276 private: |
| 277 DISALLOW_COPY_AND_ASSIGN(H264VideoToolboxEncoderTest); | 277 DISALLOW_COPY_AND_ASSIGN(H264VideoToolboxEncoderTest); |
| 278 }; | 278 }; |
| 279 | 279 |
| 280 // static | 280 // static |
| 281 scoped_refptr<media::VideoFrame> H264VideoToolboxEncoderTest::frame_; | 281 scoped_refptr<media::VideoFrame> H264VideoToolboxEncoderTest::frame_; |
| 282 VideoSenderConfig H264VideoToolboxEncoderTest::video_sender_config_; | 282 VideoSenderConfig H264VideoToolboxEncoderTest::video_sender_config_; |
| 283 | 283 |
| 284 TEST_F(H264VideoToolboxEncoderTest, CheckFrameMetadataSequence) { | 284 TEST_F(H264VideoToolboxEncoderTest, CheckFrameMetadataSequence) { |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 409 gfx::Size(kVideoWidth, kVideoHeight), base::TimeDelta())); | 409 gfx::Size(kVideoWidth, kVideoHeight), base::TimeDelta())); |
| 410 | 410 |
| 411 // After a power resume event, the factory should produce frames right away | 411 // After a power resume event, the factory should produce frames right away |
| 412 // because the encoder re-initializes on its own. | 412 // because the encoder re-initializes on its own. |
| 413 power_source_->GenerateResumeEvent(); | 413 power_source_->GenerateResumeEvent(); |
| 414 CreateFrameAndMemsetPlane(video_frame_factory.get()); | 414 CreateFrameAndMemsetPlane(video_frame_factory.get()); |
| 415 } | 415 } |
| 416 | 416 |
| 417 } // namespace cast | 417 } // namespace cast |
| 418 } // namespace media | 418 } // namespace media |
| OLD | NEW |