mirror of
				https://github.com/godotengine/godot.git
				synced 2025-10-31 13:41:03 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			60 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
	
		
			1.8 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
| // Copyright 2022 Google Inc. All Rights Reserved.
 | |
| //
 | |
| // Use of this source code is governed by a BSD-style license
 | |
| // that can be found in the COPYING file in the root of the source
 | |
| // tree. An additional intellectual property rights grant can be found
 | |
| // in the file PATENTS. All contributing project authors may
 | |
| // be found in the AUTHORS file in the root of the source tree.
 | |
| // -----------------------------------------------------------------------------
 | |
| //
 | |
| // Colorspace utilities.
 | |
| 
 | |
| #ifndef WEBP_SHARPYUV_SHARPYUV_CSP_H_
 | |
| #define WEBP_SHARPYUV_SHARPYUV_CSP_H_
 | |
| 
 | |
| #include "sharpyuv/sharpyuv.h"
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| extern "C" {
 | |
| #endif
 | |
| 
 | |
| // Range of YUV values.
 | |
| typedef enum {
 | |
|   kSharpYuvRangeFull,     // YUV values between [0;255] (for 8 bit)
 | |
|   kSharpYuvRangeLimited   // Y in [16;235], YUV in [16;240] (for 8 bit)
 | |
| } SharpYuvRange;
 | |
| 
 | |
| // Constants that define a YUV color space.
 | |
| typedef struct {
 | |
|   // Kr and Kb are defined such that:
 | |
|   // Y = Kr * r + Kg * g + Kb * b where Kg = 1 - Kr - Kb.
 | |
|   float kr;
 | |
|   float kb;
 | |
|   int bit_depth;  // 8, 10 or 12
 | |
|   SharpYuvRange range;
 | |
| } SharpYuvColorSpace;
 | |
| 
 | |
| // Fills in 'matrix' for the given YUVColorSpace.
 | |
| SHARPYUV_EXTERN void SharpYuvComputeConversionMatrix(
 | |
|     const SharpYuvColorSpace* yuv_color_space,
 | |
|     SharpYuvConversionMatrix* matrix);
 | |
| 
 | |
| // Enums for precomputed conversion matrices.
 | |
| typedef enum {
 | |
|   kSharpYuvMatrixWebp = 0,
 | |
|   kSharpYuvMatrixRec601Limited,
 | |
|   kSharpYuvMatrixRec601Full,
 | |
|   kSharpYuvMatrixRec709Limited,
 | |
|   kSharpYuvMatrixRec709Full,
 | |
|   kSharpYuvMatrixNum
 | |
| } SharpYuvMatrixType;
 | |
| 
 | |
| // Returns a pointer to a matrix for one of the predefined colorspaces.
 | |
| SHARPYUV_EXTERN const SharpYuvConversionMatrix* SharpYuvGetConversionMatrix(
 | |
|     SharpYuvMatrixType matrix_type);
 | |
| 
 | |
| #ifdef __cplusplus
 | |
| }  // extern "C"
 | |
| #endif
 | |
| 
 | |
| #endif  // WEBP_SHARPYUV_SHARPYUV_CSP_H_
 | 
