Skip to content

Commit

Permalink
Refactor net::MimeUtil media code to return "probably" for codecs the…
Browse files Browse the repository at this point in the history
… platform likely supports.

This patch amends the behaviour set for mp4 mime types
Now browser returns "probably" for codecs which are confirmed to be shipped with Chrome. 

CodecPrameter| Before| Now 
-------------------------------- 
avc1.42E0xx -| maybe | probably 
avc1.4D40xx -| maybe | probably (non-Android) 
avc1.6400xx -| maybe | probably (non-Android) 
avc3.xxxxxx -| maybe | probably 
mp4a.6B -----| maybe | probably 
mp4a.69 -----| maybe | probably 
mp4a.67 -----| maybe | probably (non-Android) 
mp4a.40.2 ---| maybe | probably 
mp4a.40.5 ---| maybe | probably 

BUG=388317
TEST=MediaCanPlayTypeTest.*

Review URL: https://codereview.chromium.org/422573005

git-svn-id: svn://svn.chromium.org/chrome/trunk/src@286333 0039d316-1c4b-4281-b951-d872f2087c98
  • Loading branch information
acolwell@chromium.org committed Jul 29, 2014
1 parent 5970e4c commit 781ab43
Show file tree
Hide file tree
Showing 2 changed files with 440 additions and 229 deletions.
124 changes: 82 additions & 42 deletions content/browser/media/media_canplaytype_browsertest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -402,13 +402,20 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {
EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40\"'"));
EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, avc3\"'"));

EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.4D401E\"'"));
EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3.64001F\"'"));
EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"mp4a.40.2\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E01E\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.42E01E\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"mp4a.40.2\"'"));
EXPECT_EQ(kPropProbably,
CanPlay("'video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'"));
EXPECT_EQ(kPropProbably,
CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40.5\"'"));

EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, mp4a.40.2\"'"));
EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40.2\"'"));
EXPECT_EQ(kPropMaybe,
CanPlay("'video/mp4; codecs=\"avc1.4D401E, mp4a.40.2\"'"));
CanPlay("'video/mp4; codecs=\"avc1.42E01E, mp4a.40\"'"));
EXPECT_EQ(kPropMaybe,
CanPlay("'video/mp4; codecs=\"avc3.64001F, mp4a.40.5\"'"));
CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40\"'"));

TestMPEGUnacceptableCombinations("video/mp4");

Expand All @@ -421,19 +428,26 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {
EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40\"'"));
EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, avc3\"'"));

EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1.4D401E\"'"));
EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3.64001F\"'"));
EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"mp4a.40.2\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1.42E01E\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.42E01E\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"mp4a.40.2\"'"));
EXPECT_EQ(kPropProbably,
CanPlay("'video/x-m4v; codecs=\"avc1.42E01E, mp4a.40.2\"'"));
EXPECT_EQ(kPropProbably,
CanPlay("'video/x-m4v; codecs=\"avc3.42E01E, mp4a.40.5\"'"));

EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a.40.2\"'"));
EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40.2\"'"));
EXPECT_EQ(kPropMaybe,
CanPlay("'video/x-m4v; codecs=\"avc1.4D401E, mp4a.40.2\"'"));
CanPlay("'video/x-m4v; codecs=\"avc1.42E01E, mp4a.40\"'"));
EXPECT_EQ(kPropMaybe,
CanPlay("'video/x-m4v; codecs=\"avc3.64001F, mp4a.40.5\"'"));
CanPlay("'video/x-m4v; codecs=\"avc3.42E01E, mp4a.40\"'"));

TestMPEGUnacceptableCombinations("video/x-m4v");

EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4'"));
EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"mp4a.40\"'"));
EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"mp4a.40.2\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.2\"'"));

EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1\"'"));
EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3\"'"));
Expand All @@ -447,7 +461,7 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {

EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a'"));
EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"mp4a.40\"'"));
EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.2\"'"));
EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.2\"'"));

EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1\"'"));
EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3\"'"));
Expand All @@ -462,54 +476,80 @@ IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {

IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_HLS) {
// HLS are supported only on Android IceCreamSandwich and above (API level 14)
std::string canPlayHLS = kNot;
std::string probablyCanPlayHLS = kNot;
std::string maybeCanPlayHLS = kNot;
#if defined(OS_ANDROID)
if (base::android::BuildInfo::GetInstance()->sdk_int() > 13)
canPlayHLS = kMaybe;
if (base::android::BuildInfo::GetInstance()->sdk_int() > 13) {
probablyCanPlayHLS = kProbably;
maybeCanPlayHLS = kMaybe;
}
#endif
EXPECT_EQ(canPlayHLS, CanPlay("'application/x-mpegurl'"));

EXPECT_EQ(canPlayHLS, CanPlay("'application/x-mpegurl; codecs=\"avc1\"'"));
EXPECT_EQ(canPlayHLS, CanPlay("'application/x-mpegurl; codecs=\"avc3\"'"));
EXPECT_EQ(canPlayHLS, CanPlay("'application/x-mpegurl; codecs=\"mp4a.40\"'"));
EXPECT_EQ(canPlayHLS,
EXPECT_EQ(maybeCanPlayHLS, CanPlay("'application/x-mpegurl'"));

EXPECT_EQ(maybeCanPlayHLS,
CanPlay("'application/x-mpegurl; codecs=\"avc1\"'"));
EXPECT_EQ(maybeCanPlayHLS,
CanPlay("'application/x-mpegurl; codecs=\"avc3\"'"));
EXPECT_EQ(maybeCanPlayHLS,
CanPlay("'application/x-mpegurl; codecs=\"mp4a.40\"'"));
EXPECT_EQ(maybeCanPlayHLS,
CanPlay("'application/x-mpegurl; codecs=\"avc1, mp4a.40\"'"));
EXPECT_EQ(canPlayHLS,
EXPECT_EQ(maybeCanPlayHLS,
CanPlay("'application/x-mpegurl; codecs=\"avc3, mp4a.40\"'"));

EXPECT_EQ(canPlayHLS,
CanPlay("'application/x-mpegurl; codecs=\"avc1.4D401E\"'"));
EXPECT_EQ(canPlayHLS,
CanPlay("'application/x-mpegurl; codecs=\"avc3.64001F\"'"));
EXPECT_EQ(canPlayHLS,
EXPECT_EQ(probablyCanPlayHLS,
CanPlay("'application/x-mpegurl; codecs=\"avc1.42E01E\"'"));
EXPECT_EQ(probablyCanPlayHLS,
CanPlay("'application/x-mpegurl; codecs=\"avc3.42E01E\"'"));
EXPECT_EQ(probablyCanPlayHLS,
CanPlay("'application/x-mpegurl; codecs=\"mp4a.40.2\"'"));
EXPECT_EQ(canPlayHLS,
CanPlay("'application/x-mpegurl; codecs=\"avc1.4D401E, mp4a.40.2\"'"));
EXPECT_EQ(canPlayHLS,
CanPlay("'application/x-mpegurl; codecs=\"avc3.64001F, mp4a.40.5\"'"));
EXPECT_EQ(probablyCanPlayHLS,
CanPlay("'application/x-mpegurl; codecs=\"avc1.42E01E, mp4a.40.2\"'"));
EXPECT_EQ(probablyCanPlayHLS,
CanPlay("'application/x-mpegurl; codecs=\"avc3.42E01E, mp4a.40.5\"'"));

EXPECT_EQ(maybeCanPlayHLS,
CanPlay("'application/x-mpegurl; codecs=\"avc1, mp4a.40.2\"'"));
EXPECT_EQ(maybeCanPlayHLS,
CanPlay("'application/x-mpegurl; codecs=\"avc3, mp4a.40.2\"'"));
EXPECT_EQ(maybeCanPlayHLS,
CanPlay("'application/x-mpegurl; codecs=\"avc1.42E01E, mp4a.40\"'"));
EXPECT_EQ(maybeCanPlayHLS,
CanPlay("'application/x-mpegurl; codecs=\"avc3.42E01E, mp4a.40\"'"));

TestMPEGUnacceptableCombinations("application/x-mpegurl");

EXPECT_EQ(canPlayHLS, CanPlay("'application/vnd.apple.mpegurl'"));
EXPECT_EQ(maybeCanPlayHLS, CanPlay("'application/vnd.apple.mpegurl'"));

EXPECT_EQ(canPlayHLS,
EXPECT_EQ(maybeCanPlayHLS,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1\"'"));
EXPECT_EQ(canPlayHLS,
EXPECT_EQ(maybeCanPlayHLS,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3\"'"));
EXPECT_EQ(canPlayHLS,
EXPECT_EQ(maybeCanPlayHLS,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"mp4a.40\"'"));
EXPECT_EQ(canPlayHLS,
EXPECT_EQ(maybeCanPlayHLS,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1, mp4a.40\"'"));
EXPECT_EQ(canPlayHLS,
EXPECT_EQ(maybeCanPlayHLS,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3, mp4a.40\"'"));

EXPECT_EQ(canPlayHLS,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1.4D401E\"'"));
EXPECT_EQ(canPlayHLS,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3.64001F\"'"));
EXPECT_EQ(canPlayHLS,
EXPECT_EQ(probablyCanPlayHLS,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1.42E01E\"'"));
EXPECT_EQ(probablyCanPlayHLS,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3.42E01E\"'"));
EXPECT_EQ(probablyCanPlayHLS,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"mp4a.40.2\"'"));

EXPECT_EQ(maybeCanPlayHLS,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc1, mp4a.40.2\"'"));
EXPECT_EQ(maybeCanPlayHLS,
CanPlay("'application/vnd.apple.mpegurl; codecs=\"avc3, mp4a.40.2\"'"));
EXPECT_EQ(maybeCanPlayHLS,
CanPlay("'application/vnd.apple.mpegurl; "
"codecs=\"avc1.42E01E, mp4a.40\"'"));
EXPECT_EQ(maybeCanPlayHLS,
CanPlay("'application/vnd.apple.mpegurl; "
"codecs=\"avc3.42E01E, mp4a.40\"'"));

TestMPEGUnacceptableCombinations("application/vnd.apple.mpegurl");
}

Expand Down
Loading

0 comments on commit 781ab43

Please sign in to comment.