Chromium Code Reviews| OLD | NEW |
|---|---|
| 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" |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 46 #endif | 46 #endif |
| 47 | 47 |
| 48 #if defined(ENABLE_MPEG2TS_STREAM_PARSER) | 48 #if defined(ENABLE_MPEG2TS_STREAM_PARSER) |
| 49 const char* kMp2tsMaybe = kPropMaybe; | 49 const char* kMp2tsMaybe = kPropMaybe; |
| 50 const char* kMp2tsProbably = kPropProbably; | 50 const char* kMp2tsProbably = kPropProbably; |
| 51 #else | 51 #else |
| 52 const char* kMp2tsMaybe = kNot; | 52 const char* kMp2tsMaybe = kNot; |
| 53 const char* kMp2tsProbably = kNot; | 53 const char* kMp2tsProbably = kNot; |
| 54 #endif | 54 #endif |
| 55 | 55 |
| 56 #if defined(ENABLE_AC3_EAC3_AUDIO_DEMUXING) | |
| 57 const char* kAc3Eac3Probably = kPropProbably; | |
| 58 #else | |
| 59 const char* kAc3Eac3Probably = kNot; | |
| 60 #endif | |
| 61 | |
| 56 namespace content { | 62 namespace content { |
| 57 | 63 |
| 58 class MediaCanPlayTypeTest : public MediaBrowserTest { | 64 class MediaCanPlayTypeTest : public MediaBrowserTest { |
| 59 public: | 65 public: |
| 60 MediaCanPlayTypeTest() : url_("about:blank") { } | 66 MediaCanPlayTypeTest() : url_("about:blank") { } |
| 61 | 67 |
| 62 void SetUpOnMainThread() override { NavigateToURL(shell(), url_); } | 68 void SetUpOnMainThread() override { NavigateToURL(shell(), url_); } |
| 63 | 69 |
| 64 std::string CanPlay(const std::string& type) { | 70 std::string CanPlay(const std::string& type) { |
| 65 std::string command("document.createElement('video').canPlayType("); | 71 std::string command("document.createElement('video').canPlayType("); |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 210 CanPlay("'" + mime + "; codecs=\", AVC3.64001F, MP4.40.02\"'")); | 216 CanPlay("'" + mime + "; codecs=\", AVC3.64001F, MP4.40.02\"'")); |
| 211 | 217 |
| 212 // Unknown codecs. | 218 // Unknown codecs. |
| 213 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc2\"'")); | 219 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc2\"'")); |
| 214 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc4\"'")); | 220 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc4\"'")); |
| 215 | 221 |
| 216 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1x\"'")); | 222 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1x\"'")); |
| 217 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3x\"'")); | 223 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3x\"'")); |
| 218 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4ax\"'")); | 224 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4ax\"'")); |
| 219 | 225 |
| 226 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"ac-\"'")); | |
|
ddorwin
2015/11/25 22:24:07
ac
ec
ac3
ec3
servolk
2015/12/03 00:56:14
Done.
| |
| 227 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"ec-\"'")); | |
| 228 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"ac-2\"'")); | |
| 229 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"ec-2\"'")); | |
| 230 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"ac-4\"'")); | |
| 231 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"ec-4\"'")); | |
| 232 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.a4\"'")); | |
| 233 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.a7\"'")); | |
| 234 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.a5.\"'")); | |
| 235 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.a6.\"'")); | |
| 236 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.a5.1\"'")); | |
| 237 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.a6.1\"'")); | |
| 238 | |
| 220 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"unknown\"'")); | 239 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"unknown\"'")); |
| 221 | 240 |
| 222 // Don't allow incomplete/ambiguous codec ids for HEVC. | 241 // Don't allow incomplete/ambiguous codec ids for HEVC. |
| 223 // Codec string must have info about codec level/profile, as described in | 242 // Codec string must have info about codec level/profile, as described in |
| 224 // ISO/IEC FDIS 14496-15 section E.3, for example "hev1.1.6.L93.B0" | 243 // ISO/IEC FDIS 14496-15 section E.3, for example "hev1.1.6.L93.B0" |
| 225 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1\"'")); | 244 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1\"'")); |
| 226 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1\"'")); | 245 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1\"'")); |
| 227 | 246 |
| 228 // Invalid codecs that look like something similar to HEVC/H.265 | 247 // Invalid codecs that look like something similar to HEVC/H.265 |
| 229 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1x\"'")); | 248 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1x\"'")); |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 282 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3.64001F\"'")); | 301 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3.64001F\"'")); |
| 283 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1.66.30\"'")); | 302 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1.66.30\"'")); |
| 284 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1, vorbis\"'")); | 303 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1, vorbis\"'")); |
| 285 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3, vorbis\"'")); | 304 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3, vorbis\"'")); |
| 286 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1, opus\"'")); | 305 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc1, opus\"'")); |
| 287 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3, opus\"'")); | 306 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"avc3, opus\"'")); |
| 288 | 307 |
| 289 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.6.L93.B0\"'")); | 308 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.6.L93.B0\"'")); |
| 290 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.6.L93.B0\"'")); | 309 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.6.L93.B0\"'")); |
| 291 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.6.L93.B0,opus\"'")); | 310 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.6.L93.B0,opus\"'")); |
| 292 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.6.L93.B0,opus\"'")); | 311 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.6.L93.B0,opus\"'")); |
|
ddorwin
2015/11/25 22:24:07
Add valid ac3/eac3 strings to all the non-mpeg tes
servolk
2015/12/03 00:56:14
Done.
| |
| 293 | 312 |
| 294 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40\"'")); | 313 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40\"'")); |
| 295 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40.2\"'")); | 314 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40.2\"'")); |
| 296 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40.02\"'")); | 315 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"mp4a.40.02\"'")); |
| 297 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora, mp4a.40.2\"'")); | 316 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora, mp4a.40.2\"'")); |
| 298 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora, mp4a.40.02\"'")); | 317 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora, mp4a.40.02\"'")); |
| 299 | 318 |
| 300 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"1\"'")); | 319 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"1\"'")); |
| 301 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora, 1\"'")); | 320 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"theora, 1\"'")); |
| 302 | 321 |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 586 CanPlay("'video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'")); | 605 CanPlay("'video/mp4; codecs=\"avc1.42E01E, mp4a.40.2\"'")); |
| 587 EXPECT_EQ(kPropProbably, | 606 EXPECT_EQ(kPropProbably, |
| 588 CanPlay("'video/mp4; codecs=\"avc1.42E01E, mp4a.40.02\"'")); | 607 CanPlay("'video/mp4; codecs=\"avc1.42E01E, mp4a.40.02\"'")); |
| 589 EXPECT_EQ(kPropProbably, | 608 EXPECT_EQ(kPropProbably, |
| 590 CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40.5\"'")); | 609 CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40.5\"'")); |
| 591 EXPECT_EQ(kPropProbably, | 610 EXPECT_EQ(kPropProbably, |
| 592 CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40.05\"'")); | 611 CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40.05\"'")); |
| 593 EXPECT_EQ(kPropProbably, | 612 EXPECT_EQ(kPropProbably, |
| 594 CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40.29\"'")); | 613 CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40.29\"'")); |
| 595 | 614 |
| 615 // AC3 and EAC3 (aka Dolby Digital Plus, DD+) audio codecs. | |
| 616 // TODO(servolk): Strictly speaking only mp4a.A5 and mp4a.A6 codec ids are | |
| 617 // valid according to RFC 6381 section 3.3, 3.4. Lower-case oti (mp4a.a5 and | |
| 618 // mp4a.a6) should be rejected. But we used to allow those in older versions | |
| 619 // of Chromecast firmware and some apps (notably MPL) depend on those codec | |
| 620 // types being supported, so they should be allowed for now. | |
|
ddorwin
2015/11/25 22:24:07
bug reference?
servolk
2015/12/03 00:56:14
Done.
| |
| 621 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'video/mp4; codecs=\"ac-3\"'")); | |
| 622 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'video/mp4; codecs=\"mp4a.a5\"'")); | |
| 623 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'video/mp4; codecs=\"mp4a.A5\"'")); | |
| 624 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'video/mp4; codecs=\"ec-3\"'")); | |
| 625 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'video/mp4; codecs=\"mp4a.a6\"'")); | |
| 626 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'video/mp4; codecs=\"mp4a.A6\"'")); | |
| 627 EXPECT_EQ(kAc3Eac3Probably, | |
| 628 CanPlay("'video/mp4; codecs=\"avc1.640028,ac-3\"'")); | |
| 629 EXPECT_EQ(kAc3Eac3Probably, | |
| 630 CanPlay("'video/mp4; codecs=\"avc1.640028,mp4a.a5\"'")); | |
| 631 EXPECT_EQ(kAc3Eac3Probably, | |
| 632 CanPlay("'video/mp4; codecs=\"avc1.640028,mp4a.A5\"'")); | |
| 633 EXPECT_EQ(kAc3Eac3Probably, | |
| 634 CanPlay("'video/mp4; codecs=\"avc1.640028,ec-3\"'")); | |
| 635 EXPECT_EQ(kAc3Eac3Probably, | |
| 636 CanPlay("'video/mp4; codecs=\"avc1.640028,mp4a.a6\"'")); | |
| 637 EXPECT_EQ(kAc3Eac3Probably, | |
| 638 CanPlay("'video/mp4; codecs=\"avc1.640028,mp4a.A6\"'")); | |
| 639 | |
| 596 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, mp4a.40.2\"'")); | 640 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, mp4a.40.2\"'")); |
| 597 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, mp4a.40.02\"'")); | 641 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1, mp4a.40.02\"'")); |
| 598 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40.2\"'")); | 642 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40.2\"'")); |
| 599 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40.02\"'")); | 643 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc3, mp4a.40.02\"'")); |
| 600 EXPECT_EQ(kPropMaybe, | 644 EXPECT_EQ(kPropMaybe, |
| 601 CanPlay("'video/mp4; codecs=\"avc1.42E01E, mp4a.40\"'")); | 645 CanPlay("'video/mp4; codecs=\"avc1.42E01E, mp4a.40\"'")); |
| 602 EXPECT_EQ(kPropMaybe, | 646 EXPECT_EQ(kPropMaybe, |
| 603 CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40\"'")); | 647 CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40\"'")); |
| 604 | 648 |
| 605 // TODO(servolk): Add more unit test coverage once we have more info about | 649 // TODO(servolk): Add more unit test coverage once we have more info about |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 658 EXPECT_EQ(kPropMaybe, | 702 EXPECT_EQ(kPropMaybe, |
| 659 CanPlay("'video/x-m4v; codecs=\"avc3.42E01E, mp4a.40\"'")); | 703 CanPlay("'video/x-m4v; codecs=\"avc3.42E01E, mp4a.40\"'")); |
| 660 | 704 |
| 661 EXPECT_EQ(kHevcSupported, | 705 EXPECT_EQ(kHevcSupported, |
| 662 CanPlay("'video/x-m4v; codecs=\"hev1.1.6.L93.B0\"'")); | 706 CanPlay("'video/x-m4v; codecs=\"hev1.1.6.L93.B0\"'")); |
| 663 EXPECT_EQ(kHevcSupported, | 707 EXPECT_EQ(kHevcSupported, |
| 664 CanPlay("'video/x-m4v; codecs=\"hvc1.1.6.L93.B0\"'")); | 708 CanPlay("'video/x-m4v; codecs=\"hvc1.1.6.L93.B0\"'")); |
| 665 EXPECT_EQ(kHevcSupported, | 709 EXPECT_EQ(kHevcSupported, |
| 666 CanPlay("'video/x-m4v; codecs=\"hev1.1.6.L93.B0, mp4a.40.5\"'")); | 710 CanPlay("'video/x-m4v; codecs=\"hev1.1.6.L93.B0, mp4a.40.5\"'")); |
| 667 EXPECT_EQ(kHevcSupported, | 711 EXPECT_EQ(kHevcSupported, |
| 668 CanPlay("'video/x-m4v; codecs=\"hvc1.1.6.L93.B0, mp4a.40.5\"'")); | 712 CanPlay("'video/x-m4v; codecs=\"hvc1.1.6.L93.B0, mp4a.40.5\"'")); |
|
ddorwin
2015/11/25 22:24:07
Test the x- variants for audio and video.
servolk
2015/12/03 00:56:14
Done.
| |
| 669 | 713 |
| 670 TestMPEGUnacceptableCombinations("video/x-m4v"); | 714 TestMPEGUnacceptableCombinations("video/x-m4v"); |
| 671 | 715 |
| 672 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4'")); | 716 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4'")); |
| 673 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"mp4a.40\"'")); | 717 EXPECT_EQ(kPropMaybe, CanPlay("'audio/mp4; codecs=\"mp4a.40\"'")); |
| 674 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.2\"'")); | 718 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.2\"'")); |
| 675 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.02\"'")); | 719 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.02\"'")); |
| 676 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.5\"'")); | 720 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.5\"'")); |
| 677 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.05\"'")); | 721 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.05\"'")); |
| 678 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.29\"'")); | 722 EXPECT_EQ(kPropProbably, CanPlay("'audio/mp4; codecs=\"mp4a.40.29\"'")); |
| 679 | 723 |
| 680 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1\"'")); | 724 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1\"'")); |
| 681 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3\"'")); | 725 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3\"'")); |
| 682 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1, mp4a.40\"'")); | 726 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1, mp4a.40\"'")); |
| 683 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3, mp4a.40\"'")); | 727 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3, mp4a.40\"'")); |
| 684 | 728 |
| 685 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1.4D401E\"'")); | 729 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1.4D401E\"'")); |
| 686 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3.64001F\"'")); | 730 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3.64001F\"'")); |
| 687 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1.66.30\"'")); | 731 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1.66.30\"'")); |
| 688 | 732 |
| 689 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hev1.1.6.L93.B0\"'")); | 733 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hev1.1.6.L93.B0\"'")); |
| 690 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hvc1.1.6.L93.B0\"'")); | 734 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hvc1.1.6.L93.B0\"'")); |
| 691 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hev1.1.6.L93.B0,mp4a.40.5\"'")); | 735 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hev1.1.6.L93.B0,mp4a.40.5\"'")); |
| 692 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hvc1.1.6.L93.B0,mp4a.40.5\"'")); | 736 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hvc1.1.6.L93.B0,mp4a.40.5\"'")); |
| 693 | 737 |
| 738 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"ac-3\"'")); | |
| 739 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"mp4a.a5\"'")); | |
| 740 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"mp4a.A5\"'")); | |
| 741 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"ec-3\"'")); | |
| 742 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"mp4a.a6\"'")); | |
| 743 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"mp4a.A6\"'")); | |
| 744 | |
| 694 TestMPEGUnacceptableCombinations("audio/mp4"); | 745 TestMPEGUnacceptableCombinations("audio/mp4"); |
| 695 | 746 |
| 696 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a'")); | 747 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a'")); |
| 697 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"mp4a.40\"'")); | 748 EXPECT_EQ(kPropMaybe, CanPlay("'audio/x-m4a; codecs=\"mp4a.40\"'")); |
| 698 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.2\"'")); | 749 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.2\"'")); |
| 699 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.02\"'")); | 750 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.02\"'")); |
| 700 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.5\"'")); | 751 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.5\"'")); |
| 701 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.05\"'")); | 752 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.05\"'")); |
| 702 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.29\"'")); | 753 EXPECT_EQ(kPropProbably, CanPlay("'audio/x-m4a; codecs=\"mp4a.40.29\"'")); |
| 703 | 754 |
| (...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1032 | 1083 |
| 1033 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.4.2\"'")); | 1084 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.4.2\"'")); |
| 1034 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.400.2\"'")); | 1085 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.400.2\"'")); |
| 1035 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.040.2\"'")); | 1086 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.040.2\"'")); |
| 1036 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.4.5\"'")); | 1087 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.4.5\"'")); |
| 1037 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.400.5\"'")); | 1088 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.400.5\"'")); |
| 1038 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.040.5\"'")); | 1089 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"mp4a.040.5\"'")); |
| 1039 } | 1090 } |
| 1040 | 1091 |
| 1041 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_HLS) { | 1092 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_HLS) { |
| 1042 // HLS are supported only on Android IceCreamSandwich and above (API level 14) | 1093 // HLS are supported only on Android IceCreamSandwich and above (API level 14) |
|
ddorwin
2015/11/25 22:24:07
Separate CL: We can remove this check. We might se
servolk
2015/12/03 00:56:14
Acknowledged.
| |
| 1043 std::string probablyCanPlayHLS = kNot; | 1094 std::string probablyCanPlayHLS = kNot; |
| 1044 std::string maybeCanPlayHLS = kNot; | 1095 std::string maybeCanPlayHLS = kNot; |
| 1045 #if defined(OS_ANDROID) | 1096 #if defined(OS_ANDROID) |
| 1046 if (base::android::BuildInfo::GetInstance()->sdk_int() > 13) { | 1097 if (base::android::BuildInfo::GetInstance()->sdk_int() > 13) { |
| 1047 probablyCanPlayHLS = kProbably; | 1098 probablyCanPlayHLS = kProbably; |
| 1048 maybeCanPlayHLS = kMaybe; | 1099 maybeCanPlayHLS = kMaybe; |
| 1049 } | 1100 } |
| 1050 #endif | 1101 #endif |
| 1051 EXPECT_EQ(maybeCanPlayHLS, CanPlay("'application/x-mpegurl'")); | 1102 EXPECT_EQ(maybeCanPlayHLS, CanPlay("'application/x-mpegurl'")); |
| 1052 | 1103 |
| (...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1172 CanPlay("'application/vnd.apple.mpegurl; " | 1223 CanPlay("'application/vnd.apple.mpegurl; " |
| 1173 "codecs=\"avc1.42E01E, mp4a.40\"'")); | 1224 "codecs=\"avc1.42E01E, mp4a.40\"'")); |
| 1174 EXPECT_EQ(maybeCanPlayHLS, | 1225 EXPECT_EQ(maybeCanPlayHLS, |
| 1175 CanPlay("'application/vnd.apple.mpegurl; " | 1226 CanPlay("'application/vnd.apple.mpegurl; " |
| 1176 "codecs=\"avc3.42E01E, mp4a.40\"'")); | 1227 "codecs=\"avc3.42E01E, mp4a.40\"'")); |
| 1177 | 1228 |
| 1178 EXPECT_EQ(kNot, | 1229 EXPECT_EQ(kNot, |
| 1179 CanPlay("'application/vnd.apple.mpegurl; codecs=\"hev1.1.6.L93.B0\"'")); | 1230 CanPlay("'application/vnd.apple.mpegurl; codecs=\"hev1.1.6.L93.B0\"'")); |
| 1180 EXPECT_EQ(kNot, | 1231 EXPECT_EQ(kNot, |
| 1181 CanPlay("'application/vnd.apple.mpegurl; codecs=\"hvc1.1.6.L93.B0\"'")); | 1232 CanPlay("'application/vnd.apple.mpegurl; codecs=\"hvc1.1.6.L93.B0\"'")); |
| 1182 EXPECT_EQ(kNot, | 1233 EXPECT_EQ(kNot, |
|
ddorwin
2015/11/25 22:24:07
I don't think these are correct when HEVC is suppo
servolk
2015/12/03 00:56:14
No, but HLS mime types are only enabled for Androi
| |
| 1183 CanPlay("'application/vnd.apple.mpegurl; " | 1234 CanPlay("'application/vnd.apple.mpegurl; " |
| 1184 "codecs=\"hev1.1.6.L93.B0,mp4a.40.5\"'")); | 1235 "codecs=\"hev1.1.6.L93.B0,mp4a.40.5\"'")); |
| 1185 EXPECT_EQ(kNot, | 1236 EXPECT_EQ(kNot, |
| 1186 CanPlay("'application/vnd.apple.mpegurl; " | 1237 CanPlay("'application/vnd.apple.mpegurl; " |
| 1187 "codecs=\"hvc1.1.6.L93.B0,mp4a.40.5\"'")); | 1238 "codecs=\"hvc1.1.6.L93.B0,mp4a.40.5\"'")); |
|
ddorwin
2015/11/25 22:24:07
Add test for ac3/eac3.
servolk
2015/12/03 00:56:14
Done.
| |
| 1188 | 1239 |
| 1189 TestMPEGUnacceptableCombinations("application/vnd.apple.mpegurl"); | 1240 TestMPEGUnacceptableCombinations("application/vnd.apple.mpegurl"); |
| 1190 } | 1241 } |
| 1191 | 1242 |
| 1192 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_AAC_ADTS) { | 1243 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_AAC_ADTS) { |
| 1193 EXPECT_EQ(kPropProbably, CanPlay("'audio/aac'")); | 1244 EXPECT_EQ(kPropProbably, CanPlay("'audio/aac'")); |
| 1194 | 1245 |
| 1195 // audio/aac doesn't support the codecs parameter. | 1246 // audio/aac doesn't support the codecs parameter. |
| 1196 EXPECT_EQ(kNot, CanPlay("'audio/aac; codecs=\"1\"'")); | 1247 EXPECT_EQ(kNot, CanPlay("'audio/aac; codecs=\"1\"'")); |
| 1197 EXPECT_EQ(kNot, CanPlay("'audio/aac; codecs=\"aac\"'")); | 1248 EXPECT_EQ(kNot, CanPlay("'audio/aac; codecs=\"aac\"'")); |
| 1198 EXPECT_EQ(kNot, CanPlay("'audio/aac; codecs=\"mp4a.40.2\"'")); | 1249 EXPECT_EQ(kNot, CanPlay("'audio/aac; codecs=\"mp4a.40.2\"'")); |
| 1199 } | 1250 } |
| 1200 | 1251 |
| 1201 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Mpeg2Ts) { | 1252 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Mpeg2Ts) { |
| 1202 EXPECT_EQ(kMp2tsMaybe, CanPlay("'video/mp2t'")); | 1253 EXPECT_EQ(kMp2tsMaybe, CanPlay("'video/mp2t'")); |
| 1203 | 1254 |
| 1204 // video/mp2t must support standard RFC 6381 compliant H.264 / AAC codec ids. | 1255 // video/mp2t must support standard RFC 6381 compliant H.264 / AAC codec ids. |
| 1205 // H.264 baseline, main, high profiles | 1256 // H.264 baseline, main, high profiles |
| 1206 EXPECT_EQ(kMp2tsProbably, CanPlay("'video/mp2t; codecs=\"avc1.42E01E\"'")); | 1257 EXPECT_EQ(kMp2tsProbably, CanPlay("'video/mp2t; codecs=\"avc1.42E01E\"'")); |
| 1207 EXPECT_EQ(kMp2tsProbably, CanPlay("'video/mp2t; codecs=\"avc1.4D401E\"'")); | 1258 EXPECT_EQ(kMp2tsProbably, CanPlay("'video/mp2t; codecs=\"avc1.4D401E\"'")); |
| 1208 EXPECT_EQ(kMp2tsProbably, CanPlay("'video/mp2t; codecs=\"avc1.640028\"'")); | 1259 EXPECT_EQ(kMp2tsProbably, CanPlay("'video/mp2t; codecs=\"avc1.640028\"'")); |
| 1209 // AAC LC audio | 1260 // AAC LC audio |
| 1210 EXPECT_EQ(kMp2tsProbably, CanPlay("'video/mp2t; codecs=\"mp4a.40.2\"'")); | 1261 EXPECT_EQ(kMp2tsProbably, CanPlay("'video/mp2t; codecs=\"mp4a.40.2\"'")); |
| 1211 // H.264 + AAC audio combinations | 1262 // H.264 + AAC audio combinations |
| 1212 EXPECT_EQ(kMp2tsProbably, | 1263 EXPECT_EQ(kMp2tsProbably, |
| 1213 CanPlay("'video/mp2t; codecs=\"avc1.42E01E,mp4a.40.2\"'")); | 1264 CanPlay("'video/mp2t; codecs=\"avc1.42E01E,mp4a.40.2\"'")); |
| 1214 EXPECT_EQ(kMp2tsProbably, | 1265 EXPECT_EQ(kMp2tsProbably, |
| 1215 CanPlay("'video/mp2t; codecs=\"avc1.4D401E,mp4a.40.2\"'")); | 1266 CanPlay("'video/mp2t; codecs=\"avc1.4D401E,mp4a.40.2\"'")); |
| 1216 EXPECT_EQ(kMp2tsProbably, | 1267 EXPECT_EQ(kMp2tsProbably, |
| 1217 CanPlay("'video/mp2t; codecs=\"avc1.640028,mp4a.40.2\"'")); | 1268 CanPlay("'video/mp2t; codecs=\"avc1.640028,mp4a.40.2\"'")); |
|
ddorwin
2015/11/25 22:24:07
ditto
HEVC too
servolk
2015/12/03 00:56:14
Done. (added AC3/EAC3 in mpeg2ts container, let's
| |
| 1218 | 1269 |
| 1219 TestMPEGUnacceptableCombinations("video/mp2t"); | 1270 TestMPEGUnacceptableCombinations("video/mp2t"); |
| 1220 } | 1271 } |
| 1221 | 1272 |
| 1222 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, | 1273 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, |
| 1223 CodecSupportTest_Mpeg2Ts_LegacyAvc1_codec_ids) { | 1274 CodecSupportTest_Mpeg2Ts_LegacyAvc1_codec_ids) { |
| 1224 // Old-style avc1/H.264 codec ids that are still being used by some HLS | 1275 // Old-style avc1/H.264 codec ids that are still being used by some HLS |
| 1225 // streaming apps for backward compatibility. | 1276 // streaming apps for backward compatibility. |
| 1226 // H.264 baseline profile | 1277 // H.264 baseline profile |
| 1227 EXPECT_EQ(kMp2tsProbably, CanPlay("'video/mp2t; codecs=\"avc1.66.10\"'")); | 1278 EXPECT_EQ(kMp2tsProbably, CanPlay("'video/mp2t; codecs=\"avc1.66.10\"'")); |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1263 EXPECT_EQ(kMp2tsProbably, | 1314 EXPECT_EQ(kMp2tsProbably, |
| 1264 CanPlay("'video/mp2t; codecs=\"avc1.100.40,mp4a.40.2\"'")); | 1315 CanPlay("'video/mp2t; codecs=\"avc1.100.40,mp4a.40.2\"'")); |
| 1265 } | 1316 } |
| 1266 | 1317 |
| 1267 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Mpeg2TsAudio) { | 1318 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Mpeg2TsAudio) { |
| 1268 // audio/mp2t is currently not supported (see also crbug.com/556837). | 1319 // audio/mp2t is currently not supported (see also crbug.com/556837). |
| 1269 EXPECT_EQ(kNot, CanPlay("'audio/mp2t; codecs=\"mp4a.40.2\"'")); | 1320 EXPECT_EQ(kNot, CanPlay("'audio/mp2t; codecs=\"mp4a.40.2\"'")); |
| 1270 } | 1321 } |
| 1271 | 1322 |
| 1272 } // namespace content | 1323 } // namespace content |
| OLD | NEW |