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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107
use libc::{c_void, c_char, c_int, c_uint, c_float, c_double, uint8_t}; use ::avutil::{AVPixelFormat, AVClass}; pub const SWS_FAST_BILINEAR: c_int = 1; pub const SWS_BILINEAR: c_int = 2; pub const SWS_BICUBIC: c_int = 4; pub const SWS_X: c_int = 8; pub const SWS_POINT: c_int = 0x10; pub const SWS_AREA: c_int = 0x20; pub const SWS_BICUBLIN: c_int = 0x40; pub const SWS_GAUSS: c_int = 0x80; pub const SWS_SINC: c_int = 0x100; pub const SWS_LANCZOS: c_int = 0x200; pub const SWS_SPLINE: c_int = 0x400; pub const SWS_SRC_V_CHR_DROP_MASK: c_int = 0x30000; pub const SWS_SRC_V_CHR_DROP_SHIFT: c_int = 16; pub const SWS_PARAM_DEFAULT: c_int = 123456; pub const SWS_PRINT_INFO: c_int = 0x1000; pub const SWS_FULL_CHR_H_INT: c_int = 0x2000; pub const SWS_FULL_CHR_H_INP: c_int = 0x4000; pub const SWS_DIRECT_BGR: c_int = 0x8000; pub const SWS_ACCURATE_RND: c_int = 0x40000; pub const SWS_BITEXACT: c_int = 0x80000; pub const SWS_ERROR_DIFFUSION: c_int = 0x800000; pub const SWS_CPU_CAPS_MMX: c_uint = 0x80000000; pub const SWS_CPU_CAPS_MMXEXT: c_uint = 0x20000000; pub const SWS_CPU_CAPS_MMX2: c_uint = 0x20000000; pub const SWS_CPU_CAPS_3DNOW: c_uint = 0x40000000; pub const SWS_CPU_CAPS_ALTIVEC: c_uint = 0x10000000; pub const SWS_CPU_CAPS_BFIN: c_uint = 0x01000000; pub const SWS_CPU_CAPS_SSE2: c_uint = 0x02000000; pub const SWS_MAX_REDUCE_CUTOFF: c_float = 0.002; pub const SWS_CS_ITU709: c_int = 1; pub const SWS_CS_FCC: c_int = 4; pub const SWS_CS_ITU601: c_int = 5; pub const SWS_CS_ITU624: c_int = 5; pub const SWS_CS_SMPTE170M: c_int = 5; pub const SWS_CS_SMPTE240M: c_int = 7; pub const SWS_CS_DEFAULT: c_int = 5; #[derive(Debug)] #[repr(C)] pub struct SwsVector { pub coeff: *mut c_double, pub length: c_int, } #[derive(Debug)] #[repr(C)] pub struct SwsFilter { pub lumH: *mut SwsVector, pub lumV: *mut SwsVector, pub chrH: *mut SwsVector, pub chrV: *mut SwsVector, } pub type SwsContext = c_void; extern { pub fn swscale_version() -> c_uint; pub fn swscale_configuration() -> *const c_char; pub fn swscale_license() -> *const c_char; pub fn sws_getCoefficients(colorspace: c_int) -> *const c_int; pub fn sws_isSupportedInput(pix_fmt: AVPixelFormat) -> c_int; pub fn sws_isSupportedOutput(pix_fmt: AVPixelFormat) -> c_int; pub fn sws_isSupportedEndiannessConversion(pix_fmt: AVPixelFormat) -> c_int; pub fn sws_alloc_context() -> *mut SwsContext; pub fn sws_init_context(sws_context: *mut SwsContext, srcFilter: *mut SwsFilter, dstFilter: *mut SwsFilter) -> c_int; pub fn sws_freeContext(sws_context: *mut SwsContext); pub fn sws_getContext(srcW: c_int, srcH: c_int, srcFormat: AVPixelFormat, dstW: c_int, dstH: c_int, dstFormat: AVPixelFormat, flags: c_int, srcFilter: *mut SwsFilter, dstFilter: *mut SwsFilter, param: *const c_double) -> *mut SwsContext; pub fn sws_scale(c: *mut SwsContext, srcSlice: *const *const uint8_t, srcStride: *const c_int, srcSliceY: c_int, srcSliceH: c_int, dst: *mut *mut uint8_t, dstStride: *mut c_int) -> c_int; pub fn sws_setColorspaceDetails(c: *mut SwsContext, inv_table: *const *const c_int, srcRange: c_int, table: *const *const c_int, dstRange: c_int, brightness: c_int, contrast: c_int, saturation: c_int) -> c_int; pub fn sws_getColorspaceDetails(c: *mut SwsContext, inv_table: *mut *mut c_int, srcRange: *mut c_int, table: *mut *mut c_int, dstRange: *mut c_int, brightness: *mut c_int, contrast: *mut c_int, saturation: *mut c_int) -> c_int; pub fn sws_allocVec(length: c_int) -> *mut SwsVector; pub fn sws_getGaussianVec(variance: c_double, quality: c_double) -> *mut SwsVector; pub fn sws_getConstVec(c: c_double, length: c_int) -> *mut SwsVector; pub fn sws_getIdentityVec() -> *mut SwsVector; pub fn sws_scaleVec(a: *mut SwsVector, scalar: c_double); pub fn sws_normalizeVec(a: *mut SwsVector, height: c_double); pub fn sws_convVec(a: *mut SwsVector, b: *const SwsVector); pub fn sws_addVec(a: *mut SwsVector, b: *const SwsVector); pub fn sws_subVec(a: *mut SwsVector, b: *const SwsVector); pub fn sws_shiftVec(a: *mut SwsVector, shift: c_int); pub fn sws_cloneVec(a: *const SwsVector) -> *mut SwsVector; pub fn sws_printVec2(a: *const SwsVector, log_ctx: *mut AVClass, log_level: c_int); pub fn sws_freeVec(a: *mut SwsVector); pub fn sws_getDefaultFilter(lumaGBlur: c_float, chromaGBlur: c_float, lumaSharpen: c_float, chromaSharpen: c_float, chromaHShift: c_float, chromaVShift: c_float, verbose: c_int) -> *mut SwsFilter; pub fn sws_freeFilter(filter: *mut SwsFilter); pub fn sws_getCachedContext(context: *mut SwsContext, srcW: c_int, srcH: c_int, srcFormat: AVPixelFormat, dstW: c_int, dstH: c_int, dstFormat: AVPixelFormat, flags: c_int, srcFilter: *mut SwsFilter, dstFilter: *mut SwsFilter, param: *const c_double) -> *mut SwsContext; pub fn sws_convertPalette8ToPacked32(src: *const uint8_t, dst: *mut uint8_t, num_pixels: c_int, palette: *const uint8_t); pub fn sws_convertPalette8ToPacked24(src: *const uint8_t, dst: *mut uint8_t, num_pixels: c_int, palette: *const uint8_t); pub fn sws_get_class() -> *const AVClass; }