| 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 <cstdlib> | 5 #include <cstdlib> |
| 6 | 6 |
| 7 #include "base/bind.h" | 7 #include "base/bind.h" |
| 8 #include "base/bind_helpers.h" | 8 #include "base/bind_helpers.h" |
| 9 #include "base/synchronization/condition_variable.h" | 9 #include "base/synchronization/condition_variable.h" |
| 10 #include "base/synchronization/lock.h" | 10 #include "base/synchronization/lock.h" |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 68 // Prepare a simulated EncodedFrame to feed into the VideoDecoder. | 68 // Prepare a simulated EncodedFrame to feed into the VideoDecoder. |
| 69 | 69 |
| 70 const gfx::Size frame_size(kWidth, kHeight); | 70 const gfx::Size frame_size(kWidth, kHeight); |
| 71 const scoped_refptr<VideoFrame> video_frame = | 71 const scoped_refptr<VideoFrame> video_frame = |
| 72 VideoFrame::CreateFrame(VideoFrame::YV12, | 72 VideoFrame::CreateFrame(VideoFrame::YV12, |
| 73 frame_size, | 73 frame_size, |
| 74 gfx::Rect(frame_size), | 74 gfx::Rect(frame_size), |
| 75 frame_size, | 75 frame_size, |
| 76 next_frame_timestamp_); | 76 next_frame_timestamp_); |
| 77 next_frame_timestamp_ += base::TimeDelta::FromSeconds(1) / kFrameRate; | 77 next_frame_timestamp_ += base::TimeDelta::FromSeconds(1) / kFrameRate; |
| 78 PopulateVideoFrame(video_frame, 0); | 78 PopulateVideoFrame(video_frame.get(), 0); |
| 79 | 79 |
| 80 // Encode |frame| into |encoded_frame->data|. | 80 // Encode |frame| into |encoded_frame->data|. |
| 81 scoped_ptr<EncodedFrame> encoded_frame( | 81 scoped_ptr<EncodedFrame> encoded_frame( |
| 82 new EncodedFrame()); | 82 new EncodedFrame()); |
| 83 // Test only supports VP8, currently. | 83 // Test only supports VP8, currently. |
| 84 CHECK_EQ(CODEC_VIDEO_VP8, GetParam()); | 84 CHECK_EQ(CODEC_VIDEO_VP8, GetParam()); |
| 85 vp8_encoder_.Encode(video_frame, encoded_frame.get()); | 85 vp8_encoder_.Encode(video_frame, encoded_frame.get()); |
| 86 encoded_frame->frame_id = last_frame_id_ + 1 + num_dropped_frames; | 86 encoded_frame->frame_id = last_frame_id_ + 1 + num_dropped_frames; |
| 87 last_frame_id_ = encoded_frame->frame_id; | 87 last_frame_id_ = encoded_frame->frame_id; |
| 88 | 88 |
| (...skipping 25 matching lines...) Expand all Loading... |
| 114 | 114 |
| 115 private: | 115 private: |
| 116 // Called by |vp8_decoder_| to deliver each frame of decoded video. | 116 // Called by |vp8_decoder_| to deliver each frame of decoded video. |
| 117 void OnDecodedFrame(const scoped_refptr<VideoFrame>& expected_video_frame, | 117 void OnDecodedFrame(const scoped_refptr<VideoFrame>& expected_video_frame, |
| 118 bool should_be_continuous, | 118 bool should_be_continuous, |
| 119 const scoped_refptr<VideoFrame>& video_frame, | 119 const scoped_refptr<VideoFrame>& video_frame, |
| 120 bool is_continuous) { | 120 bool is_continuous) { |
| 121 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); | 121 DCHECK(cast_environment_->CurrentlyOn(CastEnvironment::MAIN)); |
| 122 | 122 |
| 123 // A NULL |video_frame| indicates a decode error, which we don't expect. | 123 // A NULL |video_frame| indicates a decode error, which we don't expect. |
| 124 ASSERT_FALSE(!video_frame); | 124 ASSERT_FALSE(!video_frame.get()); |
| 125 | 125 |
| 126 // Did the decoder detect whether frames were dropped? | 126 // Did the decoder detect whether frames were dropped? |
| 127 EXPECT_EQ(should_be_continuous, is_continuous); | 127 EXPECT_EQ(should_be_continuous, is_continuous); |
| 128 | 128 |
| 129 // Does the video data seem to be intact? | 129 // Does the video data seem to be intact? |
| 130 EXPECT_EQ(expected_video_frame->coded_size().width(), | 130 EXPECT_EQ(expected_video_frame->coded_size().width(), |
| 131 video_frame->coded_size().width()); | 131 video_frame->coded_size().width()); |
| 132 EXPECT_EQ(expected_video_frame->coded_size().height(), | 132 EXPECT_EQ(expected_video_frame->coded_size().height(), |
| 133 video_frame->coded_size().height()); | 133 video_frame->coded_size().height()); |
| 134 EXPECT_LT(40.0, I420PSNR(expected_video_frame, video_frame)); | 134 EXPECT_LT(40.0, I420PSNR(expected_video_frame, video_frame)); |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 179 } | 179 } |
| 180 WaitForAllVideoToBeDecoded(); | 180 WaitForAllVideoToBeDecoded(); |
| 181 } | 181 } |
| 182 | 182 |
| 183 INSTANTIATE_TEST_CASE_P(VideoDecoderTestScenarios, | 183 INSTANTIATE_TEST_CASE_P(VideoDecoderTestScenarios, |
| 184 VideoDecoderTest, | 184 VideoDecoderTest, |
| 185 ::testing::Values(CODEC_VIDEO_VP8)); | 185 ::testing::Values(CODEC_VIDEO_VP8)); |
| 186 | 186 |
| 187 } // namespace cast | 187 } // namespace cast |
| 188 } // namespace media | 188 } // namespace media |
| OLD | NEW |