// Copyright 2016 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef UI_GL_YUV420_RGB_CONVERTER_H_ #define UI_GL_YUV420_RGB_CONVERTER_H_ #include "ui/gfx/geometry/size.h" namespace gfx { class ColorSpace; } // namespace gfx namespace gl { struct GLVersionInfo; class YUVToRGBConverter { public: explicit YUVToRGBConverter(const GLVersionInfo& gl_version_info, const gfx::ColorSpace color_space); ~YUVToRGBConverter(); // The input Y and UV textures should be bound to these texture objects // prior to calling CopyYUV420ToRGB. unsigned y_texture() const { return y_texture_; } unsigned uv_texture() const { return uv_texture_; } void CopyYUV420ToRGB(unsigned target, const gfx::Size& size, unsigned rgb_texture); private: unsigned framebuffer_ = 0; unsigned vertex_shader_ = 0; unsigned fragment_shader_ = 0; unsigned program_ = 0; int size_location_ = -1; unsigned vertex_buffer_ = 0; unsigned y_texture_ = 0; unsigned uv_texture_ = 0; }; } // namespace gl #endif // UI_GL_YUV420_RGB_CONVERTER_H_