blob: 1c3c150972c9a1fcbc599be2da030a8b6c49410c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
#[no_mangle]
pub unsafe fn decode_png(input: *const u8, input_len: usize, output: *mut u8, output_len: usize) -> usize {
let input = core::slice::from_raw_parts(input, input_len);
let output = core::slice::from_raw_parts_mut(output, output_len);
let decoder = png::Decoder::new(input);
let Ok(mut reader) = decoder.read_info() else {
return 0;
};
let required_bytes = reader.output_buffer_size();
if output_len >= required_bytes {
if reader.next_frame(output).is_err() {
return 0;
}
}
required_bytes
}
|