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
use libc::{c_void, c_int, uint8_t};

pub type AVBuffer = c_void;

#[derive(Debug)]
#[repr(C)]
pub struct AVBufferRef {
	pub buffer: *mut AVBuffer,
	pub data:   *mut uint8_t,
	pub size:   c_int,
}

pub type AVBufferPool = c_void;

pub const AV_BUFFER_FLAG_READONLY: c_int = 1;

extern {
	pub fn av_buffer_alloc(size: c_int) -> *mut AVBufferRef;
	pub fn av_buffer_allocz(size: c_int) -> *mut AVBufferRef;
	pub fn av_buffer_create(data: *mut uint8_t, size: c_int, free: extern fn(*mut c_void, *mut uint8_t), opaque: *mut c_void, flags: c_int) -> *mut AVBufferRef;
	pub fn av_buffer_default_free(opaque: *mut c_void, data: *mut uint8_t);
	pub fn av_buffer_ref(buf: *mut AVBufferRef) -> *mut AVBufferRef;
	pub fn av_buffer_unref(buf: *mut *mut AVBufferRef);
	pub fn av_buffer_is_writable(buf: *const AVBufferRef) -> c_int;
	pub fn av_buffer_get_opaque(buf: *const AVBufferRef) -> *mut c_void;
	pub fn av_buffer_get_ref_count(buf: *const AVBufferRef) -> c_int;
	pub fn av_buffer_make_writable(buf: *mut *mut AVBufferRef) -> c_int;
	pub fn av_buffer_realloc(buf: *mut *mut AVBufferRef, size: c_int) -> c_int;

	pub fn av_buffer_pool_init(size: c_int, alloc: extern fn(c_int) -> *mut AVBufferRef) -> *mut AVBufferPool;
	pub fn av_buffer_pool_uninit(pool: *mut *mut AVBufferPool);
	pub fn av_buffer_pool_get(pool: *mut AVBufferPool) -> *mut AVBufferRef;
}