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