From 506f66ac51d30b1fb59d30d0d4b0f6e44809d951 Mon Sep 17 00:00:00 2001 From: Zhiming Wang Date: Mon, 1 Jun 2020 13:36:50 +0800 Subject: [PATCH] Fix issues related to duplicate enum variants C enums allow duplicate variants, but Rust enums don't. At some point bindgen switched to generating duplicate variants as associated constants instead of module-level constants, so use SomeEnum::* broke. Here we switch to associated constants in the native API as well. --- src/util/color/space.rs | 6 +++--- src/util/format/pixel.rs | 10 ++++------ 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/util/color/space.rs b/src/util/color/space.rs index ecee6be..4bc65b3 100644 --- a/src/util/color/space.rs +++ b/src/util/color/space.rs @@ -14,7 +14,6 @@ pub enum Space { BT470BG, SMPTE170M, SMPTE240M, - YCOCG, YCGCO, BT2020NCL, BT2020CL, @@ -26,6 +25,8 @@ pub enum Space { } impl Space { + pub const YCOCG: Space = Space::YCGCO; + pub fn name(&self) -> Option<&'static str> { if *self == Space::Unspecified { return None; @@ -48,7 +49,7 @@ impl From for Space { AVCOL_SPC_BT470BG => Space::BT470BG, AVCOL_SPC_SMPTE170M => Space::SMPTE170M, AVCOL_SPC_SMPTE240M => Space::SMPTE240M, - AVCOL_SPC_YCOCG => Space::YCOCG, + AVCOL_SPC_YCGCO => Space::YCGCO, AVCOL_SPC_BT2020_NCL => Space::BT2020NCL, AVCOL_SPC_BT2020_CL => Space::BT2020CL, AVCOL_SPC_SMPTE2085 => Space::SMPTE2085, @@ -72,7 +73,6 @@ impl Into for Space { Space::BT470BG => AVCOL_SPC_BT470BG, Space::SMPTE170M => AVCOL_SPC_SMPTE170M, Space::SMPTE240M => AVCOL_SPC_SMPTE240M, - Space::YCOCG => AVCOL_SPC_YCOCG, Space::YCGCO => AVCOL_SPC_YCGCO, Space::BT2020NCL => AVCOL_SPC_BT2020_NCL, Space::BT2020CL => AVCOL_SPC_BT2020_CL, diff --git a/src/util/format/pixel.rs b/src/util/format/pixel.rs index 2f7cf1d..a4db217 100644 --- a/src/util/format/pixel.rs +++ b/src/util/format/pixel.rs @@ -223,9 +223,6 @@ pub enum Pixel { // --- defaults XVMC, - Y400A, - GRAY8A, - GBR24P, RGB32, RGB32_1, @@ -324,6 +321,10 @@ unsafe impl Send for Descriptor {} unsafe impl Sync for Descriptor {} impl Pixel { + pub const Y400A: Pixel = Pixel::YA8; + pub const GRAY8A: Pixel = Pixel::YA8; + pub const GBR24P: Pixel = Pixel::GBRP; + pub fn descriptor(self) -> Option { unsafe { let ptr = av_pix_fmt_desc_get(self.into()); @@ -820,9 +821,6 @@ impl Into for Pixel { // --- defaults Pixel::XVMC => AV_PIX_FMT_XVMC, - Pixel::Y400A => AV_PIX_FMT_Y400A, - Pixel::GRAY8A => AV_PIX_FMT_GRAY8A, - Pixel::GBR24P => AV_PIX_FMT_GBR24P, Pixel::RGB32 => AV_PIX_FMT_RGB32, Pixel::RGB32_1 => AV_PIX_FMT_RGB32_1,