Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(92)

Side by Side Diff: media/filters/ffmpeg_video_decoder.cc

Issue 2841813002: Converting video color space enums to their corresponding gfx:color space eqvivalent. (Closed)
Patch Set: Removed gfx::ColorSpace::CreateVideo() Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 "media/filters/ffmpeg_video_decoder.h" 5 #include "media/filters/ffmpeg_video_decoder.h"
6 6
7 #include <stddef.h> 7 #include <stddef.h>
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after
180 ColorSpace color_space = AVColorSpaceToColorSpace(codec_context->colorspace, 180 ColorSpace color_space = AVColorSpaceToColorSpace(codec_context->colorspace,
181 codec_context->color_range); 181 codec_context->color_range);
182 if (color_space == COLOR_SPACE_UNSPECIFIED) 182 if (color_space == COLOR_SPACE_UNSPECIFIED)
183 color_space = config_.color_space(); 183 color_space = config_.color_space();
184 video_frame->metadata()->SetInteger(VideoFrameMetadata::COLOR_SPACE, 184 video_frame->metadata()->SetInteger(VideoFrameMetadata::COLOR_SPACE,
185 color_space); 185 color_space);
186 186
187 if (codec_context->color_primaries != AVCOL_PRI_UNSPECIFIED || 187 if (codec_context->color_primaries != AVCOL_PRI_UNSPECIFIED ||
188 codec_context->color_trc != AVCOL_TRC_UNSPECIFIED || 188 codec_context->color_trc != AVCOL_TRC_UNSPECIFIED ||
189 codec_context->colorspace != AVCOL_SPC_UNSPECIFIED) { 189 codec_context->colorspace != AVCOL_SPC_UNSPECIFIED) {
190 video_frame->set_color_space(gfx::ColorSpace::CreateVideo( 190 gfx::ColorSpace::PrimaryID primary_id;
hubbe 2017/05/03 18:17:27 Don't duplucate this logic. Create a VideoColorSpa
Uzair 2017/05/04 11:29:36 Done.
191 codec_context->color_primaries, codec_context->color_trc, 191 gfx::ColorSpace::TransferID transfer_id;
192 codec_context->colorspace, 192 gfx::ColorSpace::MatrixID matrix_id;
193 codec_context->color_range != AVCOL_RANGE_MPEG 193
194 ? gfx::ColorSpace::RangeID::FULL 194 switch (codec_context->color_primaries) {
195 : gfx::ColorSpace::RangeID::LIMITED)); 195 case AVCOL_PRI_RESERVED0:
196 case AVCOL_PRI_BT709:
197 case AVCOL_PRI_UNSPECIFIED:
198 case AVCOL_PRI_RESERVED:
199 primary_id = gfx::ColorSpace::PrimaryID::BT709;
200 break;
201 case AVCOL_PRI_BT470M:
202 primary_id = gfx::ColorSpace::PrimaryID::BT470M;
203 break;
204 case AVCOL_PRI_BT470BG:
205 primary_id = gfx::ColorSpace::PrimaryID::BT470BG;
206 break;
207 case AVCOL_PRI_SMPTE170M:
208 primary_id = gfx::ColorSpace::PrimaryID::SMPTE170M;
209 break;
210 case AVCOL_PRI_SMPTE240M:
211 primary_id = gfx::ColorSpace::PrimaryID::SMPTE240M;
212 break;
213 case AVCOL_PRI_FILM:
214 primary_id = gfx::ColorSpace::PrimaryID::FILM;
215 break;
216 case AVCOL_PRI_BT2020:
217 primary_id = gfx::ColorSpace::PrimaryID::BT2020;
218 break;
219 case AVCOL_PRI_SMPTE428:
220 primary_id = gfx::ColorSpace::PrimaryID::SMPTEST428_1;
221 break;
222 case AVCOL_PRI_SMPTE431:
223 primary_id = gfx::ColorSpace::PrimaryID::SMPTEST431_2;
224 break;
225 case AVCOL_PRI_SMPTE432:
226 primary_id = gfx::ColorSpace::PrimaryID::SMPTEST432_1;
227 break;
228 case AVCOL_PRI_NB:
229 // TODO(uzair.jaleel) Need to check this once.
230 primary_id = gfx::ColorSpace::PrimaryID::INVALID;
231 break;
232 }
233
234 switch (codec_context->color_trc) {
235 case AVCOL_TRC_RESERVED0:
236 case AVCOL_TRC_BT709:
237 case AVCOL_TRC_UNSPECIFIED:
238 case AVCOL_TRC_RESERVED:
239 transfer_id = gfx::ColorSpace::TransferID::BT709;
240 break;
241 case AVCOL_TRC_GAMMA22:
242 transfer_id = gfx::ColorSpace::TransferID::GAMMA22;
243 break;
244 case AVCOL_TRC_GAMMA28:
245 transfer_id = gfx::ColorSpace::TransferID::GAMMA28;
246 break;
247 case AVCOL_TRC_SMPTE170M:
248 transfer_id = gfx::ColorSpace::TransferID::SMPTE170M;
249 break;
250 case AVCOL_TRC_SMPTE240M:
251 transfer_id = gfx::ColorSpace::TransferID::SMPTE240M;
252 break;
253 case AVCOL_TRC_LINEAR:
254 transfer_id = gfx::ColorSpace::TransferID::LINEAR;
255 break;
256 case AVCOL_TRC_LOG:
257 transfer_id = gfx::ColorSpace::TransferID::LOG;
258 break;
259 case AVCOL_TRC_LOG_SQRT:
260 transfer_id = gfx::ColorSpace::TransferID::LOG_SQRT;
261 break;
262 case AVCOL_TRC_IEC61966_2_4:
263 transfer_id = gfx::ColorSpace::TransferID::IEC61966_2_4;
264 break;
265 case AVCOL_TRC_BT1361_ECG:
266 transfer_id = gfx::ColorSpace::TransferID::BT1361_ECG;
267 break;
268 case AVCOL_TRC_IEC61966_2_1:
269 transfer_id = gfx::ColorSpace::TransferID::IEC61966_2_1;
270 break;
271 case AVCOL_TRC_BT2020_10:
272 transfer_id = gfx::ColorSpace::TransferID::BT2020_10;
273 break;
274 case AVCOL_TRC_BT2020_12:
275 transfer_id = gfx::ColorSpace::TransferID::BT2020_12;
276 break;
277 case AVCOL_TRC_SMPTE2084:
278 transfer_id = gfx::ColorSpace::TransferID::SMPTEST2084;
279 break;
280 case AVCOL_TRC_SMPTE428:
281 transfer_id = gfx::ColorSpace::TransferID::SMPTEST428_1;
282 break;
283 case AVCOL_TRC_ARIB_STD_B67:
284 transfer_id = gfx::ColorSpace::TransferID::ARIB_STD_B67;
285 break;
286 case AVCOL_TRC_NB:
287 // TODO(uzair.jaleel) Need to check this once.
288 transfer_id = gfx::ColorSpace::TransferID::INVALID;
289 break;
290 }
291
292 switch (codec_context->colorspace) {
293 case AVCOL_SPC_RGB:
294 matrix_id = gfx::ColorSpace::MatrixID::RGB;
295 break;
296 case AVCOL_SPC_BT709:
297 case AVCOL_SPC_UNSPECIFIED:
298 case AVCOL_SPC_RESERVED:
299 matrix_id = gfx::ColorSpace::MatrixID::BT709;
300 break;
301 case AVCOL_SPC_FCC:
302 matrix_id = gfx::ColorSpace::MatrixID::FCC;
303 break;
304 case AVCOL_SPC_BT470BG:
305 matrix_id = gfx::ColorSpace::MatrixID::BT470BG;
306 break;
307 case AVCOL_SPC_SMPTE170M:
308 matrix_id = gfx::ColorSpace::MatrixID::SMPTE170M;
309 break;
310 case AVCOL_SPC_SMPTE240M:
311 matrix_id = gfx::ColorSpace::MatrixID::SMPTE240M;
312 break;
313 case AVCOL_SPC_YCOCG:
314 matrix_id = gfx::ColorSpace::MatrixID::YCOCG;
315 break;
316 case AVCOL_SPC_BT2020_NCL:
317 matrix_id = gfx::ColorSpace::MatrixID::BT2020_NCL;
318 break;
319 case AVCOL_SPC_BT2020_CL:
320 matrix_id = gfx::ColorSpace::MatrixID::BT2020_CL;
321 break;
322 case AVCOL_SPC_SMPTE2085:
323 matrix_id = gfx::ColorSpace::MatrixID::YDZDX;
324 break;
325 case AVCOL_SPC_NB:
326 // TODO(uzair.jaleel) Need to check this once.
327 matrix_id = gfx::ColorSpace::MatrixID::INVALID;
328 break;
329 }
330
331 video_frame->set_color_space(
332 gfx::ColorSpace(primary_id, transfer_id, matrix_id,
333 codec_context->color_range != AVCOL_RANGE_MPEG
334 ? gfx::ColorSpace::RangeID::FULL
335 : gfx::ColorSpace::RangeID::LIMITED));
196 } 336 }
197 337
198 for (size_t i = 0; i < VideoFrame::NumPlanes(video_frame->format()); i++) { 338 for (size_t i = 0; i < VideoFrame::NumPlanes(video_frame->format()); i++) {
199 frame->data[i] = video_frame->data(i); 339 frame->data[i] = video_frame->data(i);
200 frame->linesize[i] = video_frame->stride(i); 340 frame->linesize[i] = video_frame->stride(i);
201 } 341 }
202 342
203 frame->width = coded_size.width(); 343 frame->width = coded_size.width();
204 frame->height = coded_size.height(); 344 frame->height = coded_size.height();
205 frame->format = codec_context->pix_fmt; 345 frame->format = codec_context->pix_fmt;
(...skipping 226 matching lines...) Expand 10 before | Expand all | Expand 10 after
432 if (!codec || avcodec_open2(codec_context_.get(), codec, NULL) < 0) { 572 if (!codec || avcodec_open2(codec_context_.get(), codec, NULL) < 0) {
433 ReleaseFFmpegResources(); 573 ReleaseFFmpegResources();
434 return false; 574 return false;
435 } 575 }
436 576
437 av_frame_.reset(av_frame_alloc()); 577 av_frame_.reset(av_frame_alloc());
438 return true; 578 return true;
439 } 579 }
440 580
441 } // namespace media 581 } // namespace media
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698