Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(109)

Unified Diff: media/test/pipeline_integration_test.cc

Issue 1838203003: [TO M50] Enable implicit signalling for HE AAC v1 & v2 in ADTS. (Closed) Base URL: https://chromium.googlesource.com/a/chromium/src.git@2661
Patch Set: Created 4 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « media/test/data/bear-audio-main-aac.aac ('k') | media/test/pipeline_integration_test_base.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: media/test/pipeline_integration_test.cc
diff --git a/media/test/pipeline_integration_test.cc b/media/test/pipeline_integration_test.cc
index 80871f98c7b7efdd28349874ea9e1801d14c7b4b..fe7b8914d473998d5a3d282039b07e64963696d6 100644
--- a/media/test/pipeline_integration_test.cc
+++ b/media/test/pipeline_integration_test.cc
@@ -681,7 +681,15 @@ class PipelineIntegrationTestHost : public testing::Test,
class PipelineIntegrationTest : public PipelineIntegrationTestHost {
public:
- void StartPipelineWithMediaSource(MockMediaSource* source) {
+ PipelineStatus StartPipelineWithMediaSource(MockMediaSource* source) {
+ return StartPipelineWithMediaSource(source, kNormal);
+ }
+
+ PipelineStatus StartPipelineWithMediaSource(MockMediaSource* source,
+ uint8_t test_type) {
+ hashing_enabled_ = test_type & kHashed;
+ clockless_playback_ = test_type & kClockless;
+
EXPECT_CALL(*source, InitSegmentReceived()).Times(AtLeast(1));
EXPECT_CALL(*this, OnMetadata(_))
.Times(AtMost(1))
@@ -711,17 +719,7 @@ class PipelineIntegrationTest : public PipelineIntegrationTestHost {
base::Unretained(this)));
message_loop_.Run();
EXPECT_EQ(PIPELINE_OK, pipeline_status_);
- }
-
- void StartHashedPipelineWithMediaSource(MockMediaSource* source) {
- hashing_enabled_ = true;
- StartPipelineWithMediaSource(source);
- }
-
- void StartHashedClocklessPipelineWithMediaSource(MockMediaSource* source) {
- hashing_enabled_ = true;
- clockless_playback_ = true;
- StartPipelineWithMediaSource(source);
+ return pipeline_status_;
}
void StartPipelineWithEncryptedMedia(MockMediaSource* source,
@@ -801,6 +799,97 @@ class PipelineIntegrationTest : public PipelineIntegrationTestHost {
}
};
+struct PlaybackTestData {
+ const std::string filename;
+ const uint32_t start_time_ms;
+ const uint32_t duration_ms;
+};
+
+struct MSEPlaybackTestData {
+ const std::string filename;
+ const std::string mimetype;
+ const size_t append_bytes;
+ const uint32_t duration_ms;
+};
+
+// Tells gtest how to print our PlaybackTestData structure.
+std::ostream& operator<<(std::ostream& os, const PlaybackTestData& data) {
+ return os << data.filename;
+}
+
+std::ostream& operator<<(std::ostream& os, const MSEPlaybackTestData& data) {
+ return os << data.filename;
+}
+
+class BasicPlaybackTest : public PipelineIntegrationTest,
+ public testing::WithParamInterface<PlaybackTestData> {
+};
+
+class BasicMSEPlaybackTest
+ : public ::testing::WithParamInterface<MSEPlaybackTestData>,
+ public PipelineIntegrationTest {};
+
+TEST_P(BasicPlaybackTest, PlayToEnd) {
+ PlaybackTestData data = GetParam();
+
+ ASSERT_EQ(PIPELINE_OK, Start(data.filename, kClockless));
+ EXPECT_EQ(data.start_time_ms, demuxer_->GetStartTime().InMilliseconds());
+ EXPECT_EQ(data.duration_ms, pipeline_->GetMediaDuration().InMilliseconds());
+
+ Play();
+ ASSERT_TRUE(WaitUntilOnEnded());
+}
+
+TEST_P(BasicMSEPlaybackTest, PlayToEnd) {
+ MSEPlaybackTestData data = GetParam();
+
+ MockMediaSource source(data.filename, data.mimetype, data.append_bytes);
+ // TODO -- ADD uint8_t test_type to StartWithMSE and pass clockless flags
+ ASSERT_EQ(PIPELINE_OK, StartPipelineWithMediaSource(&source, kClockless));
+ source.EndOfStream();
+
+ EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size());
+ EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds());
+ EXPECT_EQ(data.duration_ms,
+ pipeline_->GetBufferedTimeRanges().end(0).InMilliseconds());
+
+ Play();
+
+ ASSERT_TRUE(WaitUntilOnEnded());
+
+ EXPECT_TRUE(demuxer_->GetTimelineOffset().is_null());
+ source.Shutdown();
+ Stop();
+}
+
+#if defined(USE_PROPRIETARY_CODECS)
+
+const PlaybackTestData kADTSTests[] = {
+ {"bear-audio-main-aac.aac", 0, 2724},
+ {"bear-audio-lc-aac.aac", 0, 2858},
+ {"bear-audio-implicit-he-aac-v1.aac", 0, 2812},
+ {"bear-audio-implicit-he-aac-v2.aac", 0, 3047},
+};
+
+// TODO(chcunningham): Migrate other basic playback tests to TEST_P.
+INSTANTIATE_TEST_CASE_P(PropritaryCodecs,
+ BasicPlaybackTest,
+ testing::ValuesIn(kADTSTests));
+
+const MSEPlaybackTestData kMediaSourceADTSTests[] = {
+ {"bear-audio-main-aac.aac", kADTS, kAppendWholeFile, 2773},
+ {"bear-audio-lc-aac.aac", kADTS, kAppendWholeFile, 2794},
+ {"bear-audio-implicit-he-aac-v1.aac", kADTS, kAppendWholeFile, 2858},
+ {"bear-audio-implicit-he-aac-v2.aac", kADTS, kAppendWholeFile, 2901},
+};
+
+// TODO(chcunningham): Migrate other basic MSE playback tests to TEST_P.
+INSTANTIATE_TEST_CASE_P(PropritaryCodecs,
+ BasicMSEPlaybackTest,
+ testing::ValuesIn(kMediaSourceADTSTests));
+
+#endif // defined(USE_PROPRIETARY_CODECS)
+
TEST_F(PipelineIntegrationTest, BasicPlayback) {
ASSERT_EQ(PIPELINE_OK, Start("bear-320x240.webm"));
@@ -881,7 +970,7 @@ TEST_F(PipelineIntegrationTest,
MAYBE_CLOCKLESS(BasicPlaybackOpusWebmTrimmingHashed_MediaSource)) {
MockMediaSource source("opus-trimming-test.webm", kOpusAudioOnlyWebM,
kAppendWholeFile);
- StartHashedClocklessPipelineWithMediaSource(&source);
+ StartPipelineWithMediaSource(&source, kClockless | kHashed);
source.EndOfStream();
Play();
@@ -1051,7 +1140,7 @@ TEST_F(PipelineIntegrationTest, BasicPlayback_MediaSource_Opus_WebM) {
TEST_F(PipelineIntegrationTest, DISABLED_MediaSource_Opus_Seeking_WebM) {
MockMediaSource source("bear-opus-end-trimming.webm", kOpusAudioOnlyWebM,
kAppendWholeFile);
- StartHashedPipelineWithMediaSource(&source);
+ StartPipelineWithMediaSource(&source, kHashed);
EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size());
EXPECT_EQ(0, pipeline_->GetBufferedTimeRanges().start(0).InMilliseconds());
@@ -1266,7 +1355,7 @@ TEST_F(PipelineIntegrationTest, MediaSource_ADTS) {
TEST_F(PipelineIntegrationTest, MediaSource_ADTS_TimestampOffset) {
MockMediaSource source("sfx.adts", kADTS, kAppendWholeFile);
- StartHashedPipelineWithMediaSource(&source);
+ StartPipelineWithMediaSource(&source, kHashed);
EXPECT_EQ(325, source.last_timestamp_offset().InMilliseconds());
// Trim off multiple frames off the beginning of the segment which will cause
@@ -1381,7 +1470,7 @@ INSTANTIATE_TEST_CASE_P(
TEST_F(PipelineIntegrationTest, MediaSource_MP3) {
MockMediaSource source("sfx.mp3", kMP3, kAppendWholeFile);
- StartHashedPipelineWithMediaSource(&source);
+ StartPipelineWithMediaSource(&source, kHashed);
source.EndOfStream();
EXPECT_EQ(1u, pipeline_->GetBufferedTimeRanges().size());
« no previous file with comments | « media/test/data/bear-audio-main-aac.aac ('k') | media/test/pipeline_integration_test_base.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698