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 |