OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 <stddef.h> | 5 #include <stddef.h> |
6 | 6 |
7 #include "base/macros.h" | 7 #include "base/macros.h" |
8 #include "base/strings/string_split.h" | 8 #include "base/strings/string_split.h" |
9 #include "base/strings/stringprintf.h" | 9 #include "base/strings/stringprintf.h" |
10 #include "base/test/scoped_command_line.h" | 10 #include "base/test/scoped_command_line.h" |
(...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
117 return false; | 117 return false; |
118 #endif // BUILDFLAG(ENABLE_HEVC_DEMUXING) | 118 #endif // BUILDFLAG(ENABLE_HEVC_DEMUXING) |
119 } | 119 } |
120 | 120 |
121 // This is to validate MimeUtil::IsCodecSupportedOnPlatform(), which is used | 121 // This is to validate MimeUtil::IsCodecSupportedOnPlatform(), which is used |
122 // only on Android platform. | 122 // only on Android platform. |
123 static bool HasDolbyVisionSupport() { | 123 static bool HasDolbyVisionSupport() { |
124 return false; | 124 return false; |
125 } | 125 } |
126 | 126 |
| 127 static bool HasEac3Support() { |
| 128 #if BUILDFLAG(ENABLE_AC3_EAC3_AUDIO_DEMUXING) |
| 129 return true; |
| 130 #else |
| 131 return false; |
| 132 #endif |
| 133 } |
| 134 |
127 TEST(MimeUtilTest, CommonMediaMimeType) { | 135 TEST(MimeUtilTest, CommonMediaMimeType) { |
128 EXPECT_TRUE(IsSupportedMediaMimeType("audio/webm")); | 136 EXPECT_TRUE(IsSupportedMediaMimeType("audio/webm")); |
129 EXPECT_TRUE(IsSupportedMediaMimeType("video/webm")); | 137 EXPECT_TRUE(IsSupportedMediaMimeType("video/webm")); |
130 | 138 |
131 EXPECT_TRUE(IsSupportedMediaMimeType("audio/wav")); | 139 EXPECT_TRUE(IsSupportedMediaMimeType("audio/wav")); |
132 EXPECT_TRUE(IsSupportedMediaMimeType("audio/x-wav")); | 140 EXPECT_TRUE(IsSupportedMediaMimeType("audio/x-wav")); |
133 | 141 |
134 EXPECT_TRUE(IsSupportedMediaMimeType("audio/flac")); | 142 EXPECT_TRUE(IsSupportedMediaMimeType("audio/flac")); |
135 | 143 |
136 EXPECT_TRUE(IsSupportedMediaMimeType("audio/ogg")); | 144 EXPECT_TRUE(IsSupportedMediaMimeType("audio/ogg")); |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
267 test_states.has_platform_decoders = true; | 275 test_states.has_platform_decoders = true; |
268 | 276 |
269 RunCodecSupportTest( | 277 RunCodecSupportTest( |
270 states_to_vary, test_states, | 278 states_to_vary, test_states, |
271 [](const MimeUtil::PlatformInfo& info, MimeUtil::Codec codec) { | 279 [](const MimeUtil::PlatformInfo& info, MimeUtil::Codec codec) { |
272 const bool result = MimeUtil::IsCodecSupportedOnAndroid( | 280 const bool result = MimeUtil::IsCodecSupportedOnAndroid( |
273 codec, kTestMimeType, true, info); | 281 codec, kTestMimeType, true, info); |
274 switch (codec) { | 282 switch (codec) { |
275 // These codecs are never supported by the Android platform. | 283 // These codecs are never supported by the Android platform. |
276 case MimeUtil::INVALID_CODEC: | 284 case MimeUtil::INVALID_CODEC: |
277 case MimeUtil::AC3: | |
278 case MimeUtil::EAC3: | |
279 case MimeUtil::MPEG2_AAC: | 285 case MimeUtil::MPEG2_AAC: |
280 case MimeUtil::THEORA: | 286 case MimeUtil::THEORA: |
281 EXPECT_FALSE(result); | 287 EXPECT_FALSE(result); |
282 break; | 288 break; |
283 | 289 |
284 // These codecs are always available with platform decoder support. | 290 // These codecs are always available with platform decoder support. |
285 case MimeUtil::PCM: | 291 case MimeUtil::PCM: |
286 case MimeUtil::MP3: | 292 case MimeUtil::MP3: |
287 case MimeUtil::MPEG4_AAC: | 293 case MimeUtil::MPEG4_AAC: |
288 case MimeUtil::VORBIS: | 294 case MimeUtil::VORBIS: |
(...skipping 16 matching lines...) Expand all Loading... |
305 EXPECT_EQ(info.has_platform_vp9_decoder, result); | 311 EXPECT_EQ(info.has_platform_vp9_decoder, result); |
306 break; | 312 break; |
307 | 313 |
308 case MimeUtil::HEVC: | 314 case MimeUtil::HEVC: |
309 EXPECT_EQ(HasHevcSupport(), result); | 315 EXPECT_EQ(HasHevcSupport(), result); |
310 break; | 316 break; |
311 | 317 |
312 case MimeUtil::DOLBY_VISION: | 318 case MimeUtil::DOLBY_VISION: |
313 EXPECT_EQ(HasDolbyVisionSupport(), result); | 319 EXPECT_EQ(HasDolbyVisionSupport(), result); |
314 break; | 320 break; |
| 321 |
| 322 case MimeUtil::AC3: |
| 323 case MimeUtil::EAC3: |
| 324 EXPECT_EQ(HasEac3Support(), result); |
| 325 break; |
315 } | 326 } |
316 }); | 327 }); |
317 } | 328 } |
318 | 329 |
319 TEST(IsCodecSupportedOnAndroidTest, ClearCodecBehavior) { | 330 TEST(IsCodecSupportedOnAndroidTest, ClearCodecBehavior) { |
320 MimeUtil::PlatformInfo states_to_vary = VaryAllFields(); | 331 MimeUtil::PlatformInfo states_to_vary = VaryAllFields(); |
321 | 332 |
322 MimeUtil::PlatformInfo test_states; | 333 MimeUtil::PlatformInfo test_states; |
323 | 334 |
324 RunCodecSupportTest( | 335 RunCodecSupportTest( |
325 states_to_vary, test_states, | 336 states_to_vary, test_states, |
326 [](const MimeUtil::PlatformInfo& info, MimeUtil::Codec codec) { | 337 [](const MimeUtil::PlatformInfo& info, MimeUtil::Codec codec) { |
327 const bool result = MimeUtil::IsCodecSupportedOnAndroid( | 338 const bool result = MimeUtil::IsCodecSupportedOnAndroid( |
328 codec, kTestMimeType, false, info); | 339 codec, kTestMimeType, false, info); |
329 switch (codec) { | 340 switch (codec) { |
330 // These codecs are never supported by the Android platform. | 341 // These codecs are never supported by the Android platform. |
331 case MimeUtil::INVALID_CODEC: | 342 case MimeUtil::INVALID_CODEC: |
332 case MimeUtil::AC3: | |
333 case MimeUtil::EAC3: | |
334 case MimeUtil::THEORA: | 343 case MimeUtil::THEORA: |
335 EXPECT_FALSE(result); | 344 EXPECT_FALSE(result); |
336 break; | 345 break; |
337 | 346 |
338 // These codecs are always supported with the unified pipeline. | 347 // These codecs are always supported with the unified pipeline. |
339 case MimeUtil::FLAC: | 348 case MimeUtil::FLAC: |
340 case MimeUtil::H264: | 349 case MimeUtil::H264: |
341 case MimeUtil::PCM: | 350 case MimeUtil::PCM: |
342 case MimeUtil::MPEG2_AAC: | 351 case MimeUtil::MPEG2_AAC: |
343 case MimeUtil::MP3: | 352 case MimeUtil::MP3: |
344 case MimeUtil::MPEG4_AAC: | 353 case MimeUtil::MPEG4_AAC: |
345 case MimeUtil::OPUS: | 354 case MimeUtil::OPUS: |
346 case MimeUtil::VORBIS: | 355 case MimeUtil::VORBIS: |
347 case MimeUtil::VP8: | 356 case MimeUtil::VP8: |
348 case MimeUtil::VP9: | 357 case MimeUtil::VP9: |
349 EXPECT_TRUE(result); | 358 EXPECT_TRUE(result); |
350 break; | 359 break; |
351 | 360 |
352 // These codecs are only supported if platform decoders are supported. | 361 // These codecs are only supported if platform decoders are supported. |
353 case MimeUtil::HEVC: | 362 case MimeUtil::HEVC: |
354 EXPECT_EQ(HasHevcSupport() && info.has_platform_decoders, result); | 363 EXPECT_EQ(HasHevcSupport() && info.has_platform_decoders, result); |
355 break; | 364 break; |
356 | 365 |
357 case MimeUtil::DOLBY_VISION: | 366 case MimeUtil::DOLBY_VISION: |
358 EXPECT_EQ(HasDolbyVisionSupport(), result); | 367 EXPECT_EQ(HasDolbyVisionSupport(), result); |
359 break; | 368 break; |
| 369 |
| 370 case MimeUtil::AC3: |
| 371 case MimeUtil::EAC3: |
| 372 EXPECT_EQ(HasEac3Support(), result); |
| 373 break; |
360 } | 374 } |
361 }); | 375 }); |
362 } | 376 } |
363 | 377 |
364 TEST(IsCodecSupportedOnAndroidTest, OpusOggSupport) { | 378 TEST(IsCodecSupportedOnAndroidTest, OpusOggSupport) { |
365 // Vary all parameters; thus use default initial state. | 379 // Vary all parameters; thus use default initial state. |
366 MimeUtil::PlatformInfo states_to_vary = VaryAllFields(); | 380 MimeUtil::PlatformInfo states_to_vary = VaryAllFields(); |
367 MimeUtil::PlatformInfo test_states; | 381 MimeUtil::PlatformInfo test_states; |
368 | 382 |
369 RunCodecSupportTest( | 383 RunCodecSupportTest( |
(...skipping 18 matching lines...) Expand all Loading... |
388 MimeUtil::MPEG2_AAC, "application/vnd.apple.mpegurl", false, info)); | 402 MimeUtil::MPEG2_AAC, "application/vnd.apple.mpegurl", false, info)); |
389 EXPECT_FALSE(MimeUtil::IsCodecSupportedOnAndroid( | 403 EXPECT_FALSE(MimeUtil::IsCodecSupportedOnAndroid( |
390 MimeUtil::MPEG2_AAC, "audio/mpegurl", false, info)); | 404 MimeUtil::MPEG2_AAC, "audio/mpegurl", false, info)); |
391 EXPECT_FALSE(MimeUtil::IsCodecSupportedOnAndroid( | 405 EXPECT_FALSE(MimeUtil::IsCodecSupportedOnAndroid( |
392 MimeUtil::MPEG2_AAC, "audio/x-mpegurl", false, info)); | 406 MimeUtil::MPEG2_AAC, "audio/x-mpegurl", false, info)); |
393 }); | 407 }); |
394 } | 408 } |
395 | 409 |
396 } // namespace internal | 410 } // namespace internal |
397 } // namespace media | 411 } // namespace media |
OLD | NEW |