summaryrefslogtreecommitdiff
path: root/chromium/media/renderers/video_frame_yuv_mailboxes_holder.cc
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/media/renderers/video_frame_yuv_mailboxes_holder.cc')
-rw-r--r--chromium/media/renderers/video_frame_yuv_mailboxes_holder.cc12
1 files changed, 9 insertions, 3 deletions
diff --git a/chromium/media/renderers/video_frame_yuv_mailboxes_holder.cc b/chromium/media/renderers/video_frame_yuv_mailboxes_holder.cc
index 1fb194a9bd9..881dd03dee5 100644
--- a/chromium/media/renderers/video_frame_yuv_mailboxes_holder.cc
+++ b/chromium/media/renderers/video_frame_yuv_mailboxes_holder.cc
@@ -1,4 +1,4 @@
-// Copyright 2021 The Chromium Authors. All rights reserved.
+// Copyright 2021 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
@@ -182,16 +182,21 @@ GrYUVABackendTextures VideoFrameYUVMailboxesHolder::VideoFrameToSkiaTextures(
sk_sp<SkImage> VideoFrameYUVMailboxesHolder::VideoFrameToSkImage(
const VideoFrame* video_frame,
- viz::RasterContextProvider* raster_context_provider) {
+ viz::RasterContextProvider* raster_context_provider,
+ sk_sp<SkColorSpace> reinterpret_color_space) {
GrDirectContext* gr_context = raster_context_provider->GrContext();
DCHECK(gr_context);
GrYUVABackendTextures yuva_backend_textures = VideoFrameToSkiaTextures(
video_frame, raster_context_provider, /*for_surface=*/false);
+ auto rgb_color_space =
+ reinterpret_color_space
+ ? reinterpret_color_space
+ : video_frame->ColorSpace().GetAsFullRangeRGB().ToSkColorSpace();
DCHECK(yuva_backend_textures.isValid());
auto result = SkImage::MakeFromYUVATextures(gr_context, yuva_backend_textures,
- SkColorSpace::MakeSRGB());
+ rgb_color_space);
DCHECK(result);
return result;
}
@@ -297,6 +302,7 @@ VideoFrameYUVMailboxesHolder::VideoPixelFormatToSkiaValues(
// we do assume 8 bit formats. With that exception, anything else should work.
switch (video_format) {
case PIXEL_FORMAT_NV12:
+ case PIXEL_FORMAT_P016LE:
return {SkYUVAInfo::PlaneConfig::kY_UV, SkYUVAInfo::Subsampling::k420};
case PIXEL_FORMAT_I420:
return {SkYUVAInfo::PlaneConfig::kY_U_V, SkYUVAInfo::Subsampling::k420};