summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorscherkus <scherkus@chromium.org>2014-12-02 12:34:52 -0800
committerCommit bot <commit-bot@chromium.org>2014-12-02 20:35:18 +0000
commite781ee12a4b03198b037fda1a6cf8385c9fff866 (patch)
treeb4ed4094dc825c96fd89feb627b053672cb1f779
parent43d512b568288fbbb7f401feb3d353b3d99e1570 (diff)
downloadchromium_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.cc11
-rw-r--r--media/filters/pipeline_integration_perftest.cc6
-rw-r--r--media/filters/pipeline_integration_test.cc92
-rw-r--r--media/filters/pipeline_integration_test_base.cc71
-rw-r--r--media/filters/pipeline_integration_test_base.h27
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();