summaryrefslogtreecommitdiff
path: root/chromium/ui/gl/gl_image_io_surface.mm
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ui/gl/gl_image_io_surface.mm')
-rw-r--r--chromium/ui/gl/gl_image_io_surface.mm11
1 files changed, 10 insertions, 1 deletions
diff --git a/chromium/ui/gl/gl_image_io_surface.mm b/chromium/ui/gl/gl_image_io_surface.mm
index c9fabee5a26..1dc5a6dbf1f 100644
--- a/chromium/ui/gl/gl_image_io_surface.mm
+++ b/chromium/ui/gl/gl_image_io_surface.mm
@@ -14,6 +14,7 @@
#include "base/trace_event/memory_dump_manager.h"
#include "base/trace_event/process_memory_dump.h"
#include "base/trace_event/trace_event.h"
+#include "ui/gfx/color_space.h"
#include "ui/gl/gl_bindings.h"
#include "ui/gl/gl_context.h"
#include "ui/gl/scoped_binders.h"
@@ -298,7 +299,8 @@ bool GLImageIOSurface::CopyTexImage(unsigned target) {
GLContext* gl_context = GLContext::GetCurrent();
DCHECK(gl_context);
- YUVToRGBConverter* yuv_to_rgb_converter = gl_context->GetYUVToRGBConverter();
+ YUVToRGBConverter* yuv_to_rgb_converter =
+ gl_context->GetYUVToRGBConverter(color_space_for_yuv_to_rgb_);
DCHECK(yuv_to_rgb_converter);
// Note that state restoration is done explicitly instead of scoped binders to
@@ -405,6 +407,13 @@ bool GLImageIOSurface::CanCheckIOSurfaceIsInUse() const {
return !cv_pixel_buffer_;
}
+void GLImageIOSurface::SetColorSpaceForYUVToRGBConversion(
+ const gfx::ColorSpace& color_space) {
+ DCHECK(color_space.IsValid());
+ DCHECK_NE(color_space, color_space.GetAsFullRangeRGB());
+ color_space_for_yuv_to_rgb_ = color_space;
+}
+
base::ScopedCFTypeRef<IOSurfaceRef> GLImageIOSurface::io_surface() {
return io_surface_;
}