get rid of VideoFrameMetadata::COLOR_SPACE

It's been deprecated for a while, this CL finally gets rid of it.

Bug: 754986
Cq-Include-Trybots: luci.chromium.try:android_optional_gpu_tests_rel;luci.chromium.try:linux_optional_gpu_tests_rel;luci.chromium.try:mac_optional_gpu_tests_rel;luci.chromium.try:win_optional_gpu_tests_rel
Change-Id: Icc06af298f2e46252b2bc3e7ac73b25c66f3fd26
Reviewed-on: https://chromium-review.googlesource.com/1235209
Reviewed-by: Yuri Wiitala <miu@chromium.org>
Reviewed-by: Dale Curtis <dalecurtis@chromium.org>
Commit-Queue: Fredrik Hubinette <hubbe@chromium.org>
Cr-Commit-Position: refs/heads/master@{#593297}
diff --git a/components/viz/service/display/renderer_pixeltest.cc b/components/viz/service/display/renderer_pixeltest.cc
index 2846bac..f5a377a 100644
--- a/components/viz/service/display/renderer_pixeltest.cc
+++ b/components/viz/service/display/renderer_pixeltest.cc
@@ -546,7 +546,7 @@
 void CreateTestYUVVideoDrawQuad_Striped(
     const SharedQuadState* shared_state,
     media::VideoPixelFormat format,
-    media::ColorSpace color_space,
+    gfx::ColorSpace color_space,
     bool is_transparent,
     bool highbit,
     const gfx::RectF& tex_coord_rect,
@@ -588,8 +588,7 @@
 
   if (highbit)
     video_frame = CreateHighbitVideoFrame(video_frame.get());
-  video_frame->metadata()->SetInteger(media::VideoFrameMetadata::COLOR_SPACE,
-                                      color_space);
+  video_frame->set_color_space(color_space);
 
   CreateTestYUVVideoDrawQuad_FromVideoFrame(
       shared_state, video_frame, alpha_value, tex_coord_rect, render_pass,
@@ -604,7 +603,7 @@
 void CreateTestYUVVideoDrawQuad_TwoColor(
     const SharedQuadState* shared_state,
     media::VideoPixelFormat format,
-    media::ColorSpace color_space,
+    gfx::ColorSpace color_space,
     bool is_transparent,
     const gfx::RectF& tex_coord_rect,
     const gfx::Size& background_size,
@@ -626,8 +625,7 @@
   scoped_refptr<media::VideoFrame> video_frame =
       media::VideoFrame::CreateFrame(format, background_size, foreground_rect,
                                      foreground_rect.size(), base::TimeDelta());
-  video_frame->metadata()->SetInteger(media::VideoFrameMetadata::COLOR_SPACE,
-                                      color_space);
+  video_frame->set_color_space(color_space);
 
   int planes[] = {media::VideoFrame::kYPlane, media::VideoFrame::kUPlane,
                   media::VideoFrame::kVPlane};
@@ -670,7 +668,7 @@
 void CreateTestYUVVideoDrawQuad_Solid(
     const SharedQuadState* shared_state,
     media::VideoPixelFormat format,
-    media::ColorSpace color_space,
+    const gfx::ColorSpace& color_space,
     bool is_transparent,
     const gfx::RectF& tex_coord_rect,
     uint8_t y,
@@ -685,8 +683,7 @@
     ContextProvider* child_context_provider) {
   scoped_refptr<media::VideoFrame> video_frame = media::VideoFrame::CreateFrame(
       format, rect.size(), rect, rect.size(), base::TimeDelta());
-  video_frame->metadata()->SetInteger(media::VideoFrameMetadata::COLOR_SPACE,
-                                      color_space);
+  video_frame->set_color_space(color_space);
 
   // YUV values of a solid, constant, color. Useful for testing that color
   // space/color range are being handled properly.
@@ -709,8 +706,7 @@
 
 void CreateTestYUVVideoDrawQuad_NV12(
     const SharedQuadState* shared_state,
-    media::ColorSpace video_frame_color_space,
-    const gfx::ColorSpace& video_color_space,
+    const gfx::ColorSpace& color_space,
     const gfx::RectF& tex_coord_rect,
     uint8_t y,
     uint8_t u,
@@ -722,11 +718,6 @@
     DisplayResourceProvider* resource_provider,
     ClientResourceProvider* child_resource_provider,
     scoped_refptr<ContextProvider> child_context_provider) {
-  gfx::ColorSpace gfx_color_space = gfx::ColorSpace::CreateREC601();
-  if (video_frame_color_space == media::COLOR_SPACE_JPEG) {
-    gfx_color_space = gfx::ColorSpace::CreateJpeg();
-  }
-
   bool needs_blending = true;
   const gfx::Size ya_tex_size = rect.size();
   const gfx::Size uv_tex_size = media::VideoFrame::PlaneSize(
@@ -735,15 +726,15 @@
   std::vector<uint8_t> y_pixels(ya_tex_size.GetArea(), y);
   ResourceId resource_y = CreateGpuResource(
       child_context_provider, child_resource_provider, ya_tex_size,
-      video_resource_updater->YuvResourceFormat(8), gfx_color_space,
+      video_resource_updater->YuvResourceFormat(8), color_space,
       y_pixels.data());
 
   // U goes in the R component and V goes in the G component.
   uint32_t rgba_pixel = (u << 24) | (v << 16);
   std::vector<uint32_t> uv_pixels(uv_tex_size.GetArea(), rgba_pixel);
-  ResourceId resource_u = CreateGpuResource(
-      child_context_provider, child_resource_provider, uv_tex_size, RGBA_8888,
-      gfx_color_space, uv_pixels.data());
+  ResourceId resource_u =
+      CreateGpuResource(child_context_provider, child_resource_provider,
+                        uv_tex_size, RGBA_8888, color_space, uv_pixels.data());
   ResourceId resource_v = resource_u;
   ResourceId resource_a = 0;
 
@@ -770,8 +761,7 @@
   yuv_quad->SetNew(shared_state, rect, visible_rect, needs_blending,
                    ya_tex_coord_rect, uv_tex_coord_rect, ya_tex_size,
                    uv_tex_size, mapped_resource_y, mapped_resource_u,
-                   mapped_resource_v, resource_a, video_color_space, 0.0f, 1.0f,
-                   8);
+                   mapped_resource_v, resource_a, color_space, 0.0f, 1.0f, 8);
 }
 
 void CreateTestY16TextureDrawQuad_TwoColor(
@@ -1440,17 +1430,17 @@
 
   CreateTestYUVVideoDrawQuad_TwoColor(
       this->front_quad_state_, media::PIXEL_FORMAT_I420,
-      media::COLOR_SPACE_JPEG, false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f),
+      gfx::ColorSpace::CreateJpeg(), false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f),
       this->quad_rect_.size(), this->quad_rect_, 0, 128, 128, inner_rect, 29,
       255, 107, this->render_pass_.get(), this->video_resource_updater_.get(),
       this->resource_provider_.get(), this->child_resource_provider_.get(),
       this->child_context_provider_.get());
 
   CreateTestYUVVideoDrawQuad_TwoColor(
-      this->back_quad_state_, media::PIXEL_FORMAT_I420, media::COLOR_SPACE_JPEG,
-      false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), this->quad_rect_.size(),
-      this->quad_rect_, 149, 43, 21, inner_rect, 0, 128, 128,
-      this->render_pass_.get(), this->video_resource_updater2_.get(),
+      this->back_quad_state_, media::PIXEL_FORMAT_I420,
+      gfx::ColorSpace::CreateJpeg(), false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f),
+      this->quad_rect_.size(), this->quad_rect_, 149, 43, 21, inner_rect, 0,
+      128, 128, this->render_pass_.get(), this->video_resource_updater2_.get(),
       this->resource_provider_.get(), this->child_resource_provider_.get(),
       this->child_context_provider_.get());
 
@@ -1554,7 +1544,7 @@
 class VideoGLRendererPixelTest : public cc::GLRendererPixelTest {
  protected:
   void CreateEdgeBleedPass(media::VideoPixelFormat format,
-                           media::ColorSpace color_space,
+                           const gfx::ColorSpace& color_space,
                            RenderPassList* pass_list) {
     gfx::Rect rect(200, 200);
 
@@ -1630,7 +1620,7 @@
       CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
 
   CreateTestYUVVideoDrawQuad_Striped(
-      shared_state, media::PIXEL_FORMAT_I420, media::COLOR_SPACE_SD_REC601,
+      shared_state, media::PIXEL_FORMAT_I420, gfx::ColorSpace::CreateREC601(),
       false, IsHighbit(), gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), pass.get(),
       video_resource_updater_.get(), rect, rect, resource_provider_.get(),
       child_resource_provider_.get(), child_context_provider_.get());
@@ -1658,7 +1648,7 @@
       CreateTestSharedQuadState(gfx::Transform(), viewport, pass.get());
 
   CreateTestYUVVideoDrawQuad_Striped(
-      shared_state, media::PIXEL_FORMAT_I420, media::COLOR_SPACE_SD_REC601,
+      shared_state, media::PIXEL_FORMAT_I420, gfx::ColorSpace::CreateREC601(),
       false, IsHighbit(), gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), pass.get(),
       video_resource_updater_.get(), draw_rect, viewport,
       resource_provider_.get(), child_resource_provider_.get(),
@@ -1685,7 +1675,7 @@
 
   // Intentionally sets frame format to I420 for testing coverage.
   CreateTestYUVVideoDrawQuad_Striped(
-      shared_state, media::PIXEL_FORMAT_I420, media::COLOR_SPACE_SD_REC601,
+      shared_state, media::PIXEL_FORMAT_I420, gfx::ColorSpace::CreateREC601(),
       false, false, gfx::RectF(0.125f, 0.25f, 0.75f, 0.5f), pass.get(),
       video_resource_updater_.get(), rect, rect, resource_provider_.get(),
       child_resource_provider_.get(), child_context_provider_.get());
@@ -1712,7 +1702,7 @@
 
   // In MPEG color range YUV values of (15,128,128) should produce black.
   CreateTestYUVVideoDrawQuad_Solid(
-      shared_state, media::PIXEL_FORMAT_I420, media::COLOR_SPACE_SD_REC601,
+      shared_state, media::PIXEL_FORMAT_I420, gfx::ColorSpace::CreateREC601(),
       false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 15, 128, 128, pass.get(),
       video_resource_updater_.get(), rect, rect, resource_provider_.get(),
       child_resource_provider_.get(), child_context_provider_.get());
@@ -1741,8 +1731,8 @@
 
   // YUV of (149,43,21) should be green (0,255,0) in RGB.
   CreateTestYUVVideoDrawQuad_Solid(
-      shared_state, media::PIXEL_FORMAT_I420, media::COLOR_SPACE_JPEG, false,
-      gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 149, 43, 21, pass.get(),
+      shared_state, media::PIXEL_FORMAT_I420, gfx::ColorSpace::CreateJpeg(),
+      false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 149, 43, 21, pass.get(),
       video_resource_updater_.get(), rect, rect, resource_provider_.get(),
       child_resource_provider_.get(), child_context_provider_.get());
 
@@ -1765,7 +1755,7 @@
 
   // YUV of (149,43,21) should be green (0,255,0) in RGB.
   CreateTestYUVVideoDrawQuad_NV12(
-      shared_state, media::COLOR_SPACE_JPEG, gfx::ColorSpace::CreateJpeg(),
+      shared_state, gfx::ColorSpace::CreateJpeg(),
       gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 149, 43, 21, pass.get(),
       video_resource_updater_.get(), rect, rect, resource_provider_.get(),
       child_resource_provider_.get(), child_context_provider_);
@@ -1782,7 +1772,7 @@
 // tex coord rect is only a partial subrectangle of the coded contents.
 TEST_F(VideoGLRendererPixelTest, YUVEdgeBleed) {
   RenderPassList pass_list;
-  CreateEdgeBleedPass(media::PIXEL_FORMAT_I420, media::COLOR_SPACE_JPEG,
+  CreateEdgeBleedPass(media::PIXEL_FORMAT_I420, gfx::ColorSpace::CreateJpeg(),
                       &pass_list);
   EXPECT_TRUE(this->RunPixelTest(&pass_list,
                                  base::FilePath(FILE_PATH_LITERAL("green.png")),
@@ -1791,8 +1781,8 @@
 
 TEST_F(VideoGLRendererPixelTest, YUVAEdgeBleed) {
   RenderPassList pass_list;
-  CreateEdgeBleedPass(media::PIXEL_FORMAT_I420A, media::COLOR_SPACE_SD_REC601,
-                      &pass_list);
+  CreateEdgeBleedPass(media::PIXEL_FORMAT_I420A,
+                      gfx::ColorSpace::CreateREC601(), &pass_list);
   // Set the output color space to match the input primaries and transfer.
   pass_list.back()->color_space =
       gfx::ColorSpace(gfx::ColorSpace::PrimaryID::SMPTE170M,
@@ -1813,8 +1803,8 @@
 
   // Dark grey in JPEG color range (in MPEG, this is black).
   CreateTestYUVVideoDrawQuad_Solid(
-      shared_state, media::PIXEL_FORMAT_I420, media::COLOR_SPACE_JPEG, false,
-      gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 15, 128, 128, pass.get(),
+      shared_state, media::PIXEL_FORMAT_I420, gfx::ColorSpace::CreateJpeg(),
+      false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), 15, 128, 128, pass.get(),
       video_resource_updater_.get(), rect, rect, resource_provider_.get(),
       child_resource_provider_.get(), child_context_provider_.get());
 
@@ -1839,7 +1829,7 @@
       CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
 
   CreateTestYUVVideoDrawQuad_Striped(
-      shared_state, media::PIXEL_FORMAT_I420A, media::COLOR_SPACE_SD_REC601,
+      shared_state, media::PIXEL_FORMAT_I420A, gfx::ColorSpace::CreateREC601(),
       false, false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), pass.get(),
       video_resource_updater_.get(), rect, rect, resource_provider_.get(),
       child_resource_provider_.get(), child_context_provider_.get());
@@ -1868,7 +1858,7 @@
       CreateTestSharedQuadState(gfx::Transform(), rect, pass.get());
 
   CreateTestYUVVideoDrawQuad_Striped(
-      shared_state, media::PIXEL_FORMAT_I420A, media::COLOR_SPACE_SD_REC601,
+      shared_state, media::PIXEL_FORMAT_I420A, gfx::ColorSpace::CreateREC601(),
       true, false, gfx::RectF(0.0f, 0.0f, 1.0f, 1.0f), pass.get(),
       video_resource_updater_.get(), rect, rect, resource_provider_.get(),
       child_resource_provider_.get(), child_context_provider_.get());
diff --git a/content/browser/media/capture/lame_window_capturer_chromeos.cc b/content/browser/media/capture/lame_window_capturer_chromeos.cc
index 2a9275e..05f8cea 100644
--- a/content/browser/media/capture/lame_window_capturer_chromeos.cc
+++ b/content/browser/media/capture/lame_window_capturer_chromeos.cc
@@ -263,12 +263,11 @@
   DCHECK(frame);
   VideoFrameMetadata* const metadata = frame->metadata();
   metadata->SetTimeTicks(VideoFrameMetadata::CAPTURE_BEGIN_TIME, begin_time);
-  metadata->SetInteger(VideoFrameMetadata::COLOR_SPACE,
-                       media::COLOR_SPACE_HD_REC709);
   metadata->SetTimeDelta(VideoFrameMetadata::FRAME_DURATION, capture_period_);
   metadata->SetDouble(VideoFrameMetadata::FRAME_RATE,
                       1.0 / capture_period_.InSecondsF());
   metadata->SetTimeTicks(VideoFrameMetadata::REFERENCE_TIME, begin_time);
+  frame->set_color_space(gfx::ColorSpace::CreateREC709());
 
   // Compute the region of the VideoFrame that will contain the content. If
   // there is nothing to copy from/to (e.g., the target is gone, or is sized too
diff --git a/media/base/video_frame.cc b/media/base/video_frame.cc
index 2ab6505..3338045 100644
--- a/media/base/video_frame.cc
+++ b/media/base/video_frame.cc
@@ -766,22 +766,6 @@
 }
 
 gfx::ColorSpace VideoFrame::ColorSpace() const {
-  if (color_space_ == gfx::ColorSpace()) {
-    int videoframe_color_space;
-    if (metadata()->GetInteger(media::VideoFrameMetadata::COLOR_SPACE,
-                               &videoframe_color_space)) {
-      switch (videoframe_color_space) {
-        case media::COLOR_SPACE_JPEG:
-          return gfx::ColorSpace::CreateJpeg();
-        case media::COLOR_SPACE_HD_REC709:
-          return gfx::ColorSpace::CreateREC709();
-        case media::COLOR_SPACE_SD_REC601:
-          return gfx::ColorSpace::CreateREC601();
-        default:
-          break;
-      }
-    }
-  }
   return color_space_;
 }
 
diff --git a/media/base/video_frame_metadata.h b/media/base/video_frame_metadata.h
index 78f1e29..d1255cb 100644
--- a/media/base/video_frame_metadata.h
+++ b/media/base/video_frame_metadata.h
@@ -33,11 +33,6 @@
     CAPTURE_BEGIN_TIME,
     CAPTURE_END_TIME,
 
-    // Some VideoFrames have an indication of the color space used.  Use
-    // GetInteger()/SetInteger() and ColorSpace enumeration.
-    // Reading this metadata is deprecated, use frame->ColorSpace() instead.
-    COLOR_SPACE,
-
     // Indicates that this frame must be copied to a new texture before use,
     // rather than being used directly. Specifically this is required for
     // WebView because of limitations about sharing surface textures between GL
diff --git a/media/filters/decrypting_video_decoder.cc b/media/filters/decrypting_video_decoder.cc
index 132e58e..673c559 100644
--- a/media/filters/decrypting_video_decoder.cc
+++ b/media/filters/decrypting_video_decoder.cc
@@ -298,10 +298,23 @@
   // If color space is not set, use the color space in the |config_|.
   if (!frame->ColorSpace().IsValid()) {
     DVLOG(3) << "Setting color space using information in the config.";
-    frame->metadata()->SetInteger(VideoFrameMetadata::COLOR_SPACE,
-                                  config_.color_space());
-    if (config_.color_space_info() != VideoColorSpace())
+    if (config_.color_space_info() != VideoColorSpace()) {
       frame->set_color_space(config_.color_space_info().ToGfxColorSpace());
+    } else {
+      switch (config_.color_space()) {
+        case COLOR_SPACE_UNSPECIFIED:
+          break;
+        case COLOR_SPACE_HD_REC709:
+          frame->set_color_space(gfx::ColorSpace::CreateREC709());
+          break;
+        case COLOR_SPACE_SD_REC601:
+          frame->set_color_space(gfx::ColorSpace::CreateREC601());
+          break;
+        case COLOR_SPACE_JPEG:
+          frame->set_color_space(gfx::ColorSpace::CreateJpeg());
+          break;
+      }
+    }
   }
 
   output_cb_.Run(frame);
diff --git a/media/filters/ffmpeg_video_decoder.cc b/media/filters/ffmpeg_video_decoder.cc
index a06bb23..081f6dd 100644
--- a/media/filters/ffmpeg_video_decoder.cc
+++ b/media/filters/ffmpeg_video_decoder.cc
@@ -183,8 +183,19 @@
                                                     codec_context->color_range);
   if (color_space == COLOR_SPACE_UNSPECIFIED)
     color_space = config_.color_space();
-  video_frame->metadata()->SetInteger(VideoFrameMetadata::COLOR_SPACE,
-                                      color_space);
+  switch (color_space) {
+    case COLOR_SPACE_UNSPECIFIED:
+      break;
+    case COLOR_SPACE_HD_REC709:
+      video_frame->set_color_space(gfx::ColorSpace::CreateREC709());
+      break;
+    case COLOR_SPACE_SD_REC601:
+      video_frame->set_color_space(gfx::ColorSpace::CreateREC601());
+      break;
+    case COLOR_SPACE_JPEG:
+      video_frame->set_color_space(gfx::ColorSpace::CreateJpeg());
+      break;
+  }
 
   if (codec_context->codec_id == AV_CODEC_ID_VP8 &&
       codec_context->color_primaries == AVCOL_PRI_UNSPECIFIED &&
diff --git a/media/filters/vpx_video_decoder.cc b/media/filters/vpx_video_decoder.cc
index c2f2eaf..dc4faa6 100644
--- a/media/filters/vpx_video_decoder.cc
+++ b/media/filters/vpx_video_decoder.cc
@@ -366,14 +366,19 @@
 
   // Default to the color space from the config, but if the bistream specifies
   // one, prefer that instead.
-  ColorSpace color_space = config_.color_space();
-  if (vpx_image->cs == VPX_CS_BT_709)
-    color_space = COLOR_SPACE_HD_REC709;
-  else if (vpx_image->cs == VPX_CS_BT_601 || vpx_image->cs == VPX_CS_SMPTE_170)
-    color_space = COLOR_SPACE_SD_REC601;
-  (*video_frame)
-      ->metadata()
-      ->SetInteger(VideoFrameMetadata::COLOR_SPACE, color_space);
+  switch (config_.color_space()) {
+    case COLOR_SPACE_UNSPECIFIED:
+      break;
+    case COLOR_SPACE_HD_REC709:
+      (*video_frame)->set_color_space(gfx::ColorSpace::CreateREC709());
+      break;
+    case COLOR_SPACE_SD_REC601:
+      (*video_frame)->set_color_space(gfx::ColorSpace::CreateREC601());
+      break;
+    case COLOR_SPACE_JPEG:
+      (*video_frame)->set_color_space(gfx::ColorSpace::CreateJpeg());
+      break;
+  }
 
   if (config_.color_space_info().IsSpecified()) {
     // config_.color_space_info() comes from the color tag which is