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 "content/renderer/media/render_media_client.h" | 5 #include "content/renderer/media/render_media_client.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/logging.h" | 8 #include "base/logging.h" |
| 9 #include "base/time/default_tick_clock.h" | 9 #include "base/time/default_tick_clock.h" |
| 10 #include "content/public/common/content_client.h" | 10 #include "content/public/common/content_client.h" |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 86 #else | 86 #else |
| 87 is_update_needed_ = false; | 87 is_update_needed_ = false; |
| 88 #endif | 88 #endif |
| 89 } | 89 } |
| 90 | 90 |
| 91 void RenderMediaClient::RecordRapporURL(const std::string& metric, | 91 void RenderMediaClient::RecordRapporURL(const std::string& metric, |
| 92 const GURL& url) { | 92 const GURL& url) { |
| 93 GetContentClient()->renderer()->RecordRapporURL(metric, url); | 93 GetContentClient()->renderer()->RecordRapporURL(metric, url); |
| 94 } | 94 } |
| 95 | 95 |
| 96 bool IsColorSpaceSupported(const media::VideoColorSpace& color_space) { | |
|
hubbe
2017/03/23 18:14:30
I'm confused, where did this code go?
chcunningham
2017/03/23 19:20:53
Its now in media/base/decode_capabiliites.cc.
The
hubbe
2017/03/23 19:33:00
I don't see that in this CL though.
I expected a L
chcunningham
2017/03/23 19:37:47
Unless I've messed it up, you should find all of t
hubbe
2017/03/23 19:42:42
Ah, super confusing.
| |
| 97 bool color_management = | |
| 98 base::CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableHDR) || | |
| 99 base::FeatureList::IsEnabled(media::kVideoColorManagement); | |
| 100 switch (color_space.primaries) { | |
| 101 case media::VideoColorSpace::PrimaryID::EBU_3213_E: | |
| 102 case media::VideoColorSpace::PrimaryID::INVALID: | |
| 103 return false; | |
| 104 | |
| 105 // Transfers supported without color management. | |
| 106 case media::VideoColorSpace::PrimaryID::BT709: | |
| 107 case media::VideoColorSpace::PrimaryID::UNSPECIFIED: | |
| 108 case media::VideoColorSpace::PrimaryID::BT470M: | |
| 109 case media::VideoColorSpace::PrimaryID::BT470BG: | |
| 110 case media::VideoColorSpace::PrimaryID::SMPTE170M: | |
| 111 break; | |
| 112 | |
| 113 // Supported with color management. | |
| 114 case media::VideoColorSpace::PrimaryID::SMPTE240M: | |
| 115 case media::VideoColorSpace::PrimaryID::FILM: | |
| 116 case media::VideoColorSpace::PrimaryID::BT2020: | |
| 117 case media::VideoColorSpace::PrimaryID::SMPTEST428_1: | |
| 118 case media::VideoColorSpace::PrimaryID::SMPTEST431_2: | |
| 119 case media::VideoColorSpace::PrimaryID::SMPTEST432_1: | |
| 120 if (!color_management) | |
| 121 return false; | |
| 122 break; | |
| 123 } | |
| 124 | |
| 125 switch (color_space.transfer) { | |
| 126 // Transfers supported without color management. | |
| 127 case media::VideoColorSpace::TransferID::UNSPECIFIED: | |
| 128 case media::VideoColorSpace::TransferID::GAMMA22: | |
| 129 case media::VideoColorSpace::TransferID::BT709: | |
| 130 case media::VideoColorSpace::TransferID::SMPTE170M: | |
| 131 case media::VideoColorSpace::TransferID::BT2020_10: | |
| 132 case media::VideoColorSpace::TransferID::BT2020_12: | |
| 133 case media::VideoColorSpace::TransferID::IEC61966_2_1: | |
| 134 break; | |
| 135 | |
| 136 // Supported with color management. | |
| 137 case media::VideoColorSpace::TransferID::GAMMA28: | |
| 138 case media::VideoColorSpace::TransferID::SMPTE240M: | |
| 139 case media::VideoColorSpace::TransferID::LINEAR: | |
| 140 case media::VideoColorSpace::TransferID::LOG: | |
| 141 case media::VideoColorSpace::TransferID::LOG_SQRT: | |
| 142 case media::VideoColorSpace::TransferID::BT1361_ECG: | |
| 143 case media::VideoColorSpace::TransferID::SMPTEST2084: | |
| 144 case media::VideoColorSpace::TransferID::IEC61966_2_4: | |
| 145 case media::VideoColorSpace::TransferID::SMPTEST428_1: | |
| 146 case media::VideoColorSpace::TransferID::ARIB_STD_B67: | |
| 147 if (!color_management) | |
| 148 return false; | |
| 149 break; | |
| 150 | |
| 151 // Never supported. | |
| 152 case media::VideoColorSpace::TransferID::INVALID: | |
| 153 return false; | |
| 154 } | |
| 155 | |
| 156 switch (color_space.matrix) { | |
| 157 // Supported without color management. | |
| 158 case media::VideoColorSpace::MatrixID::BT709: | |
| 159 case media::VideoColorSpace::MatrixID::UNSPECIFIED: | |
| 160 case media::VideoColorSpace::MatrixID::BT470BG: | |
| 161 case media::VideoColorSpace::MatrixID::SMPTE170M: | |
| 162 case media::VideoColorSpace::MatrixID::BT2020_NCL: | |
| 163 break; | |
| 164 | |
| 165 // Supported with color management. | |
| 166 case media::VideoColorSpace::MatrixID::RGB: | |
| 167 case media::VideoColorSpace::MatrixID::FCC: | |
| 168 case media::VideoColorSpace::MatrixID::SMPTE240M: | |
| 169 case media::VideoColorSpace::MatrixID::YCOCG: | |
| 170 case media::VideoColorSpace::MatrixID::YDZDX: | |
| 171 case media::VideoColorSpace::MatrixID::BT2020_CL: | |
| 172 if (!color_management) | |
| 173 return false; | |
| 174 break; | |
| 175 | |
| 176 // Never supported. | |
| 177 case media::VideoColorSpace::MatrixID::INVALID: | |
| 178 return false; | |
| 179 } | |
| 180 | |
| 181 if (color_space.range == gfx::ColorSpace::RangeID::INVALID) | |
| 182 return false; | |
| 183 | |
| 184 return true; | |
| 185 } | |
| 186 | |
| 187 bool RenderMediaClient::IsSupportedVideoConfig( | 96 bool RenderMediaClient::IsSupportedVideoConfig( |
| 188 const media::VideoConfig& config) { | 97 const media::VideoConfig& config) { |
| 189 // TODO(chcunningham): Query decoders for codec profile support. | 98 // Render media client does not customize decoder support. Defer to media/. |
| 190 switch (config.codec) { | 99 return ::media::IsSupportedVideoConfig(config); |
| 191 case media::kCodecVP9: | |
| 192 // Color management required for HDR to not look terrible. | |
| 193 return IsColorSpaceSupported(config.color_space); | |
| 194 | |
| 195 case media::kCodecH264: | |
| 196 case media::kCodecVP8: | |
| 197 case media::kCodecTheora: | |
| 198 return true; | |
| 199 | |
| 200 case media::kUnknownVideoCodec: | |
| 201 case media::kCodecVC1: | |
| 202 case media::kCodecMPEG2: | |
| 203 case media::kCodecMPEG4: | |
| 204 case media::kCodecHEVC: | |
| 205 case media::kCodecDolbyVision: | |
| 206 return false; | |
| 207 } | |
| 208 | |
| 209 NOTREACHED(); | |
| 210 return false; | |
| 211 } | 100 } |
| 212 | 101 |
| 213 void RenderMediaClient::SetTickClockForTesting( | 102 void RenderMediaClient::SetTickClockForTesting( |
| 214 std::unique_ptr<base::TickClock> tick_clock) { | 103 std::unique_ptr<base::TickClock> tick_clock) { |
| 215 tick_clock_.swap(tick_clock); | 104 tick_clock_.swap(tick_clock); |
| 216 } | 105 } |
| 217 | 106 |
| 218 // static | 107 // static |
| 219 RenderMediaClient* RenderMediaClient::GetInstance() { | 108 RenderMediaClient* RenderMediaClient::GetInstance() { |
| 220 static RenderMediaClient* client = new RenderMediaClient(); | 109 static RenderMediaClient* client = new RenderMediaClient(); |
| 221 return client; | 110 return client; |
| 222 } | 111 } |
| 223 | 112 |
| 224 } // namespace content | 113 } // namespace content |
| OLD | NEW |