1#![allow(non_upper_case_globals)]
2use std::ffi::{CString, c_void};
3use std::os::raw::{c_char, c_int};
4use libc::{size_t, c_float};
5
6pub type WebPAuxStats = crate::raw::webp::WebPAuxStats;
12
13pub type WebPBitstreamFeatures = crate::raw::webp::WebPBitstreamFeatures;
15
16pub type WebPConfig = crate::raw::webp::WebPConfig;
18
19pub type WebPDecBuffer = crate::raw::webp::WebPDecBuffer;
21
22pub type WebPDecoderConfig = crate::raw::webp::WebPDecoderConfig;
24
25pub type WebPDecoderOptions = crate::raw::webp::WebPDecoderOptions;
27
28pub type WebPIDecoder = crate::raw::webp::WebPIDecoder;
29
30pub type WebPMemoryWriter = crate::raw::webp::WebPMemoryWriter;
33
34pub type WebPPicture = crate::raw::webp::WebPPicture;
36
37pub type WebPRGBABuffer = crate::raw::webp::WebPRGBABuffer;
39
40pub type WebPYUVABuffer = crate::raw::webp::WebPYUVABuffer;
42
43
44pub type VP8StatusCode = crate::raw::webp::VP8StatusCode;
50
51pub type WebPCSPMode = crate::raw::webp::WEBP_CSP_MODE;
64
65pub type WebPEncCSP = crate::raw::webp::WebPEncCSP;
67
68pub type WebPEncodingError = crate::raw::webp::WebPEncodingError;
70
71pub type WebPImageHint = crate::raw::webp::WebPImageHint;
73
74pub type WebPPreset = crate::raw::webp::WebPPreset;
79
80pub type WebPProgressHook = crate::raw::webp::WebPProgressHook;
86
87pub type WebPWriterFunction = crate::raw::webp::WebPWriterFunction;
93
94pub const MODE_ARGB: WebPCSPMode = crate::raw::webp::WEBP_CSP_MODE_MODE_ARGB;
99pub const MODE_Argb: WebPCSPMode = crate::raw::webp::WEBP_CSP_MODE_MODE_Argb;
100pub const MODE_BGR: WebPCSPMode = crate::raw::webp::WEBP_CSP_MODE_MODE_BGR;
101pub const MODE_BGRA: WebPCSPMode = crate::raw::webp::WEBP_CSP_MODE_MODE_BGRA;
102pub const MODE_LAST: WebPCSPMode = crate::raw::webp::WEBP_CSP_MODE_MODE_LAST;
103pub const MODE_RGB: WebPCSPMode = crate::raw::webp::WEBP_CSP_MODE_MODE_RGB;
104pub const MODE_RGBA: WebPCSPMode = crate::raw::webp::WEBP_CSP_MODE_MODE_RGBA;
105pub const MODE_RGBA_4444: WebPCSPMode = crate::raw::webp::WEBP_CSP_MODE_MODE_RGBA_4444;
106pub const MODE_RGB_565: WebPCSPMode = crate::raw::webp::WEBP_CSP_MODE_MODE_RGB_565;
107pub const MODE_YUV: WebPCSPMode = crate::raw::webp::WEBP_CSP_MODE_MODE_YUV;
108pub const MODE_YUVA: WebPCSPMode = crate::raw::webp::WEBP_CSP_MODE_MODE_YUVA;
109pub const MODE_bgrA: WebPCSPMode = crate::raw::webp::WEBP_CSP_MODE_MODE_bgrA;
110pub const MODE_rgbA: WebPCSPMode = crate::raw::webp::WEBP_CSP_MODE_MODE_rgbA;
111pub const MODE_rgbA_4444: WebPCSPMode = crate::raw::webp::WEBP_CSP_MODE_MODE_rgbA_4444;
112
113pub const WEBP_DECODER_ABI_VERSION: u32 = crate::raw::webp::WEBP_DECODER_ABI_VERSION;
114pub const WEBP_ENCODER_ABI_VERSION: u32 = crate::raw::webp::WEBP_ENCODER_ABI_VERSION;
115
116pub const WEBP_MAX_DIMENSION: u32 = crate::raw::webp::WEBP_MAX_DIMENSION;
117
118pub const WEBP_CSP_ALPHA_BIT: WebPEncCSP = crate::raw::webp::WebPEncCSP_WEBP_CSP_ALPHA_BIT;
119pub const WEBP_CSP_UV_MASK: WebPEncCSP = crate::raw::webp::WebPEncCSP_WEBP_CSP_UV_MASK;
120pub const WEBP_YUV420: WebPEncCSP = crate::raw::webp::WebPEncCSP_WEBP_YUV420;
121pub const WEBP_YUV420A: WebPEncCSP = crate::raw::webp::WebPEncCSP_WEBP_YUV420A;
122
123pub const VP8_ENC_OK: WebPEncodingError = crate::raw::webp::WebPEncodingError_VP8_ENC_OK;
124pub const VP8_ENC_ERROR_OUT_OF_MEMORY: WebPEncodingError = crate::raw::webp::WebPEncodingError_VP8_ENC_ERROR_OUT_OF_MEMORY;
125pub const VP8_ENC_ERROR_BITSTREAM_OUT_OF_MEMORY: WebPEncodingError = crate::raw::webp::WebPEncodingError_VP8_ENC_ERROR_BITSTREAM_OUT_OF_MEMORY;
126pub const VP8_ENC_ERROR_NULL_PARAMETER: WebPEncodingError = crate::raw::webp::WebPEncodingError_VP8_ENC_ERROR_NULL_PARAMETER;
127pub const VP8_ENC_ERROR_INVALID_CONFIGURATION: WebPEncodingError = crate::raw::webp::WebPEncodingError_VP8_ENC_ERROR_INVALID_CONFIGURATION;
128pub const VP8_ENC_ERROR_BAD_DIMENSION: WebPEncodingError = crate::raw::webp::WebPEncodingError_VP8_ENC_ERROR_BAD_DIMENSION;
129pub const VP8_ENC_ERROR_PARTITION_OVERFLOW: WebPEncodingError = crate::raw::webp::WebPEncodingError_VP8_ENC_ERROR_PARTITION_OVERFLOW;
130pub const VP8_ENC_ERROR_BAD_WRITE: WebPEncodingError = crate::raw::webp::WebPEncodingError_VP8_ENC_ERROR_BAD_WRITE;
131pub const VP8_ENC_ERROR_FILE_TOO_BIG: WebPEncodingError = crate::raw::webp::WebPEncodingError_VP8_ENC_ERROR_FILE_TOO_BIG;
132pub const VP8_ENC_ERROR_USER_ABORT: WebPEncodingError = crate::raw::webp::WebPEncodingError_VP8_ENC_ERROR_USER_ABORT;
133pub const VP8_ENC_ERROR_LAST: WebPEncodingError = crate::raw::webp::WebPEncodingError_VP8_ENC_ERROR_LAST;
134pub const VP8_ENC_ERROR_PARTITION0_OVERFLOW: WebPEncodingError = crate::raw::webp::WebPEncodingError_VP8_ENC_ERROR_PARTITION0_OVERFLOW;
135
136pub const WEBP_HINT_DEFAULT: WebPImageHint = crate::raw::webp::WebPImageHint_WEBP_HINT_DEFAULT;
137pub const WEBP_HINT_GRAPH: WebPImageHint = crate::raw::webp::WebPImageHint_WEBP_HINT_GRAPH;
138pub const WEBP_HINT_LAST: WebPImageHint = crate::raw::webp::WebPImageHint_WEBP_HINT_LAST;
139pub const WEBP_HINT_PHOTO: WebPImageHint = crate::raw::webp::WebPImageHint_WEBP_HINT_PHOTO;
140pub const WEBP_HINT_PICTURE: WebPImageHint = crate::raw::webp::WebPImageHint_WEBP_HINT_PICTURE;
141
142pub const WEBP_PRESET_DEFAULT: WebPPreset = crate::raw::webp::WebPPreset_WEBP_PRESET_DEFAULT;
143pub const WEBP_PRESET_DRAWING: WebPPreset = crate::raw::webp::WebPPreset_WEBP_PRESET_DRAWING;
144pub const WEBP_PRESET_ICON: WebPPreset = crate::raw::webp::WebPPreset_WEBP_PRESET_ICON;
145pub const WEBP_PRESET_PHOTO: WebPPreset = crate::raw::webp::WebPPreset_WEBP_PRESET_PHOTO;
146pub const WEBP_PRESET_PICTURE: WebPPreset = crate::raw::webp::WebPPreset_WEBP_PRESET_PICTURE;
147pub const WEBP_PRESET_TEXT: WebPPreset = crate::raw::webp::WebPPreset_WEBP_PRESET_TEXT;
148
149pub unsafe fn webp_blend_alpha(pic: *mut WebPPicture, background_rgb: u32) {
158 crate::raw::webp::WebPBlendAlpha(pic, background_rgb)
159}
160
161pub unsafe fn webp_cleanup_transparent_area(picture: *mut WebPPicture) {
165 crate::raw::webp::WebPCleanupTransparentArea(picture)
166}
167
168pub unsafe fn webp_config_init_internal(
170 arg1: *mut WebPConfig,
171 arg2: WebPPreset,
172 arg3: f32,
173 arg4: ::std::os::raw::c_int,
174) -> c_int {
175 crate::raw::webp::WebPConfigInitInternal(arg1, arg2, arg3, arg4)
176}
177
178pub unsafe fn webp_config_lossless_preset(
186 config: *mut WebPConfig,
187 level: ::std::os::raw::c_int,
188) -> c_int {
189 crate::raw::webp::WebPConfigLosslessPreset(config, level)
190}
191
192pub unsafe fn webp_decode(
198 data: *const u8,
199 data_size: usize,
200 config: *mut WebPDecoderConfig,
201) -> VP8StatusCode {
202 crate::raw::webp::WebPDecode(data, data_size, config)
203}
204
205pub unsafe fn webp_decode_argb(
207 data: *const u8,
208 data_size: usize,
209 width: *mut ::std::os::raw::c_int,
210 height: *mut ::std::os::raw::c_int,
211) -> *mut u8 {
212 crate::raw::webp::WebPDecodeARGB(data, data_size, width, height)
213}
214
215pub unsafe fn webp_decode_argb_into(
216 data: *const u8,
217 data_size: usize,
218 output_buffer: *mut u8,
219 output_buffer_size: usize,
220 output_stride: ::std::os::raw::c_int,
221) -> *mut u8 {
222 crate::raw::webp::WebPDecodeARGBInto(
223 data,
224 data_size,
225 output_buffer,
226 output_buffer_size,
227 output_stride,
228 )
229}
230
231pub unsafe fn webp_decode_bgr(
233 data: *const u8,
234 data_size: usize,
235 width: *mut ::std::os::raw::c_int,
236 height: *mut ::std::os::raw::c_int,
237) -> *mut u8 {
238 crate::raw::webp::WebPDecodeBGR(
239 data,
240 data_size,
241 width,
242 height,
243 )
244}
245
246pub unsafe fn webp_decode_bgra(
248 data: *const u8,
249 data_size: usize,
250 width: *mut ::std::os::raw::c_int,
251 height: *mut ::std::os::raw::c_int,
252) -> *mut u8 {
253 crate::raw::webp::WebPDecodeBGRA(
254 data,
255 data_size,
256 width,
257 height,
258 )
259}
260
261pub unsafe fn webp_decodebgra_into(
262 data: *const u8,
263 data_size: usize,
264 output_buffer: *mut u8,
265 output_buffer_size: usize,
266 output_stride: ::std::os::raw::c_int,
267) -> *mut u8 {
268 crate::raw::webp::WebPDecodeBGRAInto(
269 data,
270 data_size,
271 output_buffer,
272 output_buffer_size,
273 output_stride,
274 )
275}
276
277pub unsafe fn webp_decode_bgr_into(
278 data: *const u8,
279 data_size: usize,
280 output_buffer: *mut u8,
281 output_buffer_size: usize,
282 output_stride: ::std::os::raw::c_int,
283) -> *mut u8 {
284 crate::raw::webp::WebPDecodeBGRInto(
285 data,
286 data_size,
287 output_buffer,
288 output_buffer_size,
289 output_stride,
290 )
291}
292
293pub unsafe fn webp_decode_rgb(
296 data: *const u8,
297 data_size: usize,
298 width: *mut ::std::os::raw::c_int,
299 height: *mut ::std::os::raw::c_int,
300) -> *mut u8 {
301 crate::raw::webp::WebPDecodeRGB(
302 data,
303 data_size,
304 width,
305 height,
306 )
307}
308
309pub unsafe fn webp_decode_rgba(
317 data: *const u8,
318 data_size: usize,
319 width: *mut ::std::os::raw::c_int,
320 height: *mut ::std::os::raw::c_int,
321) -> *mut u8 {
322 crate::raw::webp::WebPDecodeRGBA(
323 data,
324 data_size,
325 width,
326 height,
327 )
328}
329
330pub unsafe fn webp_decode_rgba_into(
341 data: *const u8,
342 data_size: usize,
343 output_buffer: *mut u8,
344 output_buffer_size: usize,
345 output_stride: ::std::os::raw::c_int,
346) -> *mut u8 {
347 crate::raw::webp::WebPDecodeRGBAInto(
348 data,
349 data_size,
350 output_buffer,
351 output_buffer_size,
352 output_stride,
353 )
354}
355
356pub unsafe fn webp_decode_rgb_into(
359 data: *const u8,
360 data_size: usize,
361 output_buffer: *mut u8,
362 output_buffer_size: usize,
363 output_stride: ::std::os::raw::c_int,
364) -> *mut u8 {
365 crate::raw::webp::WebPDecodeRGBInto(
366 data,
367 data_size,
368 output_buffer,
369 output_buffer_size,
370 output_stride,
371 )
372}
373
374pub unsafe fn webp_decode_yuv(
386 data: *const u8,
387 data_size: usize,
388 width: *mut ::std::os::raw::c_int,
389 height: *mut ::std::os::raw::c_int,
390 u: *mut *mut u8,
391 v: *mut *mut u8,
392 stride: *mut ::std::os::raw::c_int,
393 uv_stride: *mut ::std::os::raw::c_int,
394) -> *mut u8 {
395 crate::raw::webp::WebPDecodeYUV(
396 data,
397 data_size,
398 width,
399 height,
400 u,
401 v,
402 stride,
403 uv_stride,
404 )
405}
406
407pub unsafe fn webp_decode_yuv_into(
417 data: *const u8,
418 data_size: usize,
419 luma: *mut u8,
420 luma_size: usize,
421 luma_stride: ::std::os::raw::c_int,
422 u: *mut u8,
423 u_size: usize,
424 u_stride: ::std::os::raw::c_int,
425 v: *mut u8,
426 v_size: usize,
427 v_stride: ::std::os::raw::c_int,
428) -> *mut u8 {
429 crate::raw::webp::WebPDecodeYUVInto(
430 data,
431 data_size,
432 luma,
433 luma_size,
434 luma_stride,
435 u,
436 u_size,
437 u_stride,
438 v,
439 v_size,
440 v_stride,
441 )
442}
443
444pub unsafe fn webp_encode(
457 config: *const WebPConfig,
458 picture: *mut WebPPicture,
459) -> c_int {
460 crate::raw::webp::WebPEncode(config, picture)
461}
462
463pub unsafe fn webp_encode_bgr(
465 bgr: *const u8,
466 width: ::std::os::raw::c_int,
467 height: ::std::os::raw::c_int,
468 stride: ::std::os::raw::c_int,
469 quality_factor: f32,
470 output: *mut *mut u8,
471) -> usize {
472 crate::raw::webp::WebPEncodeBGR(
473 bgr,
474 width,
475 height,
476 stride,
477 quality_factor,
478 output,
479 )
480}
481
482pub unsafe fn webp_encode_bgra(
484 bgra: *const u8,
485 width: ::std::os::raw::c_int,
486 height: ::std::os::raw::c_int,
487 stride: ::std::os::raw::c_int,
488 quality_factor: f32,
489 output: *mut *mut u8,
490) -> usize {
491 crate::raw::webp::WebPEncodeBGRA(
492 bgra,
493 width,
494 height,
495 stride,
496 quality_factor,
497 output,
498 )
499}
500
501pub unsafe fn webp_encode_lossless_bgr(
503 bgr: *const u8,
504 width: ::std::os::raw::c_int,
505 height: ::std::os::raw::c_int,
506 stride: ::std::os::raw::c_int,
507 output: *mut *mut u8,
508) -> usize {
509 crate::raw::webp::WebPEncodeLosslessBGR(
510 bgr,
511 width,
512 height,
513 stride,
514 output,
515 )
516}
517
518pub unsafe fn webp_encode_lossless_bgra(
520 rgba: *const u8,
521 width: ::std::os::raw::c_int,
522 height: ::std::os::raw::c_int,
523 stride: ::std::os::raw::c_int,
524 output: *mut *mut u8,
525) -> usize {
526 crate::raw::webp::WebPEncodeLosslessBGRA(
527 rgba,
528 width,
529 height,
530 stride,
531 output,
532 )
533}
534
535pub unsafe fn webp_encode_lossless_rgb(
537 rgb: *const u8,
538 width: ::std::os::raw::c_int,
539 height: ::std::os::raw::c_int,
540 stride: ::std::os::raw::c_int,
541 output: *mut *mut u8,
542) -> usize {
543 crate::raw::webp::WebPEncodeLosslessRGB(
544 rgb,
545 width,
546 height,
547 stride,
548 output,
549 )
550}
551
552pub unsafe fn webp_encode_lossless_rgba(
554 rgba: *const u8,
555 width: ::std::os::raw::c_int,
556 height: ::std::os::raw::c_int,
557 stride: ::std::os::raw::c_int,
558 output: *mut *mut u8,
559) -> usize {
560 crate::raw::webp::WebPEncodeLosslessRGBA(
561 rgba,
562 width,
563 height,
564 stride,
565 output,
566 )
567}
568
569pub unsafe fn webp_encode_rgb(
571 rgb: *const u8,
572 width: ::std::os::raw::c_int,
573 height: ::std::os::raw::c_int,
574 stride: ::std::os::raw::c_int,
575 quality_factor: f32,
576 output: *mut *mut u8,
577) -> usize {
578 crate::raw::webp::WebPEncodeRGB(
579 rgb,
580 width,
581 height,
582 stride,
583 quality_factor,
584 output,
585 )
586}
587
588pub unsafe fn webp_encode_rgba(
590 rgba: *const u8,
591 width: ::std::os::raw::c_int,
592 height: ::std::os::raw::c_int,
593 stride: ::std::os::raw::c_int,
594 quality_factor: f32,
595 output: *mut *mut u8,
596) -> usize {
597 crate::raw::webp::WebPEncodeRGBA(
598 rgba,
599 width,
600 height,
601 stride,
602 quality_factor,
603 output,
604 )
605}
606
607pub unsafe fn webp_free(ptr: *mut ::std::os::raw::c_void) {
609 crate::raw::webp::WebPFree(ptr)
610}
611
612pub unsafe fn webp_free_dec_buffer(buffer: *mut WebPDecBuffer) {
616 crate::raw::webp::WebPFreeDecBuffer(buffer)
617}
618
619pub unsafe fn webp_get_decoder_version() -> c_int {
624 crate::raw::webp::WebPGetDecoderVersion()
625}
626
627pub unsafe fn webp_get_encoder_version() -> c_int {
632 crate::raw::webp::WebPGetEncoderVersion()
633}
634
635pub unsafe fn webp_get_features_internal(
637 arg1: *const u8,
638 arg2: usize,
639 arg3: *mut WebPBitstreamFeatures,
640 arg4: ::std::os::raw::c_int,
641) -> VP8StatusCode {
642 crate::raw::webp::WebPGetFeaturesInternal(
643 arg1,
644 arg2,
645 arg3,
646 arg4,
647 )
648}
649
650pub unsafe fn webp_get_info(
662 data: *const u8,
663 data_size: usize,
664 width: *mut ::std::os::raw::c_int,
665 height: *mut ::std::os::raw::c_int,
666) -> c_int {
667 crate::raw::webp::WebPGetInfo(
668 data,
669 data_size,
670 width,
671 height,
672 )
673}
674
675pub unsafe fn webp_iappend(
681 idec: *mut WebPIDecoder,
682 data: *const u8,
683 data_size: usize
684) -> VP8StatusCode {
685 crate::raw::webp::WebPIAppend(
686 idec,
687 data,
688 data_size,
689 )
690}
691
692pub unsafe fn webp_idec_get_rgb(
702 idec: *const WebPIDecoder,
703 last_y: *mut ::std::os::raw::c_int,
704 width: *mut ::std::os::raw::c_int,
705 height: *mut ::std::os::raw::c_int,
706 stride: *mut ::std::os::raw::c_int,
707) -> *mut u8 {
708 crate::raw::webp::WebPIDecGetRGB(
709 idec,
710 last_y,
711 width,
712 height,
713 stride,
714 )
715}
716
717pub unsafe fn webp_idec_get_yuva(
723 idec: *const WebPIDecoder,
724 last_y: *mut ::std::os::raw::c_int,
725 u: *mut *mut u8,
726 v: *mut *mut u8,
727 a: *mut *mut u8,
728 width: *mut ::std::os::raw::c_int,
729 height: *mut ::std::os::raw::c_int,
730 stride: *mut ::std::os::raw::c_int,
731 uv_stride: *mut ::std::os::raw::c_int,
732 a_stride: *mut ::std::os::raw::c_int,
733) -> *mut u8 {
734 crate::raw::webp::WebPIDecGetYUVA(
735 idec,
736 last_y,
737 u,
738 v,
739 a,
740 width,
741 height,
742 stride,
743 uv_stride,
744 a_stride,
745 )
746}
747
748pub unsafe fn webp_idecode(
762 data: *const u8,
763 data_size: usize,
764 config: *mut WebPDecoderConfig,
765) -> *mut WebPIDecoder {
766 crate::raw::webp::WebPIDecode(
767 data,
768 data_size,
769 config,
770 )
771}
772
773pub unsafe fn webp_idecoded_area(
781 idec: *const WebPIDecoder,
782 left: *mut ::std::os::raw::c_int,
783 top: *mut ::std::os::raw::c_int,
784 width: *mut ::std::os::raw::c_int,
785 height: *mut ::std::os::raw::c_int,
786) -> *const WebPDecBuffer {
787 crate::raw::webp::WebPIDecodedArea(
788 idec,
789 left,
790 top,
791 width,
792 height,
793 )
794}
795
796pub unsafe fn webp_idelete(idec: *mut WebPIDecoder) {
801 crate::raw::webp::WebPIDelete(idec)
802}
803
804pub unsafe fn webp_inew_decoder(output_buffer: *mut WebPDecBuffer) -> *mut WebPIDecoder {
818 crate::raw::webp::WebPINewDecoder(output_buffer)
819}
820
821pub unsafe fn webp_inew_rgb(
834 csp: WebPCSPMode,
835 output_buffer: *mut u8,
836 output_buffer_size: usize,
837 output_stride: ::std::os::raw::c_int,
838) -> *mut WebPIDecoder {
839 crate::raw::webp::WebPINewRGB(
840 csp,
841 output_buffer,
842 output_buffer_size,
843 output_stride,
844 )
845}
846
847pub unsafe fn webp_inew_yuv(
851 luma: *mut u8,
852 luma_size: usize,
853 luma_stride: ::std::os::raw::c_int,
854 u: *mut u8,
855 u_size: usize,
856 u_stride: ::std::os::raw::c_int,
857 v: *mut u8,
858 v_size: usize,
859 v_stride: ::std::os::raw::c_int,
860) -> *mut WebPIDecoder {
861 crate::raw::webp::WebPINewYUV(
862 luma,
863 luma_size,
864 luma_stride,
865 u,
866 u_size,
867 u_stride,
868 v,
869 v_size,
870 v_stride,
871 )
872}
873
874pub unsafe fn webp_inew_yuva(
888 luma: *mut u8,
889 luma_size: usize,
890 luma_stride: ::std::os::raw::c_int,
891 u: *mut u8,
892 u_size: usize,
893 u_stride: ::std::os::raw::c_int,
894 v: *mut u8,
895 v_size: usize,
896 v_stride: ::std::os::raw::c_int,
897 a: *mut u8,
898 a_size: usize,
899 a_stride: ::std::os::raw::c_int,
900) -> *mut WebPIDecoder {
901 crate::raw::webp::WebPINewYUVA(
902 luma,
903 luma_size,
904 luma_stride,
905 u,
906 u_size,
907 u_stride,
908 v,
909 v_size,
910 v_stride,
911 a,
912 a_size,
913 a_stride,
914 )
915}
916
917pub unsafe fn webp_iupdate(
925 idec: *mut WebPIDecoder,
926 data: *const u8,
927 data_size: usize,
928) -> VP8StatusCode {
929 crate::raw::webp::WebPIUpdate(idec, data, data_size)
930}
931
932pub unsafe fn webp_init_dec_buffer_internal(
934 arg1: *mut WebPDecBuffer,
935 arg2: ::std::os::raw::c_int,
936) -> c_int {
937 crate::raw::webp::WebPInitDecBufferInternal(arg1, arg2)
938}
939
940pub unsafe fn webp_init_decoder_config_internal(
942 arg1: *mut WebPDecoderConfig,
943 arg2: ::std::os::raw::c_int,
944) -> c_int {
945 crate::raw::webp::WebPInitDecoderConfigInternal(arg1, arg2)
946}
947
948pub unsafe fn webp_memory_write(
951 data: *const u8,
952 data_size: usize,
953 picture: *const WebPPicture,
954) -> c_int {
955 crate::raw::webp::WebPMemoryWrite(data, data_size, picture)
956}
957
958pub unsafe fn webp_memory_writer_clear(writer: *mut WebPMemoryWriter) {
963 crate::raw::webp::WebPMemoryWriterClear(writer)
964}
965
966pub unsafe fn webp_memory_writer_init(writer: *mut WebPMemoryWriter) {
968 crate::raw::webp::WebPMemoryWriterInit(writer)
969}
970
971pub unsafe fn webp_picture_argb_to_yuva(
980 picture: *mut WebPPicture,
981 arg1: WebPEncCSP,
982) -> c_int {
983 crate::raw::webp::WebPPictureARGBToYUVA(picture, arg1)
984}
985
986pub unsafe fn webp_picture_argb_to_yuva_dithered(
992 picture: *mut WebPPicture,
993 colorspace: WebPEncCSP,
994 dithering: f32,
995) -> c_int {
996 crate::raw::webp::WebPPictureARGBToYUVADithered(
997 picture,
998 colorspace,
999 dithering,
1000 )
1001}
1002
1003
1004pub unsafe fn webp_picture_alloc(picture: *mut WebPPicture) -> c_int {
1010 crate::raw::webp::WebPPictureAlloc(picture)
1011}
1012
1013pub unsafe fn webp_picture_copy(src: *const WebPPicture, dst: *mut WebPPicture) -> c_int {
1020 crate::raw::webp::WebPPictureCopy(src, dst)
1021}
1022
1023pub unsafe fn webp_picture_crop(
1033 picture: *mut WebPPicture,
1034 left: ::std::os::raw::c_int,
1035 top: ::std::os::raw::c_int,
1036 width: ::std::os::raw::c_int,
1037 height: ::std::os::raw::c_int,
1038) -> c_int {
1039 crate::raw::webp::WebPPictureCrop(
1040 picture,
1041 left,
1042 top,
1043 width,
1044 height,
1045 )
1046}
1047
1048pub unsafe fn webp_picture_distortion(
1056 src: *const WebPPicture,
1057 ref_: *const WebPPicture,
1058 metric_type: ::std::os::raw::c_int,
1059 result: *mut f32,
1060) -> c_int {
1061 crate::raw::webp::WebPPictureDistortion(
1062 src,
1063 ref_,
1064 metric_type,
1065 result,
1066 )
1067}
1068
1069pub unsafe fn webp_picture_free(picture: *mut WebPPicture) {
1076 crate::raw::webp::WebPPictureFree(picture)
1077}
1078
1079pub unsafe fn webp_picture_has_transparency(picture: *const WebPPicture) -> c_int {
1084 crate::raw::webp::WebPPictureHasTransparency(picture)
1085}
1086
1087pub unsafe fn webp_picture_import_bgr(
1088 picture: *mut WebPPicture,
1089 bgr: *const u8,
1090 bgr_stride: ::std::os::raw::c_int,
1091) -> c_int {
1092 crate::raw::webp::WebPPictureImportBGR(
1093 picture,
1094 bgr,
1095 bgr_stride,
1096 )
1097}
1098
1099pub unsafe fn webp_picture_import_bgra(
1100 picture: *mut WebPPicture,
1101 bgra: *const u8,
1102 bgra_stride: ::std::os::raw::c_int,
1103) -> c_int {
1104 crate::raw::webp::WebPPictureImportBGRA(
1105 picture,
1106 bgra,
1107 bgra_stride,
1108 )
1109}
1110
1111pub unsafe fn webp_picture_import_bgrx(
1112 picture: *mut WebPPicture,
1113 bgrx: *const u8,
1114 bgrx_stride: ::std::os::raw::c_int,
1115) -> c_int {
1116 crate::raw::webp::WebPPictureImportBGRX(
1117 picture,
1118 bgrx,
1119 bgrx_stride,
1120 )
1121}
1122
1123pub unsafe fn webp_picture_import_rgb(
1129 picture: *mut WebPPicture,
1130 rgb: *const u8,
1131 rgb_stride: ::std::os::raw::c_int,
1132) -> c_int {
1133 crate::raw::webp::WebPPictureImportRGB(
1134 picture,
1135 rgb,
1136 rgb_stride,
1137 )
1138}
1139
1140pub unsafe fn webp_picture_import_rgba(
1142 picture: *mut WebPPicture,
1143 rgba: *const u8,
1144 rgba_stride: ::std::os::raw::c_int,
1145) -> c_int {
1146 crate::raw::webp::WebPPictureImportRGBA(
1147 picture,
1148 rgba,
1149 rgba_stride,
1150 )
1151}
1152
1153pub unsafe fn webp_picture_import_rgbx(
1159 picture: *mut WebPPicture,
1160 rgbx: *const u8,
1161 rgbx_stride: ::std::os::raw::c_int,
1162) -> c_int {
1163 crate::raw::webp::WebPPictureImportRGBX(
1164 picture,
1165 rgbx,
1166 rgbx_stride,
1167 )
1168}
1169
1170pub unsafe fn webp_picture_init_internal(
1172 arg1: *mut WebPPicture,
1173 arg2: ::std::os::raw::c_int,
1174) -> c_int {
1175 crate::raw::webp::WebPPictureInitInternal(arg1, arg2)
1176}
1177
1178pub unsafe fn webp_picture_is_view(picture: *const WebPPicture) -> c_int {
1181 crate::raw::webp::WebPPictureIsView(picture)
1182}
1183
1184pub unsafe fn webp_picture_rescale(
1191 pic: *mut WebPPicture,
1192 width: ::std::os::raw::c_int,
1193 height: ::std::os::raw::c_int,
1194) -> c_int {
1195 crate::raw::webp::WebPPictureRescale(pic, width, height)
1196}
1197
1198pub unsafe fn webp_picture_sharp_argb_to_yuva(picture: *mut WebPPicture) -> c_int {
1205 crate::raw::webp::WebPPictureSharpARGBToYUVA(picture)
1206}
1207
1208pub unsafe fn webp_picture_smart_argb_to_yuva(picture: *mut WebPPicture) -> c_int {
1210 crate::raw::webp::WebPPictureSmartARGBToYUVA(picture)
1211}
1212
1213pub unsafe fn webp_picture_view(
1227 src: *const WebPPicture,
1228 left: ::std::os::raw::c_int,
1229 top: ::std::os::raw::c_int,
1230 width: ::std::os::raw::c_int,
1231 height: ::std::os::raw::c_int,
1232 dst: *mut WebPPicture,
1233) -> c_int {
1234 crate::raw::webp::WebPPictureView(
1235 src,
1236 left,
1237 top,
1238 width,
1239 height,
1240 dst,
1241 )
1242}
1243
1244pub unsafe fn webp_picture_yuva_to_argb(picture: *mut WebPPicture) -> c_int {
1252 crate::raw::webp::WebPPictureYUVAToARGB(picture)
1253}
1254
1255pub unsafe fn webp_plane_distortion(
1264 src: *const u8,
1265 src_stride: usize,
1266 ref_: *const u8,
1267 ref_stride: usize,
1268 width: ::std::os::raw::c_int,
1269 height: ::std::os::raw::c_int,
1270 x_step: usize,
1271 type_: ::std::os::raw::c_int,
1272 distortion: *mut f32,
1273 result: *mut f32,
1274) -> c_int {
1275 crate::raw::webp::WebPPlaneDistortion(
1276 src,
1277 src_stride,
1278 ref_,
1279 ref_stride,
1280 width,
1281 height,
1282 x_step,
1283 type_,
1284 distortion,
1285 result,
1286 )
1287}
1288
1289pub unsafe fn webp_validate_config(config: *const WebPConfig) -> c_int {
1292 crate::raw::webp::WebPValidateConfig(config)
1293}
1294
1295#[link(name = "cbits")]
1296extern "C" {
1297 pub fn webp_config_init(config: *mut WebPConfig) -> c_int;
1304
1305 pub fn webp_config_preset(
1311 config: *mut WebPConfig,
1312 preset: WebPPreset,
1313 quality: c_float,
1314 ) -> c_int;
1315
1316 pub fn webp_picture_init(picture: *mut WebPPicture) -> c_int;
1323}
1324
1325
1326mod test {
1327 use super::*;
1328
1329 #[test]
1330 fn test_create_webp_config() {
1331 let mut config: WebPConfig = unsafe {std::mem::zeroed()};
1332 unsafe {
1333 assert!(webp_config_init(&mut config) != 0);
1334 assert!(webp_validate_config(&mut config) != 0);
1335 };
1336 }
1337
1338 #[test]
1339 fn test_create_webp_picture() {
1340 let mut picture: WebPPicture = unsafe {std::mem::zeroed()};
1341 unsafe {
1342 webp_picture_init(&mut picture);
1343 };
1344 }
1345}