1 // Copyright 2018 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 "third_party/blink/renderer/platform/webrtc/webrtc_video_utils.h" 6 7 namespace blink { 8 WebRtcToMediaVideoRotation(webrtc::VideoRotation rotation)9media::VideoRotation WebRtcToMediaVideoRotation( 10 webrtc::VideoRotation rotation) { 11 switch (rotation) { 12 case webrtc::kVideoRotation_0: 13 return media::VIDEO_ROTATION_0; 14 case webrtc::kVideoRotation_90: 15 return media::VIDEO_ROTATION_90; 16 case webrtc::kVideoRotation_180: 17 return media::VIDEO_ROTATION_180; 18 case webrtc::kVideoRotation_270: 19 return media::VIDEO_ROTATION_270; 20 } 21 return media::VIDEO_ROTATION_0; 22 } 23 WebRtcToMediaVideoColorSpace(const webrtc::ColorSpace & color_space)24media::VideoColorSpace WebRtcToMediaVideoColorSpace( 25 const webrtc::ColorSpace& color_space) { 26 media::VideoColorSpace::PrimaryID primaries = 27 media::VideoColorSpace::PrimaryID::INVALID; 28 switch (color_space.primaries()) { 29 case webrtc::ColorSpace::PrimaryID::kBT709: 30 primaries = media::VideoColorSpace::PrimaryID::BT709; 31 break; 32 case webrtc::ColorSpace::PrimaryID::kBT470M: 33 primaries = media::VideoColorSpace::PrimaryID::BT470M; 34 break; 35 case webrtc::ColorSpace::PrimaryID::kBT470BG: 36 primaries = media::VideoColorSpace::PrimaryID::BT470BG; 37 break; 38 case webrtc::ColorSpace::PrimaryID::kSMPTE170M: 39 primaries = media::VideoColorSpace::PrimaryID::SMPTE170M; 40 break; 41 case webrtc::ColorSpace::PrimaryID::kSMPTE240M: 42 primaries = media::VideoColorSpace::PrimaryID::SMPTE240M; 43 break; 44 case webrtc::ColorSpace::PrimaryID::kFILM: 45 primaries = media::VideoColorSpace::PrimaryID::FILM; 46 break; 47 case webrtc::ColorSpace::PrimaryID::kBT2020: 48 primaries = media::VideoColorSpace::PrimaryID::BT2020; 49 break; 50 case webrtc::ColorSpace::PrimaryID::kSMPTEST428: 51 primaries = media::VideoColorSpace::PrimaryID::SMPTEST428_1; 52 break; 53 case webrtc::ColorSpace::PrimaryID::kSMPTEST431: 54 primaries = media::VideoColorSpace::PrimaryID::SMPTEST431_2; 55 break; 56 case webrtc::ColorSpace::PrimaryID::kSMPTEST432: 57 primaries = media::VideoColorSpace::PrimaryID::SMPTEST432_1; 58 break; 59 case webrtc::ColorSpace::PrimaryID::kJEDECP22: 60 primaries = media::VideoColorSpace::PrimaryID::EBU_3213_E; 61 break; 62 default: 63 break; 64 } 65 66 media::VideoColorSpace::TransferID transfer = 67 media::VideoColorSpace::TransferID::INVALID; 68 switch (color_space.transfer()) { 69 case webrtc::ColorSpace::TransferID::kBT709: 70 transfer = media::VideoColorSpace::TransferID::BT709; 71 break; 72 case webrtc::ColorSpace::TransferID::kGAMMA22: 73 transfer = media::VideoColorSpace::TransferID::GAMMA22; 74 break; 75 case webrtc::ColorSpace::TransferID::kGAMMA28: 76 transfer = media::VideoColorSpace::TransferID::GAMMA28; 77 break; 78 case webrtc::ColorSpace::TransferID::kSMPTE170M: 79 transfer = media::VideoColorSpace::TransferID::SMPTE170M; 80 break; 81 case webrtc::ColorSpace::TransferID::kSMPTE240M: 82 transfer = media::VideoColorSpace::TransferID::SMPTE240M; 83 break; 84 case webrtc::ColorSpace::TransferID::kLINEAR: 85 transfer = media::VideoColorSpace::TransferID::LINEAR; 86 break; 87 case webrtc::ColorSpace::TransferID::kLOG: 88 transfer = media::VideoColorSpace::TransferID::LOG; 89 break; 90 case webrtc::ColorSpace::TransferID::kLOG_SQRT: 91 transfer = media::VideoColorSpace::TransferID::LOG_SQRT; 92 break; 93 case webrtc::ColorSpace::TransferID::kIEC61966_2_4: 94 transfer = media::VideoColorSpace::TransferID::IEC61966_2_4; 95 break; 96 case webrtc::ColorSpace::TransferID::kBT1361_ECG: 97 transfer = media::VideoColorSpace::TransferID::BT1361_ECG; 98 break; 99 case webrtc::ColorSpace::TransferID::kIEC61966_2_1: 100 transfer = media::VideoColorSpace::TransferID::IEC61966_2_1; 101 break; 102 case webrtc::ColorSpace::TransferID::kBT2020_10: 103 transfer = media::VideoColorSpace::TransferID::BT2020_10; 104 break; 105 case webrtc::ColorSpace::TransferID::kBT2020_12: 106 transfer = media::VideoColorSpace::TransferID::BT2020_12; 107 break; 108 case webrtc::ColorSpace::TransferID::kSMPTEST2084: 109 transfer = media::VideoColorSpace::TransferID::SMPTEST2084; 110 break; 111 case webrtc::ColorSpace::TransferID::kSMPTEST428: 112 transfer = media::VideoColorSpace::TransferID::SMPTEST428_1; 113 break; 114 case webrtc::ColorSpace::TransferID::kARIB_STD_B67: 115 transfer = media::VideoColorSpace::TransferID::ARIB_STD_B67; 116 break; 117 default: 118 break; 119 } 120 121 media::VideoColorSpace::MatrixID matrix = 122 media::VideoColorSpace::MatrixID::INVALID; 123 switch (color_space.matrix()) { 124 case webrtc::ColorSpace::MatrixID::kRGB: 125 matrix = media::VideoColorSpace::MatrixID::RGB; 126 break; 127 case webrtc::ColorSpace::MatrixID::kBT709: 128 matrix = media::VideoColorSpace::MatrixID::BT709; 129 break; 130 case webrtc::ColorSpace::MatrixID::kFCC: 131 matrix = media::VideoColorSpace::MatrixID::FCC; 132 break; 133 case webrtc::ColorSpace::MatrixID::kBT470BG: 134 matrix = media::VideoColorSpace::MatrixID::BT470BG; 135 break; 136 case webrtc::ColorSpace::MatrixID::kSMPTE170M: 137 matrix = media::VideoColorSpace::MatrixID::SMPTE170M; 138 break; 139 case webrtc::ColorSpace::MatrixID::kSMPTE240M: 140 matrix = media::VideoColorSpace::MatrixID::SMPTE240M; 141 break; 142 case webrtc::ColorSpace::MatrixID::kYCOCG: 143 matrix = media::VideoColorSpace::MatrixID::YCOCG; 144 break; 145 case webrtc::ColorSpace::MatrixID::kBT2020_NCL: 146 matrix = media::VideoColorSpace::MatrixID::BT2020_NCL; 147 break; 148 case webrtc::ColorSpace::MatrixID::kBT2020_CL: 149 matrix = media::VideoColorSpace::MatrixID::BT2020_CL; 150 break; 151 case webrtc::ColorSpace::MatrixID::kSMPTE2085: 152 matrix = media::VideoColorSpace::MatrixID::YDZDX; 153 break; 154 default: 155 break; 156 } 157 158 gfx::ColorSpace::RangeID range = gfx::ColorSpace::RangeID::INVALID; 159 switch (color_space.range()) { 160 case webrtc::ColorSpace::RangeID::kLimited: 161 range = gfx::ColorSpace::RangeID::LIMITED; 162 break; 163 case webrtc::ColorSpace::RangeID::kFull: 164 range = gfx::ColorSpace::RangeID::FULL; 165 break; 166 default: 167 break; 168 } 169 170 return media::VideoColorSpace(primaries, transfer, matrix, range); 171 } 172 173 } // namespace blink 174