OLD | NEW |
(Empty) | |
| 1 // Copyright 2017 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. |
| 4 |
| 5 #include "media/base/decode_capabilities.h" |
| 6 |
| 7 #include "testing/gtest/include/gtest/gtest.h" |
| 8 |
| 9 namespace media { |
| 10 |
| 11 TEST(DecodeCapabilitiesTest, IsSupportedVideoConfigBasics) { |
| 12 // Default to common 709. |
| 13 const media::VideoColorSpace kColorSpace = media::VideoColorSpace::REC709(); |
| 14 |
| 15 // Some codecs do not have a notion of level. |
| 16 const int kUnspecifiedLevel = 0; |
| 17 |
| 18 // Expect support for baseline configuration of known codecs. |
| 19 EXPECT_TRUE(IsSupportedVideoConfig( |
| 20 {media::kCodecH264, media::H264PROFILE_BASELINE, 1, kColorSpace})); |
| 21 EXPECT_TRUE(IsSupportedVideoConfig({media::kCodecVP8, media::VP8PROFILE_ANY, |
| 22 kUnspecifiedLevel, kColorSpace})); |
| 23 EXPECT_TRUE( |
| 24 IsSupportedVideoConfig({media::kCodecVP9, media::VP9PROFILE_PROFILE0, |
| 25 kUnspecifiedLevel, kColorSpace})); |
| 26 EXPECT_TRUE(IsSupportedVideoConfig({media::kCodecTheora, |
| 27 media::VIDEO_CODEC_PROFILE_UNKNOWN, |
| 28 kUnspecifiedLevel, kColorSpace})); |
| 29 |
| 30 // Expect non-support for the following. |
| 31 EXPECT_FALSE(IsSupportedVideoConfig({media::kUnknownVideoCodec, |
| 32 media::VIDEO_CODEC_PROFILE_UNKNOWN, |
| 33 kUnspecifiedLevel, kColorSpace})); |
| 34 EXPECT_FALSE(IsSupportedVideoConfig({media::kCodecVC1, |
| 35 media::VIDEO_CODEC_PROFILE_UNKNOWN, |
| 36 kUnspecifiedLevel, kColorSpace})); |
| 37 EXPECT_FALSE(IsSupportedVideoConfig({media::kCodecMPEG2, |
| 38 media::VIDEO_CODEC_PROFILE_UNKNOWN, |
| 39 kUnspecifiedLevel, kColorSpace})); |
| 40 EXPECT_FALSE(IsSupportedVideoConfig({media::kCodecMPEG4, |
| 41 media::VIDEO_CODEC_PROFILE_UNKNOWN, |
| 42 kUnspecifiedLevel, kColorSpace})); |
| 43 EXPECT_FALSE(IsSupportedVideoConfig({media::kCodecHEVC, |
| 44 media::VIDEO_CODEC_PROFILE_UNKNOWN, |
| 45 kUnspecifiedLevel, kColorSpace})); |
| 46 } |
| 47 |
| 48 TEST(DecodeCapabilitiesTest, IsSupportedVideoConfig_VP9TransferFunctions) { |
| 49 size_t num_found = 0; |
| 50 // TODO(hubbe): Verify support for HDR codecs when color management enabled. |
| 51 const std::set<media::VideoColorSpace::TransferID> kSupportedTransfers = { |
| 52 media::VideoColorSpace::TransferID::GAMMA22, |
| 53 media::VideoColorSpace::TransferID::UNSPECIFIED, |
| 54 media::VideoColorSpace::TransferID::BT709, |
| 55 media::VideoColorSpace::TransferID::SMPTE170M, |
| 56 media::VideoColorSpace::TransferID::BT2020_10, |
| 57 media::VideoColorSpace::TransferID::BT2020_12, |
| 58 media::VideoColorSpace::TransferID::IEC61966_2_1, |
| 59 }; |
| 60 |
| 61 for (int i = 0; i <= (1 << (8 * sizeof(media::VideoColorSpace::TransferID))); |
| 62 i++) { |
| 63 media::VideoColorSpace color_space = media::VideoColorSpace::REC709(); |
| 64 color_space.transfer = media::VideoColorSpace::GetTransferID(i); |
| 65 bool found = kSupportedTransfers.find(color_space.transfer) != |
| 66 kSupportedTransfers.end(); |
| 67 if (found) |
| 68 num_found++; |
| 69 EXPECT_EQ(found, IsSupportedVideoConfig({media::kCodecVP9, |
| 70 media::VP9PROFILE_PROFILE0, 1, |
| 71 color_space})); |
| 72 } |
| 73 EXPECT_EQ(kSupportedTransfers.size(), num_found); |
| 74 } |
| 75 |
| 76 TEST(DecodeCapabilitiesTest, IsSupportedVideoConfig_VP9Primaries) { |
| 77 size_t num_found = 0; |
| 78 // TODO(hubbe): Verify support for HDR codecs when color management enabled. |
| 79 const std::set<media::VideoColorSpace::PrimaryID> kSupportedPrimaries = { |
| 80 media::VideoColorSpace::PrimaryID::BT709, |
| 81 media::VideoColorSpace::PrimaryID::UNSPECIFIED, |
| 82 media::VideoColorSpace::PrimaryID::BT470M, |
| 83 media::VideoColorSpace::PrimaryID::BT470BG, |
| 84 media::VideoColorSpace::PrimaryID::SMPTE170M, |
| 85 }; |
| 86 |
| 87 for (int i = 0; i <= (1 << (8 * sizeof(media::VideoColorSpace::PrimaryID))); |
| 88 i++) { |
| 89 media::VideoColorSpace color_space = media::VideoColorSpace::REC709(); |
| 90 color_space.primaries = media::VideoColorSpace::GetPrimaryID(i); |
| 91 bool found = kSupportedPrimaries.find(color_space.primaries) != |
| 92 kSupportedPrimaries.end(); |
| 93 if (found) |
| 94 num_found++; |
| 95 EXPECT_EQ(found, IsSupportedVideoConfig({media::kCodecVP9, |
| 96 media::VP9PROFILE_PROFILE0, 1, |
| 97 color_space})); |
| 98 } |
| 99 EXPECT_EQ(kSupportedPrimaries.size(), num_found); |
| 100 } |
| 101 |
| 102 TEST(DecodeCapabilitiesTest, IsSupportedVideoConfig_VP9Matrix) { |
| 103 size_t num_found = 0; |
| 104 // TODO(hubbe): Verify support for HDR codecs when color management enabled. |
| 105 const std::set<media::VideoColorSpace::MatrixID> kSupportedMatrix = { |
| 106 media::VideoColorSpace::MatrixID::BT709, |
| 107 media::VideoColorSpace::MatrixID::UNSPECIFIED, |
| 108 media::VideoColorSpace::MatrixID::BT470BG, |
| 109 media::VideoColorSpace::MatrixID::SMPTE170M, |
| 110 media::VideoColorSpace::MatrixID::BT2020_NCL, |
| 111 }; |
| 112 |
| 113 for (int i = 0; i <= (1 << (8 * sizeof(media::VideoColorSpace::MatrixID))); |
| 114 i++) { |
| 115 media::VideoColorSpace color_space = media::VideoColorSpace::REC709(); |
| 116 color_space.matrix = media::VideoColorSpace::GetMatrixID(i); |
| 117 bool found = |
| 118 kSupportedMatrix.find(color_space.matrix) != kSupportedMatrix.end(); |
| 119 if (found) |
| 120 num_found++; |
| 121 EXPECT_EQ(found, IsSupportedVideoConfig({media::kCodecVP9, |
| 122 media::VP9PROFILE_PROFILE0, 1, |
| 123 color_space})); |
| 124 } |
| 125 EXPECT_EQ(kSupportedMatrix.size(), num_found); |
| 126 } |
| 127 |
| 128 } // namespace media |
OLD | NEW |