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

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

Issue 816353010: Implemented HEVC video demuxing and parsing (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address ddorwin@ CR feedback Created 5 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 | « build/common.gypi ('k') | media/BUILD.gn » ('j') | net/base/mime_util.cc » ('J')
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 b44a3a1f752a71eb1916f6e7d20322aa81c55a92..160f398bd184b5eb5f194b89071e0f09474c74e8 100644
--- a/content/browser/media/media_canplaytype_browsertest.cc
+++ b/content/browser/media/media_canplaytype_browsertest.cc
@@ -173,6 +173,24 @@ class MediaCanPlayTypeTest : public MediaBrowserTest {
EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4ax\"'"));
EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"unknown\"'"));
+
+ // Don't allow incomplete/ambiguous codec ids for HEVC.
+ // Codec string must have info about codec level/profile, e.g. hvc1.1.L0.0
+ EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1\"'"));
+ EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1\"'"));
+ // Make sure trailing dots are not allowed.
+ EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.\"'"));
+ EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.\"'"));
+ EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.L0.0.\"'"));
+ EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.L0.0.\"'"));
+
+ // Invalid codecs that look like something similar to HEVC/H.265
+ EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1x\"'"));
+ EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1x\"'"));
+ EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc0.1.L0.0\"'"));
+ EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev0.1.L0.0\"'"));
+ EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc2.1.L0.0\"'"));
+ EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev2.1.L0.0\"'"));
}
void TestOGGUnacceptableCombinations(const std::string& mime) {
@@ -488,6 +506,20 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {
EXPECT_EQ(kPropMaybe,
CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40\"'"));
+ const char* kHevcSupported = kNot;
ddorwin 2015/03/25 18:02:58 It's odd to define a constant like this in the mid
+#if defined(ENABLE_HEVC_DEMUXING)
+ kHevcSupported = kPropProbably;
+#endif
+
+ // TODO(servolk): Add more unit test coverage once we have more info about
+ // various HEVC levels/profiles.
+ EXPECT_EQ(kHevcSupported, CanPlay("'video/mp4; codecs=\"hvc1.1.L0.0\"'"));
+ EXPECT_EQ(kHevcSupported, CanPlay("'video/mp4; codecs=\"hev1.1.L0.0\"'"));
+ EXPECT_EQ(kHevcSupported,
+ CanPlay("'video/mp4; codecs=\"hvc1.1.L0.0, mp4a.40.5\"'"));
+ EXPECT_EQ(kHevcSupported,
+ CanPlay("'video/mp4; codecs=\"hev1.1.L0.0, mp4a.40.5\"'"));
+
TestMPEGUnacceptableCombinations("video/mp4");
EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v'"));
@@ -531,6 +563,13 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {
EXPECT_EQ(kPropMaybe,
CanPlay("'video/x-m4v; codecs=\"avc3.42E01E, mp4a.40\"'"));
+ EXPECT_EQ(kHevcSupported, CanPlay("'video/x-m4v; codecs=\"hvc1.1.L0.0\"'"));
+ EXPECT_EQ(kHevcSupported, CanPlay("'video/x-m4v; codecs=\"hev1.1.L0.0\"'"));
+ EXPECT_EQ(kHevcSupported,
+ CanPlay("'video/x-m4v; codecs=\"hvc1.1.L0.0, mp4a.40.5\"'"));
+ EXPECT_EQ(kHevcSupported,
+ CanPlay("'video/x-m4v; codecs=\"hev1.1.L0.0, mp4a.40.5\"'"));
+
TestMPEGUnacceptableCombinations("video/x-m4v");
EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4'"));
@@ -549,6 +588,13 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {
EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1.4D401E\"'"));
EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3.64001F\"'"));
+ EXPECT_EQ(kHevcSupported, CanPlay("'audio/mp4; codecs=\"hvc1.1.L0.0\"'"));
+ EXPECT_EQ(kHevcSupported, CanPlay("'audio/mp4; codecs=\"hev1.1.L0.0\"'"));
+ EXPECT_EQ(kHevcSupported,
+ CanPlay("'audio/mp4; codecs=\"hvc1.1.L0.0, mp4a.40.5\"'"));
+ EXPECT_EQ(kHevcSupported,
+ CanPlay("'audio/mp4; codecs=\"hev1.1.L0.0, mp4a.40.5\"'"));
+
TestMPEGUnacceptableCombinations("audio/mp4");
EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a'"));
@@ -567,6 +613,13 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {
EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E\"'"));
EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3.64001F\"'"));
+ EXPECT_EQ(kHevcSupported, CanPlay("'audio/x-m4a; codecs=\"hvc1.1.L0.0\"'"));
+ EXPECT_EQ(kHevcSupported, CanPlay("'audio/x-m4a; codecs=\"hev1.1.L0.0\"'"));
+ EXPECT_EQ(kHevcSupported,
+ CanPlay("'audio/x-m4a; codecs=\"hvc1.1.L0.0, mp4a.40.5\"'"));
+ EXPECT_EQ(kHevcSupported,
+ CanPlay("'audio/x-m4a; codecs=\"hev1.1.L0.0, mp4a.40.5\"'"));
+
TestMPEGUnacceptableCombinations("audio/x-m4a");
}
« no previous file with comments | « build/common.gypi ('k') | media/BUILD.gn » ('j') | net/base/mime_util.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698