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, uint32_t}; use super::codec::AVCodecContext; #[derive(Debug)] #[repr(C)] pub struct vda_context { pub decoder: *mut c_void, pub cv_buffer: *mut c_void, pub use_sync_decoding: c_int, pub width: c_int, pub height: c_int, pub format: c_int, pub cv_pix_fmt_type: i32, pub priv_bitstream: *mut uint8_t, pub priv_bitstream_size: c_int, pub priv_allocated_size: c_int, pub use_ref_buffer: c_int, } #[repr(C)] pub struct AVVDAContext { pub decoder: *mut c_void, pub output_callback: extern fn(*mut c_void, *mut c_void, i32, uint32_t, *mut c_void), } extern { pub fn ff_vda_create_decoder(vda_ctx: *mut vda_context, extradata: *mut uint8_t, extradata_size: c_int) -> c_int; pub fn ff_vda_destroy_decoder(vda_ctx: *mut vda_context) -> c_int; pub fn av_vda_alloc_context() -> *mut AVVDAContext; pub fn av_vda_default_init(avctx: *mut AVCodecContext) -> c_int; pub fn av_vda_default_free(avctx: *mut AVCodecContext); }