diff --git a/ffmpeg-sys-the-third/build.rs b/ffmpeg-sys-the-third/build.rs index ba3dfde..939922a 100644 --- a/ffmpeg-sys-the-third/build.rs +++ b/ffmpeg-sys-the-third/build.rs @@ -1050,9 +1050,6 @@ fn main() { .header(search_include(&include_paths, "libavutil/camellia.h")) .header(search_include(&include_paths, "libavutil/cast5.h")) .header(search_include(&include_paths, "libavutil/channel_layout.h")) - // Here until https://github.com/rust-lang/rust-bindgen/issues/2192 / - // https://github.com/rust-lang/rust-bindgen/issues/258 is fixed. - .header("channel_layout_fixed.h") .header(search_include(&include_paths, "libavutil/cpu.h")) .header(search_include(&include_paths, "libavutil/crc.h")) .header(search_include(&include_paths, "libavutil/dict.h")) diff --git a/ffmpeg-sys-the-third/channel_layout_fixed.h b/ffmpeg-sys-the-third/channel_layout_fixed.h deleted file mode 100644 index 022a948..0000000 --- a/ffmpeg-sys-the-third/channel_layout_fixed.h +++ /dev/null @@ -1,184 +0,0 @@ -// Here until https://github.com/rust-lang/rust-bindgen/issues/2192 / -// https://github.com/rust-lang/rust-bindgen/issues/258 is fixed. -#include - -#if (LIBAVUTIL_VERSION_MAJOR >= 57 && LIBAVUTIL_VERSION_MINOR >= 28) || \ - LIBAVUTIL_VERSION_MAJOR >= 58 - -#undef AV_CH_FRONT_LEFT -#undef AV_CH_FRONT_RIGHT -#undef AV_CH_FRONT_CENTER -#undef AV_CH_LOW_FREQUENCY -#undef AV_CH_BACK_LEFT -#undef AV_CH_BACK_RIGHT -#undef AV_CH_FRONT_LEFT_OF_CENTER -#undef AV_CH_FRONT_RIGHT_OF_CENTER -#undef AV_CH_BACK_CENTER -#undef AV_CH_SIDE_LEFT -#undef AV_CH_SIDE_RIGHT -#undef AV_CH_TOP_CENTER -#undef AV_CH_TOP_FRONT_LEFT -#undef AV_CH_TOP_FRONT_CENTER -#undef AV_CH_TOP_FRONT_RIGHT -#undef AV_CH_TOP_BACK_LEFT -#undef AV_CH_TOP_BACK_CENTER -#undef AV_CH_TOP_BACK_RIGHT -#undef AV_CH_STEREO_LEFT -#undef AV_CH_STEREO_RIGHT -#undef AV_CH_WIDE_LEFT -#undef AV_CH_WIDE_RIGHT -#undef AV_CH_SURROUND_DIRECT_LEFT -#undef AV_CH_SURROUND_DIRECT_RIGHT -#undef AV_CH_LOW_FREQUENCY_2 -#undef AV_CH_TOP_SIDE_LEFT -#undef AV_CH_TOP_SIDE_RIGHT -#undef AV_CH_BOTTOM_FRONT_CENTER -#undef AV_CH_BOTTOM_FRONT_LEFT -#undef AV_CH_BOTTOM_FRONT_RIGHT - -const unsigned long long AV_CH_FRONT_LEFT = (1ULL << AV_CHAN_FRONT_LEFT); -const unsigned long long AV_CH_FRONT_RIGHT = (1ULL << AV_CHAN_FRONT_RIGHT); -const unsigned long long AV_CH_FRONT_CENTER = (1ULL << AV_CHAN_FRONT_CENTER); -const unsigned long long AV_CH_LOW_FREQUENCY = (1ULL << AV_CHAN_LOW_FREQUENCY); -const unsigned long long AV_CH_BACK_LEFT = (1ULL << AV_CHAN_BACK_LEFT); -const unsigned long long AV_CH_BACK_RIGHT = (1ULL << AV_CHAN_BACK_RIGHT); -const unsigned long long AV_CH_FRONT_LEFT_OF_CENTER = - (1ULL << AV_CHAN_FRONT_LEFT_OF_CENTER); -const unsigned long long AV_CH_FRONT_RIGHT_OF_CENTER = - (1ULL << AV_CHAN_FRONT_RIGHT_OF_CENTER); -const unsigned long long AV_CH_BACK_CENTER = (1ULL << AV_CHAN_BACK_CENTER); -const unsigned long long AV_CH_SIDE_LEFT = (1ULL << AV_CHAN_SIDE_LEFT); -const unsigned long long AV_CH_SIDE_RIGHT = (1ULL << AV_CHAN_SIDE_RIGHT); -const unsigned long long AV_CH_TOP_CENTER = (1ULL << AV_CHAN_TOP_CENTER); -const unsigned long long AV_CH_TOP_FRONT_LEFT = - (1ULL << AV_CHAN_TOP_FRONT_LEFT); -const unsigned long long AV_CH_TOP_FRONT_CENTER = - (1ULL << AV_CHAN_TOP_FRONT_CENTER); -const unsigned long long AV_CH_TOP_FRONT_RIGHT = - (1ULL << AV_CHAN_TOP_FRONT_RIGHT); -const unsigned long long AV_CH_TOP_BACK_LEFT = (1ULL << AV_CHAN_TOP_BACK_LEFT); -const unsigned long long AV_CH_TOP_BACK_CENTER = - (1ULL << AV_CHAN_TOP_BACK_CENTER); -const unsigned long long AV_CH_TOP_BACK_RIGHT = - (1ULL << AV_CHAN_TOP_BACK_RIGHT); -const unsigned long long AV_CH_STEREO_LEFT = (1ULL << AV_CHAN_STEREO_LEFT); -const unsigned long long AV_CH_STEREO_RIGHT = (1ULL << AV_CHAN_STEREO_RIGHT); -const unsigned long long AV_CH_WIDE_LEFT = (1ULL << AV_CHAN_WIDE_LEFT); -const unsigned long long AV_CH_WIDE_RIGHT = (1ULL << AV_CHAN_WIDE_RIGHT); -const unsigned long long AV_CH_SURROUND_DIRECT_LEFT = - (1ULL << AV_CHAN_SURROUND_DIRECT_LEFT); -const unsigned long long AV_CH_SURROUND_DIRECT_RIGHT = - (1ULL << AV_CHAN_SURROUND_DIRECT_RIGHT); -const unsigned long long AV_CH_LOW_FREQUENCY_2 = - (1ULL << AV_CHAN_LOW_FREQUENCY_2); -const unsigned long long AV_CH_TOP_SIDE_LEFT = (1ULL << AV_CHAN_TOP_SIDE_LEFT); -const unsigned long long AV_CH_TOP_SIDE_RIGHT = - (1ULL << AV_CHAN_TOP_SIDE_RIGHT); -const unsigned long long AV_CH_BOTTOM_FRONT_CENTER = - (1ULL << AV_CHAN_BOTTOM_FRONT_CENTER); -const unsigned long long AV_CH_BOTTOM_FRONT_LEFT = - (1ULL << AV_CHAN_BOTTOM_FRONT_LEFT); -const unsigned long long AV_CH_BOTTOM_FRONT_RIGHT = - (1ULL << AV_CHAN_BOTTOM_FRONT_RIGHT); - -#undef AV_CH_LAYOUT_MONO -#undef AV_CH_LAYOUT_STEREO -#undef AV_CH_LAYOUT_2POINT1 -#undef AV_CH_LAYOUT_2_1 -#undef AV_CH_LAYOUT_SURROUND -#undef AV_CH_LAYOUT_3POINT1 -#undef AV_CH_LAYOUT_4POINT0 -#undef AV_CH_LAYOUT_4POINT1 -#undef AV_CH_LAYOUT_2_2 -#undef AV_CH_LAYOUT_QUAD -#undef AV_CH_LAYOUT_5POINT0 -#undef AV_CH_LAYOUT_5POINT1 -#undef AV_CH_LAYOUT_5POINT0_BACK -#undef AV_CH_LAYOUT_5POINT1_BACK -#undef AV_CH_LAYOUT_6POINT0 -#undef AV_CH_LAYOUT_6POINT0_FRONT -#undef AV_CH_LAYOUT_HEXAGONAL -#undef AV_CH_LAYOUT_6POINT1 -#undef AV_CH_LAYOUT_6POINT1_BACK -#undef AV_CH_LAYOUT_6POINT1_FRONT -#undef AV_CH_LAYOUT_7POINT0 -#undef AV_CH_LAYOUT_7POINT0_FRONT -#undef AV_CH_LAYOUT_7POINT1 -#undef AV_CH_LAYOUT_7POINT1_WIDE -#undef AV_CH_LAYOUT_7POINT1_WIDE_BACK -#undef AV_CH_LAYOUT_OCTAGONAL -#undef AV_CH_LAYOUT_HEXADECAGONAL -#undef AV_CH_LAYOUT_STEREO_DOWNMIX -#undef AV_CH_LAYOUT_22POINT2 - -const unsigned long long AV_CH_LAYOUT_MONO = (AV_CH_FRONT_CENTER); -const unsigned long long AV_CH_LAYOUT_STEREO = - (AV_CH_FRONT_LEFT | AV_CH_FRONT_RIGHT); -const unsigned long long AV_CH_LAYOUT_2POINT1 = - (AV_CH_LAYOUT_STEREO | AV_CH_LOW_FREQUENCY); -const unsigned long long AV_CH_LAYOUT_2_1 = - (AV_CH_LAYOUT_STEREO | AV_CH_BACK_CENTER); -const unsigned long long AV_CH_LAYOUT_SURROUND = - (AV_CH_LAYOUT_STEREO | AV_CH_FRONT_CENTER); -const unsigned long long AV_CH_LAYOUT_3POINT1 = - (AV_CH_LAYOUT_SURROUND | AV_CH_LOW_FREQUENCY); -const unsigned long long AV_CH_LAYOUT_4POINT0 = - (AV_CH_LAYOUT_SURROUND | AV_CH_BACK_CENTER); -const unsigned long long AV_CH_LAYOUT_4POINT1 = - (AV_CH_LAYOUT_4POINT0 | AV_CH_LOW_FREQUENCY); -const unsigned long long AV_CH_LAYOUT_2_2 = - (AV_CH_LAYOUT_STEREO | AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT); -const unsigned long long AV_CH_LAYOUT_QUAD = - (AV_CH_LAYOUT_STEREO | AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT); -const unsigned long long AV_CH_LAYOUT_5POINT0 = - (AV_CH_LAYOUT_SURROUND | AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT); -const unsigned long long AV_CH_LAYOUT_5POINT1 = - (AV_CH_LAYOUT_5POINT0 | AV_CH_LOW_FREQUENCY); -const unsigned long long AV_CH_LAYOUT_5POINT0_BACK = - (AV_CH_LAYOUT_SURROUND | AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT); -const unsigned long long AV_CH_LAYOUT_5POINT1_BACK = - (AV_CH_LAYOUT_5POINT0_BACK | AV_CH_LOW_FREQUENCY); -const unsigned long long AV_CH_LAYOUT_6POINT0 = - (AV_CH_LAYOUT_5POINT0 | AV_CH_BACK_CENTER); -const unsigned long long AV_CH_LAYOUT_6POINT0_FRONT = - (AV_CH_LAYOUT_2_2 | AV_CH_FRONT_LEFT_OF_CENTER | - AV_CH_FRONT_RIGHT_OF_CENTER); -const unsigned long long AV_CH_LAYOUT_HEXAGONAL = - (AV_CH_LAYOUT_5POINT0_BACK | AV_CH_BACK_CENTER); -const unsigned long long AV_CH_LAYOUT_6POINT1 = - (AV_CH_LAYOUT_5POINT1 | AV_CH_BACK_CENTER); -const unsigned long long AV_CH_LAYOUT_6POINT1_BACK = - (AV_CH_LAYOUT_5POINT1_BACK | AV_CH_BACK_CENTER); -const unsigned long long AV_CH_LAYOUT_6POINT1_FRONT = - (AV_CH_LAYOUT_6POINT0_FRONT | AV_CH_LOW_FREQUENCY); -const unsigned long long AV_CH_LAYOUT_7POINT0 = - (AV_CH_LAYOUT_5POINT0 | AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT); -const unsigned long long AV_CH_LAYOUT_7POINT0_FRONT = - (AV_CH_LAYOUT_5POINT0 | AV_CH_FRONT_LEFT_OF_CENTER | - AV_CH_FRONT_RIGHT_OF_CENTER); -const unsigned long long AV_CH_LAYOUT_7POINT1 = - (AV_CH_LAYOUT_5POINT1 | AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT); -const unsigned long long AV_CH_LAYOUT_7POINT1_WIDE = - (AV_CH_LAYOUT_5POINT1 | AV_CH_FRONT_LEFT_OF_CENTER | - AV_CH_FRONT_RIGHT_OF_CENTER); -const unsigned long long AV_CH_LAYOUT_7POINT1_WIDE_BACK = - (AV_CH_LAYOUT_5POINT1_BACK | AV_CH_FRONT_LEFT_OF_CENTER | - AV_CH_FRONT_RIGHT_OF_CENTER); -const unsigned long long AV_CH_LAYOUT_OCTAGONAL = - (AV_CH_LAYOUT_5POINT0 | AV_CH_BACK_LEFT | AV_CH_BACK_CENTER | - AV_CH_BACK_RIGHT); -const unsigned long long AV_CH_LAYOUT_HEXADECAGONAL = - (AV_CH_LAYOUT_OCTAGONAL | AV_CH_WIDE_LEFT | AV_CH_WIDE_RIGHT | - AV_CH_TOP_BACK_LEFT | AV_CH_TOP_BACK_RIGHT | AV_CH_TOP_BACK_CENTER | - AV_CH_TOP_FRONT_CENTER | AV_CH_TOP_FRONT_LEFT | AV_CH_TOP_FRONT_RIGHT); -const unsigned long long AV_CH_LAYOUT_STEREO_DOWNMIX = - (AV_CH_STEREO_LEFT | AV_CH_STEREO_RIGHT); -const unsigned long long AV_CH_LAYOUT_22POINT2 = - (AV_CH_LAYOUT_5POINT1_BACK | AV_CH_FRONT_LEFT_OF_CENTER | - AV_CH_FRONT_RIGHT_OF_CENTER | AV_CH_BACK_CENTER | AV_CH_LOW_FREQUENCY_2 | - AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT | AV_CH_TOP_FRONT_LEFT | - AV_CH_TOP_FRONT_RIGHT | AV_CH_TOP_FRONT_CENTER | AV_CH_TOP_CENTER | - AV_CH_TOP_BACK_LEFT | AV_CH_TOP_BACK_RIGHT | AV_CH_TOP_SIDE_LEFT | - AV_CH_TOP_SIDE_RIGHT | AV_CH_TOP_BACK_CENTER | AV_CH_BOTTOM_FRONT_CENTER | - AV_CH_BOTTOM_FRONT_LEFT | AV_CH_BOTTOM_FRONT_RIGHT); -#endif diff --git a/ffmpeg-sys-the-third/src/avutil/channel_layout.rs b/ffmpeg-sys-the-third/src/avutil/channel_layout.rs new file mode 100644 index 0000000..ae22dc4 --- /dev/null +++ b/ffmpeg-sys-the-third/src/avutil/channel_layout.rs @@ -0,0 +1,199 @@ +use libc::c_int; + +use crate::{AVChannel::*, AVChannelLayout, AVChannelOrder}; + +// Here until https://github.com/rust-lang/rust-bindgen/issues/2192 / +// https://github.com/rust-lang/rust-bindgen/issues/258 is fixed. + +// The constants here should be kept up to date with libavutil/channel_layout.h. + +// Audio channel masks +pub const AV_CH_FRONT_LEFT: u64 = 1 << (AV_CHAN_FRONT_LEFT as i32); +pub const AV_CH_FRONT_RIGHT: u64 = 1 << (AV_CHAN_FRONT_RIGHT as i32); +pub const AV_CH_FRONT_CENTER: u64 = 1 << (AV_CHAN_FRONT_CENTER as i32); +pub const AV_CH_LOW_FREQUENCY: u64 = 1 << (AV_CHAN_LOW_FREQUENCY as i32); +pub const AV_CH_BACK_LEFT: u64 = 1 << (AV_CHAN_BACK_LEFT as i32); +pub const AV_CH_BACK_RIGHT: u64 = 1 << (AV_CHAN_BACK_RIGHT as i32); +pub const AV_CH_FRONT_LEFT_OF_CENTER: u64 = 1 << (AV_CHAN_FRONT_LEFT_OF_CENTER as i32); +pub const AV_CH_FRONT_RIGHT_OF_CENTER: u64 = 1 << (AV_CHAN_FRONT_RIGHT_OF_CENTER as i32); +pub const AV_CH_BACK_CENTER: u64 = 1 << (AV_CHAN_BACK_CENTER as i32); +pub const AV_CH_SIDE_LEFT: u64 = 1 << (AV_CHAN_SIDE_LEFT as i32); +pub const AV_CH_SIDE_RIGHT: u64 = 1 << (AV_CHAN_SIDE_RIGHT as i32); +pub const AV_CH_TOP_CENTER: u64 = 1 << (AV_CHAN_TOP_CENTER as i32); +pub const AV_CH_TOP_FRONT_LEFT: u64 = 1 << (AV_CHAN_TOP_FRONT_LEFT as i32); +pub const AV_CH_TOP_FRONT_CENTER: u64 = 1 << (AV_CHAN_TOP_FRONT_CENTER as i32); +pub const AV_CH_TOP_FRONT_RIGHT: u64 = 1 << (AV_CHAN_TOP_FRONT_RIGHT as i32); +pub const AV_CH_TOP_BACK_LEFT: u64 = 1 << (AV_CHAN_TOP_BACK_LEFT as i32); +pub const AV_CH_TOP_BACK_CENTER: u64 = 1 << (AV_CHAN_TOP_BACK_CENTER as i32); +pub const AV_CH_TOP_BACK_RIGHT: u64 = 1 << (AV_CHAN_TOP_BACK_RIGHT as i32); +pub const AV_CH_STEREO_LEFT: u64 = 1 << (AV_CHAN_STEREO_LEFT as i32); +pub const AV_CH_STEREO_RIGHT: u64 = 1 << (AV_CHAN_STEREO_RIGHT as i32); +pub const AV_CH_WIDE_LEFT: u64 = 1 << (AV_CHAN_WIDE_LEFT as i32); +pub const AV_CH_WIDE_RIGHT: u64 = 1 << (AV_CHAN_WIDE_RIGHT as i32); +pub const AV_CH_SURROUND_DIRECT_LEFT: u64 = 1 << (AV_CHAN_SURROUND_DIRECT_LEFT as i32); +pub const AV_CH_SURROUND_DIRECT_RIGHT: u64 = 1 << (AV_CHAN_SURROUND_DIRECT_RIGHT as i32); +pub const AV_CH_LOW_FREQUENCY_2: u64 = 1 << (AV_CHAN_LOW_FREQUENCY_2 as i32); +pub const AV_CH_TOP_SIDE_LEFT: u64 = 1 << (AV_CHAN_TOP_SIDE_LEFT as i32); +pub const AV_CH_TOP_SIDE_RIGHT: u64 = 1 << (AV_CHAN_TOP_SIDE_RIGHT as i32); +pub const AV_CH_BOTTOM_FRONT_CENTER: u64 = 1 << (AV_CHAN_BOTTOM_FRONT_CENTER as i32); +pub const AV_CH_BOTTOM_FRONT_LEFT: u64 = 1 << (AV_CHAN_BOTTOM_FRONT_LEFT as i32); +pub const AV_CH_BOTTOM_FRONT_RIGHT: u64 = 1 << (AV_CHAN_BOTTOM_FRONT_RIGHT as i32); + +// Audio channel layouts +pub const AV_CH_LAYOUT_MONO: u64 = AV_CH_FRONT_CENTER; +pub const AV_CH_LAYOUT_STEREO: u64 = AV_CH_FRONT_LEFT | AV_CH_FRONT_RIGHT; +pub const AV_CH_LAYOUT_2POINT1: u64 = AV_CH_LAYOUT_STEREO | AV_CH_LOW_FREQUENCY; +pub const AV_CH_LAYOUT_2_1: u64 = AV_CH_LAYOUT_STEREO | AV_CH_BACK_CENTER; +pub const AV_CH_LAYOUT_SURROUND: u64 = AV_CH_LAYOUT_STEREO | AV_CH_FRONT_CENTER; +pub const AV_CH_LAYOUT_3POINT1: u64 = AV_CH_LAYOUT_SURROUND | AV_CH_LOW_FREQUENCY; +pub const AV_CH_LAYOUT_4POINT0: u64 = AV_CH_LAYOUT_SURROUND | AV_CH_BACK_CENTER; +pub const AV_CH_LAYOUT_4POINT1: u64 = AV_CH_LAYOUT_4POINT0 | AV_CH_LOW_FREQUENCY; +pub const AV_CH_LAYOUT_2_2: u64 = AV_CH_LAYOUT_STEREO | AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT; +pub const AV_CH_LAYOUT_QUAD: u64 = AV_CH_LAYOUT_STEREO | AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT; +pub const AV_CH_LAYOUT_5POINT0: u64 = AV_CH_LAYOUT_SURROUND | AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT; +pub const AV_CH_LAYOUT_5POINT1: u64 = AV_CH_LAYOUT_5POINT0 | AV_CH_LOW_FREQUENCY; +pub const AV_CH_LAYOUT_5POINT0_BACK: u64 = + AV_CH_LAYOUT_SURROUND | AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT; +pub const AV_CH_LAYOUT_5POINT1_BACK: u64 = AV_CH_LAYOUT_5POINT0_BACK | AV_CH_LOW_FREQUENCY; +pub const AV_CH_LAYOUT_6POINT0: u64 = AV_CH_LAYOUT_5POINT0 | AV_CH_BACK_CENTER; +pub const AV_CH_LAYOUT_6POINT0_FRONT: u64 = + AV_CH_LAYOUT_2_2 | AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_RIGHT_OF_CENTER; +pub const AV_CH_LAYOUT_HEXAGONAL: u64 = AV_CH_LAYOUT_5POINT0_BACK | AV_CH_BACK_CENTER; +pub const AV_CH_LAYOUT_3POINT1POINT2: u64 = + AV_CH_LAYOUT_3POINT1 | AV_CH_TOP_FRONT_LEFT | AV_CH_TOP_FRONT_RIGHT; +pub const AV_CH_LAYOUT_6POINT1: u64 = AV_CH_LAYOUT_5POINT1 | AV_CH_BACK_CENTER; +pub const AV_CH_LAYOUT_6POINT1_BACK: u64 = AV_CH_LAYOUT_5POINT1_BACK | AV_CH_BACK_CENTER; +pub const AV_CH_LAYOUT_6POINT1_FRONT: u64 = AV_CH_LAYOUT_6POINT0_FRONT | AV_CH_LOW_FREQUENCY; +pub const AV_CH_LAYOUT_7POINT0: u64 = AV_CH_LAYOUT_5POINT0 | AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT; +pub const AV_CH_LAYOUT_7POINT0_FRONT: u64 = + AV_CH_LAYOUT_5POINT0 | AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_RIGHT_OF_CENTER; +pub const AV_CH_LAYOUT_7POINT1: u64 = AV_CH_LAYOUT_5POINT1 | AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT; +pub const AV_CH_LAYOUT_7POINT1_WIDE: u64 = + AV_CH_LAYOUT_5POINT1 | AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_RIGHT_OF_CENTER; +pub const AV_CH_LAYOUT_7POINT1_WIDE_BACK: u64 = + AV_CH_LAYOUT_5POINT1_BACK | AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_RIGHT_OF_CENTER; +pub const AV_CH_LAYOUT_5POINT1POINT2_BACK: u64 = + AV_CH_LAYOUT_5POINT1_BACK | AV_CH_TOP_FRONT_LEFT | AV_CH_TOP_FRONT_RIGHT; +pub const AV_CH_LAYOUT_OCTAGONAL: u64 = + AV_CH_LAYOUT_5POINT0 | AV_CH_BACK_LEFT | AV_CH_BACK_CENTER | AV_CH_BACK_RIGHT; +pub const AV_CH_LAYOUT_CUBE: u64 = AV_CH_LAYOUT_QUAD + | AV_CH_TOP_FRONT_LEFT + | AV_CH_TOP_FRONT_RIGHT + | AV_CH_TOP_BACK_LEFT + | AV_CH_TOP_BACK_RIGHT; +pub const AV_CH_LAYOUT_5POINT1POINT4_BACK: u64 = + AV_CH_LAYOUT_5POINT1POINT2_BACK | AV_CH_TOP_BACK_LEFT | AV_CH_TOP_BACK_RIGHT; +pub const AV_CH_LAYOUT_7POINT1POINT2: u64 = + AV_CH_LAYOUT_7POINT1 | AV_CH_TOP_FRONT_LEFT | AV_CH_TOP_FRONT_RIGHT; +pub const AV_CH_LAYOUT_7POINT1POINT4_BACK: u64 = + AV_CH_LAYOUT_7POINT1POINT2 | AV_CH_TOP_BACK_LEFT | AV_CH_TOP_BACK_RIGHT; +pub const AV_CH_LAYOUT_HEXADECAGONAL: u64 = AV_CH_LAYOUT_OCTAGONAL + | AV_CH_WIDE_LEFT + | AV_CH_WIDE_RIGHT + | AV_CH_TOP_BACK_LEFT + | AV_CH_TOP_BACK_RIGHT + | AV_CH_TOP_BACK_CENTER + | AV_CH_TOP_FRONT_CENTER + | AV_CH_TOP_FRONT_LEFT + | AV_CH_TOP_FRONT_RIGHT; +pub const AV_CH_LAYOUT_STEREO_DOWNMIX: u64 = AV_CH_STEREO_LEFT | AV_CH_STEREO_RIGHT; +pub const AV_CH_LAYOUT_22POINT2: u64 = AV_CH_LAYOUT_5POINT1_BACK + | AV_CH_FRONT_LEFT_OF_CENTER + | AV_CH_FRONT_RIGHT_OF_CENTER + | AV_CH_BACK_CENTER + | AV_CH_LOW_FREQUENCY_2 + | AV_CH_SIDE_LEFT + | AV_CH_SIDE_RIGHT + | AV_CH_TOP_FRONT_LEFT + | AV_CH_TOP_FRONT_RIGHT + | AV_CH_TOP_FRONT_CENTER + | AV_CH_TOP_CENTER + | AV_CH_TOP_BACK_LEFT + | AV_CH_TOP_BACK_RIGHT + | AV_CH_TOP_SIDE_LEFT + | AV_CH_TOP_SIDE_RIGHT + | AV_CH_TOP_BACK_CENTER + | AV_CH_BOTTOM_FRONT_CENTER + | AV_CH_BOTTOM_FRONT_LEFT + | AV_CH_BOTTOM_FRONT_RIGHT; + +pub const AV_CH_LAYOUT_7POINT1_TOP_BACK: u64 = AV_CH_LAYOUT_5POINT1POINT2_BACK; + +// Audio channel layouts as AVChannelLayout +pub const fn AV_CHANNEL_LAYOUT_MASK(nb_channels: c_int, channel_mask: u64) -> AVChannelLayout { + AVChannelLayout { + order: AVChannelOrder::AV_CHANNEL_ORDER_NATIVE, + nb_channels, + u: crate::AVChannelLayout__bindgen_ty_1 { mask: channel_mask }, + opaque: std::ptr::null_mut(), + } +} + +pub const AV_CHANNEL_LAYOUT_MONO: AVChannelLayout = AV_CHANNEL_LAYOUT_MASK(1, AV_CH_LAYOUT_MONO); +pub const AV_CHANNEL_LAYOUT_STEREO: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(2, AV_CH_LAYOUT_STEREO); +pub const AV_CHANNEL_LAYOUT_2POINT1: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(3, AV_CH_LAYOUT_2POINT1); +pub const AV_CHANNEL_LAYOUT_2_1: AVChannelLayout = AV_CHANNEL_LAYOUT_MASK(3, AV_CH_LAYOUT_2_1); +pub const AV_CHANNEL_LAYOUT_SURROUND: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(3, AV_CH_LAYOUT_SURROUND); +pub const AV_CHANNEL_LAYOUT_3POINT1: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_3POINT1); +pub const AV_CHANNEL_LAYOUT_4POINT0: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_4POINT0); +pub const AV_CHANNEL_LAYOUT_4POINT1: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(5, AV_CH_LAYOUT_4POINT1); +pub const AV_CHANNEL_LAYOUT_2_2: AVChannelLayout = AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_2_2); +pub const AV_CHANNEL_LAYOUT_QUAD: AVChannelLayout = AV_CHANNEL_LAYOUT_MASK(4, AV_CH_LAYOUT_QUAD); +pub const AV_CHANNEL_LAYOUT_5POINT0: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(5, AV_CH_LAYOUT_5POINT0); +pub const AV_CHANNEL_LAYOUT_5POINT1: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_5POINT1); +pub const AV_CHANNEL_LAYOUT_5POINT0_BACK: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(5, AV_CH_LAYOUT_5POINT0_BACK); +pub const AV_CHANNEL_LAYOUT_5POINT1_BACK: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_5POINT1_BACK); +pub const AV_CHANNEL_LAYOUT_6POINT0: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_6POINT0); +pub const AV_CHANNEL_LAYOUT_6POINT0_FRONT: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_6POINT0_FRONT); +pub const AV_CHANNEL_LAYOUT_3POINT1POINT2: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_3POINT1POINT2); +pub const AV_CHANNEL_LAYOUT_HEXAGONAL: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(6, AV_CH_LAYOUT_HEXAGONAL); +pub const AV_CHANNEL_LAYOUT_6POINT1: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_6POINT1); +pub const AV_CHANNEL_LAYOUT_6POINT1_BACK: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_6POINT1_BACK); +pub const AV_CHANNEL_LAYOUT_6POINT1_FRONT: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_6POINT1_FRONT); +pub const AV_CHANNEL_LAYOUT_7POINT0: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_7POINT0); +pub const AV_CHANNEL_LAYOUT_7POINT0_FRONT: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(7, AV_CH_LAYOUT_7POINT0_FRONT); +pub const AV_CHANNEL_LAYOUT_7POINT1: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_7POINT1); +pub const AV_CHANNEL_LAYOUT_7POINT1_WIDE: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_7POINT1_WIDE); +pub const AV_CHANNEL_LAYOUT_7POINT1_WIDE_BACK: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_7POINT1_WIDE_BACK); +pub const AV_CHANNEL_LAYOUT_5POINT1POINT2_BACK: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_5POINT1POINT2_BACK); +pub const AV_CHANNEL_LAYOUT_OCTAGONAL: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_OCTAGONAL); +pub const AV_CHANNEL_LAYOUT_CUBE: AVChannelLayout = AV_CHANNEL_LAYOUT_MASK(8, AV_CH_LAYOUT_CUBE); +pub const AV_CHANNEL_LAYOUT_5POINT1POINT4_BACK: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(10, AV_CH_LAYOUT_5POINT1POINT4_BACK); +pub const AV_CHANNEL_LAYOUT_7POINT1POINT2: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(10, AV_CH_LAYOUT_7POINT1POINT2); +pub const AV_CHANNEL_LAYOUT_7POINT1POINT4_BACK: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(12, AV_CH_LAYOUT_7POINT1POINT4_BACK); +pub const AV_CHANNEL_LAYOUT_HEXADECAGONAL: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(16, AV_CH_LAYOUT_HEXADECAGONAL); +pub const AV_CHANNEL_LAYOUT_STEREO_DOWNMIX: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(2, AV_CH_LAYOUT_STEREO_DOWNMIX); +pub const AV_CHANNEL_LAYOUT_22POINT2: AVChannelLayout = + AV_CHANNEL_LAYOUT_MASK(24, AV_CH_LAYOUT_22POINT2); + +pub const AV_CHANNEL_LAYOUT_7POINT1_TOP_BACK: AVChannelLayout = + AV_CHANNEL_LAYOUT_5POINT1POINT2_BACK; diff --git a/ffmpeg-sys-the-third/src/avutil/mod.rs b/ffmpeg-sys-the-third/src/avutil/mod.rs index af8aaf2..c48bcfb 100644 --- a/ffmpeg-sys-the-third/src/avutil/mod.rs +++ b/ffmpeg-sys-the-third/src/avutil/mod.rs @@ -12,3 +12,8 @@ pub use self::rational::*; mod pixfmt; pub use self::pixfmt::*; + +#[cfg(feature = "ffmpeg_5_1")] +mod channel_layout; +#[cfg(feature = "ffmpeg_5_1")] +pub use self::channel_layout::*; diff --git a/src/util/channel_layout.rs b/src/util/channel_layout.rs index e1c28db..f6b9d6c 100644 --- a/src/util/channel_layout.rs +++ b/src/util/channel_layout.rs @@ -30,34 +30,48 @@ bitflags! { const LOW_FREQUENCY_2 = AV_CH_LOW_FREQUENCY_2; const NATIVE = AV_CH_LAYOUT_NATIVE; - const MONO = AV_CH_LAYOUT_MONO; - const STEREO = AV_CH_LAYOUT_STEREO; - const _2POINT1 = AV_CH_LAYOUT_2POINT1; - const _2_1 = AV_CH_LAYOUT_2_1; - const SURROUND = AV_CH_LAYOUT_SURROUND; - const _3POINT1 = AV_CH_LAYOUT_3POINT1; - const _4POINT0 = AV_CH_LAYOUT_4POINT0; - const _4POINT1 = AV_CH_LAYOUT_4POINT1; - const _2_2 = AV_CH_LAYOUT_2_2; - const QUAD = AV_CH_LAYOUT_QUAD; - const _5POINT0 = AV_CH_LAYOUT_5POINT0; - const _5POINT1 = AV_CH_LAYOUT_5POINT1; - const _5POINT0_BACK = AV_CH_LAYOUT_5POINT0_BACK; - const _5POINT1_BACK = AV_CH_LAYOUT_5POINT1_BACK; - const _6POINT0 = AV_CH_LAYOUT_6POINT0; - const _6POINT0_FRONT = AV_CH_LAYOUT_6POINT0_FRONT; - const HEXAGONAL = AV_CH_LAYOUT_HEXAGONAL; - const _6POINT1 = AV_CH_LAYOUT_6POINT1; - const _6POINT1_BACK = AV_CH_LAYOUT_6POINT1_BACK; - const _6POINT1_FRONT = AV_CH_LAYOUT_6POINT1_FRONT; - const _7POINT0 = AV_CH_LAYOUT_7POINT0; - const _7POINT0_FRONT = AV_CH_LAYOUT_7POINT0_FRONT; - const _7POINT1 = AV_CH_LAYOUT_7POINT1; - const _7POINT1_WIDE = AV_CH_LAYOUT_7POINT1_WIDE; - const _7POINT1_WIDE_BACK = AV_CH_LAYOUT_7POINT1_WIDE_BACK; - const OCTAGONAL = AV_CH_LAYOUT_OCTAGONAL; - const HEXADECAGONAL = AV_CH_LAYOUT_HEXADECAGONAL; - const STEREO_DOWNMIX = AV_CH_LAYOUT_STEREO_DOWNMIX; + const MONO = AV_CH_LAYOUT_MONO; + const STEREO = AV_CH_LAYOUT_STEREO; + const _2POINT1 = AV_CH_LAYOUT_2POINT1; + const _2_1 = AV_CH_LAYOUT_2_1; + const SURROUND = AV_CH_LAYOUT_SURROUND; + const _3POINT1 = AV_CH_LAYOUT_3POINT1; + const _4POINT0 = AV_CH_LAYOUT_4POINT0; + const _4POINT1 = AV_CH_LAYOUT_4POINT1; + const _2_2 = AV_CH_LAYOUT_2_2; + const QUAD = AV_CH_LAYOUT_QUAD; + const _5POINT0 = AV_CH_LAYOUT_5POINT0; + const _5POINT1 = AV_CH_LAYOUT_5POINT1; + const _5POINT0_BACK = AV_CH_LAYOUT_5POINT0_BACK; + const _5POINT1_BACK = AV_CH_LAYOUT_5POINT1_BACK; + const _6POINT0 = AV_CH_LAYOUT_6POINT0; + const _6POINT0_FRONT = AV_CH_LAYOUT_6POINT0_FRONT; + const HEXAGONAL = AV_CH_LAYOUT_HEXAGONAL; + #[cfg(feature = "ffmpeg_5_1")] + const _3POINT1POINT2 = AV_CH_LAYOUT_3POINT1POINT2; + const _6POINT1 = AV_CH_LAYOUT_6POINT1; + const _6POINT1_BACK = AV_CH_LAYOUT_6POINT1_BACK; + const _6POINT1_FRONT = AV_CH_LAYOUT_6POINT1_FRONT; + const _7POINT0 = AV_CH_LAYOUT_7POINT0; + const _7POINT0_FRONT = AV_CH_LAYOUT_7POINT0_FRONT; + const _7POINT1 = AV_CH_LAYOUT_7POINT1; + const _7POINT1_WIDE = AV_CH_LAYOUT_7POINT1_WIDE; + const _7POINT1_WIDE_BACK = AV_CH_LAYOUT_7POINT1_WIDE_BACK; + #[cfg(feature = "ffmpeg_5_1")] + const _5POINT1POINT2_BACK = AV_CH_LAYOUT_5POINT1POINT2_BACK; + const OCTAGONAL = AV_CH_LAYOUT_OCTAGONAL; + #[cfg(feature = "ffmpeg_5_1")] + const CUBE = AV_CH_LAYOUT_CUBE; + #[cfg(feature = "ffmpeg_5_1")] + const _5POINT1POINT4_BACK = AV_CH_LAYOUT_5POINT1POINT4_BACK; + #[cfg(feature = "ffmpeg_5_1")] + const _7POINT1POINT2 = AV_CH_LAYOUT_7POINT1POINT2; + #[cfg(feature = "ffmpeg_5_1")] + const _7POINT1POINT4_BACK = AV_CH_LAYOUT_7POINT1POINT4_BACK; + const HEXADECAGONAL = AV_CH_LAYOUT_HEXADECAGONAL; + const STEREO_DOWNMIX = AV_CH_LAYOUT_STEREO_DOWNMIX; + #[cfg(feature = "ffmpeg_5_1")] + const _22POINT2 = AV_CH_LAYOUT_22POINT2; } }