webp_dev/
utils.rs

1use std::ffi::{CString, c_void};
2use std::os::raw::{c_char, c_int};
3use libc::{size_t, c_float};
4use crate::sys::webp::{
5    self as webp_sys,
6    WebPConfig,
7    WebPPicture,
8};
9
10/// Picture is uninitialized.
11pub fn empty_lossless_webp_picture() -> WebPPicture {
12    WebPPicture {
13        use_argb: 1,
14
15        // YUV input
16        colorspace: webp_sys::WEBP_YUV420,
17        width: 0,
18        height: 0,
19        y: std::ptr::null_mut(),
20        u: std::ptr::null_mut(),
21        v: std::ptr::null_mut(),
22        y_stride: 0,
23        uv_stride: 0,
24        a: std::ptr::null_mut(),
25        a_stride: 0,
26        pad1: [0, 0],
27        
28        // ARGB input
29        argb: std::ptr::null_mut(),
30        argb_stride: 0,
31        pad2: [
32            0,
33            0,
34            0,
35        ],
36
37        // OUTPUT
38        writer: None,
39        custom_ptr: std::ptr::null_mut(),
40        extra_info_type: 0,
41        extra_info: std::ptr::null_mut(),
42        
43        // STATS AND REPORTS
44        stats: std::ptr::null_mut(),
45        error_code: webp_sys::VP8_ENC_OK,
46        progress_hook: None,
47        user_data: std::ptr::null_mut(),
48        
49        // padding for later use
50        pad3: [0, 0, 0],
51        
52        // Unused for now
53        pad4: std::ptr::null_mut(),
54        pad5: std::ptr::null_mut(),
55
56        // padding for later use
57        pad6: [0, 0, 0, 0, 0, 0, 0, 0],
58
59        // PRIVATE FIELDS
60        memory_: std::ptr::null_mut(),
61        memory_argb_: std::ptr::null_mut(),
62        pad7: [std::ptr::null_mut(), std::ptr::null_mut()],
63    }
64}
65
66/// Picture is uninitialized.
67pub fn empty_lossy_webp_picture() -> WebPPicture {
68    let mut picture = empty_lossless_webp_picture();
69    picture.use_argb = 0;
70    picture
71}
72