├── .gitignore ├── src ├── avutil │ ├── util.rs │ ├── mod.rs │ ├── macros.rs │ ├── rational.rs │ ├── error.rs │ ├── profile.rs │ └── pixfmt.rs └── lib.rs ├── README.md ├── Cargo.toml ├── .github └── workflows │ └── build.yml └── channel_layout_fixed.h /.gitignore: -------------------------------------------------------------------------------- 1 | target 2 | Cargo.lock 3 | /tmp 4 | -------------------------------------------------------------------------------- /src/avutil/util.rs: -------------------------------------------------------------------------------- 1 | use libc::c_int; 2 | use {AVRational, AV_TIME_BASE}; 3 | 4 | pub const AV_NOPTS_VALUE: i64 = 0x8000000000000000u64 as i64; 5 | pub const AV_TIME_BASE_Q: AVRational = AVRational { 6 | num: 1, 7 | den: AV_TIME_BASE as c_int, 8 | }; 9 | -------------------------------------------------------------------------------- /src/avutil/mod.rs: -------------------------------------------------------------------------------- 1 | #[macro_use] 2 | mod macros; 3 | 4 | mod error; 5 | pub use self::error::*; 6 | 7 | mod util; 8 | pub use self::util::*; 9 | 10 | mod rational; 11 | pub use self::rational::*; 12 | 13 | mod pixfmt; 14 | pub use self::pixfmt::*; 15 | 16 | #[cfg(feature = "ffmpeg_8_0")] 17 | mod profile; 18 | #[cfg(feature = "ffmpeg_8_0")] 19 | pub use self::profile::*; 20 | -------------------------------------------------------------------------------- /src/avutil/macros.rs: -------------------------------------------------------------------------------- 1 | #[macro_export] 2 | macro_rules! MKBETAG { 3 | ($a:expr, $b:expr, $c:expr, $d:expr) => { 4 | ($d as isize) | (($c as isize) << 8) | (($b as isize) << 16) | (($a as isize) << 24) 5 | }; 6 | } 7 | 8 | #[macro_export] 9 | macro_rules! MKTAG { 10 | ($a:expr, $b:expr, $c:expr, $d:expr) => { 11 | ($a as isize) | (($b as isize) << 8) | (($c as isize) << 16) | (($d as isize) << 24) 12 | }; 13 | } 14 | -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- 1 | #![allow(non_upper_case_globals)] 2 | #![allow(non_camel_case_types)] 3 | #![allow(non_snake_case)] 4 | #![allow(clippy::approx_constant)] 5 | #![allow(clippy::missing_safety_doc)] 6 | #![allow(clippy::redundant_static_lifetimes)] 7 | #![allow(clippy::too_many_arguments)] 8 | #![allow(clippy::type_complexity)] 9 | #![allow(clippy::ptr_offset_with_cast)] 10 | #![allow(unpredictable_function_pointer_comparisons)] 11 | #![allow(unnecessary_transmutes)] 12 | 13 | extern crate libc; 14 | 15 | include!(concat!(env!("OUT_DIR"), "/bindings.rs")); 16 | 17 | #[macro_use] 18 | mod avutil; 19 | pub use avutil::*; 20 | -------------------------------------------------------------------------------- /src/avutil/rational.rs: -------------------------------------------------------------------------------- 1 | use libc::{c_double, c_int}; 2 | use AVRational; 3 | 4 | #[inline(always)] 5 | pub unsafe fn av_make_q(num: c_int, den: c_int) -> AVRational { 6 | AVRational { num, den } 7 | } 8 | 9 | #[inline(always)] 10 | pub unsafe fn av_cmp_q(a: AVRational, b: AVRational) -> c_int { 11 | let tmp = i64::from(a.num) * i64::from(b.den) - i64::from(b.num) * i64::from(a.den); 12 | 13 | if tmp != 0 { 14 | (((tmp ^ i64::from(a.den) ^ i64::from(b.den)) >> 63) | 1) as c_int 15 | } else if b.den != 0 && a.den != 0 { 16 | 0 17 | } else if a.num != 0 && b.num != 0 { 18 | ((i64::from(a.num) >> 31) - (i64::from(b.num) >> 31)) as c_int 19 | } else { 20 | c_int::MIN 21 | } 22 | } 23 | 24 | #[inline(always)] 25 | pub unsafe fn av_q2d(a: AVRational) -> c_double { 26 | f64::from(a.num) / f64::from(a.den) 27 | } 28 | 29 | #[inline(always)] 30 | pub unsafe fn av_inv_q(q: AVRational) -> AVRational { 31 | AVRational { 32 | num: q.den, 33 | den: q.num, 34 | } 35 | } 36 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![ffmpeg-sys-next on crates.io](https://img.shields.io/crates/v/ffmpeg-sys-next?cacheSeconds=3600)](https://crates.io/crates/ffmpeg-sys-next) 2 | [![build](https://github.com/zmwangx/rust-ffmpeg-sys/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/zmwangx/rust-ffmpeg-sys/actions) 3 | 4 | This is a fork of the abandoned [ffmpeg-sys](https://github.com/meh/rust-ffmpeg-sys) crate. You can find this crate as [ffmpeg-sys-next](https://crates.io/crates/ffmpeg-sys-next) on crates.io. 5 | 6 | This crate contains low level bindings to FFmpeg. You're probably interested in the high level bindings instead: [ffmpeg-next](https://github.com/zmwangx/rust-ffmpeg). 7 | 8 | A word on versioning: major and minor versions track major and minor versions of FFmpeg, e.g. 4.2.x of this crate has been updated to support the 4.2.x series of FFmpeg. Patch level is reserved for bug fixes of this crate and does not track FFmpeg patch versions. 9 | 10 | ## Feature flags 11 | 12 | In addition to feature flags declared in `Cargo.toml`, this crate performs various compile-time version and feature detections and exposes the results in additional flags. These flags are briefly documented below; run `cargo build -vv` to view more details. 13 | 14 | - `ffmpeg__` flags (new in v4.3.2), e.g. `ffmpeg_4_4`, indicating the FFmpeg installation being compiled against is at least version `.`. Currently available: 15 | 16 | - `ffmpeg_3_0` 17 | - `ffmpeg_3_1` 18 | - `ffmpeg_3_2` 19 | - `ffmpeg_3_3` 20 | - `ffmpeg_3_1` 21 | - `ffmpeg_4_0` 22 | - `ffmpeg_4_1` 23 | - `ffmpeg_4_2` 24 | - `ffmpeg_4_3` 25 | - `ffmpeg_4_4` 26 | 27 | - `avcodec_version_greater_than__` (new in v4.3.2), e.g., `avcodec_version_greater_than_58_90`. The name should be self-explanatory. 28 | 29 | - `ff_api_`, e.g. `ff_api_vaapi`, corresponding to whether their respective uppercase deprecation guards evaluate to true. 30 | 31 | - `ff_api__is_defined`, e.g. `ff_api_vappi_is_defined`, similar to above except these are enabled as long as the corresponding deprecation guards are defined. 32 | -------------------------------------------------------------------------------- /src/avutil/error.rs: -------------------------------------------------------------------------------- 1 | use libc::{c_char, c_int, size_t}; 2 | 3 | // Note: FFmpeg's AVERROR and AVUNERROR are conditionally defined based on 4 | // whether EDOM is positive, claiming that "Some platforms have E* and errno 5 | // already negated". This can be traced to a commit in 2007 where "some 6 | // platforms" were specifically identified as BeOS (so maybe also Haiku?): 7 | // https://github.com/FFmpeg/FFmpeg/commit/8fa36ae09dddb1b639b4df5d505c0dbcf4e916e4 8 | // constness is more valuable than BeOS support, so if someone really needs it, 9 | // send a patch with cfg_attr. 10 | 11 | #[inline(always)] 12 | pub const fn AVERROR(e: c_int) -> c_int { 13 | -e 14 | } 15 | 16 | #[inline(always)] 17 | pub const fn AVUNERROR(e: c_int) -> c_int { 18 | -e 19 | } 20 | 21 | macro_rules! FFERRTAG { 22 | ($a:expr, $b:expr, $c:expr, $d:expr) => { 23 | -MKTAG!($a, $b, $c, $d) as c_int 24 | }; 25 | } 26 | 27 | pub const AVERROR_BSF_NOT_FOUND: c_int = FFERRTAG!(0xF8, b'B', b'S', b'F'); 28 | pub const AVERROR_BUG: c_int = FFERRTAG!(b'B', b'U', b'G', b'!'); 29 | pub const AVERROR_BUFFER_TOO_SMALL: c_int = FFERRTAG!(b'B', b'U', b'F', b'S'); 30 | pub const AVERROR_DECODER_NOT_FOUND: c_int = FFERRTAG!(0xF8, b'D', b'E', b'C'); 31 | pub const AVERROR_DEMUXER_NOT_FOUND: c_int = FFERRTAG!(0xF8, b'D', b'E', b'M'); 32 | pub const AVERROR_ENCODER_NOT_FOUND: c_int = FFERRTAG!(0xF8, b'E', b'N', b'C'); 33 | pub const AVERROR_EOF: c_int = FFERRTAG!(b'E', b'O', b'F', b' '); 34 | pub const AVERROR_EXIT: c_int = FFERRTAG!(b'E', b'X', b'I', b'T'); 35 | pub const AVERROR_EXTERNAL: c_int = FFERRTAG!(b'E', b'X', b'T', b' '); 36 | pub const AVERROR_FILTER_NOT_FOUND: c_int = FFERRTAG!(0xF8, b'F', b'I', b'L'); 37 | pub const AVERROR_INVALIDDATA: c_int = FFERRTAG!(b'I', b'N', b'D', b'A'); 38 | pub const AVERROR_MUXER_NOT_FOUND: c_int = FFERRTAG!(0xF8, b'M', b'U', b'X'); 39 | pub const AVERROR_OPTION_NOT_FOUND: c_int = FFERRTAG!(0xF8, b'O', b'P', b'T'); 40 | pub const AVERROR_PATCHWELCOME: c_int = FFERRTAG!(b'P', b'A', b'W', b'E'); 41 | pub const AVERROR_PROTOCOL_NOT_FOUND: c_int = FFERRTAG!(0xF8, b'P', b'R', b'O'); 42 | 43 | pub const AVERROR_STREAM_NOT_FOUND: c_int = FFERRTAG!(0xF8, b'S', b'T', b'R'); 44 | 45 | pub const AVERROR_BUG2: c_int = FFERRTAG!(b'B', b'U', b'G', b' '); 46 | pub const AVERROR_UNKNOWN: c_int = FFERRTAG!(b'U', b'N', b'K', b'N'); 47 | 48 | pub const AVERROR_HTTP_BAD_REQUEST: c_int = FFERRTAG!(0xF8, b'4', b'0', b'0'); 49 | pub const AVERROR_HTTP_UNAUTHORIZED: c_int = FFERRTAG!(0xF8, b'4', b'0', b'1'); 50 | pub const AVERROR_HTTP_FORBIDDEN: c_int = FFERRTAG!(0xF8, b'4', b'0', b'3'); 51 | pub const AVERROR_HTTP_NOT_FOUND: c_int = FFERRTAG!(0xF8, b'4', b'0', b'4'); 52 | pub const AVERROR_HTTP_TOO_MANY_REQUESTS: c_int = FFERRTAG!(0xF8, b'4', b'2', b'9'); 53 | pub const AVERROR_HTTP_OTHER_4XX: c_int = FFERRTAG!(0xF8, b'4', b'X', b'X'); 54 | pub const AVERROR_HTTP_SERVER_ERROR: c_int = FFERRTAG!(0xF8, b'5', b'X', b'X'); 55 | 56 | #[inline(always)] 57 | pub unsafe fn av_make_error_string( 58 | errbuf: *mut c_char, 59 | errbuf_size: size_t, 60 | errnum: c_int, 61 | ) -> *mut c_char { 62 | av_strerror(errnum, errbuf, errbuf_size); 63 | 64 | errbuf 65 | } 66 | 67 | extern "C" { 68 | pub fn av_strerror(errnum: c_int, errbuf: *mut c_char, errbuf_size: size_t) -> c_int; 69 | } 70 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "ffmpeg-sys-next" 3 | version = "8.0.1" 4 | build = "build.rs" 5 | links = "ffmpeg" 6 | 7 | authors = ["meh. ", "Zhiming Wang "] 8 | license = "WTFPL" 9 | 10 | description = "FFI bindings to FFmpeg" 11 | repository = "https://github.com/zmwangx/rust-ffmpeg-sys" 12 | keywords = ["audio", "video"] 13 | 14 | [lib] 15 | # Disable doctests as a workaround for https://github.com/rust-lang/rust-bindgen/issues/1313 16 | doctest = false 17 | 18 | [dependencies] 19 | libc = "0.2" 20 | 21 | [build-dependencies] 22 | num_cpus = "1.17" 23 | cc = "1.2" 24 | pkg-config = "0.3" 25 | bindgen = { version = "0.72", default-features = false, features = ["runtime"] } 26 | 27 | [target.'cfg(target_env = "msvc")'.build-dependencies] 28 | vcpkg = "0.2" 29 | 30 | [features] 31 | default = ["avcodec", "avdevice", "avfilter", "avformat", "swresample", "swscale"] 32 | 33 | static = [] 34 | build = ["static"] 35 | 36 | # mark enums in generated bindings as #[non_exhaustive] 37 | non-exhaustive-enums = [] 38 | 39 | # licensing 40 | build-license-gpl = ["build"] 41 | build-license-nonfree = ["build"] 42 | build-license-version3 = ["build"] 43 | 44 | # misc 45 | build-drm = ["build"] 46 | build-nvenc = ["build"] 47 | build-pic = ["build"] 48 | build-zlib = ["build"] 49 | 50 | # ssl 51 | build-lib-gnutls = ["build"] 52 | build-lib-openssl = ["build"] 53 | 54 | # filters 55 | build-lib-fontconfig = ["build"] 56 | build-lib-frei0r = ["build"] 57 | build-lib-ladspa = ["build"] 58 | build-lib-ass = ["build"] 59 | build-lib-freetype = ["build"] 60 | build-lib-freebidi = ["build"] 61 | build-lib-opencv = ["build"] 62 | build-lib-vmaf = ["build"] 63 | 64 | # encoders/decoders 65 | build-lib-aacplus = ["build"] 66 | build-lib-celt = ["build"] 67 | build-lib-dav1d = ["build"] 68 | build-lib-dcadec = ["build"] 69 | build-lib-faac = ["build"] 70 | build-lib-fdk-aac = ["build"] 71 | build-lib-gsm = ["build"] 72 | build-lib-ilbc = ["build"] 73 | build-lib-kvazaar = ["build"] 74 | build-lib-mp3lame = ["build"] 75 | build-lib-opencore-amrnb = ["build"] 76 | build-lib-opencore-amrwb = ["build"] 77 | build-lib-openh264 = ["build"] 78 | build-lib-openjpeg = ["build"] 79 | build-lib-opus = ["build"] 80 | build-lib-schroedinger = ["build"] 81 | build-lib-shine = ["build"] 82 | build-lib-snappy = ["build"] 83 | build-lib-speex = ["build"] 84 | build-lib-stagefright-h264 = ["build"] 85 | build-lib-theora = ["build"] 86 | build-lib-twolame = ["build"] 87 | build-lib-utvideo = ["build"] 88 | build-lib-vo-aacenc = ["build"] 89 | build-lib-vo-amrwbenc = ["build"] 90 | build-lib-vorbis = ["build"] 91 | build-lib-vpx = ["build"] 92 | build-lib-wavpack = ["build"] 93 | build-lib-webp = ["build"] 94 | build-lib-x264 = ["build"] 95 | build-lib-x265 = ["build"] 96 | build-lib-avs = ["build"] 97 | build-lib-xvid = ["build"] 98 | 99 | # hardware accelleration 100 | build-videotoolbox = ["build"] 101 | build-audiotoolbox = ["build"] 102 | build-vaapi = ["build"] 103 | build-lib-d3d11va = ["build"] 104 | build-lib-dxva2 = ["build"] 105 | build-nvidia = ["build"] 106 | build-lib-libmfx = ["build"] 107 | build-mediacodec = ["build"] 108 | build-amf = ["build"] 109 | build-vulkan = ["build"] 110 | 111 | # protocols 112 | build-lib-smbclient = ["build"] 113 | build-lib-ssh = ["build"] 114 | 115 | # components 116 | avcodec = [] 117 | avdevice = ["avformat"] 118 | avfilter = [] 119 | avformat = ["avcodec"] 120 | avresample = [] 121 | postproc = [] 122 | swresample = [] 123 | swscale = [] 124 | -------------------------------------------------------------------------------- /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: build 2 | on: 3 | push: 4 | branches: 5 | - master 6 | pull_request: 7 | schedule: 8 | - cron: "0 0 * * *" 9 | jobs: 10 | build-test-lint: 11 | name: FFmpeg ${{ matrix.ffmpeg_version }} - bindgen, test, and lint 12 | runs-on: ubuntu-latest 13 | container: jrottenberg/ffmpeg:${{ matrix.ffmpeg_version }}-ubuntu 14 | strategy: 15 | matrix: 16 | ffmpeg_version: 17 | ["3.3", "3.4", "4.0", "4.1", "4.2", "4.3", "4.4", "5.0", "5.1", "6.0"] 18 | fail-fast: false 19 | env: 20 | CARGO_PROFILE_DEV_BUILD_OVERRIDE_DEBUG: true 21 | FEATURES: avcodec,avdevice,avfilter,avformat,postproc,swresample,swscale 22 | steps: 23 | - uses: actions/checkout@v2 24 | - name: Install dependencies 25 | run: | 26 | apt update 27 | apt install -y --no-install-recommends clang curl pkg-config ca-certificates 28 | - name: Set up Rust 29 | uses: actions-rust-lang/setup-rust-toolchain@v1 30 | with: 31 | toolchain: stable 32 | override: true 33 | components: rustfmt, clippy 34 | - name: Build 35 | run: | 36 | cargo build --features $FEATURES 37 | - name: Test 38 | run: | 39 | cargo test --features $FEATURES 40 | - name: Lint 41 | run: | 42 | cargo clippy --features $FEATURES -- -D warnings 43 | 44 | # While this issue persists in the ffmpeg docker hub https://github.com/jrottenberg/ffmpeg/issues/418 45 | # manually download ffmpeg sources and link 46 | # seems like the docker image is somehow conflicting with the github action's ubuntu version 47 | build-test-lint-7-1: 48 | name: FFmpeg ${{ matrix.ffmpeg_version }} - bindgen, test, and lint 49 | runs-on: ubuntu-latest 50 | strategy: 51 | fail-fast: false 52 | matrix: 53 | ffmpeg_version: ["6.1", "7.0", "7.1", "8.0"] 54 | env: 55 | CARGO_PROFILE_DEV_BUILD_OVERRIDE_DEBUG: true 56 | FEATURES: avcodec,avdevice,avfilter,avformat,swresample,swscale #,postproc 57 | FFMPEG_DIR: /home/runner/work/rust-ffmpeg-sys/rust-ffmpeg-sys/ffmpeg-${{ matrix.ffmpeg_version }}-linux-clang-default 58 | steps: 59 | - uses: actions/checkout@v2 60 | - name: Install dependencies 61 | run: | 62 | sudo apt update 63 | sudo apt install -y --no-install-recommends clang curl pkg-config xz-utils 64 | curl -L https://sourceforge.net/projects/avbuild/files/linux/ffmpeg-${{ matrix.ffmpeg_version }}-linux-clang-default.tar.xz/download -o ffmpeg.tar.xz 65 | tar -xf ffmpeg.tar.xz 66 | pwd 67 | - name: Set up Rust 68 | uses: actions-rs/toolchain@v1 69 | with: 70 | toolchain: stable 71 | override: true 72 | components: rustfmt, clippy 73 | - name: Build 74 | run: | 75 | cargo build --features $FEATURES 76 | - name: Test 77 | run: | 78 | cargo test --features $FEATURES 79 | - name: Lint 80 | run: | 81 | cargo clippy --features $FEATURES -- -D warnings 82 | 83 | latest-ffmpeg-build-static: 84 | name: Manually fetch, build, and link static ffmpeg 85 | runs-on: ubuntu-latest 86 | env: 87 | FEATURES: build,static,build-lib-x264,build-license-gpl,avcodec,avdevice,avfilter,avformat,swresample,swscale #,postproc 88 | steps: 89 | - uses: actions/checkout@v2 90 | - name: Set up Rust 91 | uses: actions-rs/toolchain@v1 92 | with: 93 | toolchain: stable 94 | override: true 95 | components: rustfmt, clippy 96 | - name: Check format 97 | run: | 98 | cargo fmt --all -- --check 99 | - name: Install dependencies 100 | run: | 101 | sudo apt update 102 | sudo apt install -y --no-install-recommends clang curl pkg-config ca-certificates llvm pkg-config curl libssl-dev yasm nasm libx264-dev 103 | 104 | - name: Build and statically link latest ffmpeg 105 | run: | 106 | cargo build --features $FEATURES -vv 107 | cargo test --features $FEATURES 108 | -------------------------------------------------------------------------------- /src/avutil/profile.rs: -------------------------------------------------------------------------------- 1 | use crate::*; 2 | 3 | pub const FF_PROFILE_AAC_ELD: i32 = AV_PROFILE_AAC_ELD; 4 | pub const FF_PROFILE_AAC_HE_V2: i32 = AV_PROFILE_AAC_HE_V2; 5 | pub const FF_PROFILE_AAC_HE: i32 = AV_PROFILE_AAC_HE; 6 | pub const FF_PROFILE_AAC_LD: i32 = AV_PROFILE_AAC_LD; 7 | pub const FF_PROFILE_AAC_LOW: i32 = AV_PROFILE_AAC_LOW; 8 | pub const FF_PROFILE_AAC_LTP: i32 = AV_PROFILE_AAC_LTP; 9 | pub const FF_PROFILE_AAC_MAIN: i32 = AV_PROFILE_AAC_MAIN; 10 | pub const FF_PROFILE_AAC_SSR: i32 = AV_PROFILE_AAC_SSR; 11 | pub const FF_PROFILE_DTS_96_24: i32 = AV_PROFILE_DTS_96_24; 12 | pub const FF_PROFILE_DTS_ES: i32 = AV_PROFILE_DTS_ES; 13 | pub const FF_PROFILE_DTS_EXPRESS: i32 = AV_PROFILE_DTS_EXPRESS; 14 | pub const FF_PROFILE_DTS_HD_HRA: i32 = AV_PROFILE_DTS_HD_HRA; 15 | pub const FF_PROFILE_DTS_HD_MA: i32 = AV_PROFILE_DTS_HD_MA; 16 | pub const FF_PROFILE_DTS: i32 = AV_PROFILE_DTS; 17 | pub const FF_PROFILE_H264_BASELINE: i32 = AV_PROFILE_H264_BASELINE; 18 | pub const FF_PROFILE_H264_CAVLC_444: i32 = AV_PROFILE_H264_CAVLC_444; 19 | pub const FF_PROFILE_H264_CONSTRAINED_BASELINE: i32 = AV_PROFILE_H264_CONSTRAINED_BASELINE; 20 | pub const FF_PROFILE_H264_CONSTRAINED: i32 = AV_PROFILE_H264_CONSTRAINED; 21 | pub const FF_PROFILE_H264_EXTENDED: i32 = AV_PROFILE_H264_EXTENDED; 22 | pub const FF_PROFILE_H264_HIGH_10_INTRA: i32 = AV_PROFILE_H264_HIGH_10_INTRA; 23 | pub const FF_PROFILE_H264_HIGH_10: i32 = AV_PROFILE_H264_HIGH_10; 24 | pub const FF_PROFILE_H264_HIGH_422_INTRA: i32 = AV_PROFILE_H264_HIGH_422_INTRA; 25 | pub const FF_PROFILE_H264_HIGH_422: i32 = AV_PROFILE_H264_HIGH_422; 26 | pub const FF_PROFILE_H264_HIGH_444_INTRA: i32 = AV_PROFILE_H264_HIGH_444_INTRA; 27 | pub const FF_PROFILE_H264_HIGH_444_PREDICTIVE: i32 = AV_PROFILE_H264_HIGH_444_PREDICTIVE; 28 | pub const FF_PROFILE_H264_HIGH_444: i32 = AV_PROFILE_H264_HIGH_444; 29 | pub const FF_PROFILE_H264_HIGH: i32 = AV_PROFILE_H264_HIGH; 30 | pub const FF_PROFILE_H264_INTRA: i32 = AV_PROFILE_H264_INTRA; 31 | pub const FF_PROFILE_H264_MAIN: i32 = AV_PROFILE_H264_MAIN; 32 | pub const FF_PROFILE_HEVC_MAIN_10: i32 = AV_PROFILE_HEVC_MAIN_10; 33 | pub const FF_PROFILE_HEVC_MAIN_STILL_PICTURE: i32 = AV_PROFILE_HEVC_MAIN_STILL_PICTURE; 34 | pub const FF_PROFILE_HEVC_MAIN: i32 = AV_PROFILE_HEVC_MAIN; 35 | pub const FF_PROFILE_HEVC_REXT: i32 = AV_PROFILE_HEVC_REXT; 36 | pub const FF_PROFILE_JPEG2000_CSTREAM_NO_RESTRICTION: i32 = 37 | AV_PROFILE_JPEG2000_CSTREAM_NO_RESTRICTION; 38 | pub const FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_0: i32 = 39 | AV_PROFILE_JPEG2000_CSTREAM_RESTRICTION_0; 40 | pub const FF_PROFILE_JPEG2000_CSTREAM_RESTRICTION_1: i32 = 41 | AV_PROFILE_JPEG2000_CSTREAM_RESTRICTION_1; 42 | pub const FF_PROFILE_JPEG2000_DCINEMA_2K: i32 = AV_PROFILE_JPEG2000_DCINEMA_2K; 43 | pub const FF_PROFILE_JPEG2000_DCINEMA_4K: i32 = AV_PROFILE_JPEG2000_DCINEMA_4K; 44 | pub const FF_PROFILE_MPEG2_422: i32 = AV_PROFILE_MPEG2_422; 45 | pub const FF_PROFILE_MPEG2_AAC_HE: i32 = AV_PROFILE_MPEG2_AAC_HE; 46 | pub const FF_PROFILE_MPEG2_AAC_LOW: i32 = AV_PROFILE_MPEG2_AAC_LOW; 47 | pub const FF_PROFILE_MPEG2_HIGH: i32 = AV_PROFILE_MPEG2_HIGH; 48 | pub const FF_PROFILE_MPEG2_MAIN: i32 = AV_PROFILE_MPEG2_MAIN; 49 | pub const FF_PROFILE_MPEG2_SIMPLE: i32 = AV_PROFILE_MPEG2_SIMPLE; 50 | pub const FF_PROFILE_MPEG2_SNR_SCALABLE: i32 = AV_PROFILE_MPEG2_SNR_SCALABLE; 51 | pub const FF_PROFILE_MPEG2_SS: i32 = AV_PROFILE_MPEG2_SS; 52 | pub const FF_PROFILE_MPEG4_ADVANCED_CODING: i32 = AV_PROFILE_MPEG4_ADVANCED_CODING; 53 | pub const FF_PROFILE_MPEG4_ADVANCED_CORE: i32 = AV_PROFILE_MPEG4_ADVANCED_CORE; 54 | pub const FF_PROFILE_MPEG4_ADVANCED_REAL_TIME: i32 = AV_PROFILE_MPEG4_ADVANCED_REAL_TIME; 55 | pub const FF_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE: i32 = 56 | AV_PROFILE_MPEG4_ADVANCED_SCALABLE_TEXTURE; 57 | pub const FF_PROFILE_MPEG4_ADVANCED_SIMPLE: i32 = AV_PROFILE_MPEG4_ADVANCED_SIMPLE; 58 | pub const FF_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE: i32 = AV_PROFILE_MPEG4_BASIC_ANIMATED_TEXTURE; 59 | pub const FF_PROFILE_MPEG4_CORE_SCALABLE: i32 = AV_PROFILE_MPEG4_CORE_SCALABLE; 60 | pub const FF_PROFILE_MPEG4_CORE: i32 = AV_PROFILE_MPEG4_CORE; 61 | pub const FF_PROFILE_MPEG4_HYBRID: i32 = AV_PROFILE_MPEG4_HYBRID; 62 | pub const FF_PROFILE_MPEG4_MAIN: i32 = AV_PROFILE_MPEG4_MAIN; 63 | pub const FF_PROFILE_MPEG4_N_BIT: i32 = AV_PROFILE_MPEG4_N_BIT; 64 | pub const FF_PROFILE_MPEG4_SCALABLE_TEXTURE: i32 = AV_PROFILE_MPEG4_SCALABLE_TEXTURE; 65 | pub const FF_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION: i32 = AV_PROFILE_MPEG4_SIMPLE_FACE_ANIMATION; 66 | pub const FF_PROFILE_MPEG4_SIMPLE_SCALABLE: i32 = AV_PROFILE_MPEG4_SIMPLE_SCALABLE; 67 | pub const FF_PROFILE_MPEG4_SIMPLE_STUDIO: i32 = AV_PROFILE_MPEG4_SIMPLE_STUDIO; 68 | pub const FF_PROFILE_MPEG4_SIMPLE: i32 = AV_PROFILE_MPEG4_SIMPLE; 69 | pub const FF_PROFILE_RESERVED: i32 = AV_PROFILE_RESERVED; 70 | pub const FF_PROFILE_UNKNOWN: i32 = AV_PROFILE_UNKNOWN; 71 | pub const FF_PROFILE_VC1_ADVANCED: i32 = AV_PROFILE_VC1_ADVANCED; 72 | pub const FF_PROFILE_VC1_COMPLEX: i32 = AV_PROFILE_VC1_COMPLEX; 73 | pub const FF_PROFILE_VC1_MAIN: i32 = AV_PROFILE_VC1_MAIN; 74 | pub const FF_PROFILE_VC1_SIMPLE: i32 = AV_PROFILE_VC1_SIMPLE; 75 | pub const FF_PROFILE_VP9_0: i32 = AV_PROFILE_VP9_0; 76 | pub const FF_PROFILE_VP9_1: i32 = AV_PROFILE_VP9_1; 77 | pub const FF_PROFILE_VP9_2: i32 = AV_PROFILE_VP9_2; 78 | pub const FF_PROFILE_VP9_3: i32 = AV_PROFILE_VP9_3; 79 | -------------------------------------------------------------------------------- /channel_layout_fixed.h: -------------------------------------------------------------------------------- 1 | // Here until https://github.com/rust-lang/rust-bindgen/issues/2192 / 2 | // https://github.com/rust-lang/rust-bindgen/issues/258 is fixed. 3 | #include 4 | 5 | #if (LIBAVUTIL_VERSION_MAJOR >= 57 && LIBAVUTIL_VERSION_MINOR >= 28) || LIBAVUTIL_VERSION_MAJOR >= 58 6 | 7 | #undef AV_CH_FRONT_LEFT 8 | #undef AV_CH_FRONT_RIGHT 9 | #undef AV_CH_FRONT_CENTER 10 | #undef AV_CH_LOW_FREQUENCY 11 | #undef AV_CH_BACK_LEFT 12 | #undef AV_CH_BACK_RIGHT 13 | #undef AV_CH_FRONT_LEFT_OF_CENTER 14 | #undef AV_CH_FRONT_RIGHT_OF_CENTER 15 | #undef AV_CH_BACK_CENTER 16 | #undef AV_CH_SIDE_LEFT 17 | #undef AV_CH_SIDE_RIGHT 18 | #undef AV_CH_TOP_CENTER 19 | #undef AV_CH_TOP_FRONT_LEFT 20 | #undef AV_CH_TOP_FRONT_CENTER 21 | #undef AV_CH_TOP_FRONT_RIGHT 22 | #undef AV_CH_TOP_BACK_LEFT 23 | #undef AV_CH_TOP_BACK_CENTER 24 | #undef AV_CH_TOP_BACK_RIGHT 25 | #undef AV_CH_STEREO_LEFT 26 | #undef AV_CH_STEREO_RIGHT 27 | #undef AV_CH_WIDE_LEFT 28 | #undef AV_CH_WIDE_RIGHT 29 | #undef AV_CH_SURROUND_DIRECT_LEFT 30 | #undef AV_CH_SURROUND_DIRECT_RIGHT 31 | #undef AV_CH_LOW_FREQUENCY_2 32 | #undef AV_CH_TOP_SIDE_LEFT 33 | #undef AV_CH_TOP_SIDE_RIGHT 34 | #undef AV_CH_BOTTOM_FRONT_CENTER 35 | #undef AV_CH_BOTTOM_FRONT_LEFT 36 | #undef AV_CH_BOTTOM_FRONT_RIGHT 37 | 38 | const unsigned long long AV_CH_FRONT_LEFT = (1ULL << AV_CHAN_FRONT_LEFT); 39 | const unsigned long long AV_CH_FRONT_RIGHT = (1ULL << AV_CHAN_FRONT_RIGHT); 40 | const unsigned long long AV_CH_FRONT_CENTER = 41 | (1ULL << AV_CHAN_FRONT_CENTER); 42 | const unsigned long long AV_CH_LOW_FREQUENCY = 43 | (1ULL << AV_CHAN_LOW_FREQUENCY); 44 | const unsigned long long AV_CH_BACK_LEFT = (1ULL << AV_CHAN_BACK_LEFT); 45 | const unsigned long long AV_CH_BACK_RIGHT = (1ULL << AV_CHAN_BACK_RIGHT); 46 | const unsigned long long AV_CH_FRONT_LEFT_OF_CENTER = 47 | (1ULL << AV_CHAN_FRONT_LEFT_OF_CENTER); 48 | const unsigned long long AV_CH_FRONT_RIGHT_OF_CENTER = 49 | (1ULL << AV_CHAN_FRONT_RIGHT_OF_CENTER); 50 | const unsigned long long AV_CH_BACK_CENTER = (1ULL << AV_CHAN_BACK_CENTER); 51 | const unsigned long long AV_CH_SIDE_LEFT = (1ULL << AV_CHAN_SIDE_LEFT); 52 | const unsigned long long AV_CH_SIDE_RIGHT = (1ULL << AV_CHAN_SIDE_RIGHT); 53 | const unsigned long long AV_CH_TOP_CENTER = (1ULL << AV_CHAN_TOP_CENTER); 54 | const unsigned long long AV_CH_TOP_FRONT_LEFT = 55 | (1ULL << AV_CHAN_TOP_FRONT_LEFT); 56 | const unsigned long long AV_CH_TOP_FRONT_CENTER = 57 | (1ULL << AV_CHAN_TOP_FRONT_CENTER); 58 | const unsigned long long AV_CH_TOP_FRONT_RIGHT = 59 | (1ULL << AV_CHAN_TOP_FRONT_RIGHT); 60 | const unsigned long long AV_CH_TOP_BACK_LEFT = 61 | (1ULL << AV_CHAN_TOP_BACK_LEFT); 62 | const unsigned long long AV_CH_TOP_BACK_CENTER = 63 | (1ULL << AV_CHAN_TOP_BACK_CENTER); 64 | const unsigned long long AV_CH_TOP_BACK_RIGHT = 65 | (1ULL << AV_CHAN_TOP_BACK_RIGHT); 66 | const unsigned long long AV_CH_STEREO_LEFT = (1ULL << AV_CHAN_STEREO_LEFT); 67 | const unsigned long long AV_CH_STEREO_RIGHT = 68 | (1ULL << AV_CHAN_STEREO_RIGHT); 69 | const unsigned long long AV_CH_WIDE_LEFT = (1ULL << AV_CHAN_WIDE_LEFT); 70 | const unsigned long long AV_CH_WIDE_RIGHT = (1ULL << AV_CHAN_WIDE_RIGHT); 71 | const unsigned long long AV_CH_SURROUND_DIRECT_LEFT = 72 | (1ULL << AV_CHAN_SURROUND_DIRECT_LEFT); 73 | const unsigned long long AV_CH_SURROUND_DIRECT_RIGHT = 74 | (1ULL << AV_CHAN_SURROUND_DIRECT_RIGHT); 75 | const unsigned long long AV_CH_LOW_FREQUENCY_2 = 76 | (1ULL << AV_CHAN_LOW_FREQUENCY_2); 77 | const unsigned long long AV_CH_TOP_SIDE_LEFT = 78 | (1ULL << AV_CHAN_TOP_SIDE_LEFT); 79 | const unsigned long long AV_CH_TOP_SIDE_RIGHT = 80 | (1ULL << AV_CHAN_TOP_SIDE_RIGHT); 81 | const unsigned long long AV_CH_BOTTOM_FRONT_CENTER = 82 | (1ULL << AV_CHAN_BOTTOM_FRONT_CENTER); 83 | const unsigned long long AV_CH_BOTTOM_FRONT_LEFT = 84 | (1ULL << AV_CHAN_BOTTOM_FRONT_LEFT); 85 | const unsigned long long AV_CH_BOTTOM_FRONT_RIGHT = 86 | (1ULL << AV_CHAN_BOTTOM_FRONT_RIGHT); 87 | 88 | #undef AV_CH_LAYOUT_MONO 89 | #undef AV_CH_LAYOUT_STEREO 90 | #undef AV_CH_LAYOUT_2POINT1 91 | #undef AV_CH_LAYOUT_2_1 92 | #undef AV_CH_LAYOUT_SURROUND 93 | #undef AV_CH_LAYOUT_3POINT1 94 | #undef AV_CH_LAYOUT_4POINT0 95 | #undef AV_CH_LAYOUT_4POINT1 96 | #undef AV_CH_LAYOUT_2_2 97 | #undef AV_CH_LAYOUT_QUAD 98 | #undef AV_CH_LAYOUT_5POINT0 99 | #undef AV_CH_LAYOUT_5POINT1 100 | #undef AV_CH_LAYOUT_5POINT0_BACK 101 | #undef AV_CH_LAYOUT_5POINT1_BACK 102 | #undef AV_CH_LAYOUT_6POINT0 103 | #undef AV_CH_LAYOUT_6POINT0_FRONT 104 | #undef AV_CH_LAYOUT_HEXAGONAL 105 | #undef AV_CH_LAYOUT_6POINT1 106 | #undef AV_CH_LAYOUT_6POINT1_BACK 107 | #undef AV_CH_LAYOUT_6POINT1_FRONT 108 | #undef AV_CH_LAYOUT_7POINT0 109 | #undef AV_CH_LAYOUT_7POINT0_FRONT 110 | #undef AV_CH_LAYOUT_7POINT1 111 | #undef AV_CH_LAYOUT_7POINT1_WIDE 112 | #undef AV_CH_LAYOUT_7POINT1_WIDE_BACK 113 | #undef AV_CH_LAYOUT_OCTAGONAL 114 | #undef AV_CH_LAYOUT_HEXADECAGONAL 115 | #undef AV_CH_LAYOUT_STEREO_DOWNMIX 116 | #undef AV_CH_LAYOUT_22POINT2 117 | #undef AV_CH_LAYOUT_CUBE 118 | 119 | const unsigned long long AV_CH_LAYOUT_MONO = (AV_CH_FRONT_CENTER); 120 | const unsigned long long AV_CH_LAYOUT_STEREO = 121 | (AV_CH_FRONT_LEFT | AV_CH_FRONT_RIGHT); 122 | const unsigned long long AV_CH_LAYOUT_2POINT1 = 123 | (AV_CH_LAYOUT_STEREO | AV_CH_LOW_FREQUENCY); 124 | const unsigned long long AV_CH_LAYOUT_2_1 = 125 | (AV_CH_LAYOUT_STEREO | AV_CH_BACK_CENTER); 126 | const unsigned long long AV_CH_LAYOUT_SURROUND = 127 | (AV_CH_LAYOUT_STEREO | AV_CH_FRONT_CENTER); 128 | const unsigned long long AV_CH_LAYOUT_3POINT1 = 129 | (AV_CH_LAYOUT_SURROUND | AV_CH_LOW_FREQUENCY); 130 | const unsigned long long AV_CH_LAYOUT_4POINT0 = 131 | (AV_CH_LAYOUT_SURROUND | AV_CH_BACK_CENTER); 132 | const unsigned long long AV_CH_LAYOUT_4POINT1 = 133 | (AV_CH_LAYOUT_4POINT0 | AV_CH_LOW_FREQUENCY); 134 | const unsigned long long AV_CH_LAYOUT_2_2 = 135 | (AV_CH_LAYOUT_STEREO | AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT); 136 | const unsigned long long AV_CH_LAYOUT_QUAD = 137 | (AV_CH_LAYOUT_STEREO | AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT); 138 | const unsigned long long AV_CH_LAYOUT_5POINT0 = 139 | (AV_CH_LAYOUT_SURROUND | AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT); 140 | const unsigned long long AV_CH_LAYOUT_5POINT1 = 141 | (AV_CH_LAYOUT_5POINT0 | AV_CH_LOW_FREQUENCY); 142 | const unsigned long long AV_CH_LAYOUT_5POINT0_BACK = 143 | (AV_CH_LAYOUT_SURROUND | AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT); 144 | const unsigned long long AV_CH_LAYOUT_5POINT1_BACK = 145 | (AV_CH_LAYOUT_5POINT0_BACK | AV_CH_LOW_FREQUENCY); 146 | const unsigned long long AV_CH_LAYOUT_6POINT0 = 147 | (AV_CH_LAYOUT_5POINT0 | AV_CH_BACK_CENTER); 148 | const unsigned long long AV_CH_LAYOUT_6POINT0_FRONT = 149 | (AV_CH_LAYOUT_2_2 | AV_CH_FRONT_LEFT_OF_CENTER | 150 | AV_CH_FRONT_RIGHT_OF_CENTER); 151 | const unsigned long long AV_CH_LAYOUT_HEXAGONAL = 152 | (AV_CH_LAYOUT_5POINT0_BACK | AV_CH_BACK_CENTER); 153 | const unsigned long long AV_CH_LAYOUT_6POINT1 = 154 | (AV_CH_LAYOUT_5POINT1 | AV_CH_BACK_CENTER); 155 | const unsigned long long AV_CH_LAYOUT_6POINT1_BACK = 156 | (AV_CH_LAYOUT_5POINT1_BACK | AV_CH_BACK_CENTER); 157 | const unsigned long long AV_CH_LAYOUT_6POINT1_FRONT = 158 | (AV_CH_LAYOUT_6POINT0_FRONT | AV_CH_LOW_FREQUENCY); 159 | const unsigned long long AV_CH_LAYOUT_7POINT0 = 160 | (AV_CH_LAYOUT_5POINT0 | AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT); 161 | const unsigned long long AV_CH_LAYOUT_7POINT0_FRONT = 162 | (AV_CH_LAYOUT_5POINT0 | AV_CH_FRONT_LEFT_OF_CENTER | 163 | AV_CH_FRONT_RIGHT_OF_CENTER); 164 | const unsigned long long AV_CH_LAYOUT_7POINT1 = 165 | (AV_CH_LAYOUT_5POINT1 | AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT); 166 | const unsigned long long AV_CH_LAYOUT_7POINT1_WIDE = 167 | (AV_CH_LAYOUT_5POINT1 | AV_CH_FRONT_LEFT_OF_CENTER | 168 | AV_CH_FRONT_RIGHT_OF_CENTER); 169 | const unsigned long long AV_CH_LAYOUT_7POINT1_WIDE_BACK = 170 | (AV_CH_LAYOUT_5POINT1_BACK | AV_CH_FRONT_LEFT_OF_CENTER | 171 | AV_CH_FRONT_RIGHT_OF_CENTER); 172 | const unsigned long long AV_CH_LAYOUT_OCTAGONAL = 173 | (AV_CH_LAYOUT_5POINT0 | AV_CH_BACK_LEFT | AV_CH_BACK_CENTER | 174 | AV_CH_BACK_RIGHT); 175 | const unsigned long long AV_CH_LAYOUT_HEXADECAGONAL = 176 | (AV_CH_LAYOUT_OCTAGONAL | AV_CH_WIDE_LEFT | AV_CH_WIDE_RIGHT | 177 | AV_CH_TOP_BACK_LEFT | AV_CH_TOP_BACK_RIGHT | AV_CH_TOP_BACK_CENTER | 178 | AV_CH_TOP_FRONT_CENTER | AV_CH_TOP_FRONT_LEFT | AV_CH_TOP_FRONT_RIGHT); 179 | const unsigned long long AV_CH_LAYOUT_STEREO_DOWNMIX = 180 | (AV_CH_STEREO_LEFT | AV_CH_STEREO_RIGHT); 181 | const unsigned long long AV_CH_LAYOUT_22POINT2 = 182 | (AV_CH_LAYOUT_5POINT1_BACK | AV_CH_FRONT_LEFT_OF_CENTER | 183 | AV_CH_FRONT_RIGHT_OF_CENTER | AV_CH_BACK_CENTER | AV_CH_LOW_FREQUENCY_2 | 184 | AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT | AV_CH_TOP_FRONT_LEFT | 185 | AV_CH_TOP_FRONT_RIGHT | AV_CH_TOP_FRONT_CENTER | AV_CH_TOP_CENTER | 186 | AV_CH_TOP_BACK_LEFT | AV_CH_TOP_BACK_RIGHT | AV_CH_TOP_SIDE_LEFT | 187 | AV_CH_TOP_SIDE_RIGHT | AV_CH_TOP_BACK_CENTER | AV_CH_BOTTOM_FRONT_CENTER | 188 | AV_CH_BOTTOM_FRONT_LEFT | AV_CH_BOTTOM_FRONT_RIGHT); 189 | const unsigned long long AV_CH_LAYOUT_CUBE = 190 | (AV_CH_LAYOUT_QUAD | AV_CH_TOP_FRONT_LEFT | AV_CH_TOP_FRONT_RIGHT | AV_CH_TOP_BACK_LEFT | AV_CH_TOP_BACK_RIGHT); 191 | #endif 192 | 193 | #if (LIBAVUTIL_VERSION_MAJOR >= 58 && LIBAVUTIL_VERSION_MINOR >= 29) || LIBAVUTIL_VERSION_MAJOR >= 59 194 | 195 | #undef AV_CH_LAYOUT_3POINT1POINT2 196 | #undef AV_CH_LAYOUT_5POINT1POINT2_BACK 197 | #undef AV_CH_LAYOUT_5POINT1POINT4_BACK 198 | #undef AV_CH_LAYOUT_7POINT1POINT2 199 | #undef AV_CH_LAYOUT_7POINT1POINT4_BACK 200 | 201 | const unsigned long long AV_CH_LAYOUT_3POINT1POINT2 = 202 | (AV_CH_LAYOUT_3POINT1 | AV_CH_TOP_FRONT_LEFT | AV_CH_TOP_FRONT_RIGHT); 203 | const unsigned long long AV_CH_LAYOUT_5POINT1POINT2_BACK = 204 | (AV_CH_LAYOUT_5POINT1_BACK | AV_CH_TOP_FRONT_LEFT | AV_CH_TOP_FRONT_RIGHT); 205 | const unsigned long long AV_CH_LAYOUT_5POINT1POINT4_BACK = 206 | (AV_CH_LAYOUT_5POINT1POINT2_BACK | AV_CH_TOP_BACK_LEFT | AV_CH_TOP_BACK_RIGHT); 207 | const unsigned long long AV_CH_LAYOUT_7POINT1POINT2 = 208 | (AV_CH_LAYOUT_7POINT1 | AV_CH_TOP_FRONT_LEFT | AV_CH_TOP_FRONT_RIGHT); 209 | const unsigned long long AV_CH_LAYOUT_7POINT1POINT4_BACK = 210 | (AV_CH_LAYOUT_7POINT1POINT2 | AV_CH_TOP_BACK_LEFT | AV_CH_TOP_BACK_RIGHT); 211 | 212 | #endif 213 | 214 | #if (LIBAVUTIL_VERSION_MAJOR >= 59) 215 | 216 | #undef AV_CH_LAYOUT_7POINT2POINT3 217 | #undef AV_CH_LAYOUT_9POINT1POINT4_BACK 218 | 219 | const unsigned long long AV_CH_LAYOUT_7POINT2POINT3 = 220 | (AV_CH_LAYOUT_7POINT1POINT2 | AV_CH_TOP_BACK_CENTER | AV_CH_LOW_FREQUENCY_2); 221 | const unsigned long long AV_CH_LAYOUT_9POINT1POINT4_BACK = 222 | (AV_CH_LAYOUT_7POINT1POINT4_BACK | AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_RIGHT_OF_CENTER); 223 | 224 | #endif 225 | -------------------------------------------------------------------------------- /src/avutil/pixfmt.rs: -------------------------------------------------------------------------------- 1 | use AVPixelFormat; 2 | use AVPixelFormat::*; 3 | 4 | #[cfg(target_endian = "little")] 5 | pub const AV_PIX_FMT_RGB32: AVPixelFormat = AV_PIX_FMT_BGRA; 6 | #[cfg(target_endian = "little")] 7 | pub const AV_PIX_FMT_RGB32_1: AVPixelFormat = AV_PIX_FMT_ABGR; 8 | #[cfg(target_endian = "little")] 9 | pub const AV_PIX_FMT_BGR32: AVPixelFormat = AV_PIX_FMT_RGBA; 10 | #[cfg(target_endian = "little")] 11 | pub const AV_PIX_FMT_BGR32_1: AVPixelFormat = AV_PIX_FMT_ARGB; 12 | #[cfg(target_endian = "little")] 13 | pub const AV_PIX_FMT_0RGB32: AVPixelFormat = AV_PIX_FMT_BGR0; 14 | #[cfg(target_endian = "little")] 15 | pub const AV_PIX_FMT_0BGR32: AVPixelFormat = AV_PIX_FMT_RGB0; 16 | 17 | #[cfg(target_endian = "little")] 18 | pub const AV_PIX_FMT_GRAY16: AVPixelFormat = AV_PIX_FMT_GRAY16LE; 19 | #[cfg(target_endian = "little")] 20 | pub const AV_PIX_FMT_YA16: AVPixelFormat = AV_PIX_FMT_YA16LE; 21 | #[cfg(target_endian = "little")] 22 | pub const AV_PIX_FMT_RGB48: AVPixelFormat = AV_PIX_FMT_RGB48LE; 23 | #[cfg(target_endian = "little")] 24 | pub const AV_PIX_FMT_RGB565: AVPixelFormat = AV_PIX_FMT_RGB565LE; 25 | #[cfg(target_endian = "little")] 26 | pub const AV_PIX_FMT_RGB555: AVPixelFormat = AV_PIX_FMT_RGB555LE; 27 | #[cfg(target_endian = "little")] 28 | pub const AV_PIX_FMT_RGB444: AVPixelFormat = AV_PIX_FMT_RGB444LE; 29 | #[cfg(target_endian = "little")] 30 | pub const AV_PIX_FMT_BGR48: AVPixelFormat = AV_PIX_FMT_BGR48LE; 31 | #[cfg(target_endian = "little")] 32 | pub const AV_PIX_FMT_BGR565: AVPixelFormat = AV_PIX_FMT_BGR565LE; 33 | #[cfg(target_endian = "little")] 34 | pub const AV_PIX_FMT_BGR555: AVPixelFormat = AV_PIX_FMT_BGR555LE; 35 | #[cfg(target_endian = "little")] 36 | pub const AV_PIX_FMT_BGR444: AVPixelFormat = AV_PIX_FMT_BGR444LE; 37 | 38 | #[cfg(target_endian = "little")] 39 | pub const AV_PIX_FMT_YUV420P9: AVPixelFormat = AV_PIX_FMT_YUV420P9LE; 40 | #[cfg(target_endian = "little")] 41 | pub const AV_PIX_FMT_YUV422P9: AVPixelFormat = AV_PIX_FMT_YUV422P9LE; 42 | #[cfg(target_endian = "little")] 43 | pub const AV_PIX_FMT_YUV444P9: AVPixelFormat = AV_PIX_FMT_YUV444P9LE; 44 | #[cfg(target_endian = "little")] 45 | pub const AV_PIX_FMT_YUV420P10: AVPixelFormat = AV_PIX_FMT_YUV420P10LE; 46 | #[cfg(target_endian = "little")] 47 | pub const AV_PIX_FMT_YUV422P10: AVPixelFormat = AV_PIX_FMT_YUV422P10LE; 48 | #[cfg(target_endian = "little")] 49 | pub const AV_PIX_FMT_YUV440P10: AVPixelFormat = AV_PIX_FMT_YUV440P10LE; 50 | #[cfg(target_endian = "little")] 51 | pub const AV_PIX_FMT_YUV444P10: AVPixelFormat = AV_PIX_FMT_YUV444P10LE; 52 | #[cfg(target_endian = "little")] 53 | pub const AV_PIX_FMT_YUV420P12: AVPixelFormat = AV_PIX_FMT_YUV420P12LE; 54 | #[cfg(target_endian = "little")] 55 | pub const AV_PIX_FMT_YUV422P12: AVPixelFormat = AV_PIX_FMT_YUV422P12LE; 56 | #[cfg(target_endian = "little")] 57 | pub const AV_PIX_FMT_YUV440P12: AVPixelFormat = AV_PIX_FMT_YUV440P12LE; 58 | #[cfg(target_endian = "little")] 59 | pub const AV_PIX_FMT_YUV444P12: AVPixelFormat = AV_PIX_FMT_YUV444P12LE; 60 | #[cfg(target_endian = "little")] 61 | pub const AV_PIX_FMT_YUV420P14: AVPixelFormat = AV_PIX_FMT_YUV420P14LE; 62 | #[cfg(target_endian = "little")] 63 | pub const AV_PIX_FMT_YUV422P14: AVPixelFormat = AV_PIX_FMT_YUV422P14LE; 64 | #[cfg(target_endian = "little")] 65 | pub const AV_PIX_FMT_YUV444P14: AVPixelFormat = AV_PIX_FMT_YUV444P14LE; 66 | #[cfg(target_endian = "little")] 67 | pub const AV_PIX_FMT_YUV420P16: AVPixelFormat = AV_PIX_FMT_YUV420P16LE; 68 | #[cfg(target_endian = "little")] 69 | pub const AV_PIX_FMT_YUV422P16: AVPixelFormat = AV_PIX_FMT_YUV422P16LE; 70 | #[cfg(target_endian = "little")] 71 | pub const AV_PIX_FMT_YUV444P16: AVPixelFormat = AV_PIX_FMT_YUV444P16LE; 72 | 73 | #[cfg(target_endian = "little")] 74 | pub const AV_PIX_FMT_GBRP9: AVPixelFormat = AV_PIX_FMT_GBRP9LE; 75 | #[cfg(target_endian = "little")] 76 | pub const AV_PIX_FMT_GBRP10: AVPixelFormat = AV_PIX_FMT_GBRP10LE; 77 | #[cfg(target_endian = "little")] 78 | pub const AV_PIX_FMT_GBRP12: AVPixelFormat = AV_PIX_FMT_GBRP12LE; 79 | #[cfg(target_endian = "little")] 80 | pub const AV_PIX_FMT_GBRP14: AVPixelFormat = AV_PIX_FMT_GBRP14LE; 81 | #[cfg(target_endian = "little")] 82 | pub const AV_PIX_FMT_GBRP16: AVPixelFormat = AV_PIX_FMT_GBRP16LE; 83 | #[cfg(target_endian = "little")] 84 | pub const AV_PIX_FMT_GBRAP16: AVPixelFormat = AV_PIX_FMT_GBRAP16LE; 85 | 86 | #[cfg(target_endian = "little")] 87 | pub const AV_PIX_FMT_BAYER_BGGR16: AVPixelFormat = AV_PIX_FMT_BAYER_BGGR16LE; 88 | #[cfg(target_endian = "little")] 89 | pub const AV_PIX_FMT_BAYER_RGGB16: AVPixelFormat = AV_PIX_FMT_BAYER_RGGB16LE; 90 | #[cfg(target_endian = "little")] 91 | pub const AV_PIX_FMT_BAYER_GBRG16: AVPixelFormat = AV_PIX_FMT_BAYER_GBRG16LE; 92 | #[cfg(target_endian = "little")] 93 | pub const AV_PIX_FMT_BAYER_GRBG16: AVPixelFormat = AV_PIX_FMT_BAYER_GRBG16LE; 94 | 95 | #[cfg(target_endian = "little")] 96 | pub const AV_PIX_FMT_YUVA420P9: AVPixelFormat = AV_PIX_FMT_YUVA420P9LE; 97 | #[cfg(target_endian = "little")] 98 | pub const AV_PIX_FMT_YUVA422P9: AVPixelFormat = AV_PIX_FMT_YUVA422P9LE; 99 | #[cfg(target_endian = "little")] 100 | pub const AV_PIX_FMT_YUVA444P9: AVPixelFormat = AV_PIX_FMT_YUVA444P9LE; 101 | #[cfg(target_endian = "little")] 102 | pub const AV_PIX_FMT_YUVA420P10: AVPixelFormat = AV_PIX_FMT_YUVA420P10LE; 103 | #[cfg(target_endian = "little")] 104 | pub const AV_PIX_FMT_YUVA422P10: AVPixelFormat = AV_PIX_FMT_YUVA422P10LE; 105 | #[cfg(target_endian = "little")] 106 | pub const AV_PIX_FMT_YUVA444P10: AVPixelFormat = AV_PIX_FMT_YUVA444P10LE; 107 | #[cfg(target_endian = "little")] 108 | pub const AV_PIX_FMT_YUVA420P16: AVPixelFormat = AV_PIX_FMT_YUVA420P16LE; 109 | #[cfg(target_endian = "little")] 110 | pub const AV_PIX_FMT_YUVA422P16: AVPixelFormat = AV_PIX_FMT_YUVA422P16LE; 111 | #[cfg(target_endian = "little")] 112 | pub const AV_PIX_FMT_YUVA444P16: AVPixelFormat = AV_PIX_FMT_YUVA444P16LE; 113 | 114 | #[cfg(target_endian = "little")] 115 | pub const AV_PIX_FMT_XYZ12: AVPixelFormat = AV_PIX_FMT_XYZ12LE; 116 | #[cfg(target_endian = "little")] 117 | pub const AV_PIX_FMT_NV20: AVPixelFormat = AV_PIX_FMT_NV20LE; 118 | #[cfg(target_endian = "little")] 119 | pub const AV_PIX_FMT_AYUV64: AVPixelFormat = AV_PIX_FMT_AYUV64LE; 120 | 121 | #[cfg(target_endian = "big")] 122 | pub const AV_PIX_FMT_RGB32: AVPixelFormat = AV_PIX_FMT_ARGB; 123 | #[cfg(target_endian = "big")] 124 | pub const AV_PIX_FMT_RGB32_1: AVPixelFormat = AV_PIX_FMT_RGBA; 125 | #[cfg(target_endian = "big")] 126 | pub const AV_PIX_FMT_BGR32: AVPixelFormat = AV_PIX_FMT_ABGR; 127 | #[cfg(target_endian = "big")] 128 | pub const AV_PIX_FMT_BGR32_1: AVPixelFormat = AV_PIX_FMT_BGRA; 129 | #[cfg(target_endian = "big")] 130 | pub const AV_PIX_FMT_0RGB32: AVPixelFormat = AV_PIX_FMT_0RGB; 131 | #[cfg(target_endian = "big")] 132 | pub const AV_PIX_FMT_0BGR32: AVPixelFormat = AV_PIX_FMT_0BGR; 133 | 134 | #[cfg(target_endian = "big")] 135 | pub const AV_PIX_FMT_GRAY16: AVPixelFormat = AV_PIX_FMT_GRAY16BE; 136 | #[cfg(target_endian = "big")] 137 | pub const AV_PIX_FMT_YA16: AVPixelFormat = AV_PIX_FMT_YA16BE; 138 | #[cfg(target_endian = "big")] 139 | pub const AV_PIX_FMT_RGB48: AVPixelFormat = AV_PIX_FMT_RGB48BE; 140 | #[cfg(target_endian = "big")] 141 | pub const AV_PIX_FMT_RGB565: AVPixelFormat = AV_PIX_FMT_RGB565BE; 142 | #[cfg(target_endian = "big")] 143 | pub const AV_PIX_FMT_RGB555: AVPixelFormat = AV_PIX_FMT_RGB555BE; 144 | #[cfg(target_endian = "big")] 145 | pub const AV_PIX_FMT_RGB444: AVPixelFormat = AV_PIX_FMT_RGB444BE; 146 | #[cfg(target_endian = "big")] 147 | pub const AV_PIX_FMT_BGR48: AVPixelFormat = AV_PIX_FMT_BGR48BE; 148 | #[cfg(target_endian = "big")] 149 | pub const AV_PIX_FMT_BGR565: AVPixelFormat = AV_PIX_FMT_BGR565BE; 150 | #[cfg(target_endian = "big")] 151 | pub const AV_PIX_FMT_BGR555: AVPixelFormat = AV_PIX_FMT_BGR555BE; 152 | #[cfg(target_endian = "big")] 153 | pub const AV_PIX_FMT_BGR444: AVPixelFormat = AV_PIX_FMT_BGR444BE; 154 | 155 | #[cfg(target_endian = "big")] 156 | pub const AV_PIX_FMT_YUV420P9: AVPixelFormat = AV_PIX_FMT_YUV420P9BE; 157 | #[cfg(target_endian = "big")] 158 | pub const AV_PIX_FMT_YUV422P9: AVPixelFormat = AV_PIX_FMT_YUV422P9BE; 159 | #[cfg(target_endian = "big")] 160 | pub const AV_PIX_FMT_YUV444P9: AVPixelFormat = AV_PIX_FMT_YUV444P9BE; 161 | #[cfg(target_endian = "big")] 162 | pub const AV_PIX_FMT_YUV420P10: AVPixelFormat = AV_PIX_FMT_YUV420P10BE; 163 | #[cfg(target_endian = "big")] 164 | pub const AV_PIX_FMT_YUV422P10: AVPixelFormat = AV_PIX_FMT_YUV422P10BE; 165 | #[cfg(target_endian = "big")] 166 | pub const AV_PIX_FMT_YUV440P10: AVPixelFormat = AV_PIX_FMT_YUV440P10BE; 167 | #[cfg(target_endian = "big")] 168 | pub const AV_PIX_FMT_YUV444P10: AVPixelFormat = AV_PIX_FMT_YUV444P10BE; 169 | #[cfg(target_endian = "big")] 170 | pub const AV_PIX_FMT_YUV420P12: AVPixelFormat = AV_PIX_FMT_YUV420P12BE; 171 | #[cfg(target_endian = "big")] 172 | pub const AV_PIX_FMT_YUV422P12: AVPixelFormat = AV_PIX_FMT_YUV422P12BE; 173 | #[cfg(target_endian = "big")] 174 | pub const AV_PIX_FMT_YUV440P12: AVPixelFormat = AV_PIX_FMT_YUV440P12BE; 175 | #[cfg(target_endian = "big")] 176 | pub const AV_PIX_FMT_YUV444P12: AVPixelFormat = AV_PIX_FMT_YUV444P12BE; 177 | #[cfg(target_endian = "big")] 178 | pub const AV_PIX_FMT_YUV420P14: AVPixelFormat = AV_PIX_FMT_YUV420P14BE; 179 | #[cfg(target_endian = "big")] 180 | pub const AV_PIX_FMT_YUV422P14: AVPixelFormat = AV_PIX_FMT_YUV422P14BE; 181 | #[cfg(target_endian = "big")] 182 | pub const AV_PIX_FMT_YUV444P14: AVPixelFormat = AV_PIX_FMT_YUV444P14BE; 183 | #[cfg(target_endian = "big")] 184 | pub const AV_PIX_FMT_YUV420P16: AVPixelFormat = AV_PIX_FMT_YUV420P16BE; 185 | #[cfg(target_endian = "big")] 186 | pub const AV_PIX_FMT_YUV422P16: AVPixelFormat = AV_PIX_FMT_YUV422P16BE; 187 | #[cfg(target_endian = "big")] 188 | pub const AV_PIX_FMT_YUV444P16: AVPixelFormat = AV_PIX_FMT_YUV444P16BE; 189 | 190 | #[cfg(target_endian = "big")] 191 | pub const AV_PIX_FMT_GBRP9: AVPixelFormat = AV_PIX_FMT_GBRP9BE; 192 | #[cfg(target_endian = "big")] 193 | pub const AV_PIX_FMT_GBRP10: AVPixelFormat = AV_PIX_FMT_GBRP10BE; 194 | #[cfg(target_endian = "big")] 195 | pub const AV_PIX_FMT_GBRP12: AVPixelFormat = AV_PIX_FMT_GBRP12BE; 196 | #[cfg(target_endian = "big")] 197 | pub const AV_PIX_FMT_GBRP14: AVPixelFormat = AV_PIX_FMT_GBRP14BE; 198 | #[cfg(target_endian = "big")] 199 | pub const AV_PIX_FMT_GBRP16: AVPixelFormat = AV_PIX_FMT_GBRP16BE; 200 | #[cfg(target_endian = "big")] 201 | pub const AV_PIX_FMT_GBRAP16: AVPixelFormat = AV_PIX_FMT_GBRAP16BE; 202 | 203 | #[cfg(target_endian = "big")] 204 | pub const AV_PIX_FMT_BAYER_BGGR16: AVPixelFormat = AV_PIX_FMT_BAYER_BGGR16BE; 205 | #[cfg(target_endian = "big")] 206 | pub const AV_PIX_FMT_BAYER_RGGB16: AVPixelFormat = AV_PIX_FMT_BAYER_RGGB16BE; 207 | #[cfg(target_endian = "big")] 208 | pub const AV_PIX_FMT_BAYER_GBRG16: AVPixelFormat = AV_PIX_FMT_BAYER_GBRG16BE; 209 | #[cfg(target_endian = "big")] 210 | pub const AV_PIX_FMT_BAYER_GRBG16: AVPixelFormat = AV_PIX_FMT_BAYER_GRBG16BE; 211 | 212 | #[cfg(target_endian = "big")] 213 | pub const AV_PIX_FMT_YUVA420P9: AVPixelFormat = AV_PIX_FMT_YUVA420P9BE; 214 | #[cfg(target_endian = "big")] 215 | pub const AV_PIX_FMT_YUVA422P9: AVPixelFormat = AV_PIX_FMT_YUVA422P9BE; 216 | #[cfg(target_endian = "big")] 217 | pub const AV_PIX_FMT_YUVA444P9: AVPixelFormat = AV_PIX_FMT_YUVA444P9BE; 218 | #[cfg(target_endian = "big")] 219 | pub const AV_PIX_FMT_YUVA420P10: AVPixelFormat = AV_PIX_FMT_YUVA420P10BE; 220 | #[cfg(target_endian = "big")] 221 | pub const AV_PIX_FMT_YUVA422P10: AVPixelFormat = AV_PIX_FMT_YUVA422P10BE; 222 | #[cfg(target_endian = "big")] 223 | pub const AV_PIX_FMT_YUVA444P10: AVPixelFormat = AV_PIX_FMT_YUVA444P10BE; 224 | #[cfg(target_endian = "big")] 225 | pub const AV_PIX_FMT_YUVA420P16: AVPixelFormat = AV_PIX_FMT_YUVA420P16BE; 226 | #[cfg(target_endian = "big")] 227 | pub const AV_PIX_FMT_YUVA422P16: AVPixelFormat = AV_PIX_FMT_YUVA422P16BE; 228 | #[cfg(target_endian = "big")] 229 | pub const AV_PIX_FMT_YUVA444P16: AVPixelFormat = AV_PIX_FMT_YUVA444P16BE; 230 | 231 | #[cfg(target_endian = "big")] 232 | pub const AV_PIX_FMT_XYZ12: AVPixelFormat = AV_PIX_FMT_XYZ12BE; 233 | #[cfg(target_endian = "big")] 234 | pub const AV_PIX_FMT_NV20: AVPixelFormat = AV_PIX_FMT_NV20BE; 235 | #[cfg(target_endian = "big")] 236 | pub const AV_PIX_FMT_AYUV64: AVPixelFormat = AV_PIX_FMT_AYUV64BE; 237 | 238 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "little"))] 239 | pub const AV_PIX_FMT_V30X: AVPixelFormat = AV_PIX_FMT_V30XLE; 240 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "big"))] 241 | pub const AV_PIX_FMT_V30X: AVPixelFormat = AV_PIX_FMT_V30XBE; 242 | 243 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "little"))] 244 | pub const AV_PIX_FMT_RGBF16: AVPixelFormat = AV_PIX_FMT_RGBF16LE; 245 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "big"))] 246 | pub const AV_PIX_FMT_RGBF16: AVPixelFormat = AV_PIX_FMT_RGBF16BE; 247 | 248 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "little"))] 249 | pub const AV_PIX_FMT_RGB96: AVPixelFormat = AV_PIX_FMT_RGB96LE; 250 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "big"))] 251 | pub const AV_PIX_FMT_RGB96: AVPixelFormat = AV_PIX_FMT_RGB96BE; 252 | 253 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "little"))] 254 | pub const AV_PIX_FMT_RGBA128: AVPixelFormat = AV_PIX_FMT_RGBA128LE; 255 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "big"))] 256 | pub const AV_PIX_FMT_RGBA128: AVPixelFormat = AV_PIX_FMT_RGBA128BE; 257 | 258 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "little"))] 259 | pub const AV_PIX_FMT_Y216: AVPixelFormat = AV_PIX_FMT_Y216LE; 260 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "big"))] 261 | pub const AV_PIX_FMT_Y216: AVPixelFormat = AV_PIX_FMT_Y216BE; 262 | 263 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "little"))] 264 | pub const AV_PIX_FMT_XV48: AVPixelFormat = AV_PIX_FMT_XV48LE; 265 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "big"))] 266 | pub const AV_PIX_FMT_XV48: AVPixelFormat = AV_PIX_FMT_XV48BE; 267 | 268 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "little"))] 269 | pub const AV_PIX_FMT_YUV444P10MSB: AVPixelFormat = AV_PIX_FMT_YUV444P10MSBLE; 270 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "big"))] 271 | pub const AV_PIX_FMT_YUV444P10MSB: AVPixelFormat = AV_PIX_FMT_YUV444P10MSBBE; 272 | 273 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "little"))] 274 | pub const AV_PIX_FMT_YUV444P12MSB: AVPixelFormat = AV_PIX_FMT_YUV444P12MSBLE; 275 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "big"))] 276 | pub const AV_PIX_FMT_YUV444P12MSB: AVPixelFormat = AV_PIX_FMT_YUV444P12MSBBE; 277 | 278 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "little"))] 279 | pub const AV_PIX_FMT_GBRP10MSB: AVPixelFormat = AV_PIX_FMT_GBRP10MSBLE; 280 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "big"))] 281 | pub const AV_PIX_FMT_GBRP10MSB: AVPixelFormat = AV_PIX_FMT_GBRP10MSBBE; 282 | 283 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "little"))] 284 | pub const AV_PIX_FMT_GBRP12MSB: AVPixelFormat = AV_PIX_FMT_GBRP12MSBLE; 285 | #[cfg(all(feature = "ffmpeg_8_0", target_endian = "big"))] 286 | pub const AV_PIX_FMT_GBRP12MSB: AVPixelFormat = AV_PIX_FMT_GBRP12MSBBE; 287 | --------------------------------------------------------------------------------