1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
use libc::{c_void, c_int, c_uint, uint8_t, uint32_t, size_t}; #[derive(Debug)] #[repr(C)] pub struct AVFifoBuffer { pub buffer: *mut uint8_t, pub rptr: *mut uint8_t, pub wptr: *mut uint8_t, pub end: *mut uint8_t, pub rndx: uint32_t, pub wndx: uint32_t, } #[inline(always)] pub unsafe fn av_fifo_peek2(f: *const AVFifoBuffer, offs: c_int) -> *mut uint8_t { let ptr = (*f).rptr.offset(offs as isize); if ptr > (*f).end { (*f).buffer.offset((ptr as usize - (*f).end as usize) as isize) } else if ptr < (*f).buffer { (*f).end.offset(-(((*f).buffer as usize - ptr as usize) as isize)) } else { ptr } } extern { pub fn av_fifo_alloc(size: c_uint) -> *mut AVFifoBuffer; pub fn av_fifo_alloc_array(nmemb: size_t, size: size_t) -> *mut AVFifoBuffer; pub fn av_fifo_free(f: *mut AVFifoBuffer); pub fn av_fifo_freep(f: *mut *mut AVFifoBuffer); pub fn av_fifo_reset(f: *mut AVFifoBuffer); pub fn av_fifo_size(f: *const AVFifoBuffer) -> c_int; pub fn av_fifo_space(f: *const AVFifoBuffer) -> c_int; pub fn av_fifo_generic_peek(f: *mut AVFifoBuffer, dest: *mut c_void, buf_size: c_int, func: extern fn(*mut c_void, *mut c_void, c_int)) -> c_int; pub fn av_fifo_generic_read(f: *mut AVFifoBuffer, dest: *mut c_void, buf_size: c_int, func: extern fn(*mut c_void, *mut c_void, c_int)) -> c_int; pub fn av_fifo_generic_write(f: *mut AVFifoBuffer, src: *mut c_void, size: c_int, func: extern fn(*mut c_void, *mut c_void, c_int) -> c_int) -> c_int; pub fn av_fifo_realloc2(f: *mut AVFifoBuffer, size: c_uint) -> c_int; pub fn av_fifo_grow(f: *mut AVFifoBuffer, additional_space: c_int) -> c_int; pub fn av_fifo_drain(f: *mut AVFifoBuffer, size: c_int); }