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 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 const char kNullAudioHash[] = "0.00,0.00,0.00,0.00,0.00,0.00,"; | 42 const char kNullAudioHash[] = "0.00,0.00,0.00,0.00,0.00,0.00,"; |
43 | 43 |
44 PipelineIntegrationTestBase::PipelineIntegrationTestBase() | 44 PipelineIntegrationTestBase::PipelineIntegrationTestBase() |
45 : hashing_enabled_(false), | 45 : hashing_enabled_(false), |
46 clockless_playback_(false), | 46 clockless_playback_(false), |
47 pipeline_(new PipelineImpl(message_loop_.task_runner(), new MediaLog())), | 47 pipeline_(new PipelineImpl(message_loop_.task_runner(), new MediaLog())), |
48 ended_(false), | 48 ended_(false), |
49 pipeline_status_(PIPELINE_OK), | 49 pipeline_status_(PIPELINE_OK), |
50 last_video_frame_format_(PIXEL_FORMAT_UNKNOWN), | 50 last_video_frame_format_(PIXEL_FORMAT_UNKNOWN), |
51 last_video_frame_color_space_(COLOR_SPACE_UNSPECIFIED) { | 51 last_video_frame_color_space_(COLOR_SPACE_UNSPECIFIED) { |
52 base::MD5Init(&md5_context_); | 52 ResetVideoHash(); |
53 } | 53 } |
54 | 54 |
55 PipelineIntegrationTestBase::~PipelineIntegrationTestBase() { | 55 PipelineIntegrationTestBase::~PipelineIntegrationTestBase() { |
56 if (pipeline_->IsRunning()) | 56 if (pipeline_->IsRunning()) |
57 Stop(); | 57 Stop(); |
58 | 58 |
59 pipeline_.reset(); | 59 pipeline_.reset(); |
60 message_loop_.RunUntilIdle(); | 60 message_loop_.RunUntilIdle(); |
61 } | 61 } |
62 | 62 |
(...skipping 297 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
360 | 360 |
361 void PipelineIntegrationTestBase::OnVideoFramePaint( | 361 void PipelineIntegrationTestBase::OnVideoFramePaint( |
362 const scoped_refptr<VideoFrame>& frame) { | 362 const scoped_refptr<VideoFrame>& frame) { |
363 last_video_frame_format_ = frame->format(); | 363 last_video_frame_format_ = frame->format(); |
364 int result; | 364 int result; |
365 if (frame->metadata()->GetInteger(VideoFrameMetadata::COLOR_SPACE, &result)) | 365 if (frame->metadata()->GetInteger(VideoFrameMetadata::COLOR_SPACE, &result)) |
366 last_video_frame_color_space_ = static_cast<ColorSpace>(result); | 366 last_video_frame_color_space_ = static_cast<ColorSpace>(result); |
367 if (!hashing_enabled_ || last_frame_ == frame) | 367 if (!hashing_enabled_ || last_frame_ == frame) |
368 return; | 368 return; |
369 last_frame_ = frame; | 369 last_frame_ = frame; |
| 370 DVLOG(3) << __FUNCTION__ << " pts=" << frame->timestamp().InSecondsF(); |
370 VideoFrame::HashFrameForTesting(&md5_context_, frame); | 371 VideoFrame::HashFrameForTesting(&md5_context_, frame); |
371 } | 372 } |
372 | 373 |
| 374 void PipelineIntegrationTestBase::ResetVideoHash() { |
| 375 base::MD5Init(&md5_context_); |
| 376 } |
| 377 |
373 std::string PipelineIntegrationTestBase::GetVideoHash() { | 378 std::string PipelineIntegrationTestBase::GetVideoHash() { |
374 DCHECK(hashing_enabled_); | 379 DCHECK(hashing_enabled_); |
375 base::MD5Digest digest; | 380 base::MD5Digest digest; |
376 base::MD5Final(&digest, &md5_context_); | 381 base::MD5Final(&digest, &md5_context_); |
377 return base::MD5DigestToBase16(digest); | 382 return base::MD5DigestToBase16(digest); |
378 } | 383 } |
379 | 384 |
380 std::string PipelineIntegrationTestBase::GetAudioHash() { | 385 std::string PipelineIntegrationTestBase::GetAudioHash() { |
381 DCHECK(hashing_enabled_); | 386 DCHECK(hashing_enabled_); |
382 | 387 |
383 if (clockless_playback_) | 388 if (clockless_playback_) |
384 return clockless_audio_sink_->GetAudioHashForTesting(); | 389 return clockless_audio_sink_->GetAudioHashForTesting(); |
385 return audio_sink_->GetAudioHashForTesting(); | 390 return audio_sink_->GetAudioHashForTesting(); |
386 } | 391 } |
387 | 392 |
388 base::TimeDelta PipelineIntegrationTestBase::GetAudioTime() { | 393 base::TimeDelta PipelineIntegrationTestBase::GetAudioTime() { |
389 DCHECK(clockless_playback_); | 394 DCHECK(clockless_playback_); |
390 return clockless_audio_sink_->render_time(); | 395 return clockless_audio_sink_->render_time(); |
391 } | 396 } |
392 | 397 |
393 base::TimeTicks DummyTickClock::NowTicks() { | 398 base::TimeTicks DummyTickClock::NowTicks() { |
394 now_ += base::TimeDelta::FromSeconds(60); | 399 now_ += base::TimeDelta::FromSeconds(60); |
395 return now_; | 400 return now_; |
396 } | 401 } |
397 | 402 |
398 } // namespace media | 403 } // namespace media |
OLD | NEW |