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/ptr_util.h" | 10 #include "base/memory/ptr_util.h" |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
44 const char kNullAudioHash[] = "0.00,0.00,0.00,0.00,0.00,0.00,"; | 44 const char kNullAudioHash[] = "0.00,0.00,0.00,0.00,0.00,0.00,"; |
45 | 45 |
46 PipelineIntegrationTestBase::PipelineIntegrationTestBase() | 46 PipelineIntegrationTestBase::PipelineIntegrationTestBase() |
47 : hashing_enabled_(false), | 47 : hashing_enabled_(false), |
48 clockless_playback_(false), | 48 clockless_playback_(false), |
49 pipeline_(new PipelineImpl(message_loop_.task_runner(), new MediaLog())), | 49 pipeline_(new PipelineImpl(message_loop_.task_runner(), new MediaLog())), |
50 ended_(false), | 50 ended_(false), |
51 pipeline_status_(PIPELINE_OK), | 51 pipeline_status_(PIPELINE_OK), |
52 last_video_frame_format_(PIXEL_FORMAT_UNKNOWN), | 52 last_video_frame_format_(PIXEL_FORMAT_UNKNOWN), |
53 last_video_frame_color_space_(COLOR_SPACE_UNSPECIFIED) { | 53 last_video_frame_color_space_(COLOR_SPACE_UNSPECIFIED) { |
54 base::MD5Init(&md5_context_); | 54 ResetVideoHash(); |
55 } | 55 } |
56 | 56 |
57 PipelineIntegrationTestBase::~PipelineIntegrationTestBase() { | 57 PipelineIntegrationTestBase::~PipelineIntegrationTestBase() { |
58 if (pipeline_->IsRunning()) | 58 if (pipeline_->IsRunning()) |
59 Stop(); | 59 Stop(); |
60 | 60 |
61 pipeline_.reset(); | 61 pipeline_.reset(); |
62 base::RunLoop().RunUntilIdle(); | 62 base::RunLoop().RunUntilIdle(); |
63 } | 63 } |
64 | 64 |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
205 } | 205 } |
206 | 206 |
207 bool PipelineIntegrationTestBase::Seek(base::TimeDelta seek_time) { | 207 bool PipelineIntegrationTestBase::Seek(base::TimeDelta seek_time) { |
208 ended_ = false; | 208 ended_ = false; |
209 | 209 |
210 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)) | 210 EXPECT_CALL(*this, OnBufferingStateChange(BUFFERING_HAVE_ENOUGH)) |
211 .WillOnce(InvokeWithoutArgs(&message_loop_, &base::MessageLoop::QuitNow)); | 211 .WillOnce(InvokeWithoutArgs(&message_loop_, &base::MessageLoop::QuitNow)); |
212 pipeline_->Seek(seek_time, base::Bind(&PipelineIntegrationTestBase::OnSeeked, | 212 pipeline_->Seek(seek_time, base::Bind(&PipelineIntegrationTestBase::OnSeeked, |
213 base::Unretained(this), seek_time)); | 213 base::Unretained(this), seek_time)); |
214 base::RunLoop().Run(); | 214 base::RunLoop().Run(); |
| 215 EXPECT_CALL(*this, OnBufferingStateChange(_)).Times(AnyNumber()); |
215 return (pipeline_status_ == PIPELINE_OK); | 216 return (pipeline_status_ == PIPELINE_OK); |
216 } | 217 } |
217 | 218 |
218 bool PipelineIntegrationTestBase::Suspend() { | 219 bool PipelineIntegrationTestBase::Suspend() { |
219 pipeline_->Suspend(base::Bind(&PipelineIntegrationTestBase::OnStatusCallback, | 220 pipeline_->Suspend(base::Bind(&PipelineIntegrationTestBase::OnStatusCallback, |
220 base::Unretained(this))); | 221 base::Unretained(this))); |
221 base::RunLoop().Run(); | 222 base::RunLoop().Run(); |
222 return (pipeline_status_ == PIPELINE_OK); | 223 return (pipeline_status_ == PIPELINE_OK); |
223 } | 224 } |
224 | 225 |
(...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
365 | 366 |
366 void PipelineIntegrationTestBase::OnVideoFramePaint( | 367 void PipelineIntegrationTestBase::OnVideoFramePaint( |
367 const scoped_refptr<VideoFrame>& frame) { | 368 const scoped_refptr<VideoFrame>& frame) { |
368 last_video_frame_format_ = frame->format(); | 369 last_video_frame_format_ = frame->format(); |
369 int result; | 370 int result; |
370 if (frame->metadata()->GetInteger(VideoFrameMetadata::COLOR_SPACE, &result)) | 371 if (frame->metadata()->GetInteger(VideoFrameMetadata::COLOR_SPACE, &result)) |
371 last_video_frame_color_space_ = static_cast<ColorSpace>(result); | 372 last_video_frame_color_space_ = static_cast<ColorSpace>(result); |
372 if (!hashing_enabled_ || last_frame_ == frame) | 373 if (!hashing_enabled_ || last_frame_ == frame) |
373 return; | 374 return; |
374 last_frame_ = frame; | 375 last_frame_ = frame; |
| 376 DVLOG(3) << __FUNCTION__ << " pts=" << frame->timestamp().InSecondsF(); |
375 VideoFrame::HashFrameForTesting(&md5_context_, frame); | 377 VideoFrame::HashFrameForTesting(&md5_context_, frame); |
376 } | 378 } |
377 | 379 |
| 380 void PipelineIntegrationTestBase::ResetVideoHash() { |
| 381 DVLOG(1) << __FUNCTION__; |
| 382 base::MD5Init(&md5_context_); |
| 383 } |
| 384 |
378 std::string PipelineIntegrationTestBase::GetVideoHash() { | 385 std::string PipelineIntegrationTestBase::GetVideoHash() { |
379 DCHECK(hashing_enabled_); | 386 DCHECK(hashing_enabled_); |
380 base::MD5Digest digest; | 387 base::MD5Digest digest; |
381 base::MD5Final(&digest, &md5_context_); | 388 base::MD5Final(&digest, &md5_context_); |
382 return base::MD5DigestToBase16(digest); | 389 return base::MD5DigestToBase16(digest); |
383 } | 390 } |
384 | 391 |
385 std::string PipelineIntegrationTestBase::GetAudioHash() { | 392 std::string PipelineIntegrationTestBase::GetAudioHash() { |
386 DCHECK(hashing_enabled_); | 393 DCHECK(hashing_enabled_); |
387 | 394 |
388 if (clockless_playback_) | 395 if (clockless_playback_) |
389 return clockless_audio_sink_->GetAudioHashForTesting(); | 396 return clockless_audio_sink_->GetAudioHashForTesting(); |
390 return audio_sink_->GetAudioHashForTesting(); | 397 return audio_sink_->GetAudioHashForTesting(); |
391 } | 398 } |
392 | 399 |
393 base::TimeDelta PipelineIntegrationTestBase::GetAudioTime() { | 400 base::TimeDelta PipelineIntegrationTestBase::GetAudioTime() { |
394 DCHECK(clockless_playback_); | 401 DCHECK(clockless_playback_); |
395 return clockless_audio_sink_->render_time(); | 402 return clockless_audio_sink_->render_time(); |
396 } | 403 } |
397 | 404 |
398 base::TimeTicks DummyTickClock::NowTicks() { | 405 base::TimeTicks DummyTickClock::NowTicks() { |
399 now_ += base::TimeDelta::FromSeconds(60); | 406 now_ += base::TimeDelta::FromSeconds(60); |
400 return now_; | 407 return now_; |
401 } | 408 } |
402 | 409 |
403 } // namespace media | 410 } // namespace media |
OLD | NEW |