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 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 166 | 166 |
| 167 // Unknown codecs. | 167 // Unknown codecs. |
| 168 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc2\"'")); | 168 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc2\"'")); |
| 169 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc4\"'")); | 169 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc4\"'")); |
| 170 | 170 |
| 171 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1x\"'")); | 171 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc1x\"'")); |
| 172 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3x\"'")); | 172 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"avc3x\"'")); |
| 173 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4ax\"'")); | 173 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"mp4ax\"'")); |
| 174 | 174 |
| 175 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"unknown\"'")); | 175 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"unknown\"'")); |
| 176 | |
| 177 // Don't allow incomplete/ambiguous codec ids for HEVC for now. | |
|
ddorwin
2015/03/25 01:21:59
Remove " for now".
servolk
2015/03/25 02:20:20
Done.
| |
| 178 // Codec string must have info about codec level/profile, e.g. hvc1.1.L0.0 | |
| 179 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1\"'")); | |
| 180 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1\"'")); | |
|
ddorwin
2015/03/25 01:21:59
Also test these with a trailing dot.
And valid com
servolk
2015/03/25 02:20:20
Done.
| |
| 181 | |
| 182 // Invalid codecs that look like something similar to HEVC/H.265 | |
| 183 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev1x\"'")); | |
| 184 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc1x\"'")); | |
| 185 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc0.1.L0.0\"'")); | |
| 186 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev0.1.L0.0\"'")); | |
| 187 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hvc2.1.L0.0\"'")); | |
| 188 EXPECT_EQ(kNot, CanPlay("'" + mime + "; codecs=\"hev2.1.L0.0\"'")); | |
| 176 } | 189 } |
| 177 | 190 |
| 178 void TestOGGUnacceptableCombinations(const std::string& mime) { | 191 void TestOGGUnacceptableCombinations(const std::string& mime) { |
| 179 // Codecs not belonging to OGG container. | 192 // Codecs not belonging to OGG container. |
| 180 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8\"'")); | 193 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8\"'")); |
| 181 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8.0\"'")); | 194 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8.0\"'")); |
| 182 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, opus\"'")); | 195 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, opus\"'")); |
| 183 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, vorbis\"'")); | 196 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp8, vorbis\"'")); |
| 184 | 197 |
| 185 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9\"'")); | 198 EXPECT_EQ(kNot, CanPlay("'" + mime +"; codecs=\"vp9\"'")); |
| (...skipping 375 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 561 | 574 |
| 562 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1\"'")); | 575 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1\"'")); |
| 563 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3\"'")); | 576 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3\"'")); |
| 564 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1, mp4a\"'")); | 577 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1, mp4a\"'")); |
| 565 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3, mp4a\"'")); | 578 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3, mp4a\"'")); |
| 566 | 579 |
| 567 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E\"'")); | 580 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc1.4D401E\"'")); |
| 568 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3.64001F\"'")); | 581 EXPECT_EQ(kNot, CanPlay("'audio/x-m4a; codecs=\"avc3.64001F\"'")); |
| 569 | 582 |
| 570 TestMPEGUnacceptableCombinations("audio/x-m4a"); | 583 TestMPEGUnacceptableCombinations("audio/x-m4a"); |
| 584 | |
| 585 const char* kHevcSupported = kNot; | |
| 586 #if defined(ENABLE_HEVC_DEMUXING) | |
| 587 kHevcSupported = kPropProbably; | |
|
ddorwin
2015/03/25 01:21:59
Why not just #if/#else?
servolk
2015/03/25 02:20:20
Something like:
#if defined(ENABLE_HEVC_DEMUXING)
ddorwin
2015/03/25 18:02:58
Because immediately changing the value looks weird
servolk
2015/04/29 23:50:32
Done.
ddorwin
2015/06/12 00:52:26
It doesn't look like this was fully addressed. Add
| |
| 588 #endif | |
| 589 // TODO(servolk): Add more unit test coverage once we have more info about | |
|
ddorwin
2015/03/25 01:21:59
Detailed tests of the codec strings probably belon
servolk
2015/03/25 02:20:20
Yes, but that's going to be done when we actually
ddorwin
2015/03/25 18:02:58
I was just saying that the tests wouldn't be at th
servolk
2015/04/29 23:50:32
I think this whole test could use some refactoring
ddorwin
2015/06/12 00:52:26
It is verbose, and that is intentional. We have a
| |
| 590 // various HEVC levels/profiles. | |
| 591 EXPECT_EQ(kHevcSupported, CanPlay("'video/mp4; codecs=\"hvc1.1.L0.0\"'")); | |
|
ddorwin
2015/03/25 01:21:59
You are testing video/mp4 far away from the other
servolk
2015/03/25 02:20:20
Done (except HLS; HEVC is not supported via HLS at
ddorwin
2015/03/25 18:02:58
Then you should have negative tests.
servolk
2015/04/29 23:50:32
Done.
ddorwin
2015/06/12 00:52:26
It doesn't look like this was done. Added comments
| |
| 592 EXPECT_EQ(kHevcSupported, CanPlay("'video/mp4; codecs=\"hev1.1.L0.0\"'")); | |
| 593 EXPECT_EQ(kHevcSupported, | |
| 594 CanPlay("'video/mp4; codecs=\"hvc1.1.L0.0, mp4a.40.5\"'")); | |
| 595 EXPECT_EQ(kHevcSupported, | |
| 596 CanPlay("'video/mp4; codecs=\"hev1.1.L0.0, mp4a.40.5\"'")); | |
| 571 } | 597 } |
| 572 | 598 |
| 573 // When modifying this test, also change CodecSupportTest_Avc3Variants. | 599 // When modifying this test, also change CodecSupportTest_Avc3Variants. |
| 574 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Avc1Variants) { | 600 IN_PROC_BROWSER_TEST_F(MediaCanPlayTypeTest, CodecSupportTest_Avc1Variants) { |
| 575 // avc1 without extensions results in "maybe" for compatibility. | 601 // avc1 without extensions results in "maybe" for compatibility. |
| 576 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1\"'")); | 602 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1\"'")); |
| 577 | 603 |
| 578 // Any 6-digit hexadecimal number will result in at least "maybe". | 604 // Any 6-digit hexadecimal number will result in at least "maybe". |
| 579 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.123456\"'")); | 605 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.123456\"'")); |
| 580 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.ABCDEF\"'")); | 606 EXPECT_EQ(kPropMaybe, CanPlay("'video/mp4; codecs=\"avc1.ABCDEF\"'")); |
| (...skipping 454 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 1035 CanPlay("'application/vnd.apple.mpegurl; " | 1061 CanPlay("'application/vnd.apple.mpegurl; " |
| 1036 "codecs=\"avc1.42E01E, mp4a.40\"'")); | 1062 "codecs=\"avc1.42E01E, mp4a.40\"'")); |
| 1037 EXPECT_EQ(maybeCanPlayHLS, | 1063 EXPECT_EQ(maybeCanPlayHLS, |
| 1038 CanPlay("'application/vnd.apple.mpegurl; " | 1064 CanPlay("'application/vnd.apple.mpegurl; " |
| 1039 "codecs=\"avc3.42E01E, mp4a.40\"'")); | 1065 "codecs=\"avc3.42E01E, mp4a.40\"'")); |
| 1040 | 1066 |
| 1041 TestMPEGUnacceptableCombinations("application/vnd.apple.mpegurl"); | 1067 TestMPEGUnacceptableCombinations("application/vnd.apple.mpegurl"); |
| 1042 } | 1068 } |
| 1043 | 1069 |
| 1044 } // namespace content | 1070 } // namespace content |
| OLD | NEW |