mirror of
https://github.com/webmproject/libwebp.git
synced 2025-08-28 06:42:27 +02:00
Let SharpArgbToYuv caller pass in an RGB>YUV conversion matrix.
Change-Id: I4ed2dfc00ce63361abd49c693f31f307e0b0262f
This commit is contained in:
@@ -18,6 +18,20 @@
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
// RGB to YUV conversion matrix, in 16 bit fixed point.
|
||||
// y = rgb_to_y[0] * r + rgb_to_y[1] * g + rgb_to_y[2] * b + rgb_to_y[3]
|
||||
// u = rgb_to_u[0] * r + rgb_to_u[1] * g + rgb_to_u[2] * b + rgb_to_u[3]
|
||||
// v = rgb_to_v[0] * r + rgb_to_v[1] * g + rgb_to_v[2] * b + rgb_to_v[3]
|
||||
// Then y, u and v values are divided by 1<<16 and rounded.
|
||||
typedef struct {
|
||||
int rgb_to_y[4];
|
||||
int rgb_to_u[4];
|
||||
int rgb_to_v[4];
|
||||
} SharpYuvConversionMatrix;
|
||||
|
||||
// Returns the RGB to YUV matrix used by WebP.
|
||||
const SharpYuvConversionMatrix* SharpYuvGetWebpMatrix(void);
|
||||
|
||||
// Converts RGB to YUV420 using a downsampling algorithm that minimizes
|
||||
// artefacts caused by chroma subsampling.
|
||||
// This is slower than standard downsampling (averaging of 4 UV values).
|
||||
@@ -27,11 +41,12 @@ extern "C" {
|
||||
// TODO(maryla): add 10 bits and handling of various colorspaces. Add YUV444 to
|
||||
// YUV420 conversion. Maybe also add 422 support (it's rarely used in practice,
|
||||
// especially for images).
|
||||
int SharpArgbToYuv(const uint8_t* r_ptr, const uint8_t* g_ptr,
|
||||
const uint8_t* b_ptr, int step, int rgb_stride,
|
||||
uint8_t* dst_y, int dst_stride_y, uint8_t* dst_u,
|
||||
int dst_stride_u, uint8_t* dst_v, int dst_stride_v,
|
||||
int width, int height);
|
||||
int SharpYuvConvert(const uint8_t* r_ptr, const uint8_t* g_ptr,
|
||||
const uint8_t* b_ptr, int step, int rgb_stride,
|
||||
uint8_t* dst_y, int dst_stride_y, uint8_t* dst_u,
|
||||
int dst_stride_u, uint8_t* dst_v, int dst_stride_v,
|
||||
int width, int height,
|
||||
const SharpYuvConversionMatrix* yuv_matrix);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} // extern "C"
|
||||
|
Reference in New Issue
Block a user