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

Side by Side Diff: content/browser/media/media_canplaytype_browsertest.cc

Issue 918463002: Add detailed tests of supported avc1, avc3, and mp4a codec strings. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@avc1
Patch Set: rebase Created 5 years, 10 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <string> 5 #include <string>
6 6
7 #include "content/browser/media/media_browsertest.h" 7 #include "content/browser/media/media_browsertest.h"
8 #include "content/public/test/browser_test_utils.h" 8 #include "content/public/test/browser_test_utils.h"
9 #include "content/public/test/content_browser_test_utils.h" 9 #include "content/public/test/content_browser_test_utils.h"
10 #include "content/shell/browser/shell.h" 10 #include "content/shell/browser/shell.h"
11 11
12 #if defined(OS_ANDROID) 12 #if defined(OS_ANDROID)
13 #include "base/android/build_info.h" 13 #include "base/android/build_info.h"
14 #endif 14 #endif
15 15
16 const char kProbably[] = "probably"; 16 const char kProbably[] = "probably";
17 const char kMaybe[] = "maybe"; 17 const char kMaybe[] = "maybe";
18 const char kNot[] = ""; 18 const char kNot[] = "";
19 19
20 #if defined(USE_PROPRIETARY_CODECS) 20 #if defined(USE_PROPRIETARY_CODECS)
21 const char kPropProbably[] = "probably"; 21 const char kPropProbably[] = "probably";
22 const char kPropMaybe[] = "maybe"; 22 const char kPropMaybe[] = "maybe";
23 #else 23 #else
24 const char kPropProbably[] = ""; 24 const char kPropProbably[] = "";
25 const char kPropMaybe[] = ""; 25 const char kPropMaybe[] = "";
26 #endif // USE_PROPRIETARY_CODECS 26 #endif // USE_PROPRIETARY_CODECS
27 27
28 // TODO(amogh.bihani): Change the opus tests when opus is on
29 // Android. (http://crbug.com/318436).
30 #if !defined(OS_ANDROID) 28 #if !defined(OS_ANDROID)
31 const char kOggVideoProbably[] = "probably"; 29 const char kOggVideoProbably[] = "probably";
32 const char kOggVideoMaybe[] = "maybe"; 30 const char kOggVideoMaybe[] = "maybe";
33 const char kTheoraProbably[] = "probably"; 31 const char kTheoraProbably[] = "probably";
34 const char kOggOpusProbably[] = "probably"; 32 const char kOggOpusProbably[] = "probably";
33 const char* kMpeg2AacProbably = kPropProbably;
35 #else 34 #else
36 const char kOggVideoProbably[] = ""; 35 const char kOggVideoProbably[] = "";
37 const char kOggVideoMaybe[] = ""; 36 const char kOggVideoMaybe[] = "";
38 const char kTheoraProbably[] = ""; 37 const char kTheoraProbably[] = "";
39 const char kOggOpusProbably[] = ""; 38 const char kOggOpusProbably[] = "";
39 const char kMpeg2AacProbably[] = "";
40 #endif // !OS_ANDROID 40 #endif // !OS_ANDROID
41 41
42 namespace content { 42 namespace content {
43 43
44 class MediaCanPlayTypeTest : public MediaBrowserTest { 44 class MediaCanPlayTypeTest : public MediaBrowserTest {
45 public: 45 public:
46 MediaCanPlayTypeTest() : url_("about:blank") { } 46 MediaCanPlayTypeTest() : url_("about:blank") { }
47 47
48 void SetUpOnMainThread() override { NavigateToURL(shell(), url_); } 48 void SetUpOnMainThread() override { NavigateToURL(shell(), url_); }
49 49
50 std::string CanPlay(const std::string& type) { 50 std::string CanPlay(const std::string& type) {
51 std::string command("document.createElement('video').canPlayType("); 51 std::string command("document.createElement('video').canPlayType(");
52 command.append(type); 52 command.append(type);
53 command.append(")"); 53 command.append(")");
54 54
55 std::string result; 55 std::string result;
56 EXPECT_TRUE(ExecuteScriptAndExtractString( 56 EXPECT_TRUE(ExecuteScriptAndExtractString(
57 shell()->web_contents(), 57 shell()->web_contents(),
58 "window.domAutomationController.send(" + command + ");", 58 "window.domAutomationController.send(" + command + ");",
59 &result)); 59 &result));
60 return result; 60 return result;
61 } 61 }
62 62
63 void TestMPEGUnacceptableCombinations(std::string mime) { 63 void TestMPEGUnacceptableCombinations(std::string mime) {
64 // Codecs must be followed by valid hexadecimal number. 64 // AVC codecs must be followed by valid 6-digit hexadecimal number.
65 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.unknown\"'")); 65 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.12345\"'"));
66 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.unknown\"'")); 66 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.12345\"'"));
67 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.unknown\"'")); 67 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.1234567\"'"));
68 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.1234567\"'"));
69 // TODO(ddorwin): These four should return "". See crbug.com/457076.
70 // EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.number\"'"));
71 // EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.number\"'"));
72 // EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.12345.\"'"));
73 // EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.12345.\"'"));
74 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.123456.\"'"));
75 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.123456.\"'"));
76 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.123456.7\"'"));
77 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.123456.7\"'"));
78
79 // AAC codecs must be followed by one or two valid hexadecimal numbers.
80 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.no\"'"));
81 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.0k\"'"));
82 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.0k.0k\"'"));
83 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.4.\"'"));
84 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.40.0k\"'"));
85 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.40.\"'"));
86 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.40k\"'"));
87 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.40.2k\"'"));
88 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.40.2k\"'"));
89 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.40.2.\"'"));
90 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.40.2.0\"'"));
91
92 // Just "mp4a" is not supported like just "avc1" is supported.
wolenetz 2015/02/18 22:44:33 nit: rework comment. I kept reading this the wrong
ddorwin 2015/02/20 05:26:24 Done.
93 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a\"'"));
94 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.\"'"));
95
96 // Other names for the codecs are not supported.
97 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"h264\"'"));
98 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"h.264\"'"));
99 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"H264\"'"));
100 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"H.264\"'"));
101 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"aac\"'"));
102 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"AAC\"'"));
68 103
69 // Codecs must not end with a dot. 104 // Codecs must not end with a dot.
70 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.\"'")); 105 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.\"'"));
71 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.\"'")); 106 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.\"'"));
72 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a\"'"));
73 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.\"'")); 107 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.\"'"));
74 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.40.\"'")); 108 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.40.\"'"));
75 109
110 // A simple substring match is not sufficient.
111 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"lavc1337\"'"));
112 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\";mp4a+\"'"));
113 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\";mp4a.40+\"'"));
114
76 // Codecs not belonging to MPEG container. 115 // Codecs not belonging to MPEG container.
77 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vorbis\"'")); 116 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vorbis\"'"));
78 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1, vorbis\"'")); 117 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1, vorbis\"'"));
79 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3, vorbis\"'")); 118 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3, vorbis\"'"));
80 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.4D401E, vorbis\"'")); 119 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.4D401E, vorbis\"'"));
81 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.64001F, vorbis\"'")); 120 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.64001F, vorbis\"'"));
82 121
83 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"opus\"'")); 122 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"opus\"'"));
84 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1, opus\"'")); 123 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1, opus\"'"));
85 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3, opus\"'")); 124 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3, opus\"'"));
(...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after
345 EXPECT_EQ(kProbably, CanPlay("'application/ogg; codecs=\"vorbis\"'")); 384 EXPECT_EQ(kProbably, CanPlay("'application/ogg; codecs=\"vorbis\"'"));
346 EXPECT_EQ(kTheoraProbably, CanPlay("'application/ogg; codecs=\"theora\"'")); 385 EXPECT_EQ(kTheoraProbably, CanPlay("'application/ogg; codecs=\"theora\"'"));
347 EXPECT_EQ(kOggOpusProbably, CanPlay("'application/ogg; codecs=\"opus\"'")); 386 EXPECT_EQ(kOggOpusProbably, CanPlay("'application/ogg; codecs=\"opus\"'"));
348 EXPECT_EQ(kTheoraProbably, 387 EXPECT_EQ(kTheoraProbably,
349 CanPlay("'application/ogg; codecs=\"theora, vorbis\"'")); 388 CanPlay("'application/ogg; codecs=\"theora, vorbis\"'"));
350 EXPECT_EQ(kTheoraProbably, 389 EXPECT_EQ(kTheoraProbably,
351 CanPlay("'application/ogg; codecs=\"theora, opus\"'")); 390 CanPlay("'application/ogg; codecs=\"theora, opus\"'"));
352 EXPECT_EQ(kOggOpusProbably, 391 EXPECT_EQ(kOggOpusProbably,
353 CanPlay("'application/ogg; codecs=\"opus, vorbis\"'")); 392 CanPlay("'application/ogg; codecs=\"opus, vorbis\"'"));
354 393
355 TestOGGUnacceptableCombinations("application/ogg"); 394 TestOGGUnacceptableCombinations("application/ogg");
wolenetz 2015/02/18 22:44:33 aside: please fix this one indent while you're tou
ddorwin 2015/02/20 05:26:23 Done.
356 } 395 }
357 396
358 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp3) { 397 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp3) {
359 EXPECT_EQ(kNot, CanPlay("'video/mp3'")); 398 EXPECT_EQ(kNot, CanPlay("'video/mp3'"));
360 EXPECT_EQ(kNot, CanPlay("'video/mpeg'")); 399 EXPECT_EQ(kNot, CanPlay("'video/mpeg'"));
361 EXPECT_EQ(kNot, CanPlay("'video/x-mp3'")); 400 EXPECT_EQ(kNot, CanPlay("'video/x-mp3'"));
362 401
363 // audio/mpeg without a codecs parameter (RFC 3003 compliant) 402 // audio/mpeg without a codecs parameter (RFC 3003 compliant)
364 EXPECT_EQ(kPropProbably, CanPlay("'audio/mpeg'")); 403 EXPECT_EQ(kPropProbably, CanPlay("'audio/mpeg'"));
365 404
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
408 EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"mp4a.40.02\"'")); 447 EXPECT_EQ(kNot, CanPlay("'audio/x-mp3; codecs=\"mp4a.40.02\"'"));
409 448
410 TestMPEGUnacceptableCombinations("audio/x-mp3"); 449 TestMPEGUnacceptableCombinations("audio/x-mp3");
411 } 450 }
412 451
413 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) { 452 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_mp4) {
414 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4'")); 453 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4'"));
415 454
416 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1\"'")); 455 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1\"'"));
417 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3\"'")); 456 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3\"'"));
457 EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"mp4a\"'"));
wolenetz 2015/02/18 22:44:32 nit: this is redundant with the "just like" portio
ddorwin 2015/02/20 05:26:24 Done.
418 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"mp4a.40\"'")); 458 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"mp4a.40\"'"));
419 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, mp4a.40\"'")); 459 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, mp4a.40\"'"));
420 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40\"'")); 460 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40\"'"));
421 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, avc3\"'")); 461 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, avc3\"'"));
422 462
423 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E01E\"'")); 463 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E01E\"'"));
424 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.42E01E\"'")); 464 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.42E01E\"'"));
425 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.42801E\"'")); 465 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.42801E\"'"));
426 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.42C01E\"'")); 466 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc3.42C01E\"'"));
427 467
(...skipping 23 matching lines...) Expand all
451 CanPlay("'video/mp4; codecs=\"avc1.42E01E, mp4a.40\"'")); 491 CanPlay("'video/mp4; codecs=\"avc1.42E01E, mp4a.40\"'"));
452 EXPECT_EQ(kPropMaybe, 492 EXPECT_EQ(kPropMaybe,
453 CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40\"'")); 493 CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40\"'"));
454 494
455 TestMPEGUnacceptableCombinations("video/mp4"); 495 TestMPEGUnacceptableCombinations("video/mp4");
456 496
457 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v'")); 497 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v'"));
458 498
459 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1\"'")); 499 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1\"'"));
460 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3\"'")); 500 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3\"'"));
501 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"mp4a\"'"));
wolenetz 2015/02/18 22:44:33 nit: ditto redundant w/"just like" portion of call
ddorwin 2015/02/20 05:26:23 Done.
461 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"mp4a.40\"'")); 502 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"mp4a.40\"'"));
462 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a.40\"'")); 503 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, mp4a.40\"'"));
463 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40\"'")); 504 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40\"'"));
464 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, avc3\"'")); 505 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1, avc3\"'"));
465 506
466 EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1.42E01E\"'")); 507 EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc1.42E01E\"'"));
467 EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.42E01E\"'")); 508 EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.42E01E\"'"));
468 EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.42801E\"'")); 509 EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.42801E\"'"));
469 EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.42C01E\"'")); 510 EXPECT_EQ(kPropProbably, CanPlay("'video/x-m4v; codecs=\"avc3.42C01E\"'"));
470 511
(...skipping 20 matching lines...) Expand all
491 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40.2\"'")); 532 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40.2\"'"));
492 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40.02\"'")); 533 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3, mp4a.40.02\"'"));
493 EXPECT_EQ(kPropMaybe, 534 EXPECT_EQ(kPropMaybe,
494 CanPlay("'video/x-m4v; codecs=\"avc1.42E01E, mp4a.40\"'")); 535 CanPlay("'video/x-m4v; codecs=\"avc1.42E01E, mp4a.40\"'"));
495 EXPECT_EQ(kPropMaybe, 536 EXPECT_EQ(kPropMaybe,
496 CanPlay("'video/x-m4v; codecs=\"avc3.42E01E, mp4a.40\"'")); 537 CanPlay("'video/x-m4v; codecs=\"avc3.42E01E, mp4a.40\"'"));
497 538
498 TestMPEGUnacceptableCombinations("video/x-m4v"); 539 TestMPEGUnacceptableCombinations("video/x-m4v");
499 540
500 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4'")); 541 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4'"));
542 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a\"'"));
wolenetz 2015/02/18 22:44:33 nit ditto
ddorwin 2015/02/20 05:26:24 Done.
501 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"mp4a.40\"'")); 543 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"mp4a.40\"'"));
502 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.2\"'")); 544 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.2\"'"));
503 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.02\"'")); 545 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.02\"'"));
504 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.5\"'")); 546 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.5\"'"));
505 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.05\"'")); 547 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.05\"'"));
506 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.29\"'")); 548 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.29\"'"));
507 549
508 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1\"'")); 550 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1\"'"));
509 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3\"'")); 551 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3\"'"));
510 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1, mp4a.40\"'")); 552 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1, mp4a.40\"'"));
511 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3, mp4a.40\"'")); 553 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3, mp4a.40\"'"));
512 554
513 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1.4D401E\"'")); 555 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1.4D401E\"'"));
514 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3.64001F\"'")); 556 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3.64001F\"'"));
515 557
516 TestMPEGUnacceptableCombinations("audio/mp4"); 558 TestMPEGUnacceptableCombinations("audio/mp4");
517 559
518 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a'")); 560 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a'"));
561 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"mp4a\"'"));
wolenetz 2015/02/18 22:44:32 nit ditto
ddorwin 2015/02/20 05:26:23 Done.
519 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"mp4a.40\"'")); 562 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"mp4a.40\"'"));
520 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.2\"'")); 563 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.2\"'"));
521 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.02\"'")); 564 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.02\"'"));
522 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.5\"'")); 565 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.5\"'"));
523 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.05\"'")); 566 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.05\"'"));
524 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.29\"'")); 567 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.29\"'"));
525 568
526 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1\"'")); 569 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1\"'"));
527 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3\"'")); 570 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3\"'"));
528 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1, mp4a\"'")); 571 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1, mp4a\"'"));
529 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3, mp4a\"'")); 572 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3, mp4a\"'"));
530 573
531 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E\"'")); 574 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E\"'"));
532 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3.64001F\"'")); 575 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3.64001F\"'"));
533 576
534 TestMPEGUnacceptableCombinations("audio/x-m4a"); 577 TestMPEGUnacceptableCombinations("audio/x-m4a");
535 } 578 }
536 579
580 // When modifying this test, also change CodecSupportTest_Avc3Variants.
wolenetz 2015/02/18 22:44:33 nit: combine into one test that loops through all
ddorwin 2015/02/20 05:26:24 Done, but I don't like it. I think I will revert.
wolenetz 2015/02/23 19:57:45 Yeah, I agree with your reasons for not doing this
ddorwin 2015/02/24 00:09:20 Acknowledged.
581 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Avc1Variants) {
582 // avc1 without extensions results in "maybe" for compatibility.
583 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1\"'"));
584
585 // Any 6-digit hexadecimal number will result in at least "maybe".
586 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.123456\"'"));
587 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.ABCDEF\"'"));
588 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.abcdef\"'"));
589 EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"avc1.12345\"'"));
wolenetz 2015/02/18 22:44:33 nit ditto for these two kNot lines: (redundant wit
ddorwin 2015/02/20 05:26:24 Yeah, these tests are quick, and I think it's nice
wolenetz 2015/02/23 19:57:44 Acknowledged.
590 EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"avc1.1234567\"'"));
591
592 // Both upper and lower case hexadecimal digits are accepted.
593 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E01E\"'"));
wolenetz 2015/02/18 22:44:32 hmm there's more redundancy. I suspect many of the
ddorwin 2015/02/20 05:26:24 Acknowledged.
594 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42e01e\"'"));
595
596 // From a YouTube DASH MSE test manifest.
wolenetz 2015/02/18 22:44:33 4d401e is duplicated, below. This seems like a pa
ddorwin 2015/02/20 05:26:23 Yes. This was an attempt to make sure we were cove
wolenetz 2015/02/23 19:57:44 Acknowledged.
597 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.4d401f\"'"));
598 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.4d401e\"'"));
599 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.4d4015\"'"));
600 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.640028\"'"));
601
602 //
603 // Baseline Profile (66 == 0x42).
604 // The first four digits must be 42E0, but Chrome also allows 42[8-F]0.
605 // (See http://crbug.com/408552#c17.)
606 // The last two digits must be any valid level.
607 //
608 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E00A\"'"));
609
610 // The third digit must be 8-F.
611 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42001E\"'"));
wolenetz 2015/02/18 22:44:33 aside: thanks for formatting these lines to line u
ddorwin 2015/02/20 05:26:24 Acknowledged.
612 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42101E\"'"));
613 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42201E\"'"));
614 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42301E\"'"));
615 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42401E\"'"));
616 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42501E\"'"));
617 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42601E\"'"));
618 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42701E\"'"));
619 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42801E\"'"));
620 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42901E\"'"));
621 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42A01E\"'"));
622 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42B01E\"'"));
623 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42C01E\"'"));
624 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42D01E\"'"));
625 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E01E\"'"));
626 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42F01E\"'"));
627
628 // The fourth digit must be 0.
629 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E11E\"'"));
630
631 //
632 // Main Profile (77 == 0x4D).
633 // The first four digits must be 4D40.
634 // The last two digits must be any valid level.
635 //
636 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.4D400A\"'"));
637 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.4D401E\"'"));
638
639 // Other values are not allowed for the third and fourth digits.
640 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.4D301E\"'"));
641 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.4D501E\"'"));
642 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.4D411E\"'"));
643 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.4D4F1E\"'"));
644
645 //
646 // High Profile (100 == 0x64).
647 // The first four digits must be 6400.
648 // The last two digits must be any valid level.
649 //
650 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.64000A\"'"));
651 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.64001E\"'"));
652 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.64001F\"'"));
653
654 // Other values are not allowed for the third and fourth digits.
655 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.64101E\"'"));
656 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.64f01E\"'"));
657 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.64011E\"'"));
658 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.640F1E\"'"));
659
660 //
661 // Other profiles are not known to be supported.
662 //
663
664 // Extended Profile (88 == 0x58).
665 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.58A01E\"'"));
666 }
667
668 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Avc3Variants) {
669 // TODO(ddorwin): Copy the final Avc1Variants contents here and s/avc1/avc3/.
wolenetz 2015/02/18 22:44:33 nit ditto: parameterize avc# and use a helper for
ddorwin 2015/02/20 05:26:23 Ditto.
wolenetz 2015/02/23 19:57:45 Acknowledged.
670 }
671
672 // Tests AVC levels using AVC1 Baseline (0x42E0zz).
673 // Other supported values for the first for hexadecimal digits should behave
wolenetz 2015/02/18 22:44:33 nit: s/for hex/four hex/
ddorwin 2015/02/20 05:26:23 Done.
674 // the same way but are not tested.
675 // For each full level, the following are tested:
676 // * The hexadecimal value before it is not supported.
677 // * The hexadecimal value for the main level and all sub-levels are supported.
678 // * The hexadecimal value after the last sub-level it is not supported.
679 // * Decimal representations of the levels are not supported.
680
681 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_AvcLevels) {
682 // Level 0 is not supported.
683 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E000\"'"));
684
685 // Levels 1 (0x0A), 1.1 (0x0B), 1.2 (0x0C), 1.3 (0x0D).
686 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E009\"'"));
687 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E00A\"'"));
688 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E00B\"'"));
689 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E00C\"'"));
690 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E00D\"'"));
691 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E00E\"'"));
692 // Verify that decimal representations of levels are not supported.
693 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E001\"'"));
694 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E010\"'"));
695 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E011\"'"));
696 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E012\"'"));
697 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E013\"'"));
698
699 // Levels 2 (0x14), 2.1 (0x15), 2.2 (0x16)
700 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E013\"'"));
701 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E014\"'"));
702 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E015\"'"));
703 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E016\"'"));
704 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E017\"'"));
705 // Verify that decimal representations of levels are not supported.
706 // However, 20 is level 3.2.
707 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E002\"'"));
708 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E020\"'"));
709 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E021\"'"));
710 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E022\"'"));
711
712 // Levels 3 (0x1e), 3.1 (0x1F), 3.2 (0x20)
713 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E01D\"'"));
714 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E01E\"'"));
715 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E01F\"'"));
716 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E020\"'"));
717 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E021\"'"));
718 // Verify that decimal representations of levels are not supported.
719 // However, 32 is level 5.
720 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E003\"'"));
721 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E030\"'"));
722 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E031\"'"));
723 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E032\"'"));
724
725 // Levels 4 (0x28), 4.1 (0x29), 4.2 (0x2A)
726 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E027\"'"));
727 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E028\"'"));
728 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E029\"'"));
729 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E02A\"'"));
730 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E02B\"'"));
731 // Verify that decimal representations of levels are not supported.
732 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E004\"'"));
733 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E040\"'"));
734 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E041\"'"));
735 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E042\"'"));
736
737 // Levels 5 (0x32), 5.1 (0x33).
738 // Note: Level 5.2 (0x34) is not considered valid.
wolenetz 2015/02/18 22:44:33 The version of ISO14496-10 acolwell@ used may have
ddorwin 2015/02/20 05:26:24 Done.
739 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E031\"'"));
740 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E032\"'"));
741 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"avc1.42E033\"'"));
742 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E034\"'"));
743 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E035\"'"));
744 // Verify that decimal representations of levels are not supported.
745 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E005\"'"));
746 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E050\"'"));
747 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E051\"'"));
748 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.42E052\"'"));
749 }
750
751 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Mp4aVariants) {
752 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a\"'"));
wolenetz 2015/02/18 22:44:33 nit ditto redundancy...
ddorwin 2015/02/20 05:26:23 This is specifically testing mp4a, so I think it's
wolenetz 2015/02/23 19:57:45 Acknowledged.
753 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.\"'"));
754
755 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.6\"'"));
wolenetz 2015/02/18 22:44:33 nit: include comments in this method identifying w
ddorwin 2015/02/20 05:26:23 Hmm. I'm not sure how to do this without adding mo
wolenetz 2015/02/23 19:57:44 (nit) Perhaps a comment section at the top of this
ddorwin 2015/02/24 00:09:20 Done.
756 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.60\"'"));
757 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.61\"'"));
758 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.62\"'"));
759 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.63\"'"));
760 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.65\"'"));
761 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.65\"'"));
762 // MPEG2 AAC Main, LC, and SSR are supported except on Android.
763 EXPECT_EQ(kMpeg2AacProbably, CanPlay("'audio/mp4; codecs=\"mp4a.66\"'"));
764 EXPECT_EQ(kMpeg2AacProbably, CanPlay("'audio/mp4; codecs=\"mp4a.67\"'"));
765 EXPECT_EQ(kMpeg2AacProbably, CanPlay("'audio/mp4; codecs=\"mp4a.68\"'"));
766 // MP3.
767 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.69\"'"));
768 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.6A\"'"));
769 // MP3.
770 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.6B\"'"));
771 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.6b\"'"));
772 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.6C\"'"));
773 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.6D\"'"));
774 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.6E\"'"));
775 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.6F\"'"));
776
777 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.76\"'"));
778
779 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.4\"'"));
780 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.39\"'"));
781
782 // mp4a.40 without further extension is ambiguous and results in "maybe".
783 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"mp4a.40\"'"));
784
785 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.\"'"));
786 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.0\"'"));
787 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.1\"'"));
788 // MPEG4 AAC LC.
789 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.2\"'"));
790 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.3\"'"));
791 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.4\"'"));
792 // MPEG4 AAC SBR v1.
793 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.5\"'"));
794 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.6\"'"));
795 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.7\"'"));
796 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.8\"'"));
797 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.9\"'"));
798 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.10\"'"));
799 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.20\"'"));
800 // MPEG4 AAC SBR PS v2.
801 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.29\"'"));
wolenetz 2015/02/18 22:44:33 nit: try mp4a.40.1D, mp4a.40.1d, mp4a.40.41 should
ddorwin 2015/02/20 05:26:24 Done.
802 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.30\"'"));
803 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.40\"'"));
804 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.50\"'"));
805 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.290\"'"));
806
807 // Allow leading zeros in aud-oti for specific MPEG4 AAC strings.
808 // See http://crbug.com/440607.
809 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.00\"'"));
810 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.01\"'"));
811 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.02\"'"));
812 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.03\"'"));
813 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.04\"'"));
814 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.05\"'"));
815 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.40.029\"'"));
816
817 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.41\"'"));
818 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.41.2\"'"));
819
820 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.4.2\"'"));
821 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.400.2\"'"));
822 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.040.2\"'"));
823 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.4.5\"'"));
824 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.400.5\"'"));
825 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.040.5\"'"));
826 }
827
537 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_HLS) { 828 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_HLS) {
538 // HLS are supported only on Android IceCreamSandwich and above (API level 14) 829 // HLS are supported only on Android IceCreamSandwich and above (API level 14)
539 std::string probablyCanPlayHLS = kNot; 830 std::string probablyCanPlayHLS = kNot;
540 std::string maybeCanPlayHLS = kNot; 831 std::string maybeCanPlayHLS = kNot;
541 #if defined(OS_ANDROID) 832 #if defined(OS_ANDROID)
542 if (base::android::BuildInfo::GetInstance()->sdk_int() > 13) { 833 if (base::android::BuildInfo::GetInstance()->sdk_int() > 13) {
543 probablyCanPlayHLS = kProbably; 834 probablyCanPlayHLS = kProbably;
544 maybeCanPlayHLS = kMaybe; 835 maybeCanPlayHLS = kMaybe;
545 } 836 }
546 #endif 837 #endif
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after
659 CanPlay("'application/vnd.apple.mpegurl; " 950 CanPlay("'application/vnd.apple.mpegurl; "
660 "codecs=\"avc1.42E01E, mp4a.40\"'")); 951 "codecs=\"avc1.42E01E, mp4a.40\"'"));
661 EXPECT_EQ(maybeCanPlayHLS, 952 EXPECT_EQ(maybeCanPlayHLS,
662 CanPlay("'application/vnd.apple.mpegurl; " 953 CanPlay("'application/vnd.apple.mpegurl; "
663 "codecs=\"avc3.42E01E, mp4a.40\"'")); 954 "codecs=\"avc3.42E01E, mp4a.40\"'"));
664 955
665 TestMPEGUnacceptableCombinations("application/vnd.apple.mpegurl"); 956 TestMPEGUnacceptableCombinations("application/vnd.apple.mpegurl");
666 } 957 }
667 958
668 } // namespace content 959 } // namespace content
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698