diff options
author | scherkus <scherkus@chromium.org> | 2014-12-02 12:34:52 -0800 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-12-02 20:35:18 +0000 |
commit | e781ee12a4b03198b037fda1a6cf8385c9fff866 (patch) | |
tree | b4ed4094dc825c96fd89feb627b053672cb1f779 | |
parent | 43d512b568288fbbb7f401feb3d353b3d99e1570 (diff) | |
download | chromium_src-e781ee12a4b03198b037fda1a6cf8385c9fff866.zip chromium_src-e781ee12a4b03198b037fda1a6cf8385c9fff866.tar.gz chromium_src-e781ee12a4b03198b037fda1a6cf8385c9fff866.tar.bz2 |
Make PipelineIntegrationTestBase::Start() API return a PipelineStatus.
This simplifies the usage of Start() to return the resulting status. If
clients care about the status, they can check it themselves. This makes
for more localized test failure messages as well as cleans up some code.
BUG=438008
Review URL: https://codereview.chromium.org/765753005
Cr-Commit-Position: refs/heads/master@{#306440}
-rw-r--r-- | media/ffmpeg/ffmpeg_regression_tests.cc | 11 | ||||
-rw-r--r-- | media/filters/pipeline_integration_perftest.cc | 6 | ||||
-rw-r--r-- | media/filters/pipeline_integration_test.cc | 92 | ||||
-rw-r--r-- | media/filters/pipeline_integration_test_base.cc | 71 | ||||
-rw-r--r-- | media/filters/pipeline_integration_test_base.h | 27 |
5 files changed, 74 insertions, 133 deletions
diff --git a/media/ffmpeg/ffmpeg_regression_tests.cc b/media/ffmpeg/ffmpeg_regression_tests.cc index ebb2b9a..717e594 100644 --- a/media/ffmpeg/ffmpeg_regression_tests.cc +++ b/media/ffmpeg/ffmpeg_regression_tests.cc @@ -37,7 +37,6 @@ #include <string> #include "base/bind.h" -#include "media/base/test_data_util.h" namespace media { @@ -368,8 +367,7 @@ FLAKY_FFMPEG_TEST_CASE(WEBM_2, "security/uninitialize.webm"); TEST_P(FFmpegRegressionTest, BasicPlayback) { if (GetParam().init_status == PIPELINE_OK) { - ASSERT_TRUE(Start(GetTestDataFilePath(GetParam().filename), - GetParam().init_status, kHashed)); + ASSERT_EQ(PIPELINE_OK, Start(GetParam().filename, kHashed)); Play(); ASSERT_EQ(WaitUntilEndedOrError(), GetParam().end_status); EXPECT_EQ(GetParam().video_md5, GetVideoHash()); @@ -383,15 +381,16 @@ TEST_P(FFmpegRegressionTest, BasicPlayback) { Seek(base::TimeDelta::FromMilliseconds(0)); } } else { - ASSERT_FALSE(Start(GetTestDataFilePath(GetParam().filename), - GetParam().init_status, kHashed)); + // Don't bother checking the exact status as we only care that the + // pipeline failed to start. + EXPECT_NE(PIPELINE_OK, Start(GetParam().filename, kHashed)); EXPECT_EQ(GetParam().video_md5, GetVideoHash()); EXPECT_EQ(GetParam().audio_md5, GetAudioHash()); } } TEST_P(FlakyFFmpegRegressionTest, BasicPlayback) { - if (Start(GetTestDataFilePath(GetParam().filename))) { + if (Start(GetParam().filename) == PIPELINE_OK) { Play(); WaitUntilEndedOrError(); } diff --git a/media/filters/pipeline_integration_perftest.cc b/media/filters/pipeline_integration_perftest.cc index d84bd13..eac3be8 100644 --- a/media/filters/pipeline_integration_perftest.cc +++ b/media/filters/pipeline_integration_perftest.cc @@ -20,9 +20,9 @@ static void RunPlaybackBenchmark(const std::string& filename, for (int i = 0; i < iterations; ++i) { PipelineIntegrationTestBase pipeline; - ASSERT_TRUE(pipeline.Start(GetTestDataFilePath(filename), - PIPELINE_OK, - PipelineIntegrationTestBase::kClockless)); + ASSERT_EQ( + PIPELINE_OK, + pipeline.Start(filename, PipelineIntegrationTestBase::kClockless)); base::TimeTicks start = base::TimeTicks::HighResNow(); pipeline.Play(); diff --git a/media/filters/pipeline_integration_test.cc b/media/filters/pipeline_integration_test.cc index e3047cf..dffc5da 100644 --- a/media/filters/pipeline_integration_test.cc +++ b/media/filters/pipeline_integration_test.cc @@ -404,8 +404,7 @@ class MockMediaSource { MockMediaSource(const std::string& filename, const std::string& mimetype, int initial_append_size) - : file_path_(GetTestDataFilePath(filename)), - current_position_(0), + : current_position_(0), initial_append_size_(initial_append_size), mimetype_(mimetype), chunk_demuxer_(new ChunkDemuxer( @@ -416,7 +415,6 @@ class MockMediaSource { scoped_refptr<MediaLog>(new MediaLog()), true)), owned_chunk_demuxer_(chunk_demuxer_) { - file_data_ = ReadTestDataFile(filename); if (initial_append_size_ == kAppendWholeFile) @@ -551,7 +549,6 @@ class MockMediaSource { MOCK_METHOD0(InitSegmentReceived, void(void)); private: - base::FilePath file_path_; scoped_refptr<DecoderBuffer> file_data_; int current_position_; int initial_append_size_; @@ -578,7 +575,8 @@ class PipelineIntegrationTest demuxer_.get(), CreateRenderer(), base::Bind(&PipelineIntegrationTest::OnEnded, base::Unretained(this)), base::Bind(&PipelineIntegrationTest::OnError, base::Unretained(this)), - QuitOnStatusCB(PIPELINE_OK), + base::Bind(&PipelineIntegrationTest::OnStatusCallback, + base::Unretained(this)), base::Bind(&PipelineIntegrationTest::OnMetadata, base::Unretained(this)), base::Bind(&PipelineIntegrationTest::OnBufferingStateChanged, @@ -588,6 +586,7 @@ class PipelineIntegrationTest base::Closure(), base::Bind(&PipelineIntegrationTest::OnAddTextTrack, base::Unretained(this))); message_loop_.Run(); + EXPECT_EQ(PIPELINE_OK, pipeline_status_); } void StartHashedPipelineWithMediaSource(MockMediaSource* source) { @@ -616,7 +615,8 @@ class PipelineIntegrationTest demuxer_.get(), CreateRenderer(), base::Bind(&PipelineIntegrationTest::OnEnded, base::Unretained(this)), base::Bind(&PipelineIntegrationTest::OnError, base::Unretained(this)), - QuitOnStatusCB(PIPELINE_OK), + base::Bind(&PipelineIntegrationTest::OnStatusCallback, + base::Unretained(this)), base::Bind(&PipelineIntegrationTest::OnMetadata, base::Unretained(this)), base::Bind(&PipelineIntegrationTest::OnBufferingStateChanged, @@ -630,6 +630,7 @@ class PipelineIntegrationTest base::Unretained(encrypted_media))); message_loop_.Run(); + EXPECT_EQ(PIPELINE_OK, pipeline_status_); } // Verifies that seeking works properly for ChunkDemuxer when the @@ -665,7 +666,7 @@ class PipelineIntegrationTest }; TEST_F(PipelineIntegrationTest, BasicPlayback) { - ASSERT_TRUE(Start(GetTestDataFilePath("bear-320x240.webm"), PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("bear-320x240.webm")); Play(); @@ -673,7 +674,7 @@ TEST_F(PipelineIntegrationTest, BasicPlayback) { } TEST_F(PipelineIntegrationTest, BasicPlaybackOpusOgg) { - ASSERT_TRUE(Start(GetTestDataFilePath("bear-opus.ogg"), PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("bear-opus.ogg")); Play(); @@ -681,8 +682,7 @@ TEST_F(PipelineIntegrationTest, BasicPlaybackOpusOgg) { } TEST_F(PipelineIntegrationTest, BasicPlaybackHashed) { - ASSERT_TRUE(Start( - GetTestDataFilePath("bear-320x240.webm"), PIPELINE_OK, kHashed)); + ASSERT_EQ(PIPELINE_OK, Start("bear-320x240.webm", kHashed)); Play(); @@ -694,8 +694,7 @@ TEST_F(PipelineIntegrationTest, BasicPlaybackHashed) { } TEST_F(PipelineIntegrationTest, BasicPlaybackLive) { - ASSERT_TRUE(Start( - GetTestDataFilePath("bear-320x240-live.webm"), PIPELINE_OK, kHashed)); + ASSERT_EQ(PIPELINE_OK, Start("bear-320x240-live.webm", kHashed)); Play(); @@ -711,8 +710,7 @@ TEST_F(PipelineIntegrationTest, BasicPlaybackLive) { } TEST_F(PipelineIntegrationTest, F32PlaybackHashed) { - ASSERT_TRUE( - Start(GetTestDataFilePath("sfx_f32le.wav"), PIPELINE_OK, kHashed)); + ASSERT_EQ(PIPELINE_OK, Start("sfx_f32le.wav", kHashed)); Play(); ASSERT_TRUE(WaitUntilOnEnded()); EXPECT_EQ(std::string(kNullVideoHash), GetVideoHash()); @@ -724,8 +722,8 @@ TEST_F(PipelineIntegrationTest, BasicPlaybackEncrypted) { set_need_key_cb(base::Bind(&FakeEncryptedMedia::NeedKey, base::Unretained(&encrypted_media))); - ASSERT_TRUE(Start(GetTestDataFilePath("bear-320x240-av_enc-av.webm"), - encrypted_media.GetCdmContext())); + ASSERT_EQ(PIPELINE_OK, Start("bear-320x240-av_enc-av.webm", + encrypted_media.GetCdmContext())); Play(); @@ -1010,7 +1008,7 @@ TEST_F(PipelineIntegrationTest, MediaSource_ADTS_TimestampOffset) { } TEST_F(PipelineIntegrationTest, BasicPlaybackHashed_MP3) { - ASSERT_TRUE(Start(GetTestDataFilePath("sfx.mp3"), PIPELINE_OK, kHashed)); + ASSERT_EQ(PIPELINE_OK, Start("sfx.mp3", kHashed)); Play(); @@ -1217,8 +1215,7 @@ TEST_F(PipelineIntegrationTest, // Verify files which change configuration midstream fail gracefully. TEST_F(PipelineIntegrationTest, MidStreamConfigChangesFail) { - ASSERT_TRUE(Start( - GetTestDataFilePath("midstream_config_change.mp3"), PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("midstream_config_change.mp3")); Play(); ASSERT_EQ(WaitUntilEndedOrError(), PIPELINE_ERROR_DECODE); } @@ -1226,8 +1223,7 @@ TEST_F(PipelineIntegrationTest, MidStreamConfigChangesFail) { #endif TEST_F(PipelineIntegrationTest, BasicPlayback_16x9AspectRatio) { - ASSERT_TRUE(Start(GetTestDataFilePath("bear-320x240-16x9-aspect.webm"), - PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("bear-320x240-16x9-aspect.webm")); Play(); ASSERT_TRUE(WaitUntilOnEnded()); } @@ -1398,7 +1394,7 @@ TEST_F(PipelineIntegrationTest, EncryptedPlayback_MP4_CENC_KeyRotation_Audio) { #endif TEST_F(PipelineIntegrationTest, SeekWhilePaused) { - ASSERT_TRUE(Start(GetTestDataFilePath("bear-320x240.webm"), PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("bear-320x240.webm")); base::TimeDelta duration(pipeline_->GetMediaDuration()); base::TimeDelta start_seek_time(duration / 4); @@ -1421,7 +1417,7 @@ TEST_F(PipelineIntegrationTest, SeekWhilePaused) { } TEST_F(PipelineIntegrationTest, SeekWhilePlaying) { - ASSERT_TRUE(Start(GetTestDataFilePath("bear-320x240.webm"), PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("bear-320x240.webm")); base::TimeDelta duration(pipeline_->GetMediaDuration()); base::TimeDelta start_seek_time(duration / 4); @@ -1441,22 +1437,22 @@ TEST_F(PipelineIntegrationTest, SeekWhilePlaying) { #if defined(USE_PROPRIETARY_CODECS) TEST_F(PipelineIntegrationTest, Rotated_Metadata_0) { - ASSERT_TRUE(Start(GetTestDataFilePath("bear_rotate_0.mp4"), PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("bear_rotate_0.mp4")); ASSERT_EQ(VIDEO_ROTATION_0, metadata_.video_rotation); } TEST_F(PipelineIntegrationTest, Rotated_Metadata_90) { - ASSERT_TRUE(Start(GetTestDataFilePath("bear_rotate_90.mp4"), PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("bear_rotate_90.mp4")); ASSERT_EQ(VIDEO_ROTATION_90, metadata_.video_rotation); } TEST_F(PipelineIntegrationTest, Rotated_Metadata_180) { - ASSERT_TRUE(Start(GetTestDataFilePath("bear_rotate_180.mp4"), PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("bear_rotate_180.mp4")); ASSERT_EQ(VIDEO_ROTATION_180, metadata_.video_rotation); } TEST_F(PipelineIntegrationTest, Rotated_Metadata_270) { - ASSERT_TRUE(Start(GetTestDataFilePath("bear_rotate_270.mp4"), PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("bear_rotate_270.mp4")); ASSERT_EQ(VIDEO_ROTATION_270, metadata_.video_rotation); } #endif @@ -1481,16 +1477,14 @@ TEST_F(PipelineIntegrationTest, ChunkDemuxerAbortRead_VideoOnly) { // Verify that Opus audio in WebM containers can be played back. TEST_F(PipelineIntegrationTest, BasicPlayback_AudioOnly_Opus_WebM) { - ASSERT_TRUE(Start(GetTestDataFilePath("bear-opus-end-trimming.webm"), - PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("bear-opus-end-trimming.webm")); Play(); ASSERT_TRUE(WaitUntilOnEnded()); } // Verify that VP9 video in WebM containers can be played back. TEST_F(PipelineIntegrationTest, BasicPlayback_VideoOnly_VP9_WebM) { - ASSERT_TRUE(Start(GetTestDataFilePath("bear-vp9.webm"), - PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("bear-vp9.webm")); Play(); ASSERT_TRUE(WaitUntilOnEnded()); } @@ -1498,16 +1492,14 @@ TEST_F(PipelineIntegrationTest, BasicPlayback_VideoOnly_VP9_WebM) { // Verify that VP9 video and Opus audio in the same WebM container can be played // back. TEST_F(PipelineIntegrationTest, BasicPlayback_VP9_Opus_WebM) { - ASSERT_TRUE(Start(GetTestDataFilePath("bear-vp9-opus.webm"), - PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("bear-vp9-opus.webm")); Play(); ASSERT_TRUE(WaitUntilOnEnded()); } // Verify that VP8 video with alpha channel can be played back. TEST_F(PipelineIntegrationTest, BasicPlayback_VP8A_WebM) { - ASSERT_TRUE(Start(GetTestDataFilePath("bear-vp8a.webm"), - PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("bear-vp8a.webm")); Play(); ASSERT_TRUE(WaitUntilOnEnded()); EXPECT_EQ(last_video_frame_format_, VideoFrame::YV12A); @@ -1515,8 +1507,7 @@ TEST_F(PipelineIntegrationTest, BasicPlayback_VP8A_WebM) { // Verify that VP8A video with odd width/height can be played back. TEST_F(PipelineIntegrationTest, BasicPlayback_VP8A_Odd_WebM) { - ASSERT_TRUE(Start(GetTestDataFilePath("bear-vp8a-odd-dimensions.webm"), - PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("bear-vp8a-odd-dimensions.webm")); Play(); ASSERT_TRUE(WaitUntilOnEnded()); EXPECT_EQ(last_video_frame_format_, VideoFrame::YV12A); @@ -1524,8 +1515,7 @@ TEST_F(PipelineIntegrationTest, BasicPlayback_VP8A_Odd_WebM) { // Verify that VP9 video with odd width/height can be played back. TEST_F(PipelineIntegrationTest, BasicPlayback_VP9_Odd_WebM) { - ASSERT_TRUE(Start(GetTestDataFilePath("bear-vp9-odd-dimensions.webm"), - PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("bear-vp9-odd-dimensions.webm")); Play(); ASSERT_TRUE(WaitUntilOnEnded()); } @@ -1533,16 +1523,14 @@ TEST_F(PipelineIntegrationTest, BasicPlayback_VP9_Odd_WebM) { // Verify that VP8 video with inband text track can be played back. TEST_F(PipelineIntegrationTest, BasicPlayback_VP8_WebVTT_WebM) { EXPECT_CALL(*this, OnAddTextTrack(_, _)); - ASSERT_TRUE(Start(GetTestDataFilePath("bear-vp8-webvtt.webm"), - PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("bear-vp8-webvtt.webm")); Play(); ASSERT_TRUE(WaitUntilOnEnded()); } // Verify that VP9 video with 4:4:4 subsampling can be played back. TEST_F(PipelineIntegrationTest, P444_VP9_WebM) { - ASSERT_TRUE(Start(GetTestDataFilePath("bear-320x240-P444.webm"), - PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("bear-320x240-P444.webm")); Play(); ASSERT_TRUE(WaitUntilOnEnded()); EXPECT_EQ(last_video_frame_format_, VideoFrame::YV24); @@ -1550,8 +1538,7 @@ TEST_F(PipelineIntegrationTest, P444_VP9_WebM) { // Verify that videos with an odd frame size playback successfully. TEST_F(PipelineIntegrationTest, BasicPlayback_OddVideoSize) { - ASSERT_TRUE(Start(GetTestDataFilePath("butterfly-853x480.webm"), - PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("butterfly-853x480.webm")); Play(); ASSERT_TRUE(WaitUntilOnEnded()); } @@ -1559,7 +1546,7 @@ TEST_F(PipelineIntegrationTest, BasicPlayback_OddVideoSize) { // Verify that OPUS audio in a webm which reports a 44.1kHz sample rate plays // correctly at 48kHz TEST_F(PipelineIntegrationTest, BasicPlayback_Opus441kHz) { - ASSERT_TRUE(Start(GetTestDataFilePath("sfx-opus-441.webm"), PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("sfx-opus-441.webm")); Play(); ASSERT_TRUE(WaitUntilOnEnded()); EXPECT_EQ(48000, @@ -1587,7 +1574,7 @@ TEST_F(PipelineIntegrationTest, BasicPlayback_MediaSource_Opus441kHz) { // Ensures audio-only playback with missing or negative timestamps works. Tests // the common live-streaming case for chained ogg. See http://crbug.com/396864. TEST_F(PipelineIntegrationTest, BasicPlaybackChainedOgg) { - ASSERT_TRUE(Start(GetTestDataFilePath("double-sfx.ogg"), PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("double-sfx.ogg")); Play(); ASSERT_TRUE(WaitUntilOnEnded()); ASSERT_EQ(base::TimeDelta(), demuxer_->GetStartTime()); @@ -1596,7 +1583,7 @@ TEST_F(PipelineIntegrationTest, BasicPlaybackChainedOgg) { // Ensures audio-video playback with missing or negative timestamps fails softly // instead of crashing. See http://crbug.com/396864. TEST_F(PipelineIntegrationTest, BasicPlaybackChainedOggVideo) { - ASSERT_TRUE(Start(GetTestDataFilePath("double-bear.ogv"), PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("double-bear.ogv")); Play(); EXPECT_EQ(PIPELINE_ERROR_DECODE, WaitUntilEndedOrError()); ASSERT_EQ(base::TimeDelta(), demuxer_->GetStartTime()); @@ -1604,8 +1591,7 @@ TEST_F(PipelineIntegrationTest, BasicPlaybackChainedOggVideo) { // Tests that we signal ended even when audio runs longer than video track. TEST_F(PipelineIntegrationTest, BasicPlaybackAudioLongerThanVideo) { - ASSERT_TRUE(Start(GetTestDataFilePath("bear_audio_longer_than_video.ogv"), - PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("bear_audio_longer_than_video.ogv")); // Audio track is 2000ms. Video track is 1001ms. Duration should be higher // of the two. EXPECT_EQ(2000, pipeline_->GetMediaDuration().InMilliseconds()); @@ -1615,8 +1601,7 @@ TEST_F(PipelineIntegrationTest, BasicPlaybackAudioLongerThanVideo) { // Tests that we signal ended even when audio runs shorter than video track. TEST_F(PipelineIntegrationTest, BasicPlaybackAudioShorterThanVideo) { - ASSERT_TRUE(Start(GetTestDataFilePath("bear_audio_shorter_than_video.ogv"), - PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("bear_audio_shorter_than_video.ogv")); // Audio track is 500ms. Video track is 1001ms. Duration should be higher of // the two. EXPECT_EQ(1001, pipeline_->GetMediaDuration().InMilliseconds()); @@ -1625,8 +1610,7 @@ TEST_F(PipelineIntegrationTest, BasicPlaybackAudioShorterThanVideo) { } TEST_F(PipelineIntegrationTest, BasicPlaybackPositiveStartTime) { - ASSERT_TRUE( - Start(GetTestDataFilePath("nonzero-start-time.webm"), PIPELINE_OK)); + ASSERT_EQ(PIPELINE_OK, Start("nonzero-start-time.webm")); Play(); ASSERT_TRUE(WaitUntilOnEnded()); ASSERT_EQ(base::TimeDelta::FromMicroseconds(396000), diff --git a/media/filters/pipeline_integration_test_base.cc b/media/filters/pipeline_integration_test_base.cc index 9e08040..779e1b5 100644 --- a/media/filters/pipeline_integration_test_base.cc +++ b/media/filters/pipeline_integration_test_base.cc @@ -8,6 +8,7 @@ #include "base/memory/scoped_vector.h" #include "media/base/cdm_context.h" #include "media/base/media_log.h" +#include "media/base/test_data_util.h" #include "media/filters/audio_renderer_impl.h" #include "media/filters/chunk_demuxer.h" #include "media/filters/ffmpeg_audio_decoder.h" @@ -60,20 +61,6 @@ void PipelineIntegrationTestBase::OnStatusCallback( message_loop_.PostTask(FROM_HERE, base::MessageLoop::QuitClosure()); } -void PipelineIntegrationTestBase::OnStatusCallbackChecked( - PipelineStatus expected_status, - PipelineStatus status) { - EXPECT_EQ(expected_status, status); - OnStatusCallback(status); -} - -PipelineStatusCB PipelineIntegrationTestBase::QuitOnStatusCB( - PipelineStatus expected_status) { - return base::Bind(&PipelineIntegrationTestBase::OnStatusCallbackChecked, - base::Unretained(this), - expected_status); -} - void PipelineIntegrationTestBase::DemuxerNeedKeyCB( const std::string& type, const std::vector<uint8>& init_data) { @@ -110,51 +97,18 @@ void PipelineIntegrationTestBase::OnError(PipelineStatus status) { message_loop_.PostTask(FROM_HERE, base::MessageLoop::QuitClosure()); } -bool PipelineIntegrationTestBase::Start(const base::FilePath& file_path, - PipelineStatus expected_status) { - EXPECT_CALL(*this, OnMetadata(_)) - .Times(AtMost(1)) - .WillRepeatedly(SaveArg<0>(&metadata_)); - EXPECT_CALL(*this, OnBufferingStateChanged(BUFFERING_HAVE_ENOUGH)) - .Times(AtMost(1)); - CreateDemuxer(file_path); - pipeline_->Start( - demuxer_.get(), CreateRenderer(), - base::Bind(&PipelineIntegrationTestBase::OnEnded, base::Unretained(this)), - base::Bind(&PipelineIntegrationTestBase::OnError, base::Unretained(this)), - QuitOnStatusCB(expected_status), - base::Bind(&PipelineIntegrationTestBase::OnMetadata, - base::Unretained(this)), - base::Bind(&PipelineIntegrationTestBase::OnBufferingStateChanged, - base::Unretained(this)), - base::Bind(&PipelineIntegrationTestBase::OnVideoFramePaint, - base::Unretained(this)), - base::Closure(), base::Bind(&PipelineIntegrationTestBase::OnAddTextTrack, - base::Unretained(this))); - message_loop_.Run(); - return (pipeline_status_ == PIPELINE_OK); -} - -bool PipelineIntegrationTestBase::Start(const base::FilePath& file_path, - PipelineStatus expected_status, - kTestType test_type) { - hashing_enabled_ = test_type == kHashed; - clockless_playback_ = test_type == kClockless; - return Start(file_path, expected_status); -} - -bool PipelineIntegrationTestBase::Start(const base::FilePath& file_path) { - return Start(file_path, NULL); +PipelineStatus PipelineIntegrationTestBase::Start(const std::string& filename) { + return Start(filename, nullptr); } -bool PipelineIntegrationTestBase::Start(const base::FilePath& file_path, - CdmContext* cdm_context) { +PipelineStatus PipelineIntegrationTestBase::Start(const std::string& filename, + CdmContext* cdm_context) { EXPECT_CALL(*this, OnMetadata(_)) .Times(AtMost(1)) .WillRepeatedly(SaveArg<0>(&metadata_)); EXPECT_CALL(*this, OnBufferingStateChanged(BUFFERING_HAVE_ENOUGH)) .Times(AtMost(1)); - CreateDemuxer(file_path); + CreateDemuxer(filename); if (cdm_context) { EXPECT_CALL(*this, DecryptorAttached(true)); @@ -178,7 +132,14 @@ bool PipelineIntegrationTestBase::Start(const base::FilePath& file_path, base::Closure(), base::Bind(&PipelineIntegrationTestBase::OnAddTextTrack, base::Unretained(this))); message_loop_.Run(); - return (pipeline_status_ == PIPELINE_OK); + return pipeline_status_; +} + +PipelineStatus PipelineIntegrationTestBase::Start(const std::string& filename, + kTestType test_type) { + hashing_enabled_ = test_type == kHashed; + clockless_playback_ = test_type == kClockless; + return Start(filename); } void PipelineIntegrationTestBase::Play() { @@ -237,9 +198,9 @@ bool PipelineIntegrationTestBase::WaitUntilCurrentTimeIsAfter( return (pipeline_status_ == PIPELINE_OK); } -void PipelineIntegrationTestBase::CreateDemuxer( - const base::FilePath& file_path) { +void PipelineIntegrationTestBase::CreateDemuxer(const std::string& filename) { FileDataSource* file_data_source = new FileDataSource(); + base::FilePath file_path(GetTestDataFilePath(filename)); CHECK(file_data_source->Initialize(file_path)) << "Is " << file_path.value() << " missing?"; data_source_.reset(file_data_source); diff --git a/media/filters/pipeline_integration_test_base.h b/media/filters/pipeline_integration_test_base.h index c475bec..c98d82c 100644 --- a/media/filters/pipeline_integration_test_base.h +++ b/media/filters/pipeline_integration_test_base.h @@ -61,18 +61,18 @@ class PipelineIntegrationTestBase { bool WaitUntilOnEnded(); PipelineStatus WaitUntilEndedOrError(); - bool Start(const base::FilePath& file_path, PipelineStatus expected_status); - // Enable playback with audio and video hashing enabled, or clockless - // playback (audio only). Frame dropping and audio underflow will be disabled - // if hashing enabled to ensure consistent hashes. + + // Starts the pipeline (optionally with a CdmContext), returning the final + // status code after it has started. |filename| points at a test file located + // under media/test/data/. + PipelineStatus Start(const std::string& filename); + PipelineStatus Start(const std::string& filename, CdmContext* cdm_context); + + // Starts the pipeline in a particular mode for advanced testing and + // benchmarking purposes (e.g., underflow is disabled to ensure consistent + // hashes). enum kTestType { kHashed, kClockless }; - bool Start(const base::FilePath& file_path, - PipelineStatus expected_status, - kTestType test_type); - // Initialize the pipeline and ignore any status updates. Useful for testing - // invalid audio/video clips which don't have deterministic results. - bool Start(const base::FilePath& file_path); - bool Start(const base::FilePath& file_path, CdmContext* cdm_context); + PipelineStatus Start(const std::string& filename, kTestType test_type); void Play(); void Pause(); @@ -114,10 +114,7 @@ class PipelineIntegrationTestBase { PipelineMetadata metadata_; void OnSeeked(base::TimeDelta seek_time, PipelineStatus status); - void OnStatusCallbackChecked(PipelineStatus expected_status, - PipelineStatus status); void OnStatusCallback(PipelineStatus status); - PipelineStatusCB QuitOnStatusCB(PipelineStatus expected_status); void DemuxerNeedKeyCB(const std::string& type, const std::vector<uint8>& init_data); void set_need_key_cb(const Demuxer::NeedKeyCB& need_key_cb) { @@ -129,7 +126,7 @@ class PipelineIntegrationTestBase { void QuitAfterCurrentTimeTask(const base::TimeDelta& quit_time); // Creates Demuxer and sets |demuxer_|. - void CreateDemuxer(const base::FilePath& file_path); + void CreateDemuxer(const std::string& filename); // Creates and returns a Renderer. scoped_ptr<Renderer> CreateRenderer(); |