diff --git a/sys/src/avcodec/codec.rs b/sys/src/avcodec/codec.rs index a2b8eb2..8bcaffe 100644 --- a/sys/src/avcodec/codec.rs +++ b/sys/src/avcodec/codec.rs @@ -193,6 +193,8 @@ pub enum AVCodecID { AV_CODEC_ID_MVC1_DEPRECATED, AV_CODEC_ID_MVC2_DEPRECATED, AV_CODEC_ID_HQX, + AV_CODEC_ID_TDSC, + AV_CODEC_ID_HQ_HQA, AV_CODEC_ID_BRENDER_PIX = MKBETAG!(b'B', b'P', b'I', b'X'), AV_CODEC_ID_Y41P = MKBETAG!(b'Y', b'4', b'1', b'P'), @@ -823,11 +825,12 @@ pub const FF_PROFILE_AAC_ELD: c_int = 38; pub const FF_PROFILE_MPEG2_AAC_LOW: c_int = 128; pub const FF_PROFILE_MPEG2_AAC_HE: c_int = 131; -pub const FF_PROFILE_DTS: c_int = 20; -pub const FF_PROFILE_DTS_ES: c_int = 30; -pub const FF_PROFILE_DTS_96_24: c_int = 40; -pub const FF_PROFILE_DTS_HD_HRA: c_int = 50; -pub const FF_PROFILE_DTS_HD_MA: c_int = 60; +pub const FF_PROFILE_DTS: c_int = 20; +pub const FF_PROFILE_DTS_ES: c_int = 30; +pub const FF_PROFILE_DTS_96_24: c_int = 40; +pub const FF_PROFILE_DTS_HD_HRA: c_int = 50; +pub const FF_PROFILE_DTS_HD_MA: c_int = 60; +pub const FF_PROFILE_DTS_EXPRESS: c_int = 70; pub const FF_PROFILE_MPEG2_422: c_int = 0; pub const FF_PROFILE_MPEG2_HIGH: c_int = 1; @@ -886,6 +889,11 @@ pub const FF_PROFILE_HEVC_MAIN_10: c_int = 2; pub const FF_PROFILE_HEVC_MAIN_STILL_PICTURE: c_int = 3; pub const FF_PROFILE_HEVC_REXT: c_int = 4; +pub const FF_PROFILE_VP9_0: c_int = 0; +pub const FF_PROFILE_VP9_1: c_int = 1; +pub const FF_PROFILE_VP9_2: c_int = 2; +pub const FF_PROFILE_VP9_3: c_int = 3; + pub const FF_LEVEL_UNKNOWN: c_int = -99; pub const FF_SUB_CHARENC_MODE_DO_NOTHING: c_int = -1; @@ -1139,6 +1147,7 @@ pub struct AVCodec { pub decode: extern fn(*mut AVCodecContext, *mut c_void, *mut c_int, *mut AVPacket) -> c_int, pub close: extern fn(*mut AVCodecContext) -> c_int, pub flush: extern fn(*mut AVCodecContext), + pub caps_internal: c_int, } pub const AV_HWACCEL_FLAG_IGNORE_LEVEL: c_int = 1 << 0; @@ -1364,6 +1373,7 @@ extern { pub fn av_packet_get_side_data(pkt: *mut AVPacket, kind: AVPacketSideDataType, size: *mut c_int) -> *mut uint8_t; pub fn av_packet_merge_side_data(pkt: *mut AVPacket) -> c_int; pub fn av_packet_split_side_data(pkt: *mut AVPacket) -> c_int; + pub fn av_packet_side_data_name(kind: AVPacketSideDataType) -> *const c_char; pub fn av_packet_pack_dictionary(dict: *mut AVDictionary, size: *mut c_int) -> *mut uint8_t; pub fn av_packet_unpack_dictionary(data: *const uint8_t, size: c_int, dict: *mut *mut AVDictionary) -> c_int; pub fn av_packet_free_side_data(pkt: *mut AVPacket); diff --git a/sys/src/avformat/format.rs b/sys/src/avformat/format.rs index 43acb4e..aeb0b50 100644 --- a/sys/src/avformat/format.rs +++ b/sys/src/avformat/format.rs @@ -230,6 +230,7 @@ pub struct AVStream { pub request_probe: c_int, pub skip_to_keyframe: c_int, pub skip_samples: c_int, + pub start_skip_samples: int64_t, pub first_discard_sample: int64_t, pub last_discard_sample: int64_t, pub nb_decoded_frames: c_int, @@ -281,6 +282,7 @@ pub struct AVChapter { } pub type av_format_control_message = extern fn(s: *mut AVFormatContext, kind: c_int, data: *mut c_void, data_size: size_t) -> c_int; +pub type AVOpenCallback = extern fn(*mut AVFormatContext, *mut *mut AVIOContext, *const c_char, c_int, *const AVIOInterruptCB, *mut *mut AVDictionary) -> c_int; #[derive(Eq, PartialEq, Copy, Clone, Debug)] #[repr(C)] @@ -391,6 +393,8 @@ pub struct AVFormatContext { pub dump_separator: *mut uint8_t, pub data_codec_id: AVCodecID, + + pub open_cb: extern fn(*mut AVFormatContext, *mut *mut AVIOContext, *const c_char, c_int, *const AVIOInterruptCB, *mut *mut AVDictionary) -> c_int, } pub const AVFMT_FLAG_GENPTS: c_int = 0x0001; @@ -408,6 +412,7 @@ pub const AVFMT_FLAG_MP4A_LATM: c_int = 0x8000; pub const AVFMT_FLAG_SORT_DTS: c_int = 0x10000; pub const AVFMT_FLAG_PRIV_OPT: c_int = 0x20000; pub const AVFMT_FLAG_KEEP_SIDE_DATA: c_int = 0x40000; +pub const AVFMT_FLAG_FAST_SEEK: c_int = 0x80000; pub const FF_FDEBUG_TS: c_int = 0x0001; @@ -466,6 +471,9 @@ extern { pub fn av_format_get_control_message_cb(s: *const AVFormatContext) -> av_format_control_message; pub fn av_format_set_control_message_cb(s: *mut AVFormatContext, callback: av_format_control_message); + pub fn av_format_get_open_cb(s: *const AVFormatContext) -> AVOpenCallback; + pub fn av_format_set_open_cb(s: *mut AVFormatContext, callback: AVOpenCallback); + pub fn av_format_inject_global_side_data(s: *mut AVFormatContext); pub fn av_fmt_ctx_get_duration_estimation_method(ctx: *const AVFormatContext) -> AVDurationEstimationMethod; diff --git a/sys/src/avformat/io.rs b/sys/src/avformat/io.rs index aad85ba..3bb6ac6 100644 --- a/sys/src/avformat/io.rs +++ b/sys/src/avformat/io.rs @@ -18,6 +18,45 @@ pub struct AVIOInterruptCB { pub opaque: *mut c_void, } +#[derive(Eq, PartialEq, Copy, Clone, Debug)] +#[repr(C)] +pub enum AVIODirEntryType { + AVIO_ENTRY_UNKNOWN, + AVIO_ENTRY_BLOCK_DEVICE, + AVIO_ENTRY_CHARACTER_DEVICE, + AVIO_ENTRY_DIRECTORY, + AVIO_ENTRY_NAMED_PIPE, + AVIO_ENTRY_SYMBOLIC_LINK, + AVIO_ENTRY_SOCKET, + AVIO_ENTRY_FILE, + AVIO_ENTRY_SERVER, + AVIO_ENTRY_SHARE, + AVIO_ENTRY_WORKGROUP, +} + +#[repr(C)] +pub struct AVIODirEntry { + name: *mut c_char, + kind: c_int, + utf8: c_int, + + size: int64_t, + modification_timestamp: int64_t, + + access_timestamp: int64_t, + + status_change_timestamp: int64_t, + + user_id: int64_t, + group_id: int64_t, + filemode: int64_t, +} + +#[repr(C)] +pub struct AVIODirContext { + url_context: *mut c_void, +} + #[repr(C)] pub struct AVIOContext { pub av_class: *mut AVClass, @@ -58,6 +97,10 @@ pub unsafe fn avio_tell(s: *mut AVIOContext) -> int64_t { extern { pub fn avio_find_protocol_name(url: *const c_char) -> *const c_char; pub fn avio_check(url: *const c_char, flags: c_int) -> c_int; + pub fn avio_open_dir(s: *mut *mut AVIODirContext, url: *const c_char, options: *mut *mut AVDictionary) -> c_int; + pub fn avio_read_dir(s: *mut AVIODirContext, next: *mut *mut AVIODirEntry) -> c_int; + pub fn avio_close_dir(s: *mut *mut AVIODirContext) -> c_int; + pub fn avio_free_directory_entry(entry: *mut *mut AVIODirEntry); pub fn avio_alloc_context(buffer: *mut c_uchar, buffer_size: c_int, write_flag: c_int, opaque: *mut c_void, read_packet: extern fn(*mut c_void, *mut uint8_t, c_int) -> c_int, write_packet: extern fn(*mut c_void, *mut uint8_t, c_int) -> c_int, seek: extern fn(*mut c_void, int64_t, c_int) -> int64_t) -> *mut AVIOContext; pub fn avio_write(s: *mut AVIOContext, buf: *const c_uchar, size: c_int); diff --git a/sys/src/avutil/cpu.rs b/sys/src/avutil/cpu.rs index 806aee6..b460ebd 100644 --- a/sys/src/avutil/cpu.rs +++ b/sys/src/avutil/cpu.rs @@ -16,6 +16,7 @@ pub const AV_CPU_FLAG_ATOM: c_uint = 0x10000000; pub const AV_CPU_FLAG_SSE4: c_uint = 0x0100; pub const AV_CPU_FLAG_SSE42: c_uint = 0x0200; pub const AV_CPU_FLAG_AVX: c_uint = 0x4000; +pub const AV_CPU_FLAG_AVXSLOW: c_uint = 0x8000000; pub const AV_CPU_FLAG_XOP: c_uint = 0x0400; pub const AV_CPU_FLAG_FMA4: c_uint = 0x0800; pub const AV_CPU_FLAG_CMOV: c_uint = 0x1001000; @@ -24,6 +25,8 @@ pub const AV_CPU_FLAG_FMA3: c_uint = 0x10000; pub const AV_CPU_FLAG_BMI1: c_uint = 0x20000; pub const AV_CPU_FLAG_BMI2: c_uint = 0x40000; pub const AV_CPU_FLAG_ALTIVEC: c_uint = 0x0001; +pub const AV_CPU_FLAG_VSX: c_uint = 0x0002; +pub const AV_CPU_FLAG_POWER8: c_uint = 0x0004; pub const AV_CPU_FLAG_ARMV5TE: c_uint = 1 << 0; pub const AV_CPU_FLAG_ARMV6: c_uint = 1 << 1; pub const AV_CPU_FLAG_ARMV6T2: c_uint = 1 << 2; diff --git a/sys/src/avutil/frame.rs b/sys/src/avutil/frame.rs index d7215f6..64f8ede 100644 --- a/sys/src/avutil/frame.rs +++ b/sys/src/avutil/frame.rs @@ -32,6 +32,7 @@ pub struct AVFrameSideData { pub data: *mut uint8_t, pub size: c_int, pub metadata: *mut AVDictionary, + pub buf: *mut AVBufferRef, } #[derive(Debug)] diff --git a/sys/src/avutil/log.rs b/sys/src/avutil/log.rs index 167211b..0b528f4 100644 --- a/sys/src/avutil/log.rs +++ b/sys/src/avutil/log.rs @@ -66,6 +66,7 @@ pub const AV_LOG_WARNING: c_int = 24; pub const AV_LOG_INFO: c_int = 32; pub const AV_LOG_VERBOSE: c_int = 40; pub const AV_LOG_DEBUG: c_int = 48; +pub const AV_LOG_TRACE: c_int = 56; pub const AV_LOG_MAX_OFFSET: c_int = (AV_LOG_DEBUG - AV_LOG_QUIET); pub const AV_LOG_SKIP_REPEATED: c_int = 1; diff --git a/sys/src/avutil/mem.rs b/sys/src/avutil/mem.rs index b69bd13..40814ec 100644 --- a/sys/src/avutil/mem.rs +++ b/sys/src/avutil/mem.rs @@ -1,7 +1,7 @@ use libc::{c_void, c_char, c_int, c_uint, uint8_t, size_t}; -use std::mem; use std::ptr; -use super::error::AVERROR; +//use std::mem; +//use super::error::AVERROR; #[inline(always)] pub unsafe fn av_malloc_array(nmemb: size_t, size: size_t) -> *mut c_void { diff --git a/sys/src/avutil/parseutils.rs b/sys/src/avutil/parseutils.rs index ec77369..60dce76 100644 --- a/sys/src/avutil/parseutils.rs +++ b/sys/src/avutil/parseutils.rs @@ -16,7 +16,7 @@ extern { pub fn av_parse_color(rgba_color: *mut uint8_t, color_string: *const c_char, slen: c_int, log_ctx: *mut c_void) -> c_int; pub fn av_get_known_color_name(color_idx: c_int, rgb: *const *const uint8_t) -> *const c_char; pub fn av_parse_time(timeval: *mut int64_t, timestr: *const c_char, duration: c_int) -> c_int; - pub fn av_small_strptime(p: *const c_char, fmt: *const c_char, dt: *mut c_void) -> *mut c_char; pub fn av_find_info_tag(arg: *mut c_char, arg_size: c_int, tag1: *const c_char, info: *const c_char) -> c_int; + pub fn av_small_strptime(p: *const c_char, fmt: *const c_char, dt: *mut c_void) -> *mut c_char; pub fn av_timegm(tm: *mut c_void) -> time_t; } diff --git a/sys/src/avutil/pixfmt.rs b/sys/src/avutil/pixfmt.rs index c3d5235..029ac25 100644 --- a/sys/src/avutil/pixfmt.rs +++ b/sys/src/avutil/pixfmt.rs @@ -6,195 +6,204 @@ pub const AVPALETTE_COUNT: c_int = 256; #[derive(Eq, PartialEq, Copy, Clone, Debug)] #[repr(C)] pub enum AVPixelFormat { - AV_PIX_FMT_NONE = -1, - AV_PIX_FMT_YUV420P, - AV_PIX_FMT_YUYV422, - AV_PIX_FMT_RGB24, - AV_PIX_FMT_BGR24, - AV_PIX_FMT_YUV422P, - AV_PIX_FMT_YUV444P, - AV_PIX_FMT_YUV410P, - AV_PIX_FMT_YUV411P, - AV_PIX_FMT_GRAY8, - AV_PIX_FMT_MONOWHITE, - AV_PIX_FMT_MONOBLACK, - AV_PIX_FMT_PAL8, - AV_PIX_FMT_YUVJ420P, - AV_PIX_FMT_YUVJ422P, - AV_PIX_FMT_YUVJ444P, - AV_PIX_FMT_XVMC_MPEG2_MC, // XXX: #if FF_API_XVMC - AV_PIX_FMT_XVMC_MPEG2_IDCT, // XXX: #if FF_API_XVMC - AV_PIX_FMT_UYVY422, - AV_PIX_FMT_UYYVYY411, - AV_PIX_FMT_BGR8, - AV_PIX_FMT_BGR4, - AV_PIX_FMT_BGR4_BYTE, - AV_PIX_FMT_RGB8, - AV_PIX_FMT_RGB4, - AV_PIX_FMT_RGB4_BYTE, - AV_PIX_FMT_NV12, - AV_PIX_FMT_NV21, + AV_PIX_FMT_NONE = -1, + AV_PIX_FMT_YUV420P, + AV_PIX_FMT_YUYV422, + AV_PIX_FMT_RGB24, + AV_PIX_FMT_BGR24, + AV_PIX_FMT_YUV422P, + AV_PIX_FMT_YUV444P, + AV_PIX_FMT_YUV410P, + AV_PIX_FMT_YUV411P, + AV_PIX_FMT_GRAY8, + AV_PIX_FMT_MONOWHITE, + AV_PIX_FMT_MONOBLACK, + AV_PIX_FMT_PAL8, + AV_PIX_FMT_YUVJ420P, + AV_PIX_FMT_YUVJ422P, + AV_PIX_FMT_YUVJ444P, + AV_PIX_FMT_XVMC_MPEG2_MC, // XXX: #if FF_API_XVMC + AV_PIX_FMT_XVMC_MPEG2_IDCT, // XXX: #if FF_API_XVMC + AV_PIX_FMT_UYVY422, + AV_PIX_FMT_UYYVYY411, + AV_PIX_FMT_BGR8, + AV_PIX_FMT_BGR4, + AV_PIX_FMT_BGR4_BYTE, + AV_PIX_FMT_RGB8, + AV_PIX_FMT_RGB4, + AV_PIX_FMT_RGB4_BYTE, + AV_PIX_FMT_NV12, + AV_PIX_FMT_NV21, - AV_PIX_FMT_ARGB, - AV_PIX_FMT_RGBA, - AV_PIX_FMT_ABGR, - AV_PIX_FMT_BGRA, + AV_PIX_FMT_ARGB, + AV_PIX_FMT_RGBA, + AV_PIX_FMT_ABGR, + AV_PIX_FMT_BGRA, - AV_PIX_FMT_GRAY16BE, - AV_PIX_FMT_GRAY16LE, - AV_PIX_FMT_YUV440P, - AV_PIX_FMT_YUVJ440P, - AV_PIX_FMT_YUVA420P, - AV_PIX_FMT_VDPAU_H264, // XXX: #if FF_API_VDPAU - AV_PIX_FMT_VDPAU_MPEG1, // XXX: #if FF_API_VDPAU - AV_PIX_FMT_VDPAU_MPEG2, // XXX: #if FF_API_VDPAU - AV_PIX_FMT_VDPAU_WMV3, // XXX: #if FF_API_VDPAU - AV_PIX_FMT_VDPAU_VC1, // XXX: #if FF_API_VDPAU - AV_PIX_FMT_RGB48BE, - AV_PIX_FMT_RGB48LE, + AV_PIX_FMT_GRAY16BE, + AV_PIX_FMT_GRAY16LE, + AV_PIX_FMT_YUV440P, + AV_PIX_FMT_YUVJ440P, + AV_PIX_FMT_YUVA420P, + AV_PIX_FMT_VDPAU_H264, // XXX: #if FF_API_VDPAU + AV_PIX_FMT_VDPAU_MPEG1, // XXX: #if FF_API_VDPAU + AV_PIX_FMT_VDPAU_MPEG2, // XXX: #if FF_API_VDPAU + AV_PIX_FMT_VDPAU_WMV3, // XXX: #if FF_API_VDPAU + AV_PIX_FMT_VDPAU_VC1, // XXX: #if FF_API_VDPAU + AV_PIX_FMT_RGB48BE, + AV_PIX_FMT_RGB48LE, - AV_PIX_FMT_RGB565BE, - AV_PIX_FMT_RGB565LE, - AV_PIX_FMT_RGB555BE, - AV_PIX_FMT_RGB555LE, + AV_PIX_FMT_RGB565BE, + AV_PIX_FMT_RGB565LE, + AV_PIX_FMT_RGB555BE, + AV_PIX_FMT_RGB555LE, - AV_PIX_FMT_BGR565BE, - AV_PIX_FMT_BGR565LE, - AV_PIX_FMT_BGR555BE, - AV_PIX_FMT_BGR555LE, + AV_PIX_FMT_BGR565BE, + AV_PIX_FMT_BGR565LE, + AV_PIX_FMT_BGR555BE, + AV_PIX_FMT_BGR555LE, - AV_PIX_FMT_VAAPI_MOCO, - AV_PIX_FMT_VAAPI_IDCT, - AV_PIX_FMT_VAAPI_VLD, + AV_PIX_FMT_VAAPI_MOCO, + AV_PIX_FMT_VAAPI_IDCT, + AV_PIX_FMT_VAAPI_VLD, - AV_PIX_FMT_YUV420P16LE, - AV_PIX_FMT_YUV420P16BE, - AV_PIX_FMT_YUV422P16LE, - AV_PIX_FMT_YUV422P16BE, - AV_PIX_FMT_YUV444P16LE, - AV_PIX_FMT_YUV444P16BE, - AV_PIX_FMT_VDPAU_MPEG4, // XXX: #if FF_API_VDPAU - AV_PIX_FMT_DXVA2_VLD, + AV_PIX_FMT_YUV420P16LE, + AV_PIX_FMT_YUV420P16BE, + AV_PIX_FMT_YUV422P16LE, + AV_PIX_FMT_YUV422P16BE, + AV_PIX_FMT_YUV444P16LE, + AV_PIX_FMT_YUV444P16BE, + AV_PIX_FMT_VDPAU_MPEG4, // XXX: #if FF_API_VDPAU + AV_PIX_FMT_DXVA2_VLD, - AV_PIX_FMT_RGB444LE, - AV_PIX_FMT_RGB444BE, - AV_PIX_FMT_BGR444LE, - AV_PIX_FMT_BGR444BE, - AV_PIX_FMT_YA8, + AV_PIX_FMT_RGB444LE, + AV_PIX_FMT_RGB444BE, + AV_PIX_FMT_BGR444LE, + AV_PIX_FMT_BGR444BE, + AV_PIX_FMT_YA8, - AV_PIX_FMT_BGR48BE, - AV_PIX_FMT_BGR48LE, + AV_PIX_FMT_BGR48BE, + AV_PIX_FMT_BGR48LE, - AV_PIX_FMT_YUV420P9BE, - AV_PIX_FMT_YUV420P9LE, - AV_PIX_FMT_YUV420P10BE, - AV_PIX_FMT_YUV420P10LE, - AV_PIX_FMT_YUV422P10BE, - AV_PIX_FMT_YUV422P10LE, - AV_PIX_FMT_YUV444P9BE, - AV_PIX_FMT_YUV444P9LE, - AV_PIX_FMT_YUV444P10BE, - AV_PIX_FMT_YUV444P10LE, - AV_PIX_FMT_YUV422P9BE, - AV_PIX_FMT_YUV422P9LE, - AV_PIX_FMT_VDA_VLD, + AV_PIX_FMT_YUV420P9BE, + AV_PIX_FMT_YUV420P9LE, + AV_PIX_FMT_YUV420P10BE, + AV_PIX_FMT_YUV420P10LE, + AV_PIX_FMT_YUV422P10BE, + AV_PIX_FMT_YUV422P10LE, + AV_PIX_FMT_YUV444P9BE, + AV_PIX_FMT_YUV444P9LE, + AV_PIX_FMT_YUV444P10BE, + AV_PIX_FMT_YUV444P10LE, + AV_PIX_FMT_YUV422P9BE, + AV_PIX_FMT_YUV422P9LE, + AV_PIX_FMT_VDA_VLD, - AV_PIX_FMT_GBRP, - AV_PIX_FMT_GBRP9BE, - AV_PIX_FMT_GBRP9LE, - AV_PIX_FMT_GBRP10BE, - AV_PIX_FMT_GBRP10LE, - AV_PIX_FMT_GBRP16BE, - AV_PIX_FMT_GBRP16LE, + AV_PIX_FMT_GBRP, + AV_PIX_FMT_GBRP9BE, + AV_PIX_FMT_GBRP9LE, + AV_PIX_FMT_GBRP10BE, + AV_PIX_FMT_GBRP10LE, + AV_PIX_FMT_GBRP16BE, + AV_PIX_FMT_GBRP16LE, - AV_PIX_FMT_YUVA422P_LIBAV, - AV_PIX_FMT_YUVA444P_LIBAV, + AV_PIX_FMT_YUVA422P_LIBAV, + AV_PIX_FMT_YUVA444P_LIBAV, - AV_PIX_FMT_YUVA420P9BE, - AV_PIX_FMT_YUVA420P9LE, - AV_PIX_FMT_YUVA422P9BE, - AV_PIX_FMT_YUVA422P9LE, - AV_PIX_FMT_YUVA444P9BE, - AV_PIX_FMT_YUVA444P9LE, - AV_PIX_FMT_YUVA420P10BE, - AV_PIX_FMT_YUVA420P10LE, - AV_PIX_FMT_YUVA422P10BE, - AV_PIX_FMT_YUVA422P10LE, - AV_PIX_FMT_YUVA444P10BE, - AV_PIX_FMT_YUVA444P10LE, - AV_PIX_FMT_YUVA420P16BE, - AV_PIX_FMT_YUVA420P16LE, - AV_PIX_FMT_YUVA422P16BE, - AV_PIX_FMT_YUVA422P16LE, - AV_PIX_FMT_YUVA444P16BE, - AV_PIX_FMT_YUVA444P16LE, + AV_PIX_FMT_YUVA420P9BE, + AV_PIX_FMT_YUVA420P9LE, + AV_PIX_FMT_YUVA422P9BE, + AV_PIX_FMT_YUVA422P9LE, + AV_PIX_FMT_YUVA444P9BE, + AV_PIX_FMT_YUVA444P9LE, + AV_PIX_FMT_YUVA420P10BE, + AV_PIX_FMT_YUVA420P10LE, + AV_PIX_FMT_YUVA422P10BE, + AV_PIX_FMT_YUVA422P10LE, + AV_PIX_FMT_YUVA444P10BE, + AV_PIX_FMT_YUVA444P10LE, + AV_PIX_FMT_YUVA420P16BE, + AV_PIX_FMT_YUVA420P16LE, + AV_PIX_FMT_YUVA422P16BE, + AV_PIX_FMT_YUVA422P16LE, + AV_PIX_FMT_YUVA444P16BE, + AV_PIX_FMT_YUVA444P16LE, - AV_PIX_FMT_VDPAU, + AV_PIX_FMT_VDPAU, - AV_PIX_FMT_XYZ12LE, - AV_PIX_FMT_XYZ12BE, - AV_PIX_FMT_NV16, - AV_PIX_FMT_NV20LE, - AV_PIX_FMT_NV20BE, + AV_PIX_FMT_XYZ12LE, + AV_PIX_FMT_XYZ12BE, + AV_PIX_FMT_NV16, + AV_PIX_FMT_NV20LE, + AV_PIX_FMT_NV20BE, - AV_PIX_FMT_RGBA64BE_LIBAV, - AV_PIX_FMT_RGBA64LE_LIBAV, - AV_PIX_FMT_BGRA64BE_LIBAV, - AV_PIX_FMT_BGRA64LE_LIBAV, + AV_PIX_FMT_RGBA64BE_LIBAV, + AV_PIX_FMT_RGBA64LE_LIBAV, + AV_PIX_FMT_BGRA64BE_LIBAV, + AV_PIX_FMT_BGRA64LE_LIBAV, - AV_PIX_FMT_YVYU422, + AV_PIX_FMT_YVYU422, - AV_PIX_FMT_VDA, + AV_PIX_FMT_VDA, - AV_PIX_FMT_YA16BE, - AV_PIX_FMT_YA16LE, + AV_PIX_FMT_YA16BE, + AV_PIX_FMT_YA16LE, - AV_PIX_FMT_GBRAP_LIBAV, - AV_PIX_FMT_GBRAP16BE_LIBAV, - AV_PIX_FMT_GBRAP16LE_LIBAV, - AV_PIX_FMT_QSV, + AV_PIX_FMT_GBRAP_LIBAV, + AV_PIX_FMT_GBRAP16BE_LIBAV, + AV_PIX_FMT_GBRAP16LE_LIBAV, + AV_PIX_FMT_QSV, + AV_PIX_FMT_MMAL, - AV_PIX_FMT_0RGB = 0x123 + 4, - AV_PIX_FMT_RGB0, - AV_PIX_FMT_0BGR, - AV_PIX_FMT_BGR0, - AV_PIX_FMT_YUVA444P, - AV_PIX_FMT_YUVA422P, + AV_PIX_FMT_D3D11VA_VLD, - AV_PIX_FMT_YUV420P12BE, - AV_PIX_FMT_YUV420P12LE, - AV_PIX_FMT_YUV420P14BE, - AV_PIX_FMT_YUV420P14LE, - AV_PIX_FMT_YUV422P12BE, - AV_PIX_FMT_YUV422P12LE, - AV_PIX_FMT_YUV422P14BE, - AV_PIX_FMT_YUV422P14LE, - AV_PIX_FMT_YUV444P12BE, - AV_PIX_FMT_YUV444P12LE, - AV_PIX_FMT_YUV444P14BE, - AV_PIX_FMT_YUV444P14LE, - AV_PIX_FMT_GBRP12BE, - AV_PIX_FMT_GBRP12LE, - AV_PIX_FMT_GBRP14BE, - AV_PIX_FMT_GBRP14LE, - AV_PIX_FMT_GBRAP, - AV_PIX_FMT_GBRAP16BE, - AV_PIX_FMT_GBRAP16LE, - AV_PIX_FMT_YUVJ411P, + AV_PIX_FMT_0RGB = 0x123 + 4, + AV_PIX_FMT_RGB0, + AV_PIX_FMT_0BGR, + AV_PIX_FMT_BGR0, + AV_PIX_FMT_YUVA444P, + AV_PIX_FMT_YUVA422P, - AV_PIX_FMT_BAYER_BGGR8, - AV_PIX_FMT_BAYER_RGGB8, - AV_PIX_FMT_BAYER_GBRG8, - AV_PIX_FMT_BAYER_GRBG8, - AV_PIX_FMT_BAYER_BGGR16LE, - AV_PIX_FMT_BAYER_BGGR16BE, - AV_PIX_FMT_BAYER_RGGB16LE, - AV_PIX_FMT_BAYER_RGGB16BE, - AV_PIX_FMT_BAYER_GBRG16LE, - AV_PIX_FMT_BAYER_GBRG16BE, - AV_PIX_FMT_BAYER_GRBG16LE, - AV_PIX_FMT_BAYER_GRBG16BE, - AV_PIX_FMT_NB, + AV_PIX_FMT_YUV420P12BE, + AV_PIX_FMT_YUV420P12LE, + AV_PIX_FMT_YUV420P14BE, + AV_PIX_FMT_YUV420P14LE, + AV_PIX_FMT_YUV422P12BE, + AV_PIX_FMT_YUV422P12LE, + AV_PIX_FMT_YUV422P14BE, + AV_PIX_FMT_YUV422P14LE, + AV_PIX_FMT_YUV444P12BE, + AV_PIX_FMT_YUV444P12LE, + AV_PIX_FMT_YUV444P14BE, + AV_PIX_FMT_YUV444P14LE, + AV_PIX_FMT_GBRP12BE, + AV_PIX_FMT_GBRP12LE, + AV_PIX_FMT_GBRP14BE, + AV_PIX_FMT_GBRP14LE, + AV_PIX_FMT_GBRAP, + AV_PIX_FMT_GBRAP16BE, + AV_PIX_FMT_GBRAP16LE, + AV_PIX_FMT_YUVJ411P, + + AV_PIX_FMT_BAYER_BGGR8, + AV_PIX_FMT_BAYER_RGGB8, + AV_PIX_FMT_BAYER_GBRG8, + AV_PIX_FMT_BAYER_GRBG8, + AV_PIX_FMT_BAYER_BGGR16LE, + AV_PIX_FMT_BAYER_BGGR16BE, + AV_PIX_FMT_BAYER_RGGB16LE, + AV_PIX_FMT_BAYER_RGGB16BE, + AV_PIX_FMT_BAYER_GBRG16LE, + AV_PIX_FMT_BAYER_GBRG16BE, + AV_PIX_FMT_BAYER_GRBG16LE, + AV_PIX_FMT_BAYER_GRBG16BE, + + AV_PIX_FMT_YUV440P10LE, + AV_PIX_FMT_YUV440P10BE, + AV_PIX_FMT_YUV440P12LE, + AV_PIX_FMT_YUV440P12BE, + + AV_PIX_FMT_NB, } pub const AV_PIX_FMT_XVMC: AVPixelFormat = AVPixelFormat::AV_PIX_FMT_XVMC_MPEG2_IDCT; @@ -230,9 +239,11 @@ pub mod default { pub const AV_PIX_FMT_YUV444P9: AVPixelFormat = AV_PIX_FMT_YUV444P9LE; pub const AV_PIX_FMT_YUV420P10: AVPixelFormat = AV_PIX_FMT_YUV420P10LE; pub const AV_PIX_FMT_YUV422P10: AVPixelFormat = AV_PIX_FMT_YUV422P10LE; + pub const AV_PIX_FMT_YUV440P10: AVPixelFormat = AV_PIX_FMT_YUV440P10LE; pub const AV_PIX_FMT_YUV444P10: AVPixelFormat = AV_PIX_FMT_YUV444P10LE; pub const AV_PIX_FMT_YUV420P12: AVPixelFormat = AV_PIX_FMT_YUV420P12LE; pub const AV_PIX_FMT_YUV422P12: AVPixelFormat = AV_PIX_FMT_YUV422P12LE; + pub const AV_PIX_FMT_YUV440P12: AVPixelFormat = AV_PIX_FMT_YUV440P12LE; pub const AV_PIX_FMT_YUV444P12: AVPixelFormat = AV_PIX_FMT_YUV444P12LE; pub const AV_PIX_FMT_YUV420P14: AVPixelFormat = AV_PIX_FMT_YUV420P14LE; pub const AV_PIX_FMT_YUV422P14: AVPixelFormat = AV_PIX_FMT_YUV422P14LE; @@ -295,9 +306,11 @@ pub mod default { pub const AV_PIX_FMT_YUV444P9: AVPixelFormat = AV_PIX_FMT_YUV444P9BE; pub const AV_PIX_FMT_YUV420P10: AVPixelFormat = AV_PIX_FMT_YUV420P10BE; pub const AV_PIX_FMT_YUV422P10: AVPixelFormat = AV_PIX_FMT_YUV422P10BE; + pub const AV_PIX_FMT_YUV440P10: AVPixelFormat = AV_PIX_FMT_YUV440P10BE; pub const AV_PIX_FMT_YUV444P10: AVPixelFormat = AV_PIX_FMT_YUV444P10BE; pub const AV_PIX_FMT_YUV420P12: AVPixelFormat = AV_PIX_FMT_YUV420P12BE; pub const AV_PIX_FMT_YUV422P12: AVPixelFormat = AV_PIX_FMT_YUV422P12BE; + pub const AV_PIX_FMT_YUV440P12: AVPixelFormat = AV_PIX_FMT_YUV440P12BE; pub const AV_PIX_FMT_YUV444P12: AVPixelFormat = AV_PIX_FMT_YUV444P12BE; pub const AV_PIX_FMT_YUV420P14: AVPixelFormat = AV_PIX_FMT_YUV420P14BE; pub const AV_PIX_FMT_YUV422P14: AVPixelFormat = AV_PIX_FMT_YUV422P14BE; diff --git a/sys/src/avutil/rational.rs b/sys/src/avutil/rational.rs index 744074c..26d539d 100644 --- a/sys/src/avutil/rational.rs +++ b/sys/src/avutil/rational.rs @@ -1,4 +1,4 @@ -use libc::{c_int, int64_t, c_double}; +use libc::{c_int, uint32_t, int64_t, c_double}; #[derive(Eq, PartialEq, Copy, Clone, Debug)] #[repr(C)] @@ -50,4 +50,5 @@ extern { pub fn av_d2q(d: c_double, max: c_int) -> AVRational; pub fn av_nearer_q(q: AVRational, q1: AVRational, q2: AVRational) -> c_int; pub fn av_find_nearest_q_idx(q: AVRational, q_list: *const AVRational) -> c_int; + pub fn av_q2intfloat(q: AVRational) -> uint32_t; } diff --git a/sys/src/avutil/string.rs b/sys/src/avutil/string.rs index 63d4aac..a713ab4 100644 --- a/sys/src/avutil/string.rs +++ b/sys/src/avutil/string.rs @@ -77,6 +77,7 @@ extern { pub fn av_dirname(path: *mut c_char) -> *const c_char; pub fn av_match_name(name: *const c_char, names: *const c_char) -> c_int; + pub fn av_append_path_component(path: *const c_char, component: *const c_char) -> *mut c_char; pub fn av_escape(dst: *mut *mut c_char, src: *const c_char, special_chars: *const c_char, mode: AVEscapeMode, flags: c_int) -> c_int; pub fn av_utf8_decode(codep: *mut int32_t, bufp: *const *const uint8_t, buf_end: *const uint8_t, flags: c_uint) -> c_int; pub fn av_match_list(name: *const c_char, list: *const c_char, separator: c_char) -> c_int; diff --git a/sys/src/swresample/resample.rs b/sys/src/swresample/resample.rs index 129ad8e..abcf686 100644 --- a/sys/src/swresample/resample.rs +++ b/sys/src/swresample/resample.rs @@ -64,6 +64,7 @@ extern { 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;