| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/message_loop/message_loop.h" | 6 #include "base/message_loop/message_loop.h" |
| 7 #include "base/synchronization/waitable_event.h" | 7 #include "base/synchronization/waitable_event.h" |
| 8 #include "base/threading/thread.h" | 8 #include "base/threading/thread.h" |
| 9 #include "content/renderer/media/rtc_video_decoder.h" | 9 #include "content/renderer/media/rtc_video_decoder.h" |
| 10 #include "media/base/gmock_callback_support.h" | 10 #include "media/base/gmock_callback_support.h" |
| (...skipping 13 matching lines...) Expand all Loading... |
| 24 class RTCVideoDecoderTest : public ::testing::Test, | 24 class RTCVideoDecoderTest : public ::testing::Test, |
| 25 webrtc::DecodedImageCallback { | 25 webrtc::DecodedImageCallback { |
| 26 public: | 26 public: |
| 27 RTCVideoDecoderTest() | 27 RTCVideoDecoderTest() |
| 28 : mock_gpu_factories_(new media::MockGpuVideoAcceleratorFactories), | 28 : mock_gpu_factories_(new media::MockGpuVideoAcceleratorFactories), |
| 29 vda_thread_("vda_thread"), | 29 vda_thread_("vda_thread"), |
| 30 idle_waiter_(false, false) { | 30 idle_waiter_(false, false) { |
| 31 memset(&codec_, 0, sizeof(codec_)); | 31 memset(&codec_, 0, sizeof(codec_)); |
| 32 } | 32 } |
| 33 | 33 |
| 34 virtual void SetUp() OVERRIDE { | 34 virtual void SetUp() override { |
| 35 ASSERT_TRUE(vda_thread_.Start()); | 35 ASSERT_TRUE(vda_thread_.Start()); |
| 36 vda_task_runner_ = vda_thread_.message_loop_proxy(); | 36 vda_task_runner_ = vda_thread_.message_loop_proxy(); |
| 37 mock_vda_ = new media::MockVideoDecodeAccelerator; | 37 mock_vda_ = new media::MockVideoDecodeAccelerator; |
| 38 EXPECT_CALL(*mock_gpu_factories_.get(), GetTaskRunner()) | 38 EXPECT_CALL(*mock_gpu_factories_.get(), GetTaskRunner()) |
| 39 .WillRepeatedly(Return(vda_task_runner_)); | 39 .WillRepeatedly(Return(vda_task_runner_)); |
| 40 EXPECT_CALL(*mock_gpu_factories_.get(), DoCreateVideoDecodeAccelerator()) | 40 EXPECT_CALL(*mock_gpu_factories_.get(), DoCreateVideoDecodeAccelerator()) |
| 41 .WillRepeatedly(Return(mock_vda_)); | 41 .WillRepeatedly(Return(mock_vda_)); |
| 42 EXPECT_CALL(*mock_gpu_factories_.get(), CreateSharedMemory(_)) | 42 EXPECT_CALL(*mock_gpu_factories_.get(), CreateSharedMemory(_)) |
| 43 .WillRepeatedly(Return(static_cast<base::SharedMemory*>(NULL))); | 43 .WillRepeatedly(Return(static_cast<base::SharedMemory*>(NULL))); |
| 44 EXPECT_CALL(*mock_vda_, Initialize(_, _)) | 44 EXPECT_CALL(*mock_vda_, Initialize(_, _)) |
| 45 .Times(1) | 45 .Times(1) |
| 46 .WillRepeatedly(Return(true)); | 46 .WillRepeatedly(Return(true)); |
| 47 EXPECT_CALL(*mock_vda_, Destroy()).Times(1); | 47 EXPECT_CALL(*mock_vda_, Destroy()).Times(1); |
| 48 } | 48 } |
| 49 | 49 |
| 50 virtual void TearDown() OVERRIDE { | 50 virtual void TearDown() override { |
| 51 VLOG(2) << "TearDown"; | 51 VLOG(2) << "TearDown"; |
| 52 EXPECT_TRUE(vda_thread_.IsRunning()); | 52 EXPECT_TRUE(vda_thread_.IsRunning()); |
| 53 RunUntilIdle(); // Wait until all callbascks complete. | 53 RunUntilIdle(); // Wait until all callbascks complete. |
| 54 vda_task_runner_->DeleteSoon(FROM_HERE, rtc_decoder_.release()); | 54 vda_task_runner_->DeleteSoon(FROM_HERE, rtc_decoder_.release()); |
| 55 // Make sure the decoder is released before stopping the thread. | 55 // Make sure the decoder is released before stopping the thread. |
| 56 RunUntilIdle(); | 56 RunUntilIdle(); |
| 57 vda_thread_.Stop(); | 57 vda_thread_.Stop(); |
| 58 } | 58 } |
| 59 | 59 |
| 60 virtual int32_t Decoded(webrtc::I420VideoFrame& decoded_image) OVERRIDE { | 60 virtual int32_t Decoded(webrtc::I420VideoFrame& decoded_image) override { |
| 61 VLOG(2) << "Decoded"; | 61 VLOG(2) << "Decoded"; |
| 62 EXPECT_EQ(vda_task_runner_, base::MessageLoopProxy::current()); | 62 EXPECT_EQ(vda_task_runner_, base::MessageLoopProxy::current()); |
| 63 return WEBRTC_VIDEO_CODEC_OK; | 63 return WEBRTC_VIDEO_CODEC_OK; |
| 64 } | 64 } |
| 65 | 65 |
| 66 void CreateDecoder(webrtc::VideoCodecType codec_type) { | 66 void CreateDecoder(webrtc::VideoCodecType codec_type) { |
| 67 VLOG(2) << "CreateDecoder"; | 67 VLOG(2) << "CreateDecoder"; |
| 68 codec_.codecType = codec_type; | 68 codec_.codecType = codec_type; |
| 69 rtc_decoder_ = | 69 rtc_decoder_ = |
| 70 RTCVideoDecoder::Create(codec_type, mock_gpu_factories_); | 70 RTCVideoDecoder::Create(codec_type, mock_gpu_factories_); |
| (...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 222 | 222 |
| 223 EXPECT_FALSE(rtc_decoder_->IsFirstBufferAfterReset(RTCVideoDecoder::ID_LAST, | 223 EXPECT_FALSE(rtc_decoder_->IsFirstBufferAfterReset(RTCVideoDecoder::ID_LAST, |
| 224 RTCVideoDecoder::ID_LAST)); | 224 RTCVideoDecoder::ID_LAST)); |
| 225 EXPECT_TRUE( | 225 EXPECT_TRUE( |
| 226 rtc_decoder_->IsFirstBufferAfterReset(0, RTCVideoDecoder::ID_LAST)); | 226 rtc_decoder_->IsFirstBufferAfterReset(0, RTCVideoDecoder::ID_LAST)); |
| 227 EXPECT_FALSE( | 227 EXPECT_FALSE( |
| 228 rtc_decoder_->IsFirstBufferAfterReset(1, RTCVideoDecoder::ID_LAST)); | 228 rtc_decoder_->IsFirstBufferAfterReset(1, RTCVideoDecoder::ID_LAST)); |
| 229 } | 229 } |
| 230 | 230 |
| 231 } // content | 231 } // content |
| OLD | NEW |