| OLD | NEW |
| 1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "base/bind.h" | 5 #include "base/bind.h" |
| 6 #include "base/logging.h" | 6 #include "base/logging.h" |
| 7 #include "base/thread_task_runner_handle.h" | 7 #include "base/thread_task_runner_handle.h" |
| 8 #include "base/timer/timer.h" | 8 #include "base/timer/timer.h" |
| 9 #include "media/base/android/media_codec_audio_decoder.h" | 9 #include "media/base/android/media_codec_audio_decoder.h" |
| 10 #include "media/base/android/media_codec_bridge.h" | 10 #include "media/base/android/media_codec_bridge.h" |
| 11 #include "media/base/android/media_codec_video_decoder.h" | 11 #include "media/base/android/media_codec_video_decoder.h" |
| 12 #include "media/base/android/media_statistics.h" |
| 12 #include "media/base/android/test_data_factory.h" | 13 #include "media/base/android/test_data_factory.h" |
| 13 #include "media/base/android/test_statistics.h" | 14 #include "media/base/android/test_statistics.h" |
| 14 #include "media/base/timestamp_constants.h" | 15 #include "media/base/timestamp_constants.h" |
| 15 #include "testing/gtest/include/gtest/gtest.h" | 16 #include "testing/gtest/include/gtest/gtest.h" |
| 16 #include "ui/gl/android/surface_texture.h" | 17 #include "ui/gl/android/surface_texture.h" |
| 17 | 18 |
| 18 namespace media { | 19 namespace media { |
| 19 | 20 |
| 20 // Helper macro to skip the test if MediaCodecBridge isn't available. | 21 // Helper macro to skip the test if MediaCodecBridge isn't available. |
| 21 #define SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE() \ | 22 #define SKIP_TEST_IF_MEDIA_CODEC_BRIDGE_IS_NOT_AVAILABLE() \ |
| (...skipping 198 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 | 221 |
| 221 base::MessageLoop message_loop_; | 222 base::MessageLoop message_loop_; |
| 222 bool is_timeout_expired_; | 223 bool is_timeout_expired_; |
| 223 | 224 |
| 224 bool is_prefetched_; | 225 bool is_prefetched_; |
| 225 bool is_stopped_; | 226 bool is_stopped_; |
| 226 bool is_starved_; | 227 bool is_starved_; |
| 227 base::TimeDelta stop_request_time_; | 228 base::TimeDelta stop_request_time_; |
| 228 | 229 |
| 229 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; | 230 scoped_refptr<base::SingleThreadTaskRunner> task_runner_; |
| 231 FrameStatistics frame_statistics_; |
| 230 DataAvailableCallback data_available_cb_; | 232 DataAvailableCallback data_available_cb_; |
| 231 scoped_refptr<gfx::SurfaceTexture> surface_texture_; | 233 scoped_refptr<gfx::SurfaceTexture> surface_texture_; |
| 232 | 234 |
| 233 DISALLOW_COPY_AND_ASSIGN(MediaCodecDecoderTest); | 235 DISALLOW_COPY_AND_ASSIGN(MediaCodecDecoderTest); |
| 234 }; | 236 }; |
| 235 | 237 |
| 236 MediaCodecDecoderTest::MediaCodecDecoderTest() | 238 MediaCodecDecoderTest::MediaCodecDecoderTest() |
| 237 : is_timeout_expired_(false), | 239 : is_timeout_expired_(false), |
| 238 is_prefetched_(false), | 240 is_prefetched_(false), |
| 239 is_stopped_(false), | 241 is_stopped_(false), |
| (...skipping 23 matching lines...) Expand all Loading... |
| 263 } | 265 } |
| 264 message_loop_.RunUntilIdle(); | 266 message_loop_.RunUntilIdle(); |
| 265 } while (!is_timeout_expired()); | 267 } while (!is_timeout_expired()); |
| 266 | 268 |
| 267 DCHECK(!timer.IsRunning()); | 269 DCHECK(!timer.IsRunning()); |
| 268 return false; | 270 return false; |
| 269 } | 271 } |
| 270 | 272 |
| 271 void MediaCodecDecoderTest::CreateAudioDecoder() { | 273 void MediaCodecDecoderTest::CreateAudioDecoder() { |
| 272 decoder_ = scoped_ptr<MediaCodecDecoder>(new MediaCodecAudioDecoder( | 274 decoder_ = scoped_ptr<MediaCodecDecoder>(new MediaCodecAudioDecoder( |
| 273 task_runner_, base::Bind(&MediaCodecDecoderTest::OnDataRequested, | 275 task_runner_, &frame_statistics_, |
| 274 base::Unretained(this)), | 276 base::Bind(&MediaCodecDecoderTest::OnDataRequested, |
| 277 base::Unretained(this)), |
| 275 base::Bind(&MediaCodecDecoderTest::OnStarvation, base::Unretained(this)), | 278 base::Bind(&MediaCodecDecoderTest::OnStarvation, base::Unretained(this)), |
| 276 base::Bind(&MediaCodecDecoderTest::OnDecoderDrained, | 279 base::Bind(&MediaCodecDecoderTest::OnDecoderDrained, |
| 277 base::Unretained(this)), | 280 base::Unretained(this)), |
| 278 base::Bind(&MediaCodecDecoderTest::OnStopDone, base::Unretained(this)), | 281 base::Bind(&MediaCodecDecoderTest::OnStopDone, base::Unretained(this)), |
| 279 base::Bind(&MediaCodecDecoderTest::OnKeyRequired, base::Unretained(this)), | 282 base::Bind(&MediaCodecDecoderTest::OnKeyRequired, base::Unretained(this)), |
| 280 base::Bind(&MediaCodecDecoderTest::OnError, base::Unretained(this)), | 283 base::Bind(&MediaCodecDecoderTest::OnError, base::Unretained(this)), |
| 281 base::Bind(&MediaCodecDecoderTest::OnUpdateCurrentTime, | 284 base::Bind(&MediaCodecDecoderTest::OnUpdateCurrentTime, |
| 282 base::Unretained(this)))); | 285 base::Unretained(this)))); |
| 283 | 286 |
| 284 data_available_cb_ = base::Bind(&MediaCodecDecoder::OnDemuxerDataAvailable, | 287 data_available_cb_ = base::Bind(&MediaCodecDecoder::OnDemuxerDataAvailable, |
| 285 base::Unretained(decoder_.get())); | 288 base::Unretained(decoder_.get())); |
| 286 } | 289 } |
| 287 | 290 |
| 288 void MediaCodecDecoderTest::CreateVideoDecoder() { | 291 void MediaCodecDecoderTest::CreateVideoDecoder() { |
| 289 decoder_ = scoped_ptr<MediaCodecDecoder>(new MediaCodecVideoDecoder( | 292 decoder_ = scoped_ptr<MediaCodecDecoder>(new MediaCodecVideoDecoder( |
| 290 task_runner_, base::Bind(&MediaCodecDecoderTest::OnDataRequested, | 293 task_runner_, &frame_statistics_, |
| 291 base::Unretained(this)), | 294 base::Bind(&MediaCodecDecoderTest::OnDataRequested, |
| 295 base::Unretained(this)), |
| 292 base::Bind(&MediaCodecDecoderTest::OnStarvation, base::Unretained(this)), | 296 base::Bind(&MediaCodecDecoderTest::OnStarvation, base::Unretained(this)), |
| 293 base::Bind(&MediaCodecDecoderTest::OnDecoderDrained, | 297 base::Bind(&MediaCodecDecoderTest::OnDecoderDrained, |
| 294 base::Unretained(this)), | 298 base::Unretained(this)), |
| 295 base::Bind(&MediaCodecDecoderTest::OnStopDone, base::Unretained(this)), | 299 base::Bind(&MediaCodecDecoderTest::OnStopDone, base::Unretained(this)), |
| 296 base::Bind(&MediaCodecDecoderTest::OnKeyRequired, base::Unretained(this)), | 300 base::Bind(&MediaCodecDecoderTest::OnKeyRequired, base::Unretained(this)), |
| 297 base::Bind(&MediaCodecDecoderTest::OnError, base::Unretained(this)), | 301 base::Bind(&MediaCodecDecoderTest::OnError, base::Unretained(this)), |
| 298 base::Bind(&MediaCodecDecoderTest::OnUpdateCurrentTime, | 302 base::Bind(&MediaCodecDecoderTest::OnUpdateCurrentTime, |
| 299 base::Unretained(this)), | 303 base::Unretained(this)), |
| 300 base::Bind(&MediaCodecDecoderTest::OnVideoSizeChanged, | 304 base::Bind(&MediaCodecDecoderTest::OnVideoSizeChanged, |
| 301 base::Unretained(this)), | 305 base::Unretained(this)), |
| (...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 755 | 759 |
| 756 EXPECT_TRUE(decoder_->IsStopped()); | 760 EXPECT_TRUE(decoder_->IsStopped()); |
| 757 EXPECT_TRUE(decoder_->IsCompleted()); | 761 EXPECT_TRUE(decoder_->IsCompleted()); |
| 758 EXPECT_EQ(data_factory_->last_pts(), pts_stat_.max()); | 762 EXPECT_EQ(data_factory_->last_pts(), pts_stat_.max()); |
| 759 | 763 |
| 760 // Check that the reported video size is the one from the in-stream configs. | 764 // Check that the reported video size is the one from the in-stream configs. |
| 761 EXPECT_EQ(data_factory_->GetConfigs().video_size, video_size_); | 765 EXPECT_EQ(data_factory_->GetConfigs().video_size, video_size_); |
| 762 } | 766 } |
| 763 | 767 |
| 764 } // namespace media | 768 } // namespace media |
| OLD | NEW |