14 #ifndef WEBP_WEBP_ENCODE_H_ 15 #define WEBP_WEBP_ENCODE_H_ 23 #define WEBP_ENCODER_ABI_VERSION 0x0206 // MAJOR(8b) + MINOR(8b) 38 WEBP_EXTERN(
int) WebPGetEncoderVersion(
void);
49 WEBP_EXTERN(
size_t) WebPEncodeRGB(const uint8_t* rgb,
50 int width,
int height,
int stride,
51 float quality_factor, uint8_t** output);
52 WEBP_EXTERN(
size_t) WebPEncodeBGR(const uint8_t* bgr,
53 int width,
int height,
int stride,
54 float quality_factor, uint8_t** output);
55 WEBP_EXTERN(
size_t) WebPEncodeRGBA(const uint8_t* rgba,
56 int width,
int height,
int stride,
57 float quality_factor, uint8_t** output);
58 WEBP_EXTERN(
size_t) WebPEncodeBGRA(const uint8_t* bgra,
59 int width,
int height,
int stride,
60 float quality_factor, uint8_t** output);
65 WEBP_EXTERN(
size_t) WebPEncodeLosslessRGB(const uint8_t* rgb,
66 int width,
int height,
int stride,
68 WEBP_EXTERN(
size_t) WebPEncodeLosslessBGR(const uint8_t* bgr,
69 int width,
int height,
int stride,
71 WEBP_EXTERN(
size_t) WebPEncodeLosslessRGBA(const uint8_t* rgba,
72 int width,
int height,
int stride,
74 WEBP_EXTERN(
size_t) WebPEncodeLosslessBGRA(const uint8_t* bgra,
75 int width,
int height,
int stride,
82 typedef enum WebPImageHint {
83 WEBP_HINT_DEFAULT = 0,
96 WebPImageHint image_hint;
106 int filter_sharpness;
110 int alpha_compression;
127 int emulate_jpeg_size;
142 typedef enum WebPPreset {
143 WEBP_PRESET_DEFAULT = 0,
152 WEBP_EXTERN(
int) WebPConfigInitInternal(
WebPConfig*, WebPPreset,
float,
int);
159 return WebPConfigInitInternal(config, WEBP_PRESET_DEFAULT, 75.f,
160 WEBP_ENCODER_ABI_VERSION);
167 static WEBP_INLINE
int WebPConfigPreset(
WebPConfig* config,
168 WebPPreset preset,
float quality) {
169 return WebPConfigInitInternal(config, preset, quality,
170 WEBP_ENCODER_ABI_VERSION);
179 WEBP_EXTERN(
int) WebPConfigLosslessPreset(
WebPConfig* config,
int level);
183 WEBP_EXTERN(
int) WebPValidateConfig(
const WebPConfig* config);
196 int residual_bytes[3][4];
199 int segment_quant[4];
200 int segment_level[4];
206 uint32_t lossless_features;
213 int lossless_hdr_size;
214 int lossless_data_size;
222 typedef int (*WebPWriterFunction)(
const uint8_t* data,
size_t data_size,
243 WEBP_EXTERN(
int) WebPMemoryWrite(
const uint8_t* data,
size_t data_size,
249 typedef int (*WebPProgressHook)(
int percent,
const WebPPicture* picture);
252 typedef enum WebPEncCSP {
256 WEBP_CSP_UV_MASK = 3,
257 WEBP_CSP_ALPHA_BIT = 4
261 typedef enum WebPEncodingError {
263 VP8_ENC_ERROR_OUT_OF_MEMORY,
264 VP8_ENC_ERROR_BITSTREAM_OUT_OF_MEMORY,
265 VP8_ENC_ERROR_NULL_PARAMETER,
266 VP8_ENC_ERROR_INVALID_CONFIGURATION,
267 VP8_ENC_ERROR_BAD_DIMENSION,
268 VP8_ENC_ERROR_PARTITION0_OVERFLOW,
269 VP8_ENC_ERROR_PARTITION_OVERFLOW,
270 VP8_ENC_ERROR_BAD_WRITE,
271 VP8_ENC_ERROR_FILE_TOO_BIG,
272 VP8_ENC_ERROR_USER_ABORT,
277 #define WEBP_MAX_DIMENSION 16383 290 WebPEncCSP colorspace;
293 int y_stride, uv_stride;
306 WebPWriterFunction writer;
325 WebPEncodingError error_code;
328 WebPProgressHook progress_hook;
336 uint8_t *pad4, *pad5;
347 WEBP_EXTERN(
int) WebPPictureInitInternal(
WebPPicture*,
int);
353 static WEBP_INLINE
int WebPPictureInit(
WebPPicture* picture) {
354 return WebPPictureInitInternal(picture, WEBP_ENCODER_ABI_VERSION);
364 WEBP_EXTERN(
int) WebPPictureAlloc(
WebPPicture* picture);
371 WEBP_EXTERN(
void) WebPPictureFree(
WebPPicture* picture);
383 WEBP_EXTERN(
int) WebPPictureDistortion(
396 WEBP_EXTERN(
int) WebPPictureCrop(
WebPPicture* picture,
397 int left,
int top,
int width,
int height);
410 WEBP_EXTERN(
int) WebPPictureView(
const WebPPicture* src,
411 int left,
int top,
int width,
int height,
416 WEBP_EXTERN(
int) WebPPictureIsView(
const WebPPicture* picture);
423 WEBP_EXTERN(
int) WebPPictureRescale(
WebPPicture* pic,
int width,
int height);
429 WEBP_EXTERN(
int) WebPPictureImportRGB(
430 WebPPicture* picture,
const uint8_t* rgb,
int rgb_stride);
432 WEBP_EXTERN(
int) WebPPictureImportRGBA(
433 WebPPicture* picture,
const uint8_t* rgba,
int rgba_stride);
437 WEBP_EXTERN(
int) WebPPictureImportRGBX(
438 WebPPicture* picture,
const uint8_t* rgbx,
int rgbx_stride);
441 WEBP_EXTERN(
int) WebPPictureImportBGR(
442 WebPPicture* picture,
const uint8_t* bgr,
int bgr_stride);
443 WEBP_EXTERN(
int) WebPPictureImportBGRA(
444 WebPPicture* picture,
const uint8_t* bgra,
int bgra_stride);
445 WEBP_EXTERN(
int) WebPPictureImportBGRX(
446 WebPPicture* picture,
const uint8_t* bgrx,
int bgrx_stride);
454 WEBP_EXTERN(
int) WebPPictureARGBToYUVA(
WebPPicture* picture,
461 WEBP_EXTERN(
int) WebPPictureARGBToYUVADithered(
462 WebPPicture* picture, WebPEncCSP colorspace,
float dithering);
469 WEBP_EXTERN(
int) WebPPictureSmartARGBToYUVA(
WebPPicture* picture);
477 WEBP_EXTERN(
int) WebPPictureYUVAToARGB(
WebPPicture* picture);
482 WEBP_EXTERN(
void) WebPCleanupTransparentArea(
WebPPicture* picture);
487 WEBP_EXTERN(
int) WebPPictureHasTransparency(
const WebPPicture* picture);
492 WEBP_EXTERN(
void) WebPBlendAlpha(
WebPPicture* pic, uint32_t background_rgb);
Definition: deflate.c:117