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 "base/command_line.h" | 7 #include "base/command_line.h" |
8 #include "base/macros.h" | 8 #include "base/macros.h" |
9 #include "base/strings/string_util.h" | 9 #include "base/strings/string_util.h" |
10 #include "build/build_config.h" | 10 #include "build/build_config.h" |
11 #include "content/browser/media/media_browsertest.h" | 11 #include "content/browser/media/media_browsertest.h" |
12 #include "content/public/test/browser_test_utils.h" | 12 #include "content/public/test/browser_test_utils.h" |
13 #include "content/public/test/content_browser_test_utils.h" | 13 #include "content/public/test/content_browser_test_utils.h" |
14 #include "content/shell/browser/shell.h" | 14 #include "content/shell/browser/shell.h" |
15 #include "media/base/media_switches.h" | 15 #include "media/base/media_switches.h" |
16 #include "media/media_features.h" | 16 #include "media/media_features.h" |
| 17 #include "ui/base/ui_base_switches.h" |
17 | 18 |
18 #if defined(OS_ANDROID) | 19 #if defined(OS_ANDROID) |
19 #include "base/android/build_info.h" | 20 #include "base/android/build_info.h" |
20 #endif | 21 #endif |
21 | 22 |
22 const char kProbably[] = "probably"; | 23 const char kProbably[] = "probably"; |
23 const char kMaybe[] = "maybe"; | 24 const char kMaybe[] = "maybe"; |
24 const char kNot[] = ""; | 25 const char kNot[] = ""; |
25 | 26 |
26 #if BUILDFLAG(USE_PROPRIETARY_CODECS) | 27 #if BUILDFLAG(USE_PROPRIETARY_CODECS) |
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
344 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp8, vorbis\"'")); | 345 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp8, vorbis\"'")); |
345 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp08\"'")); | 346 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp08\"'")); |
346 EXPECT_EQ(kNot, | 347 EXPECT_EQ(kNot, |
347 CanPlay("'" + mime + "; codecs=\"vp08.00.01.08.02.01.01.00\"'")); | 348 CanPlay("'" + mime + "; codecs=\"vp08.00.01.08.02.01.01.00\"'")); |
348 | 349 |
349 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9\"'")); | 350 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9\"'")); |
350 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9.0\"'")); | 351 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9.0\"'")); |
351 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9, opus\"'")); | 352 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9, opus\"'")); |
352 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9, vorbis\"'")); | 353 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9, vorbis\"'")); |
353 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp09\"'")); | 354 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp09\"'")); |
354 EXPECT_EQ(kNot, | 355 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp09.00.01.08\"'")); |
355 CanPlay("'" + mime + "; codecs=\"vp09.00.01.08.02.01.01.00\"'")); | |
356 | 356 |
357 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1\"'")); | 357 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1\"'")); |
358 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3\"'")); | 358 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3\"'")); |
359 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.4D401E\"'")); | 359 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.4D401E\"'")); |
360 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.64001F\"'")); | 360 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.64001F\"'")); |
361 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.66.30\"'")); | 361 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.66.30\"'")); |
362 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1, vorbis\"'")); | 362 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1, vorbis\"'")); |
363 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3, vorbis\"'")); | 363 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3, vorbis\"'")); |
364 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1, opus\"'")); | 364 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1, opus\"'")); |
365 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3, opus\"'")); | 365 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3, opus\"'")); |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
403 | 403 |
404 void TestWEBMUnacceptableCombinations(const std::string& mime) { | 404 void TestWEBMUnacceptableCombinations(const std::string& mime) { |
405 // Codecs not belonging to WEBM container. | 405 // Codecs not belonging to WEBM container. |
406 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"1\"'")); | 406 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"1\"'")); |
407 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp8, 1\"'")); | 407 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp8, 1\"'")); |
408 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9, 1\"'")); | 408 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9, 1\"'")); |
409 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp8.0, 1\"'")); | 409 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp8.0, 1\"'")); |
410 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9.0, 1\"'")); | 410 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9.0, 1\"'")); |
411 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp08\"'")); | 411 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp08\"'")); |
412 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp09\"'")); | 412 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp09\"'")); |
413 EXPECT_EQ(kNot, | 413 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp09.00.01.08\"'")); |
414 CanPlay("'" + mime + "; codecs=\"vp08.00.01.08.02.01.01.00\"'")); | |
415 EXPECT_EQ(kNot, | |
416 CanPlay("'" + mime + "; codecs=\"vp09.00.01.08.02.01.01.00\"'")); | |
417 | 414 |
418 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"theora\"'")); | 415 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"theora\"'")); |
419 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"theora, vorbis\"'")); | 416 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"theora, vorbis\"'")); |
420 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"theora, opus\"'")); | 417 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"theora, opus\"'")); |
421 | 418 |
422 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1\"'")); | 419 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1\"'")); |
423 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3\"'")); | 420 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3\"'")); |
424 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.4D401E\"'")); | 421 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.4D401E\"'")); |
425 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.64001F\"'")); | 422 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.64001F\"'")); |
426 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.66.30\"'")); | 423 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.66.30\"'")); |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
469 } | 466 } |
470 | 467 |
471 void TestWAVUnacceptableCombinations(const std::string& mime) { | 468 void TestWAVUnacceptableCombinations(const std::string& mime) { |
472 // Codecs not belonging to WAV container. | 469 // Codecs not belonging to WAV container. |
473 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp8\"'")); | 470 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp8\"'")); |
474 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9\"'")); | 471 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9\"'")); |
475 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp8.0, 1\"'")); | 472 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp8.0, 1\"'")); |
476 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9.0, 1\"'")); | 473 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp9.0, 1\"'")); |
477 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp08\"'")); | 474 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp08\"'")); |
478 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp09\"'")); | 475 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp09\"'")); |
479 EXPECT_EQ(kNot, | 476 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp09.00.01.08\"'")); |
480 CanPlay("'" + mime + "; codecs=\"vp08.00.01.08.02.01.01.00\"'")); | |
481 EXPECT_EQ(kNot, | |
482 CanPlay("'" + mime + "; codecs=\"vp09.00.01.08.02.01.01.00\"'")); | |
483 | 477 |
484 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vorbis\"'")); | 478 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vorbis\"'")); |
485 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"opus\"'")); | 479 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"opus\"'")); |
486 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"theora\"'")); | 480 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"theora\"'")); |
487 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"theora, 1\"'")); | 481 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"theora, 1\"'")); |
488 | 482 |
489 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1\"'")); | 483 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1\"'")); |
490 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3\"'")); | 484 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3\"'")); |
491 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.4D401E\"'")); | 485 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1.4D401E\"'")); |
492 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.64001F\"'")); | 486 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3.64001F\"'")); |
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
564 EXPECT_EQ(kHlsProbably, | 558 EXPECT_EQ(kHlsProbably, |
565 CanPlay("'" + mime + "; codecs=\"avc3.42E01E, mp4a.40.29\"'")); | 559 CanPlay("'" + mime + "; codecs=\"avc3.42E01E, mp4a.40.29\"'")); |
566 | 560 |
567 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.6.L93.B0\"'")); | 561 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1.1.6.L93.B0\"'")); |
568 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.6.L93.B0\"'")); | 562 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1.1.6.L93.B0\"'")); |
569 EXPECT_EQ(kNot, | 563 EXPECT_EQ(kNot, |
570 CanPlay("'" + mime + "; codecs=\"hev1.1.6.L93.B0,mp4a.40.5\"'")); | 564 CanPlay("'" + mime + "; codecs=\"hev1.1.6.L93.B0,mp4a.40.5\"'")); |
571 EXPECT_EQ(kNot, | 565 EXPECT_EQ(kNot, |
572 CanPlay("'" + mime + "; codecs=\"hvc1.1.6.L93.B0,mp4a.40.5\"'")); | 566 CanPlay("'" + mime + "; codecs=\"hvc1.1.6.L93.B0,mp4a.40.5\"'")); |
573 | 567 |
574 EXPECT_EQ(kNot, | 568 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"vp09.00.01.08\"'")); |
575 CanPlay("'" + mime + "; codecs=\"vp09.01.01.08.04.03.00.00\"'")); | |
576 | 569 |
577 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"ac-3\"'")); | 570 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"ac-3\"'")); |
578 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"ec-3\"'")); | 571 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"ec-3\"'")); |
579 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.A5\"'")); | 572 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.A5\"'")); |
580 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.A6\"'")); | 573 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.A6\"'")); |
581 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.a5\"'")); | 574 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.a5\"'")); |
582 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.a6\"'")); | 575 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4a.a6\"'")); |
583 | 576 |
584 EXPECT_EQ(kHlsMaybe, CanPlay("'" + mime + "; codecs=\"avc1, mp4a.40.2\"'")); | 577 EXPECT_EQ(kHlsMaybe, CanPlay("'" + mime + "; codecs=\"avc1, mp4a.40.2\"'")); |
585 EXPECT_EQ(kHlsMaybe, | 578 EXPECT_EQ(kHlsMaybe, |
(...skipping 284 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
870 CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40\"'")); | 863 CanPlay("'video/mp4; codecs=\"avc3.42E01E, mp4a.40\"'")); |
871 | 864 |
872 EXPECT_EQ(kHevcSupported, CanPlay("'video/mp4; codecs=\"hev1.1.6.L93.B0\"'")); | 865 EXPECT_EQ(kHevcSupported, CanPlay("'video/mp4; codecs=\"hev1.1.6.L93.B0\"'")); |
873 EXPECT_EQ(kHevcSupported, CanPlay("'video/mp4; codecs=\"hvc1.1.6.L93.B0\"'")); | 866 EXPECT_EQ(kHevcSupported, CanPlay("'video/mp4; codecs=\"hvc1.1.6.L93.B0\"'")); |
874 EXPECT_EQ(kHevcSupported, | 867 EXPECT_EQ(kHevcSupported, |
875 CanPlay("'video/mp4; codecs=\"hev1.1.6.L93.B0, mp4a.40.5\"'")); | 868 CanPlay("'video/mp4; codecs=\"hev1.1.6.L93.B0, mp4a.40.5\"'")); |
876 EXPECT_EQ(kHevcSupported, | 869 EXPECT_EQ(kHevcSupported, |
877 CanPlay("'video/mp4; codecs=\"hvc1.1.6.L93.B0, mp4a.40.5\"'")); | 870 CanPlay("'video/mp4; codecs=\"hvc1.1.6.L93.B0, mp4a.40.5\"'")); |
878 | 871 |
879 // switches::kEnableVp9InMp4 is enabled in MediaBrowserTest. | 872 // switches::kEnableVp9InMp4 is enabled in MediaBrowserTest. |
880 EXPECT_EQ(kPropProbably, | 873 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"vp09.00.01.08\"'")); |
881 CanPlay("'video/mp4; codecs=\"vp09.00.01.08.02.01.01.00\"'")); | |
882 | 874 |
883 TestMPEGUnacceptableCombinations("video/mp4"); | 875 TestMPEGUnacceptableCombinations("video/mp4"); |
884 EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"flac\"'")); | 876 EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"flac\"'")); |
885 // This result is incorrect. See https://crbug.com/592889. | 877 // This result is incorrect. See https://crbug.com/592889. |
886 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"mp3\"'")); | 878 EXPECT_EQ(kPropProbably, CanPlay("'video/mp4; codecs=\"mp3\"'")); |
887 | 879 |
888 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v'")); | 880 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v'")); |
889 | 881 |
890 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1\"'")); | 882 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc1\"'")); |
891 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3\"'")); | 883 EXPECT_EQ(kPropMaybe, CanPlay("'video/x-m4v; codecs=\"avc3\"'")); |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
931 EXPECT_EQ(kPropMaybe, | 923 EXPECT_EQ(kPropMaybe, |
932 CanPlay("'video/x-m4v; codecs=\"avc3.42E01E, mp4a.40\"'")); | 924 CanPlay("'video/x-m4v; codecs=\"avc3.42E01E, mp4a.40\"'")); |
933 | 925 |
934 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"hev1.1.6.L93.B0\"'")); | 926 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"hev1.1.6.L93.B0\"'")); |
935 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"hvc1.1.6.L93.B0\"'")); | 927 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"hvc1.1.6.L93.B0\"'")); |
936 EXPECT_EQ(kNot, | 928 EXPECT_EQ(kNot, |
937 CanPlay("'video/x-m4v; codecs=\"hev1.1.6.L93.B0, mp4a.40.5\"'")); | 929 CanPlay("'video/x-m4v; codecs=\"hev1.1.6.L93.B0, mp4a.40.5\"'")); |
938 EXPECT_EQ(kNot, | 930 EXPECT_EQ(kNot, |
939 CanPlay("'video/x-m4v; codecs=\"hvc1.1.6.L93.B0, mp4a.40.5\"'")); | 931 CanPlay("'video/x-m4v; codecs=\"hvc1.1.6.L93.B0, mp4a.40.5\"'")); |
940 | 932 |
941 EXPECT_EQ(kNot, | 933 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"vp09.00.01.08\"'")); |
942 CanPlay("'video/x-m4v; codecs=\"vp09.00.01.08.02.01.01.00\"'")); | |
943 | 934 |
944 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"ac-3\"'")); | 935 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"ac-3\"'")); |
945 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"mp4a.a5\"'")); | 936 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"mp4a.a5\"'")); |
946 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"mp4a.A5\"'")); | 937 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"mp4a.A5\"'")); |
947 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"ec-3\"'")); | 938 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"ec-3\"'")); |
948 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"mp4a.a6\"'")); | 939 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"mp4a.a6\"'")); |
949 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"mp4a.A6\"'")); | 940 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"mp4a.A6\"'")); |
950 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"avc1.640028,ac-3\"'")); | 941 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"avc1.640028,ac-3\"'")); |
951 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"avc1.640028,mp4a.a5\"'")); | 942 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"avc1.640028,mp4a.a5\"'")); |
952 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"avc1.640028,mp4a.A5\"'")); | 943 EXPECT_EQ(kNot, CanPlay("'video/x-m4v; codecs=\"avc1.640028,mp4a.A5\"'")); |
(...skipping 23 matching lines...) Expand all Loading... |
976 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3, mp4a.40\"'")); | 967 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3, mp4a.40\"'")); |
977 | 968 |
978 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1.4D401E\"'")); | 969 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc1.4D401E\"'")); |
979 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3.64001F\"'")); | 970 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"avc3.64001F\"'")); |
980 | 971 |
981 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hev1.1.6.L93.B0\"'")); | 972 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hev1.1.6.L93.B0\"'")); |
982 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hvc1.1.6.L93.B0\"'")); | 973 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hvc1.1.6.L93.B0\"'")); |
983 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hev1.1.6.L93.B0,mp4a.40.5\"'")); | 974 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hev1.1.6.L93.B0,mp4a.40.5\"'")); |
984 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hvc1.1.6.L93.B0,mp4a.40.5\"'")); | 975 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"hvc1.1.6.L93.B0,mp4a.40.5\"'")); |
985 | 976 |
986 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"vp09.00.01.08.02.01.01.00\"'")); | 977 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"vp09.00.01.08\"'")); |
987 | 978 |
988 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"ac-3\"'")); | 979 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"ac-3\"'")); |
989 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"mp4a.a5\"'")); | 980 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"mp4a.a5\"'")); |
990 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"mp4a.A5\"'")); | 981 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"mp4a.A5\"'")); |
991 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"ec-3\"'")); | 982 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"ec-3\"'")); |
992 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"mp4a.a6\"'")); | 983 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"mp4a.a6\"'")); |
993 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"mp4a.A6\"'")); | 984 EXPECT_EQ(kAc3Eac3Probably, CanPlay("'audio/mp4; codecs=\"mp4a.A6\"'")); |
994 | 985 |
995 TestMPEGUnacceptableCombinations("audio/mp4"); | 986 TestMPEGUnacceptableCombinations("audio/mp4"); |
996 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"flac\"'")); | 987 EXPECT_EQ(kNot, CanPlay("'audio/mp4; codecs=\"flac\"'")); |
(...skipping 23 matching lines...) Expand all Loading... |
1020 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E\"'")); | 1011 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E\"'")); |
1021 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3.64001F\"'")); | 1012 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3.64001F\"'")); |
1022 | 1013 |
1023 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"hev1.1.6.L93.B0\"'")); | 1014 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"hev1.1.6.L93.B0\"'")); |
1024 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"hvc1.1.6.L93.B0\"'")); | 1015 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"hvc1.1.6.L93.B0\"'")); |
1025 EXPECT_EQ(kNot, | 1016 EXPECT_EQ(kNot, |
1026 CanPlay("'audio/x-m4a; codecs=\"hev1.1.6.L93.B0, mp4a.40.5\"'")); | 1017 CanPlay("'audio/x-m4a; codecs=\"hev1.1.6.L93.B0, mp4a.40.5\"'")); |
1027 EXPECT_EQ(kNot, | 1018 EXPECT_EQ(kNot, |
1028 CanPlay("'audio/x-m4a; codecs=\"hvc1.1.6.L93.B0, mp4a.40.5\"'")); | 1019 CanPlay("'audio/x-m4a; codecs=\"hvc1.1.6.L93.B0, mp4a.40.5\"'")); |
1029 | 1020 |
1030 EXPECT_EQ(kNot, | 1021 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"vp09.00.01.08\"'")); |
1031 CanPlay("'audio/x-m4a; codecs=\"vp09.00.01.08.02.01.01.00\"'")); | |
1032 | 1022 |
1033 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"ac-3\"'")); | 1023 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"ac-3\"'")); |
1034 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"mp4a.a5\"'")); | 1024 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"mp4a.a5\"'")); |
1035 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"mp4a.A5\"'")); | 1025 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"mp4a.A5\"'")); |
1036 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"ec-3\"'")); | 1026 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"ec-3\"'")); |
1037 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"mp4a.a6\"'")); | 1027 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"mp4a.a6\"'")); |
1038 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"mp4a.A6\"'")); | 1028 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"mp4a.A6\"'")); |
1039 | 1029 |
1040 TestMPEGUnacceptableCombinations("audio/x-m4a"); | 1030 TestMPEGUnacceptableCombinations("audio/x-m4a"); |
1041 } | 1031 } |
(...skipping 474 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1516 CanPlay("'video/mp2t; codecs=\"avc1.77.30,mp4a.40.2\"'")); | 1506 CanPlay("'video/mp2t; codecs=\"avc1.77.30,mp4a.40.2\"'")); |
1517 EXPECT_EQ(kMp2tsProbably, | 1507 EXPECT_EQ(kMp2tsProbably, |
1518 CanPlay("'video/mp2t; codecs=\"avc1.100.40,mp4a.40.2\"'")); | 1508 CanPlay("'video/mp2t; codecs=\"avc1.100.40,mp4a.40.2\"'")); |
1519 } | 1509 } |
1520 | 1510 |
1521 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Mpeg2TsAudio) { | 1511 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Mpeg2TsAudio) { |
1522 // audio/mp2t is currently not supported (see also crbug.com/556837). | 1512 // audio/mp2t is currently not supported (see also crbug.com/556837). |
1523 EXPECT_EQ(kNot, CanPlay("'audio/mp2t; codecs=\"mp4a.40.2\"'")); | 1513 EXPECT_EQ(kNot, CanPlay("'audio/mp2t; codecs=\"mp4a.40.2\"'")); |
1524 } | 1514 } |
1525 | 1515 |
1526 class MediaCanPlayTypeTestMp4Vp9Demuxing | 1516 // New VP9 string is behind a variety of flags depending on container and |
| 1517 // whether HDR is enabled. |
| 1518 struct CanPlayTypeNewVp9Params { |
| 1519 const std::string command_line_flag; |
| 1520 const std::string container; |
| 1521 const char* prop_probably; |
| 1522 const char* prop_maybe; |
| 1523 }; |
| 1524 |
| 1525 class MediaCanPlayNewVp9TypeTest |
1527 : public MediaCanPlayTypeTest, | 1526 : public MediaCanPlayTypeTest, |
1528 public ::testing::WithParamInterface<bool> { | 1527 public ::testing::WithParamInterface<CanPlayTypeNewVp9Params> { |
1529 public: | 1528 public: |
1530 void SetUpCommandLine(base::CommandLine* command_line) override { | 1529 void SetUpCommandLine(base::CommandLine* command_line) override { |
1531 const bool enable_mp4_vp9_demuxing = GetParam(); | 1530 const CanPlayTypeNewVp9Params& params = GetParam(); |
1532 if (enable_mp4_vp9_demuxing) | 1531 if (!params.command_line_flag.empty()) |
1533 command_line->AppendSwitch(switches::kEnableVp9InMp4); | 1532 command_line->AppendSwitch(params.command_line_flag); |
1534 } | 1533 } |
1535 }; | 1534 }; |
1536 | 1535 |
1537 IN_PROC_BROWSER_TEST_P(MediaCanPlayTypeTestMp4Vp9Demuxing, | 1536 // See more complete codec string testing in media/base/video_codecs_unittest.cc |
1538 CodecSupportTest_Mp4Vp9Variants) { | 1537 IN_PROC_BROWSER_TEST_P(MediaCanPlayNewVp9TypeTest, |
1539 // Malformed codecs string. | 1538 CodecSupportTest_NewVp9Variants) { |
1540 EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09.00.-1.08\"'")); | 1539 const CanPlayTypeNewVp9Params& params = GetParam(); |
1541 | 1540 |
1542 // Codecs strings with missing fields. | 1541 // E.g. "'video/webm; " |
1543 EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09\"'")); | 1542 std::string mime_prefix = "'" + params.container + "; "; |
1544 EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09.00.01.08\"'")); | |
1545 EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09.01.01..02.01.01.00\"'")); | |
1546 EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09.01.01.08.05.01.01\"'")); | |
1547 EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09.04\"'")); | |
1548 | 1543 |
1549 // Unexpected bit depth. | 1544 // Malformed codecs string never allowed. |
1550 EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09.01.01.09.02.01.01.00\"'")); | 1545 EXPECT_EQ(kNot, CanPlay(mime_prefix + "codecs=\"vp09.00.-1.08\"'")); |
1551 // Unexpected chroma subsampling. | |
1552 EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09.01.01.08.04.04.00.00\"'")); | |
1553 // Unexpected transfer function. | |
1554 EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09.01.01.08.04.03.02.00\"'")); | |
1555 // Unexpected profile. | |
1556 EXPECT_EQ(kNot, CanPlay("'video/mp4; codecs=\"vp09.04.01.08.02.01.01.00\"'")); | |
1557 | 1546 |
1558 const bool enable_mp4_vp9_demuxing = GetParam(); | 1547 const char* new_vp9_probably = params.prop_probably; |
1559 const char* mp4_vp9_probably = enable_mp4_vp9_demuxing ? kPropProbably : kNot; | 1548 const char* new_vp9_maybe = params.prop_maybe; |
1560 const char* mp4_vp9_maybe = enable_mp4_vp9_demuxing ? kPropMaybe : kNot; | |
1561 | 1549 |
1562 EXPECT_EQ(mp4_vp9_probably, | 1550 // Test a few valid strings. |
1563 CanPlay("'video/mp4; codecs=\"vp09.00.01.08.02.01.01.00\"'")); | 1551 EXPECT_EQ(new_vp9_probably, |
1564 EXPECT_EQ(mp4_vp9_probably, | 1552 CanPlay(mime_prefix + "codecs=\"vp09.00.01.08\"'")); |
1565 CanPlay("'video/mp4; codecs=\"vp09.00.01.08.04.03.00.00\"'")); | 1553 EXPECT_EQ(new_vp9_probably, |
1566 EXPECT_EQ(mp4_vp9_maybe, | 1554 CanPlay(mime_prefix + "codecs=\"vp09.00.01.08.01.01.01.00.00\"'")); |
1567 CanPlay("'video/mp4; codecs=\"vp09.01.01.08.02.01.01.00\"'")); | 1555 |
1568 EXPECT_EQ(mp4_vp9_maybe, | 1556 // Platform support is sadly ambiguous for profiles > 0. |
1569 CanPlay("'video/mp4; codecs=\"vp09.02.01.08.02.01.01.00\"'")); | 1557 // TODO(chcunningham): Plumb proper querying of platform support - give a firm |
1570 EXPECT_EQ(mp4_vp9_maybe, | 1558 // answer. |
1571 CanPlay("'video/mp4; codecs=\"vp09.03.01.08.02.01.01.00\"'")); | 1559 EXPECT_EQ(new_vp9_maybe, CanPlay(mime_prefix + "codecs=\"vp09.01.01.08\"'")); |
| 1560 EXPECT_EQ(new_vp9_maybe, CanPlay(mime_prefix + "codecs=\"vp09.02.01.08\"'")); |
| 1561 EXPECT_EQ(new_vp9_maybe, CanPlay(mime_prefix + "codecs=\"vp09.03.01.08\"'")); |
1572 } | 1562 } |
1573 | 1563 |
1574 INSTANTIATE_TEST_CASE_P(EnableDisableMp4Vp9Demuxing, | 1564 const CanPlayTypeNewVp9Params kNewVp9ParamVariants[] = { |
1575 MediaCanPlayTypeTestMp4Vp9Demuxing, | 1565 // Expect CanPlay(...) = kNotEmpty when command line flag empty. |
1576 ::testing::Bool()); | 1566 {"", "video/mp4", kNot, kNot}, |
| 1567 {"", "video/webm", kNot, kNot}, |
| 1568 // Expect CanPlay(...) = kProbably/kMaybe for MP4, but not for WebM for |
| 1569 // these command line flags. |
| 1570 {switches::kEnableVp9InMp4, "video/mp4", kPropProbably, kPropMaybe}, |
| 1571 {switches::kEnableVp9InMp4, "video/webm", kNot, kNot}, |
| 1572 // Expect CanPlay(...) = kProbably/kMaybe for WebM, but not for MP4 for |
| 1573 // these command line flags. |
| 1574 {switches::kEnableHDROutput, "video/mp4", kNot, kNot}, |
| 1575 {switches::kEnableNewVp9CodecString, "video/mp4", kNot, kNot}, |
| 1576 {switches::kEnableHDROutput, "video/webm", kProbably, kMaybe}, |
| 1577 {switches::kEnableNewVp9CodecString, "video/webm", kProbably, kMaybe}, |
| 1578 }; |
| 1579 |
| 1580 INSTANTIATE_TEST_CASE_P(CodecSupportTest_NewVp9String, |
| 1581 MediaCanPlayNewVp9TypeTest, |
| 1582 ::testing::ValuesIn(kNewVp9ParamVariants)); |
1577 | 1583 |
1578 } // namespace content | 1584 } // namespace content |
OLD | NEW |