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

Unified Diff: content/browser/media/media_canplaytype_browsertest.cc

Issue 2917463002: Enable vp09 codec string in WebM by default (Closed)
Patch Set: Rebase (depends-on patch landed), browser_test tweaks Created 3 years, 6 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
Index: content/browser/media/media_canplaytype_browsertest.cc
diff --git a/content/browser/media/media_canplaytype_browsertest.cc b/content/browser/media/media_canplaytype_browsertest.cc
index f9e859ba7b8bc05a74de64d1ceaeb90092df012a..e10735a2eb25faab2342a455991b693552f75dfb 100644
--- a/content/browser/media/media_canplaytype_browsertest.cc
+++ b/content/browser/media/media_canplaytype_browsertest.cc
@@ -397,7 +397,6 @@ class MediaCanPlayTypeTest : public MediaBrowserTest {
EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9.0, 1\"'"));
EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp08\"'"));
EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp09\"'"));
- EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp09.00.10.08\"'"));
EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"theora\"'"));
EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"theora, vorbis\"'"));
@@ -1488,69 +1487,43 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Mpeg2TsAudio) {
EXPECT_EQ(kNot, CanPlay("'audio/mp2t; codecs=\"mp4a.40.2\"'"));
}
-// New VP9 string is behind a variety of flags depending on container and
-// whether HDR is enabled.
-struct CanPlayTypeNewVp9Params {
- const std::string command_line_flag;
- const std::string container;
- const char* prop_probably;
- const char* prop_maybe;
-};
+// See more complete codec string testing in media/base/video_codecs_unittest.cc
+IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_NewVp9Variants) {
+ const std::string kSupportedMimeTypes[] = {"video/webm", "video/mp4"};
+ for (const auto& mime_type : kSupportedMimeTypes) {
+ // MP4 support is conditional on supporting proprietary codecs.
+ const char* kTestProbably = kProbably;
+ if (base::EndsWith(mime_type, "mp4", base::CompareCase::SENSITIVE))
+ kTestProbably = kPropProbably;
+
+// Profile 2 and 3 support is currently disabled on ARM and MIPS.
+#if defined(ARCH_CPU_ARM_FAMILY) || defined(ARCH_CPU_MIPS_FAMILY)
+ const char* kVP9Profile2And3Probably = kNot;
+#else
+ const char* kVP9Profile2And3Probably = kTestProbably;
+#endif
-class MediaCanPlayNewVp9TypeTest
- : public MediaCanPlayTypeTest,
- public ::testing::WithParamInterface<CanPlayTypeNewVp9Params> {
- public:
- void SetUpCommandLine(base::CommandLine* command_line) override {
- const CanPlayTypeNewVp9Params& params = GetParam();
- if (!params.command_line_flag.empty())
- command_line->AppendSwitch(params.command_line_flag);
+ // E.g. "'video/webm; "
+ std::string prefix = "'" + mime_type + "; ";
+
+ // Malformed codecs string never allowed.
+ EXPECT_EQ(kNot, CanPlay(prefix + "codecs=\"vp09.00.-1.08\"'"));
+
+ // Test a few valid strings.
+ EXPECT_EQ(kTestProbably, CanPlay(prefix + "codecs=\"vp09.00.10.08\"'"));
+ EXPECT_EQ(kTestProbably,
+ CanPlay(prefix + "codecs=\"vp09.00.10.08.00.01.01.01.00\"'"));
+ EXPECT_EQ(kTestProbably,
+ CanPlay(prefix + "codecs=\"vp09.00.10.08.01.02.02.02.00\"'"));
+
+ // Profiles 0 and 1 are always supported supported. Profiles 2 and 3 are
+ // only supported on certain architectures.
+ EXPECT_EQ(kTestProbably, CanPlay(prefix + "codecs=\"vp09.01.10.08\"'"));
+ EXPECT_EQ(kVP9Profile2And3Probably,
+ CanPlay(prefix + "codecs=\"vp09.02.10.08\"'"));
+ EXPECT_EQ(kVP9Profile2And3Probably,
+ CanPlay(prefix + "codecs=\"vp09.03.10.08\"'"));
}
-};
-
-// See more complete codec string testing in media/base/video_codecs_unittest.cc
-IN_PROC_BROWSER_TEST_P(MediaCanPlayNewVp9TypeTest,
- CodecSupportTest_NewVp9Variants) {
- const CanPlayTypeNewVp9Params& params = GetParam();
-
- // E.g. "'video/webm; "
- std::string mime_prefix = "'" + params.container + "; ";
-
- // Malformed codecs string never allowed.
- EXPECT_EQ(kNot, CanPlay(mime_prefix + "codecs=\"vp09.00.-1.08\"'"));
-
- const char* new_vp9_probably = params.prop_probably;
- const char* new_vp9_maybe = params.prop_maybe;
-
- // Test a few valid strings.
- EXPECT_EQ(new_vp9_probably,
- CanPlay(mime_prefix + "codecs=\"vp09.00.10.08\"'"));
- EXPECT_EQ(new_vp9_probably,
- CanPlay(mime_prefix + "codecs=\"vp09.00.10.08.00.01.01.01.00\"'"));
- EXPECT_EQ(new_vp9_probably,
- CanPlay(mime_prefix + "codecs=\"vp09.00.10.08.01.02.02.02.00\"'"));
-
- // Platform support is sadly ambiguous for profiles > 0.
- // TODO(chcunningham): Plumb proper querying of platform support - give a firm
- // answer. See https://crbug.com/604566.
- EXPECT_EQ(new_vp9_maybe, CanPlay(mime_prefix + "codecs=\"vp09.01.10.08\"'"));
- EXPECT_EQ(new_vp9_maybe, CanPlay(mime_prefix + "codecs=\"vp09.02.10.08\"'"));
- EXPECT_EQ(new_vp9_maybe, CanPlay(mime_prefix + "codecs=\"vp09.03.10.08\"'"));
}
-const CanPlayTypeNewVp9Params kNewVp9ParamVariants[] = {
- // Expect CanPlay(...) = kProbably/kMaybe for MP4 as MP4 supports new style
- // codec string unconditionally.
- {"", "video/mp4", kPropProbably, kPropMaybe},
- // Expect CanPlay(...) = kProbably/kMaybe for WebM, only if the relevant
- // flags are enabled..
- {"", "video/webm", kNot, kNot},
- {switches::kEnableHDR, "video/webm", kProbably, kMaybe},
- {switches::kEnableNewVp9CodecString, "video/webm", kProbably, kMaybe},
-};
-
-INSTANTIATE_TEST_CASE_P(CodecSupportTest_NewVp9String,
- MediaCanPlayNewVp9TypeTest,
- ::testing::ValuesIn(kNewVp9ParamVariants));
-
} // namespace content

Powered by Google App Engine
This is Rietveld 408576698