pub const WEBP_ENCODER_ABI_VERSION: u32 = 528;
pub const WEBP_MAX_DIMENSION: u32 = 16383;
pub const WEBP_DECODER_ABI_VERSION: u32 = 528;
pub const WEBP_MUX_ABI_VERSION: u32 = 265;
pub const WEBP_DEMUX_ABI_VERSION: u32 = 263;
unsafe extern "C" {
pub fn WebPMalloc(size: usize) -> *mut ::core::ffi::c_void;
}
unsafe extern "C" {
pub fn WebPFree(ptr: *mut ::core::ffi::c_void);
}
unsafe extern "C" {
pub fn WebPGetEncoderVersion() -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPEncodeRGB(
rgb: *const u8,
width: ::core::ffi::c_int,
height: ::core::ffi::c_int,
stride: ::core::ffi::c_int,
quality_factor: f32,
output: *mut *mut u8,
) -> usize;
}
unsafe extern "C" {
pub fn WebPEncodeBGR(
bgr: *const u8,
width: ::core::ffi::c_int,
height: ::core::ffi::c_int,
stride: ::core::ffi::c_int,
quality_factor: f32,
output: *mut *mut u8,
) -> usize;
}
unsafe extern "C" {
pub fn WebPEncodeRGBA(
rgba: *const u8,
width: ::core::ffi::c_int,
height: ::core::ffi::c_int,
stride: ::core::ffi::c_int,
quality_factor: f32,
output: *mut *mut u8,
) -> usize;
}
unsafe extern "C" {
pub fn WebPEncodeBGRA(
bgra: *const u8,
width: ::core::ffi::c_int,
height: ::core::ffi::c_int,
stride: ::core::ffi::c_int,
quality_factor: f32,
output: *mut *mut u8,
) -> usize;
}
unsafe extern "C" {
pub fn WebPEncodeLosslessRGB(
rgb: *const u8,
width: ::core::ffi::c_int,
height: ::core::ffi::c_int,
stride: ::core::ffi::c_int,
output: *mut *mut u8,
) -> usize;
}
unsafe extern "C" {
pub fn WebPEncodeLosslessBGR(
bgr: *const u8,
width: ::core::ffi::c_int,
height: ::core::ffi::c_int,
stride: ::core::ffi::c_int,
output: *mut *mut u8,
) -> usize;
}
unsafe extern "C" {
pub fn WebPEncodeLosslessRGBA(
rgba: *const u8,
width: ::core::ffi::c_int,
height: ::core::ffi::c_int,
stride: ::core::ffi::c_int,
output: *mut *mut u8,
) -> usize;
}
unsafe extern "C" {
pub fn WebPEncodeLosslessBGRA(
bgra: *const u8,
width: ::core::ffi::c_int,
height: ::core::ffi::c_int,
stride: ::core::ffi::c_int,
output: *mut *mut u8,
) -> usize;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum WebPImageHint {
WEBP_HINT_DEFAULT = 0,
WEBP_HINT_PICTURE = 1,
WEBP_HINT_PHOTO = 2,
WEBP_HINT_GRAPH = 3,
WEBP_HINT_LAST = 4,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPConfig {
pub lossless: ::core::ffi::c_int,
pub quality: f32,
pub method: ::core::ffi::c_int,
pub image_hint: WebPImageHint,
pub target_size: ::core::ffi::c_int,
pub target_PSNR: f32,
pub segments: ::core::ffi::c_int,
pub sns_strength: ::core::ffi::c_int,
pub filter_strength: ::core::ffi::c_int,
pub filter_sharpness: ::core::ffi::c_int,
pub filter_type: ::core::ffi::c_int,
pub autofilter: ::core::ffi::c_int,
pub alpha_compression: ::core::ffi::c_int,
pub alpha_filtering: ::core::ffi::c_int,
pub alpha_quality: ::core::ffi::c_int,
pub pass: ::core::ffi::c_int,
pub show_compressed: ::core::ffi::c_int,
pub preprocessing: ::core::ffi::c_int,
pub partitions: ::core::ffi::c_int,
pub partition_limit: ::core::ffi::c_int,
pub emulate_jpeg_size: ::core::ffi::c_int,
pub thread_level: ::core::ffi::c_int,
pub low_memory: ::core::ffi::c_int,
pub near_lossless: ::core::ffi::c_int,
pub exact: ::core::ffi::c_int,
pub use_delta_palette: ::core::ffi::c_int,
pub use_sharp_yuv: ::core::ffi::c_int,
pub qmin: ::core::ffi::c_int,
pub qmax: ::core::ffi::c_int,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum WebPPreset {
WEBP_PRESET_DEFAULT = 0,
WEBP_PRESET_PICTURE = 1,
WEBP_PRESET_PHOTO = 2,
WEBP_PRESET_DRAWING = 3,
WEBP_PRESET_ICON = 4,
WEBP_PRESET_TEXT = 5,
}
unsafe extern "C" {
pub fn WebPConfigInitInternal(
arg1: *mut WebPConfig,
arg2: WebPPreset,
arg3: f32,
arg4: ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPConfigLosslessPreset(
config: *mut WebPConfig,
level: ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPValidateConfig(config: *const WebPConfig) -> ::core::ffi::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPAuxStats {
pub coded_size: ::core::ffi::c_int,
pub PSNR: [f32; 5usize],
pub block_count: [::core::ffi::c_int; 3usize],
pub header_bytes: [::core::ffi::c_int; 2usize],
pub residual_bytes: [[::core::ffi::c_int; 4usize]; 3usize],
pub segment_size: [::core::ffi::c_int; 4usize],
pub segment_quant: [::core::ffi::c_int; 4usize],
pub segment_level: [::core::ffi::c_int; 4usize],
pub alpha_data_size: ::core::ffi::c_int,
pub layer_data_size: ::core::ffi::c_int,
pub lossless_features: u32,
pub histogram_bits: ::core::ffi::c_int,
pub transform_bits: ::core::ffi::c_int,
pub cache_bits: ::core::ffi::c_int,
pub palette_size: ::core::ffi::c_int,
pub lossless_size: ::core::ffi::c_int,
pub lossless_hdr_size: ::core::ffi::c_int,
pub lossless_data_size: ::core::ffi::c_int,
pub cross_color_transform_bits: ::core::ffi::c_int,
pub pad: [u32; 1usize],
}
pub type WebPWriterFunction = ::core::option::Option<
unsafe extern "C" fn(
data: *const u8,
data_size: usize,
picture: *const WebPPicture,
) -> ::core::ffi::c_int,
>;
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPMemoryWriter {
pub mem: *mut u8,
pub size: usize,
pub max_size: usize,
pub pad: [u32; 1usize],
}
unsafe extern "C" {
pub fn WebPMemoryWriterInit(writer: *mut WebPMemoryWriter);
}
unsafe extern "C" {
pub fn WebPMemoryWriterClear(writer: *mut WebPMemoryWriter);
}
unsafe extern "C" {
pub fn WebPMemoryWrite(
data: *const u8,
data_size: usize,
picture: *const WebPPicture,
) -> ::core::ffi::c_int;
}
pub type WebPProgressHook = ::core::option::Option<
unsafe extern "C" fn(
percent: ::core::ffi::c_int,
picture: *const WebPPicture,
) -> ::core::ffi::c_int,
>;
impl WebPEncCSP {
pub const WEBP_CSP_ALPHA_BIT: WebPEncCSP = WebPEncCSP::WEBP_YUV420A;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum WebPEncCSP {
WEBP_YUV420 = 0,
WEBP_YUV420A = 4,
WEBP_CSP_UV_MASK = 3,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum WebPEncodingError {
VP8_ENC_OK = 0,
VP8_ENC_ERROR_OUT_OF_MEMORY = 1,
VP8_ENC_ERROR_BITSTREAM_OUT_OF_MEMORY = 2,
VP8_ENC_ERROR_NULL_PARAMETER = 3,
VP8_ENC_ERROR_INVALID_CONFIGURATION = 4,
VP8_ENC_ERROR_BAD_DIMENSION = 5,
VP8_ENC_ERROR_PARTITION0_OVERFLOW = 6,
VP8_ENC_ERROR_PARTITION_OVERFLOW = 7,
VP8_ENC_ERROR_BAD_WRITE = 8,
VP8_ENC_ERROR_FILE_TOO_BIG = 9,
VP8_ENC_ERROR_USER_ABORT = 10,
VP8_ENC_ERROR_LAST = 11,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPPicture {
pub use_argb: ::core::ffi::c_int,
pub colorspace: WebPEncCSP,
pub width: ::core::ffi::c_int,
pub height: ::core::ffi::c_int,
pub y: *mut u8,
pub u: *mut u8,
pub v: *mut u8,
pub y_stride: ::core::ffi::c_int,
pub uv_stride: ::core::ffi::c_int,
pub a: *mut u8,
pub a_stride: ::core::ffi::c_int,
pub pad1: [u32; 2usize],
pub argb: *mut u32,
pub argb_stride: ::core::ffi::c_int,
pub pad2: [u32; 3usize],
pub writer: WebPWriterFunction,
pub custom_ptr: *mut ::core::ffi::c_void,
pub extra_info_type: ::core::ffi::c_int,
pub extra_info: *mut u8,
pub stats: *mut WebPAuxStats,
pub error_code: WebPEncodingError,
pub progress_hook: WebPProgressHook,
pub user_data: *mut ::core::ffi::c_void,
pub pad3: [u32; 3usize],
pub pad4: *mut u8,
pub pad5: *mut u8,
pub pad6: [u32; 8usize],
pub memory_: *mut ::core::ffi::c_void,
pub memory_argb_: *mut ::core::ffi::c_void,
pub pad7: [*mut ::core::ffi::c_void; 2usize],
}
unsafe extern "C" {
pub fn WebPPictureInitInternal(
arg1: *mut WebPPicture,
arg2: ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPPictureAlloc(picture: *mut WebPPicture) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPPictureFree(picture: *mut WebPPicture);
}
unsafe extern "C" {
pub fn WebPPictureCopy(src: *const WebPPicture, dst: *mut WebPPicture) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPPlaneDistortion(
src: *const u8,
src_stride: usize,
ref_: *const u8,
ref_stride: usize,
width: ::core::ffi::c_int,
height: ::core::ffi::c_int,
x_step: usize,
type_: ::core::ffi::c_int,
distortion: *mut f32,
result: *mut f32,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPPictureDistortion(
src: *const WebPPicture,
ref_: *const WebPPicture,
metric_type: ::core::ffi::c_int,
result: *mut f32,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPPictureCrop(
picture: *mut WebPPicture,
left: ::core::ffi::c_int,
top: ::core::ffi::c_int,
width: ::core::ffi::c_int,
height: ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPPictureView(
src: *const WebPPicture,
left: ::core::ffi::c_int,
top: ::core::ffi::c_int,
width: ::core::ffi::c_int,
height: ::core::ffi::c_int,
dst: *mut WebPPicture,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPPictureIsView(picture: *const WebPPicture) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPPictureRescale(
picture: *mut WebPPicture,
width: ::core::ffi::c_int,
height: ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPPictureImportRGB(
picture: *mut WebPPicture,
rgb: *const u8,
rgb_stride: ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPPictureImportRGBA(
picture: *mut WebPPicture,
rgba: *const u8,
rgba_stride: ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPPictureImportRGBX(
picture: *mut WebPPicture,
rgbx: *const u8,
rgbx_stride: ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPPictureImportBGR(
picture: *mut WebPPicture,
bgr: *const u8,
bgr_stride: ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPPictureImportBGRA(
picture: *mut WebPPicture,
bgra: *const u8,
bgra_stride: ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPPictureImportBGRX(
picture: *mut WebPPicture,
bgrx: *const u8,
bgrx_stride: ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPPictureARGBToYUVA(picture: *mut WebPPicture, arg1: WebPEncCSP)
-> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPPictureARGBToYUVADithered(
picture: *mut WebPPicture,
colorspace: WebPEncCSP,
dithering: f32,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPPictureSharpARGBToYUVA(picture: *mut WebPPicture) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPPictureSmartARGBToYUVA(picture: *mut WebPPicture) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPPictureYUVAToARGB(picture: *mut WebPPicture) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPCleanupTransparentArea(picture: *mut WebPPicture);
}
unsafe extern "C" {
pub fn WebPPictureHasTransparency(picture: *const WebPPicture) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPBlendAlpha(picture: *mut WebPPicture, background_rgb: u32);
}
unsafe extern "C" {
pub fn WebPEncode(config: *const WebPConfig, picture: *mut WebPPicture) -> ::core::ffi::c_int;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPIDecoder {
_unused: [u8; 0],
}
unsafe extern "C" {
pub fn WebPGetDecoderVersion() -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPGetInfo(
data: *const u8,
data_size: usize,
width: *mut ::core::ffi::c_int,
height: *mut ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPDecodeRGBA(
data: *const u8,
data_size: usize,
width: *mut ::core::ffi::c_int,
height: *mut ::core::ffi::c_int,
) -> *mut u8;
}
unsafe extern "C" {
pub fn WebPDecodeARGB(
data: *const u8,
data_size: usize,
width: *mut ::core::ffi::c_int,
height: *mut ::core::ffi::c_int,
) -> *mut u8;
}
unsafe extern "C" {
pub fn WebPDecodeBGRA(
data: *const u8,
data_size: usize,
width: *mut ::core::ffi::c_int,
height: *mut ::core::ffi::c_int,
) -> *mut u8;
}
unsafe extern "C" {
pub fn WebPDecodeRGB(
data: *const u8,
data_size: usize,
width: *mut ::core::ffi::c_int,
height: *mut ::core::ffi::c_int,
) -> *mut u8;
}
unsafe extern "C" {
pub fn WebPDecodeBGR(
data: *const u8,
data_size: usize,
width: *mut ::core::ffi::c_int,
height: *mut ::core::ffi::c_int,
) -> *mut u8;
}
unsafe extern "C" {
pub fn WebPDecodeYUV(
data: *const u8,
data_size: usize,
width: *mut ::core::ffi::c_int,
height: *mut ::core::ffi::c_int,
u: *mut *mut u8,
v: *mut *mut u8,
stride: *mut ::core::ffi::c_int,
uv_stride: *mut ::core::ffi::c_int,
) -> *mut u8;
}
unsafe extern "C" {
pub fn WebPDecodeRGBAInto(
data: *const u8,
data_size: usize,
output_buffer: *mut u8,
output_buffer_size: usize,
output_stride: ::core::ffi::c_int,
) -> *mut u8;
}
unsafe extern "C" {
pub fn WebPDecodeARGBInto(
data: *const u8,
data_size: usize,
output_buffer: *mut u8,
output_buffer_size: usize,
output_stride: ::core::ffi::c_int,
) -> *mut u8;
}
unsafe extern "C" {
pub fn WebPDecodeBGRAInto(
data: *const u8,
data_size: usize,
output_buffer: *mut u8,
output_buffer_size: usize,
output_stride: ::core::ffi::c_int,
) -> *mut u8;
}
unsafe extern "C" {
pub fn WebPDecodeRGBInto(
data: *const u8,
data_size: usize,
output_buffer: *mut u8,
output_buffer_size: usize,
output_stride: ::core::ffi::c_int,
) -> *mut u8;
}
unsafe extern "C" {
pub fn WebPDecodeBGRInto(
data: *const u8,
data_size: usize,
output_buffer: *mut u8,
output_buffer_size: usize,
output_stride: ::core::ffi::c_int,
) -> *mut u8;
}
unsafe extern "C" {
pub fn WebPDecodeYUVInto(
data: *const u8,
data_size: usize,
luma: *mut u8,
luma_size: usize,
luma_stride: ::core::ffi::c_int,
u: *mut u8,
u_size: usize,
u_stride: ::core::ffi::c_int,
v: *mut u8,
v_size: usize,
v_stride: ::core::ffi::c_int,
) -> *mut u8;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum WEBP_CSP_MODE {
MODE_RGB = 0,
MODE_RGBA = 1,
MODE_BGR = 2,
MODE_BGRA = 3,
MODE_ARGB = 4,
MODE_RGBA_4444 = 5,
MODE_RGB_565 = 6,
MODE_rgbA = 7,
MODE_bgrA = 8,
MODE_Argb = 9,
MODE_rgbA_4444 = 10,
MODE_YUV = 11,
MODE_YUVA = 12,
MODE_LAST = 13,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPRGBABuffer {
pub rgba: *mut u8,
pub stride: ::core::ffi::c_int,
pub size: usize,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPYUVABuffer {
pub y: *mut u8,
pub u: *mut u8,
pub v: *mut u8,
pub a: *mut u8,
pub y_stride: ::core::ffi::c_int,
pub u_stride: ::core::ffi::c_int,
pub v_stride: ::core::ffi::c_int,
pub a_stride: ::core::ffi::c_int,
pub y_size: usize,
pub u_size: usize,
pub v_size: usize,
pub a_size: usize,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct WebPDecBuffer {
pub colorspace: WEBP_CSP_MODE,
pub width: ::core::ffi::c_int,
pub height: ::core::ffi::c_int,
pub is_external_memory: ::core::ffi::c_int,
pub u: WebPDecBuffer__bindgen_ty_1,
pub pad: [u32; 4usize],
pub private_memory: *mut u8,
}
#[repr(C)]
#[derive(Copy, Clone)]
pub union WebPDecBuffer__bindgen_ty_1 {
pub RGBA: WebPRGBABuffer,
pub YUVA: WebPYUVABuffer,
}
impl ::core::fmt::Debug for WebPDecBuffer__bindgen_ty_1 {
fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
write!(f, "WebPDecBuffer__bindgen_ty_1 {{ union }}")
}
}
impl ::core::fmt::Debug for WebPDecBuffer {
fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
write!(
f,
"WebPDecBuffer {{ colorspace: {:?}, width: {:?}, height: {:?}, is_external_memory: {:?}, u: {:?}, pad: {:?}, private_memory: {:?} }}",
self.colorspace,
self.width,
self.height,
self.is_external_memory,
self.u,
self.pad,
self.private_memory
)
}
}
unsafe extern "C" {
pub fn WebPInitDecBufferInternal(
arg1: *mut WebPDecBuffer,
arg2: ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPFreeDecBuffer(buffer: *mut WebPDecBuffer);
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum VP8StatusCode {
VP8_STATUS_OK = 0,
VP8_STATUS_OUT_OF_MEMORY = 1,
VP8_STATUS_INVALID_PARAM = 2,
VP8_STATUS_BITSTREAM_ERROR = 3,
VP8_STATUS_UNSUPPORTED_FEATURE = 4,
VP8_STATUS_SUSPENDED = 5,
VP8_STATUS_USER_ABORT = 6,
VP8_STATUS_NOT_ENOUGH_DATA = 7,
}
unsafe extern "C" {
pub fn WebPINewDecoder(output_buffer: *mut WebPDecBuffer) -> *mut WebPIDecoder;
}
unsafe extern "C" {
pub fn WebPINewRGB(
csp: WEBP_CSP_MODE,
output_buffer: *mut u8,
output_buffer_size: usize,
output_stride: ::core::ffi::c_int,
) -> *mut WebPIDecoder;
}
unsafe extern "C" {
pub fn WebPINewYUVA(
luma: *mut u8,
luma_size: usize,
luma_stride: ::core::ffi::c_int,
u: *mut u8,
u_size: usize,
u_stride: ::core::ffi::c_int,
v: *mut u8,
v_size: usize,
v_stride: ::core::ffi::c_int,
a: *mut u8,
a_size: usize,
a_stride: ::core::ffi::c_int,
) -> *mut WebPIDecoder;
}
unsafe extern "C" {
pub fn WebPINewYUV(
luma: *mut u8,
luma_size: usize,
luma_stride: ::core::ffi::c_int,
u: *mut u8,
u_size: usize,
u_stride: ::core::ffi::c_int,
v: *mut u8,
v_size: usize,
v_stride: ::core::ffi::c_int,
) -> *mut WebPIDecoder;
}
unsafe extern "C" {
pub fn WebPIDelete(idec: *mut WebPIDecoder);
}
unsafe extern "C" {
pub fn WebPIAppend(idec: *mut WebPIDecoder, data: *const u8, data_size: usize)
-> VP8StatusCode;
}
unsafe extern "C" {
pub fn WebPIUpdate(idec: *mut WebPIDecoder, data: *const u8, data_size: usize)
-> VP8StatusCode;
}
unsafe extern "C" {
pub fn WebPIDecGetRGB(
idec: *const WebPIDecoder,
last_y: *mut ::core::ffi::c_int,
width: *mut ::core::ffi::c_int,
height: *mut ::core::ffi::c_int,
stride: *mut ::core::ffi::c_int,
) -> *mut u8;
}
unsafe extern "C" {
pub fn WebPIDecGetYUVA(
idec: *const WebPIDecoder,
last_y: *mut ::core::ffi::c_int,
u: *mut *mut u8,
v: *mut *mut u8,
a: *mut *mut u8,
width: *mut ::core::ffi::c_int,
height: *mut ::core::ffi::c_int,
stride: *mut ::core::ffi::c_int,
uv_stride: *mut ::core::ffi::c_int,
a_stride: *mut ::core::ffi::c_int,
) -> *mut u8;
}
unsafe extern "C" {
pub fn WebPIDecodedArea(
idec: *const WebPIDecoder,
left: *mut ::core::ffi::c_int,
top: *mut ::core::ffi::c_int,
width: *mut ::core::ffi::c_int,
height: *mut ::core::ffi::c_int,
) -> *const WebPDecBuffer;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPBitstreamFeatures {
pub width: ::core::ffi::c_int,
pub height: ::core::ffi::c_int,
pub has_alpha: ::core::ffi::c_int,
pub has_animation: ::core::ffi::c_int,
pub format: ::core::ffi::c_int,
pub pad: [u32; 5usize],
}
unsafe extern "C" {
pub fn WebPGetFeaturesInternal(
arg1: *const u8,
arg2: usize,
arg3: *mut WebPBitstreamFeatures,
arg4: ::core::ffi::c_int,
) -> VP8StatusCode;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPDecoderOptions {
pub bypass_filtering: ::core::ffi::c_int,
pub no_fancy_upsampling: ::core::ffi::c_int,
pub use_cropping: ::core::ffi::c_int,
pub crop_left: ::core::ffi::c_int,
pub crop_top: ::core::ffi::c_int,
pub crop_width: ::core::ffi::c_int,
pub crop_height: ::core::ffi::c_int,
pub use_scaling: ::core::ffi::c_int,
pub scaled_width: ::core::ffi::c_int,
pub scaled_height: ::core::ffi::c_int,
pub use_threads: ::core::ffi::c_int,
pub dithering_strength: ::core::ffi::c_int,
pub flip: ::core::ffi::c_int,
pub alpha_dithering_strength: ::core::ffi::c_int,
pub pad: [u32; 5usize],
}
#[repr(C)]
#[derive(Copy, Clone)]
pub struct WebPDecoderConfig {
pub input: WebPBitstreamFeatures,
pub output: WebPDecBuffer,
pub options: WebPDecoderOptions,
}
impl ::core::fmt::Debug for WebPDecoderConfig {
fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
write!(
f,
"WebPDecoderConfig {{ input: {:?}, output: {:?}, options: {:?} }}",
self.input, self.output, self.options
)
}
}
unsafe extern "C" {
pub fn WebPInitDecoderConfigInternal(
arg1: *mut WebPDecoderConfig,
arg2: ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPValidateDecoderConfig(config: *const WebPDecoderConfig) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPIDecode(
data: *const u8,
data_size: usize,
config: *mut WebPDecoderConfig,
) -> *mut WebPIDecoder;
}
unsafe extern "C" {
pub fn WebPDecode(
data: *const u8,
data_size: usize,
config: *mut WebPDecoderConfig,
) -> VP8StatusCode;
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum WebPFeatureFlags {
ANIMATION_FLAG = 2,
XMP_FLAG = 4,
EXIF_FLAG = 8,
ALPHA_FLAG = 16,
ICCP_FLAG = 32,
ALL_VALID_FLAGS = 62,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum WebPMuxAnimDispose {
WEBP_MUX_DISPOSE_NONE = 0,
WEBP_MUX_DISPOSE_BACKGROUND = 1,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum WebPMuxAnimBlend {
WEBP_MUX_BLEND = 0,
WEBP_MUX_NO_BLEND = 1,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPData {
pub bytes: *const u8,
pub size: usize,
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPMux {
_unused: [u8; 0],
}
#[repr(i32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum WebPMuxError {
WEBP_MUX_OK = 1,
WEBP_MUX_NOT_FOUND = 0,
WEBP_MUX_INVALID_ARGUMENT = -1,
WEBP_MUX_BAD_DATA = -2,
WEBP_MUX_MEMORY_ERROR = -3,
WEBP_MUX_NOT_ENOUGH_DATA = -4,
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum WebPChunkId {
WEBP_CHUNK_VP8X = 0,
WEBP_CHUNK_ICCP = 1,
WEBP_CHUNK_ANIM = 2,
WEBP_CHUNK_ANMF = 3,
WEBP_CHUNK_DEPRECATED = 4,
WEBP_CHUNK_ALPHA = 5,
WEBP_CHUNK_IMAGE = 6,
WEBP_CHUNK_EXIF = 7,
WEBP_CHUNK_XMP = 8,
WEBP_CHUNK_UNKNOWN = 9,
WEBP_CHUNK_NIL = 10,
}
unsafe extern "C" {
pub fn WebPGetMuxVersion() -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPNewInternal(arg1: ::core::ffi::c_int) -> *mut WebPMux;
}
unsafe extern "C" {
pub fn WebPMuxDelete(mux: *mut WebPMux);
}
unsafe extern "C" {
pub fn WebPMuxCreateInternal(
arg1: *const WebPData,
arg2: ::core::ffi::c_int,
arg3: ::core::ffi::c_int,
) -> *mut WebPMux;
}
unsafe extern "C" {
pub fn WebPMuxSetChunk(
mux: *mut WebPMux,
fourcc: *const ::core::ffi::c_char,
chunk_data: *const WebPData,
copy_data: ::core::ffi::c_int,
) -> WebPMuxError;
}
unsafe extern "C" {
pub fn WebPMuxGetChunk(
mux: *const WebPMux,
fourcc: *const ::core::ffi::c_char,
chunk_data: *mut WebPData,
) -> WebPMuxError;
}
unsafe extern "C" {
pub fn WebPMuxDeleteChunk(
mux: *mut WebPMux,
fourcc: *const ::core::ffi::c_char,
) -> WebPMuxError;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPMuxFrameInfo {
pub bitstream: WebPData,
pub x_offset: ::core::ffi::c_int,
pub y_offset: ::core::ffi::c_int,
pub duration: ::core::ffi::c_int,
pub id: WebPChunkId,
pub dispose_method: WebPMuxAnimDispose,
pub blend_method: WebPMuxAnimBlend,
pub pad: [u32; 1usize],
}
unsafe extern "C" {
pub fn WebPMuxSetImage(
mux: *mut WebPMux,
bitstream: *const WebPData,
copy_data: ::core::ffi::c_int,
) -> WebPMuxError;
}
unsafe extern "C" {
pub fn WebPMuxPushFrame(
mux: *mut WebPMux,
frame: *const WebPMuxFrameInfo,
copy_data: ::core::ffi::c_int,
) -> WebPMuxError;
}
unsafe extern "C" {
pub fn WebPMuxGetFrame(
mux: *const WebPMux,
nth: u32,
frame: *mut WebPMuxFrameInfo,
) -> WebPMuxError;
}
unsafe extern "C" {
pub fn WebPMuxDeleteFrame(mux: *mut WebPMux, nth: u32) -> WebPMuxError;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPMuxAnimParams {
pub bgcolor: u32,
pub loop_count: ::core::ffi::c_int,
}
unsafe extern "C" {
pub fn WebPMuxSetAnimationParams(
mux: *mut WebPMux,
params: *const WebPMuxAnimParams,
) -> WebPMuxError;
}
unsafe extern "C" {
pub fn WebPMuxGetAnimationParams(
mux: *const WebPMux,
params: *mut WebPMuxAnimParams,
) -> WebPMuxError;
}
unsafe extern "C" {
pub fn WebPMuxSetCanvasSize(
mux: *mut WebPMux,
width: ::core::ffi::c_int,
height: ::core::ffi::c_int,
) -> WebPMuxError;
}
unsafe extern "C" {
pub fn WebPMuxGetCanvasSize(
mux: *const WebPMux,
width: *mut ::core::ffi::c_int,
height: *mut ::core::ffi::c_int,
) -> WebPMuxError;
}
unsafe extern "C" {
pub fn WebPMuxGetFeatures(mux: *const WebPMux, flags: *mut u32) -> WebPMuxError;
}
unsafe extern "C" {
pub fn WebPMuxNumChunks(
mux: *const WebPMux,
id: WebPChunkId,
num_elements: *mut ::core::ffi::c_int,
) -> WebPMuxError;
}
unsafe extern "C" {
pub fn WebPMuxAssemble(mux: *mut WebPMux, assembled_data: *mut WebPData) -> WebPMuxError;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPAnimEncoder {
_unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPAnimEncoderOptions {
pub anim_params: WebPMuxAnimParams,
pub minimize_size: ::core::ffi::c_int,
pub kmin: ::core::ffi::c_int,
pub kmax: ::core::ffi::c_int,
pub allow_mixed: ::core::ffi::c_int,
pub verbose: ::core::ffi::c_int,
pub padding: [u32; 4usize],
}
unsafe extern "C" {
pub fn WebPAnimEncoderOptionsInitInternal(
arg1: *mut WebPAnimEncoderOptions,
arg2: ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPAnimEncoderNewInternal(
arg1: ::core::ffi::c_int,
arg2: ::core::ffi::c_int,
arg3: *const WebPAnimEncoderOptions,
arg4: ::core::ffi::c_int,
) -> *mut WebPAnimEncoder;
}
unsafe extern "C" {
pub fn WebPAnimEncoderAdd(
enc: *mut WebPAnimEncoder,
frame: *mut WebPPicture,
timestamp_ms: ::core::ffi::c_int,
config: *const WebPConfig,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPAnimEncoderAssemble(
enc: *mut WebPAnimEncoder,
webp_data: *mut WebPData,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPAnimEncoderGetError(enc: *mut WebPAnimEncoder) -> *const ::core::ffi::c_char;
}
unsafe extern "C" {
pub fn WebPAnimEncoderDelete(enc: *mut WebPAnimEncoder);
}
unsafe extern "C" {
pub fn WebPAnimEncoderSetChunk(
enc: *mut WebPAnimEncoder,
fourcc: *const ::core::ffi::c_char,
chunk_data: *const WebPData,
copy_data: ::core::ffi::c_int,
) -> WebPMuxError;
}
unsafe extern "C" {
pub fn WebPAnimEncoderGetChunk(
enc: *const WebPAnimEncoder,
fourcc: *const ::core::ffi::c_char,
chunk_data: *mut WebPData,
) -> WebPMuxError;
}
unsafe extern "C" {
pub fn WebPAnimEncoderDeleteChunk(
enc: *mut WebPAnimEncoder,
fourcc: *const ::core::ffi::c_char,
) -> WebPMuxError;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPDemuxer {
_unused: [u8; 0],
}
unsafe extern "C" {
pub fn WebPGetDemuxVersion() -> ::core::ffi::c_int;
}
#[repr(i32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum WebPDemuxState {
WEBP_DEMUX_PARSE_ERROR = -1,
WEBP_DEMUX_PARSING_HEADER = 0,
WEBP_DEMUX_PARSED_HEADER = 1,
WEBP_DEMUX_DONE = 2,
}
unsafe extern "C" {
pub fn WebPDemuxInternal(
arg1: *const WebPData,
arg2: ::core::ffi::c_int,
arg3: *mut WebPDemuxState,
arg4: ::core::ffi::c_int,
) -> *mut WebPDemuxer;
}
unsafe extern "C" {
pub fn WebPDemuxDelete(dmux: *mut WebPDemuxer);
}
#[repr(u32)]
#[derive(Debug, Copy, Clone, Hash, PartialEq, Eq)]
pub enum WebPFormatFeature {
WEBP_FF_FORMAT_FLAGS = 0,
WEBP_FF_CANVAS_WIDTH = 1,
WEBP_FF_CANVAS_HEIGHT = 2,
WEBP_FF_LOOP_COUNT = 3,
WEBP_FF_BACKGROUND_COLOR = 4,
WEBP_FF_FRAME_COUNT = 5,
}
unsafe extern "C" {
pub fn WebPDemuxGetI(dmux: *const WebPDemuxer, feature: WebPFormatFeature) -> u32;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPIterator {
pub frame_num: ::core::ffi::c_int,
pub num_frames: ::core::ffi::c_int,
pub x_offset: ::core::ffi::c_int,
pub y_offset: ::core::ffi::c_int,
pub width: ::core::ffi::c_int,
pub height: ::core::ffi::c_int,
pub duration: ::core::ffi::c_int,
pub dispose_method: WebPMuxAnimDispose,
pub complete: ::core::ffi::c_int,
pub fragment: WebPData,
pub has_alpha: ::core::ffi::c_int,
pub blend_method: WebPMuxAnimBlend,
pub pad: [u32; 2usize],
pub private_: *mut ::core::ffi::c_void,
}
unsafe extern "C" {
pub fn WebPDemuxGetFrame(
dmux: *const WebPDemuxer,
frame_number: ::core::ffi::c_int,
iter: *mut WebPIterator,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPDemuxNextFrame(iter: *mut WebPIterator) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPDemuxPrevFrame(iter: *mut WebPIterator) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPDemuxReleaseIterator(iter: *mut WebPIterator);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPChunkIterator {
pub chunk_num: ::core::ffi::c_int,
pub num_chunks: ::core::ffi::c_int,
pub chunk: WebPData,
pub pad: [u32; 6usize],
pub private_: *mut ::core::ffi::c_void,
}
unsafe extern "C" {
pub fn WebPDemuxGetChunk(
dmux: *const WebPDemuxer,
fourcc: *const ::core::ffi::c_char,
chunk_number: ::core::ffi::c_int,
iter: *mut WebPChunkIterator,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPDemuxNextChunk(iter: *mut WebPChunkIterator) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPDemuxPrevChunk(iter: *mut WebPChunkIterator) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPDemuxReleaseChunkIterator(iter: *mut WebPChunkIterator);
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPAnimDecoder {
_unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPAnimDecoderOptions {
pub color_mode: WEBP_CSP_MODE,
pub use_threads: ::core::ffi::c_int,
pub padding: [u32; 7usize],
}
unsafe extern "C" {
pub fn WebPAnimDecoderOptionsInitInternal(
arg1: *mut WebPAnimDecoderOptions,
arg2: ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPAnimDecoderNewInternal(
arg1: *const WebPData,
arg2: *const WebPAnimDecoderOptions,
arg3: ::core::ffi::c_int,
) -> *mut WebPAnimDecoder;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct WebPAnimInfo {
pub canvas_width: u32,
pub canvas_height: u32,
pub loop_count: u32,
pub bgcolor: u32,
pub frame_count: u32,
pub pad: [u32; 4usize],
}
unsafe extern "C" {
pub fn WebPAnimDecoderGetInfo(
dec: *const WebPAnimDecoder,
info: *mut WebPAnimInfo,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPAnimDecoderGetNext(
dec: *mut WebPAnimDecoder,
buf: *mut *mut u8,
timestamp: *mut ::core::ffi::c_int,
) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPAnimDecoderHasMoreFrames(dec: *const WebPAnimDecoder) -> ::core::ffi::c_int;
}
unsafe extern "C" {
pub fn WebPAnimDecoderReset(dec: *mut WebPAnimDecoder);
}
unsafe extern "C" {
pub fn WebPAnimDecoderGetDemuxer(dec: *const WebPAnimDecoder) -> *const WebPDemuxer;
}
unsafe extern "C" {
pub fn WebPAnimDecoderDelete(dec: *mut WebPAnimDecoder);
}