Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(526)

Side by Side Diff: media/video/ffmpeg_video_decode_engine_unittest.cc

Issue 3335014: Added FakeGlVideoDecodeEngine to exercise the IPC protocol for hardware video decoding (Closed)
Patch Set: compile man... Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 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/scoped_ptr.h" 5 #include "base/scoped_ptr.h"
6 #include "media/base/data_buffer.h" 6 #include "media/base/data_buffer.h"
7 #include "media/base/mock_ffmpeg.h" 7 #include "media/base/mock_ffmpeg.h"
8 #include "media/base/mock_task.h" 8 #include "media/base/mock_task.h"
9 #include "media/video/ffmpeg_video_decode_engine.h" 9 #include "media/video/ffmpeg_video_decode_engine.h"
10 #include "testing/gmock/include/gmock/gmock.h" 10 #include "testing/gmock/include/gmock/gmock.h"
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after
78 .WillOnce(Return(&codec_)); 78 .WillOnce(Return(&codec_));
79 EXPECT_CALL(*MockFFmpeg::get(), AVCodecAllocFrame()) 79 EXPECT_CALL(*MockFFmpeg::get(), AVCodecAllocFrame())
80 .WillOnce(Return(&yuv_frame_)); 80 .WillOnce(Return(&yuv_frame_));
81 EXPECT_CALL(*MockFFmpeg::get(), AVCodecThreadInit(&codec_context_, 2)) 81 EXPECT_CALL(*MockFFmpeg::get(), AVCodecThreadInit(&codec_context_, 2))
82 .WillOnce(Return(0)); 82 .WillOnce(Return(0));
83 EXPECT_CALL(*MockFFmpeg::get(), AVCodecOpen(&codec_context_, &codec_)) 83 EXPECT_CALL(*MockFFmpeg::get(), AVCodecOpen(&codec_context_, &codec_))
84 .WillOnce(Return(0)); 84 .WillOnce(Return(0));
85 EXPECT_CALL(*MockFFmpeg::get(), AVFree(&yuv_frame_)) 85 EXPECT_CALL(*MockFFmpeg::get(), AVFree(&yuv_frame_))
86 .Times(1); 86 .Times(1);
87 87
88 config_.codec_ = kCodecH264; 88 config_.codec = kCodecH264;
89 config_.opaque_context_ = &stream_; 89 config_.opaque_context = &stream_;
90 config_.width_ = kWidth; 90 config_.width = kWidth;
91 config_.height_ = kHeight; 91 config_.height = kHeight;
92 EXPECT_CALL(*this, OnInitializeComplete(_)) 92 EXPECT_CALL(*this, OnInitializeComplete(_))
93 .WillOnce(SaveInitializeResult(this)); 93 .WillOnce(SaveInitializeResult(this));
94 test_engine_->Initialize(MessageLoop::current(), this, config_); 94 test_engine_->Initialize(MessageLoop::current(), this, config_);
95 EXPECT_TRUE(info_.success_); 95 EXPECT_TRUE(info_.success);
96 } 96 }
97 97
98 public: 98 public:
99 MOCK_METHOD1(ConsumeVideoFrame, 99 MOCK_METHOD1(ConsumeVideoFrame,
100 void(scoped_refptr<VideoFrame> video_frame)); 100 void(scoped_refptr<VideoFrame> video_frame));
101 MOCK_METHOD1(ProduceVideoSample, 101 MOCK_METHOD1(ProduceVideoSample,
102 void(scoped_refptr<Buffer> buffer)); 102 void(scoped_refptr<Buffer> buffer));
103 MOCK_METHOD1(OnInitializeComplete, 103 MOCK_METHOD1(OnInitializeComplete,
104 void(const VideoCodecInfo& info)); 104 void(const VideoCodecInfo& info));
105 MOCK_METHOD0(OnUninitializeComplete, void()); 105 MOCK_METHOD0(OnUninitializeComplete, void());
(...skipping 24 matching lines...) Expand all
130 130
131 TEST_F(FFmpegVideoDecodeEngineTest, Initialize_FindDecoderFails) { 131 TEST_F(FFmpegVideoDecodeEngineTest, Initialize_FindDecoderFails) {
132 // Test avcodec_find_decoder() returning NULL. 132 // Test avcodec_find_decoder() returning NULL.
133 EXPECT_CALL(*MockFFmpeg::get(), AVCodecFindDecoder(CODEC_ID_NONE)) 133 EXPECT_CALL(*MockFFmpeg::get(), AVCodecFindDecoder(CODEC_ID_NONE))
134 .WillOnce(ReturnNull()); 134 .WillOnce(ReturnNull());
135 EXPECT_CALL(*MockFFmpeg::get(), AVCodecAllocFrame()) 135 EXPECT_CALL(*MockFFmpeg::get(), AVCodecAllocFrame())
136 .WillOnce(Return(&yuv_frame_)); 136 .WillOnce(Return(&yuv_frame_));
137 EXPECT_CALL(*MockFFmpeg::get(), AVFree(&yuv_frame_)) 137 EXPECT_CALL(*MockFFmpeg::get(), AVFree(&yuv_frame_))
138 .Times(1); 138 .Times(1);
139 139
140 config_.codec_ = kCodecH264; 140 config_.codec = kCodecH264;
141 config_.opaque_context_ = &stream_; 141 config_.opaque_context = &stream_;
142 config_.width_ = kWidth; 142 config_.width = kWidth;
143 config_.height_ = kHeight; 143 config_.height = kHeight;
144 EXPECT_CALL(*this, OnInitializeComplete(_)) 144 EXPECT_CALL(*this, OnInitializeComplete(_))
145 .WillOnce(SaveInitializeResult(this)); 145 .WillOnce(SaveInitializeResult(this));
146 test_engine_->Initialize(MessageLoop::current(), this, config_); 146 test_engine_->Initialize(MessageLoop::current(), this, config_);
147 EXPECT_FALSE(info_.success_); 147 EXPECT_FALSE(info_.success);
148 } 148 }
149 149
150 // Note There are 2 threads for FFmpeg-mt. 150 // Note There are 2 threads for FFmpeg-mt.
151 TEST_F(FFmpegVideoDecodeEngineTest, Initialize_InitThreadFails) { 151 TEST_F(FFmpegVideoDecodeEngineTest, Initialize_InitThreadFails) {
152 // Test avcodec_thread_init() failing. 152 // Test avcodec_thread_init() failing.
153 EXPECT_CALL(*MockFFmpeg::get(), AVCodecFindDecoder(CODEC_ID_NONE)) 153 EXPECT_CALL(*MockFFmpeg::get(), AVCodecFindDecoder(CODEC_ID_NONE))
154 .WillOnce(Return(&codec_)); 154 .WillOnce(Return(&codec_));
155 EXPECT_CALL(*MockFFmpeg::get(), AVCodecAllocFrame()) 155 EXPECT_CALL(*MockFFmpeg::get(), AVCodecAllocFrame())
156 .WillOnce(Return(&yuv_frame_)); 156 .WillOnce(Return(&yuv_frame_));
157 EXPECT_CALL(*MockFFmpeg::get(), AVCodecThreadInit(&codec_context_, 2)) 157 EXPECT_CALL(*MockFFmpeg::get(), AVCodecThreadInit(&codec_context_, 2))
158 .WillOnce(Return(-1)); 158 .WillOnce(Return(-1));
159 EXPECT_CALL(*MockFFmpeg::get(), AVFree(&yuv_frame_)) 159 EXPECT_CALL(*MockFFmpeg::get(), AVFree(&yuv_frame_))
160 .Times(1); 160 .Times(1);
161 161
162 config_.codec_ = kCodecH264; 162 config_.codec = kCodecH264;
163 config_.opaque_context_ = &stream_; 163 config_.opaque_context = &stream_;
164 config_.width_ = kWidth; 164 config_.width = kWidth;
165 config_.height_ = kHeight; 165 config_.height = kHeight;
166 EXPECT_CALL(*this, OnInitializeComplete(_)) 166 EXPECT_CALL(*this, OnInitializeComplete(_))
167 .WillOnce(SaveInitializeResult(this)); 167 .WillOnce(SaveInitializeResult(this));
168 test_engine_->Initialize(MessageLoop::current(), this, config_); 168 test_engine_->Initialize(MessageLoop::current(), this, config_);
169 EXPECT_FALSE(info_.success_); 169 EXPECT_FALSE(info_.success);
170 } 170 }
171 171
172 TEST_F(FFmpegVideoDecodeEngineTest, Initialize_OpenDecoderFails) { 172 TEST_F(FFmpegVideoDecodeEngineTest, Initialize_OpenDecoderFails) {
173 // Test avcodec_open() failing. 173 // Test avcodec_open() failing.
174 EXPECT_CALL(*MockFFmpeg::get(), AVCodecFindDecoder(CODEC_ID_NONE)) 174 EXPECT_CALL(*MockFFmpeg::get(), AVCodecFindDecoder(CODEC_ID_NONE))
175 .WillOnce(Return(&codec_)); 175 .WillOnce(Return(&codec_));
176 EXPECT_CALL(*MockFFmpeg::get(), AVCodecAllocFrame()) 176 EXPECT_CALL(*MockFFmpeg::get(), AVCodecAllocFrame())
177 .WillOnce(Return(&yuv_frame_)); 177 .WillOnce(Return(&yuv_frame_));
178 EXPECT_CALL(*MockFFmpeg::get(), AVCodecThreadInit(&codec_context_, 2)) 178 EXPECT_CALL(*MockFFmpeg::get(), AVCodecThreadInit(&codec_context_, 2))
179 .WillOnce(Return(0)); 179 .WillOnce(Return(0));
180 EXPECT_CALL(*MockFFmpeg::get(), AVCodecOpen(&codec_context_, &codec_)) 180 EXPECT_CALL(*MockFFmpeg::get(), AVCodecOpen(&codec_context_, &codec_))
181 .WillOnce(Return(-1)); 181 .WillOnce(Return(-1));
182 EXPECT_CALL(*MockFFmpeg::get(), AVFree(&yuv_frame_)) 182 EXPECT_CALL(*MockFFmpeg::get(), AVFree(&yuv_frame_))
183 .Times(1); 183 .Times(1);
184 184
185 config_.codec_ = kCodecH264; 185 config_.codec = kCodecH264;
186 config_.opaque_context_ = &stream_; 186 config_.opaque_context = &stream_;
187 config_.width_ = kWidth; 187 config_.width = kWidth;
188 config_.height_ = kHeight; 188 config_.height = kHeight;
189 EXPECT_CALL(*this, OnInitializeComplete(_)) 189 EXPECT_CALL(*this, OnInitializeComplete(_))
190 .WillOnce(SaveInitializeResult(this)); 190 .WillOnce(SaveInitializeResult(this));
191 test_engine_->Initialize(MessageLoop::current(), this, config_); 191 test_engine_->Initialize(MessageLoop::current(), this, config_);
192 EXPECT_FALSE(info_.success_); 192 EXPECT_FALSE(info_.success);
193 } 193 }
194 194
195 ACTION_P2(DemuxComplete, engine, buffer) { 195 ACTION_P2(DemuxComplete, engine, buffer) {
196 engine->ConsumeVideoSample(buffer); 196 engine->ConsumeVideoSample(buffer);
197 } 197 }
198 198
199 ACTION_P(DecodeComplete, decoder) { 199 ACTION_P(DecodeComplete, decoder) {
200 decoder->video_frame_ = arg0; 200 decoder->video_frame_ = arg0;
201 } 201 }
202 202
(...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after
283 EXPECT_EQ(VideoFrame::YV16, test_engine_->GetSurfaceFormat()); 283 EXPECT_EQ(VideoFrame::YV16, test_engine_->GetSurfaceFormat());
284 codec_context_.pix_fmt = PIX_FMT_YUVJ422P; 284 codec_context_.pix_fmt = PIX_FMT_YUVJ422P;
285 EXPECT_EQ(VideoFrame::YV16, test_engine_->GetSurfaceFormat()); 285 EXPECT_EQ(VideoFrame::YV16, test_engine_->GetSurfaceFormat());
286 286
287 // Invalid value. 287 // Invalid value.
288 codec_context_.pix_fmt = PIX_FMT_NONE; 288 codec_context_.pix_fmt = PIX_FMT_NONE;
289 EXPECT_EQ(VideoFrame::INVALID, test_engine_->GetSurfaceFormat()); 289 EXPECT_EQ(VideoFrame::INVALID, test_engine_->GetSurfaceFormat());
290 } 290 }
291 291
292 } // namespace media 292 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698