Move channel_layout_fixed.h to rust (#28)

* Move channel layout definitions to Rust

* Add channel layouts new in 6.1

* Add new AVChannelLayout consts

* Add new channel layout values to ChannelLayout

* Realign ChannelLayout consts
This commit is contained in:
FreezyLemon 2024-04-10 15:24:10 +02:00 committed by GitHub
parent d519d152b3
commit 6231b4bc3a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
5 changed files with 246 additions and 215 deletions

View File

@ -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"))

View File

@ -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 <libavutil/channel_layout.h>
#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

View File

@ -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;

View File

@ -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::*;

View File

@ -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;
}
}