OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "media/test/pipeline_integration_test_base.h" | 5 #include "media/test/pipeline_integration_test_base.h" |
6 | 6 |
7 #include <utility> | 7 #include <utility> |
8 | 8 |
9 #include "base/bind.h" | 9 #include "base/bind.h" |
10 #include "base/memory/scoped_vector.h" | 10 #include "base/memory/scoped_vector.h" |
(...skipping 23 matching lines...) Expand all Loading... |
34 using ::testing::SaveArg; | 34 using ::testing::SaveArg; |
35 | 35 |
36 namespace media { | 36 namespace media { |
37 | 37 |
38 const char kNullVideoHash[] = "d41d8cd98f00b204e9800998ecf8427e"; | 38 const char kNullVideoHash[] = "d41d8cd98f00b204e9800998ecf8427e"; |
39 const char kNullAudioHash[] = "0.00,0.00,0.00,0.00,0.00,0.00,"; | 39 const char kNullAudioHash[] = "0.00,0.00,0.00,0.00,0.00,0.00,"; |
40 | 40 |
41 PipelineIntegrationTestBase::PipelineIntegrationTestBase() | 41 PipelineIntegrationTestBase::PipelineIntegrationTestBase() |
42 : hashing_enabled_(false), | 42 : hashing_enabled_(false), |
43 clockless_playback_(false), | 43 clockless_playback_(false), |
44 pipeline_(new Pipeline(message_loop_.task_runner(), new MediaLog())), | 44 pipeline_(new PipelineImpl(message_loop_.task_runner(), new MediaLog())), |
45 ended_(false), | 45 ended_(false), |
46 pipeline_status_(PIPELINE_OK), | 46 pipeline_status_(PIPELINE_OK), |
47 last_video_frame_format_(PIXEL_FORMAT_UNKNOWN), | 47 last_video_frame_format_(PIXEL_FORMAT_UNKNOWN), |
48 last_video_frame_color_space_(COLOR_SPACE_UNSPECIFIED), | 48 last_video_frame_color_space_(COLOR_SPACE_UNSPECIFIED), |
49 hardware_config_(AudioParameters(), AudioParameters()) { | 49 hardware_config_(AudioParameters(), AudioParameters()) { |
50 base::MD5Init(&md5_context_); | 50 base::MD5Init(&md5_context_); |
51 } | 51 } |
52 | 52 |
53 PipelineIntegrationTestBase::~PipelineIntegrationTestBase() { | 53 PipelineIntegrationTestBase::~PipelineIntegrationTestBase() { |
54 if (!pipeline_->IsRunning()) | 54 if (!pipeline_->IsRunning()) |
55 return; | 55 return; |
56 | 56 |
57 Stop(); | 57 Stop(); |
58 } | 58 } |
59 | 59 |
60 void PipelineIntegrationTestBase::OnSeeked(base::TimeDelta seek_time, | 60 void PipelineIntegrationTestBase::OnSeeked(base::TimeDelta seek_time, |
61 PipelineStatus status) { | 61 PipelineStatus status) { |
62 EXPECT_EQ(seek_time, pipeline_->GetMediaTime()); | 62 EXPECT_EQ(seek_time, pipeline_->GetMediaTime()); |
63 pipeline_status_ = status; | 63 pipeline_status_ = status; |
64 } | 64 } |
65 | 65 |
66 void PipelineIntegrationTestBase::OnStatusCallback( | 66 void PipelineIntegrationTestBase::OnStatusCallback(PipelineStatus status) { |
67 PipelineStatus status) { | |
68 pipeline_status_ = status; | 67 pipeline_status_ = status; |
69 message_loop_.PostTask(FROM_HERE, base::MessageLoop::QuitWhenIdleClosure()); | 68 message_loop_.PostTask(FROM_HERE, base::MessageLoop::QuitWhenIdleClosure()); |
70 } | 69 } |
71 | 70 |
72 void PipelineIntegrationTestBase::DemuxerEncryptedMediaInitDataCB( | 71 void PipelineIntegrationTestBase::DemuxerEncryptedMediaInitDataCB( |
73 EmeInitDataType type, | 72 EmeInitDataType type, |
74 const std::vector<uint8_t>& init_data) { | 73 const std::vector<uint8_t>& init_data) { |
75 DCHECK(!init_data.empty()); | 74 DCHECK(!init_data.empty()); |
76 CHECK(!encrypted_media_init_data_cb_.is_null()); | 75 CHECK(!encrypted_media_init_data_cb_.is_null()); |
77 encrypted_media_init_data_cb_.Run(type, init_data); | 76 encrypted_media_init_data_cb_.Run(type, init_data); |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
217 | 216 |
218 bool PipelineIntegrationTestBase::WaitUntilCurrentTimeIsAfter( | 217 bool PipelineIntegrationTestBase::WaitUntilCurrentTimeIsAfter( |
219 const base::TimeDelta& wait_time) { | 218 const base::TimeDelta& wait_time) { |
220 DCHECK(pipeline_->IsRunning()); | 219 DCHECK(pipeline_->IsRunning()); |
221 DCHECK_GT(pipeline_->GetPlaybackRate(), 0); | 220 DCHECK_GT(pipeline_->GetPlaybackRate(), 0); |
222 DCHECK(wait_time <= pipeline_->GetMediaDuration()); | 221 DCHECK(wait_time <= pipeline_->GetMediaDuration()); |
223 | 222 |
224 message_loop_.PostDelayedTask( | 223 message_loop_.PostDelayedTask( |
225 FROM_HERE, | 224 FROM_HERE, |
226 base::Bind(&PipelineIntegrationTestBase::QuitAfterCurrentTimeTask, | 225 base::Bind(&PipelineIntegrationTestBase::QuitAfterCurrentTimeTask, |
227 base::Unretained(this), | 226 base::Unretained(this), wait_time), |
228 wait_time), | |
229 base::TimeDelta::FromMilliseconds(10)); | 227 base::TimeDelta::FromMilliseconds(10)); |
230 message_loop_.Run(); | 228 message_loop_.Run(); |
231 return (pipeline_status_ == PIPELINE_OK); | 229 return (pipeline_status_ == PIPELINE_OK); |
232 } | 230 } |
233 | 231 |
234 void PipelineIntegrationTestBase::CreateDemuxer(const std::string& filename) { | 232 void PipelineIntegrationTestBase::CreateDemuxer(const std::string& filename) { |
235 FileDataSource* file_data_source = new FileDataSource(); | 233 FileDataSource* file_data_source = new FileDataSource(); |
236 base::FilePath file_path(GetTestDataFilePath(filename)); | 234 base::FilePath file_path(GetTestDataFilePath(filename)); |
237 CHECK(file_data_source->Initialize(file_path)) << "Is " << file_path.value() | 235 CHECK(file_data_source->Initialize(file_path)) << "Is " << file_path.value() |
238 << " missing?"; | 236 << " missing?"; |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
278 clockless_audio_sink_ = new ClocklessAudioSink(); | 276 clockless_audio_sink_ = new ClocklessAudioSink(); |
279 } | 277 } |
280 | 278 |
281 ScopedVector<AudioDecoder> audio_decoders; | 279 ScopedVector<AudioDecoder> audio_decoders; |
282 | 280 |
283 #if !defined(MEDIA_DISABLE_FFMPEG) | 281 #if !defined(MEDIA_DISABLE_FFMPEG) |
284 audio_decoders.push_back( | 282 audio_decoders.push_back( |
285 new FFmpegAudioDecoder(message_loop_.task_runner(), new MediaLog())); | 283 new FFmpegAudioDecoder(message_loop_.task_runner(), new MediaLog())); |
286 #endif | 284 #endif |
287 | 285 |
288 audio_decoders.push_back( | 286 audio_decoders.push_back(new OpusAudioDecoder(message_loop_.task_runner())); |
289 new OpusAudioDecoder(message_loop_.task_runner())); | |
290 | 287 |
291 // Don't allow the audio renderer to resample buffers if hashing is enabled. | 288 // Don't allow the audio renderer to resample buffers if hashing is enabled. |
292 if (!hashing_enabled_) { | 289 if (!hashing_enabled_) { |
293 AudioParameters out_params(AudioParameters::AUDIO_PCM_LOW_LATENCY, | 290 AudioParameters out_params(AudioParameters::AUDIO_PCM_LOW_LATENCY, |
294 CHANNEL_LAYOUT_STEREO, | 291 CHANNEL_LAYOUT_STEREO, 44100, 16, 512); |
295 44100, | |
296 16, | |
297 512); | |
298 hardware_config_.UpdateOutputConfig(out_params); | 292 hardware_config_.UpdateOutputConfig(out_params); |
299 } | 293 } |
300 | 294 |
301 scoped_ptr<AudioRenderer> audio_renderer(new AudioRendererImpl( | 295 scoped_ptr<AudioRenderer> audio_renderer(new AudioRendererImpl( |
302 message_loop_.task_runner(), | 296 message_loop_.task_runner(), |
303 (clockless_playback_) | 297 (clockless_playback_) |
304 ? static_cast<AudioRendererSink*>(clockless_audio_sink_.get()) | 298 ? static_cast<AudioRendererSink*>(clockless_audio_sink_.get()) |
305 : audio_sink_.get(), | 299 : audio_sink_.get(), |
306 std::move(audio_decoders), hardware_config_, new MediaLog())); | 300 std::move(audio_decoders), hardware_config_, new MediaLog())); |
307 if (hashing_enabled_) { | 301 if (hashing_enabled_) { |
(...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
355 DCHECK(clockless_playback_); | 349 DCHECK(clockless_playback_); |
356 return clockless_audio_sink_->render_time(); | 350 return clockless_audio_sink_->render_time(); |
357 } | 351 } |
358 | 352 |
359 base::TimeTicks DummyTickClock::NowTicks() { | 353 base::TimeTicks DummyTickClock::NowTicks() { |
360 now_ += base::TimeDelta::FromSeconds(60); | 354 now_ += base::TimeDelta::FromSeconds(60); |
361 return now_; | 355 return now_; |
362 } | 356 } |
363 | 357 |
364 } // namespace media | 358 } // namespace media |
OLD | NEW |