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 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
use libc::{c_void, c_char, c_int, c_uint, c_double, uint8_t, int64_t}; use ::avutil::{AVClass, AVFrame, AVSampleFormat}; pub const SWR_CH_MAX: c_int = 32; pub const SWR_FLAG_RESAMPLE: c_int = 1; #[derive(Eq, PartialEq, Copy, Clone, Debug)] #[repr(C)] pub enum SwrDitherType { SWR_DITHER_NONE = 0, SWR_DITHER_RECTANGULAR, SWR_DITHER_TRIANGULAR, SWR_DITHER_TRIANGULAR_HIGHPASS, SWR_DITHER_NS = 64, SWR_DITHER_NS_LIPSHITZ, SWR_DITHER_NS_F_WEIGHTED, SWR_DITHER_NS_MODIFIED_E_WEIGHTED, SWR_DITHER_NS_IMPROVED_E_WEIGHTED, SWR_DITHER_NS_SHIBATA, SWR_DITHER_NS_LOW_SHIBATA, SWR_DITHER_NS_HIGH_SHIBATA, SWR_DITHER_NB, } #[derive(Eq, PartialEq, Copy, Clone, Debug)] #[repr(C)] pub enum SwrEngine { SWR_ENGINE_SWR, SWR_ENGINE_SOXR, SWR_ENGINE_NB, } #[derive(Eq, PartialEq, Copy, Clone, Debug)] #[repr(C)] pub enum SwrFilterType { SWR_FILTER_TYPE_CUBIC, SWR_FILTER_TYPE_BLACKMAN_NUTTALL, SWR_FILTER_TYPE_KAISER, } pub type SwrContext = c_void; extern { pub fn swresample_version() -> c_uint; pub fn swresample_configuration() -> *const c_char; pub fn swresample_license() -> *const c_char; pub fn swr_get_class() -> *const AVClass; pub fn swr_alloc() -> *mut SwrContext; pub fn swr_init(s: *mut SwrContext) -> c_int; pub fn swr_is_initialized(s: *const SwrContext) -> c_int; pub fn swr_alloc_set_opts(s: *mut SwrContext, out_ch_layout: int64_t, out_sample_fmt: AVSampleFormat, out_sample_rate: c_int, in_ch_layout: int64_t, in_sample_fmt: AVSampleFormat, in_sample_rate: c_int, log_offset: c_int, log_ctx: *mut c_void) -> *mut SwrContext; pub fn swr_free(s: *mut *mut SwrContext); pub fn swr_close(s: *mut SwrContext); pub fn swr_convert(s: *mut SwrContext, output: *mut *mut uint8_t, out_count: c_int, input: *const *const uint8_t, in_count: c_int) -> c_int; pub fn swr_next_pts(s: *const SwrContext, pts: int64_t) -> int64_t; pub fn swr_set_compensation(s: *mut SwrContext, sample_delta: c_int, compensation_distance: c_int) -> c_int; pub fn swr_set_channel_mapping(s: *mut SwrContext, channel_map: *const c_int) -> c_int; pub fn swr_set_matrix(s: *mut SwrContext, matrix: *const c_double, stride: c_int) -> c_int; pub fn swr_drop_output(s: *mut SwrContext, count: c_int) -> c_int; pub fn swr_inject_silence(s: *mut SwrContext, count: c_int) -> c_int; pub fn swr_get_delay(s: *const SwrContext, base: int64_t) -> int64_t; pub fn swr_get_out_samples(s: *const SwrContext, in_samples: c_int) -> c_int; pub fn swr_convert_frame(swr: *mut SwrContext, output: *mut AVFrame, input: *const AVFrame) -> c_int; pub fn swr_config_frame(swr: *mut SwrContext, output: *mut AVFrame, input: *const AVFrame) -> c_int; }