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

Unified 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, 8 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 side-by-side diff with in-line comments
Download patch
Index: media/filters/ffmpeg_video_decoder.cc
diff --git a/media/filters/ffmpeg_video_decoder.cc b/media/filters/ffmpeg_video_decoder.cc
index 1ed42bb9fb7c5ed0cd39c6ffc88cf9c492c6d959..67009ab5de23be4805c81cdd1955e1424ac2f462 100644
--- a/media/filters/ffmpeg_video_decoder.cc
+++ b/media/filters/ffmpeg_video_decoder.cc
@@ -187,12 +187,152 @@ int FFmpegVideoDecoder::GetVideoBuffer(struct AVCodecContext* codec_context,
if (codec_context->color_primaries != AVCOL_PRI_UNSPECIFIED ||
codec_context->color_trc != AVCOL_TRC_UNSPECIFIED ||
codec_context->colorspace != AVCOL_SPC_UNSPECIFIED) {
- video_frame->set_color_space(gfx::ColorSpace::CreateVideo(
- codec_context->color_primaries, codec_context->color_trc,
- codec_context->colorspace,
- codec_context->color_range != AVCOL_RANGE_MPEG
- ? gfx::ColorSpace::RangeID::FULL
- : gfx::ColorSpace::RangeID::LIMITED));
+ 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.
+ gfx::ColorSpace::TransferID transfer_id;
+ gfx::ColorSpace::MatrixID matrix_id;
+
+ switch (codec_context->color_primaries) {
+ case AVCOL_PRI_RESERVED0:
+ case AVCOL_PRI_BT709:
+ case AVCOL_PRI_UNSPECIFIED:
+ case AVCOL_PRI_RESERVED:
+ primary_id = gfx::ColorSpace::PrimaryID::BT709;
+ break;
+ case AVCOL_PRI_BT470M:
+ primary_id = gfx::ColorSpace::PrimaryID::BT470M;
+ break;
+ case AVCOL_PRI_BT470BG:
+ primary_id = gfx::ColorSpace::PrimaryID::BT470BG;
+ break;
+ case AVCOL_PRI_SMPTE170M:
+ primary_id = gfx::ColorSpace::PrimaryID::SMPTE170M;
+ break;
+ case AVCOL_PRI_SMPTE240M:
+ primary_id = gfx::ColorSpace::PrimaryID::SMPTE240M;
+ break;
+ case AVCOL_PRI_FILM:
+ primary_id = gfx::ColorSpace::PrimaryID::FILM;
+ break;
+ case AVCOL_PRI_BT2020:
+ primary_id = gfx::ColorSpace::PrimaryID::BT2020;
+ break;
+ case AVCOL_PRI_SMPTE428:
+ primary_id = gfx::ColorSpace::PrimaryID::SMPTEST428_1;
+ break;
+ case AVCOL_PRI_SMPTE431:
+ primary_id = gfx::ColorSpace::PrimaryID::SMPTEST431_2;
+ break;
+ case AVCOL_PRI_SMPTE432:
+ primary_id = gfx::ColorSpace::PrimaryID::SMPTEST432_1;
+ break;
+ case AVCOL_PRI_NB:
+ // TODO(uzair.jaleel) Need to check this once.
+ primary_id = gfx::ColorSpace::PrimaryID::INVALID;
+ break;
+ }
+
+ switch (codec_context->color_trc) {
+ case AVCOL_TRC_RESERVED0:
+ case AVCOL_TRC_BT709:
+ case AVCOL_TRC_UNSPECIFIED:
+ case AVCOL_TRC_RESERVED:
+ transfer_id = gfx::ColorSpace::TransferID::BT709;
+ break;
+ case AVCOL_TRC_GAMMA22:
+ transfer_id = gfx::ColorSpace::TransferID::GAMMA22;
+ break;
+ case AVCOL_TRC_GAMMA28:
+ transfer_id = gfx::ColorSpace::TransferID::GAMMA28;
+ break;
+ case AVCOL_TRC_SMPTE170M:
+ transfer_id = gfx::ColorSpace::TransferID::SMPTE170M;
+ break;
+ case AVCOL_TRC_SMPTE240M:
+ transfer_id = gfx::ColorSpace::TransferID::SMPTE240M;
+ break;
+ case AVCOL_TRC_LINEAR:
+ transfer_id = gfx::ColorSpace::TransferID::LINEAR;
+ break;
+ case AVCOL_TRC_LOG:
+ transfer_id = gfx::ColorSpace::TransferID::LOG;
+ break;
+ case AVCOL_TRC_LOG_SQRT:
+ transfer_id = gfx::ColorSpace::TransferID::LOG_SQRT;
+ break;
+ case AVCOL_TRC_IEC61966_2_4:
+ transfer_id = gfx::ColorSpace::TransferID::IEC61966_2_4;
+ break;
+ case AVCOL_TRC_BT1361_ECG:
+ transfer_id = gfx::ColorSpace::TransferID::BT1361_ECG;
+ break;
+ case AVCOL_TRC_IEC61966_2_1:
+ transfer_id = gfx::ColorSpace::TransferID::IEC61966_2_1;
+ break;
+ case AVCOL_TRC_BT2020_10:
+ transfer_id = gfx::ColorSpace::TransferID::BT2020_10;
+ break;
+ case AVCOL_TRC_BT2020_12:
+ transfer_id = gfx::ColorSpace::TransferID::BT2020_12;
+ break;
+ case AVCOL_TRC_SMPTE2084:
+ transfer_id = gfx::ColorSpace::TransferID::SMPTEST2084;
+ break;
+ case AVCOL_TRC_SMPTE428:
+ transfer_id = gfx::ColorSpace::TransferID::SMPTEST428_1;
+ break;
+ case AVCOL_TRC_ARIB_STD_B67:
+ transfer_id = gfx::ColorSpace::TransferID::ARIB_STD_B67;
+ break;
+ case AVCOL_TRC_NB:
+ // TODO(uzair.jaleel) Need to check this once.
+ transfer_id = gfx::ColorSpace::TransferID::INVALID;
+ break;
+ }
+
+ switch (codec_context->colorspace) {
+ case AVCOL_SPC_RGB:
+ matrix_id = gfx::ColorSpace::MatrixID::RGB;
+ break;
+ case AVCOL_SPC_BT709:
+ case AVCOL_SPC_UNSPECIFIED:
+ case AVCOL_SPC_RESERVED:
+ matrix_id = gfx::ColorSpace::MatrixID::BT709;
+ break;
+ case AVCOL_SPC_FCC:
+ matrix_id = gfx::ColorSpace::MatrixID::FCC;
+ break;
+ case AVCOL_SPC_BT470BG:
+ matrix_id = gfx::ColorSpace::MatrixID::BT470BG;
+ break;
+ case AVCOL_SPC_SMPTE170M:
+ matrix_id = gfx::ColorSpace::MatrixID::SMPTE170M;
+ break;
+ case AVCOL_SPC_SMPTE240M:
+ matrix_id = gfx::ColorSpace::MatrixID::SMPTE240M;
+ break;
+ case AVCOL_SPC_YCOCG:
+ matrix_id = gfx::ColorSpace::MatrixID::YCOCG;
+ break;
+ case AVCOL_SPC_BT2020_NCL:
+ matrix_id = gfx::ColorSpace::MatrixID::BT2020_NCL;
+ break;
+ case AVCOL_SPC_BT2020_CL:
+ matrix_id = gfx::ColorSpace::MatrixID::BT2020_CL;
+ break;
+ case AVCOL_SPC_SMPTE2085:
+ matrix_id = gfx::ColorSpace::MatrixID::YDZDX;
+ break;
+ case AVCOL_SPC_NB:
+ // TODO(uzair.jaleel) Need to check this once.
+ matrix_id = gfx::ColorSpace::MatrixID::INVALID;
+ break;
+ }
+
+ video_frame->set_color_space(
+ gfx::ColorSpace(primary_id, transfer_id, matrix_id,
+ codec_context->color_range != AVCOL_RANGE_MPEG
+ ? gfx::ColorSpace::RangeID::FULL
+ : gfx::ColorSpace::RangeID::LIMITED));
}
for (size_t i = 0; i < VideoFrame::NumPlanes(video_frame->format()); i++) {

Powered by Google App Engine
This is Rietveld 408576698