util/color_space: add ColorSpace
This commit is contained in:
@ -9,3 +9,4 @@ pub mod util;
|
|||||||
pub use util::error::Error;
|
pub use util::error::Error;
|
||||||
pub use util::dictionary::Dictionary;
|
pub use util::dictionary::Dictionary;
|
||||||
pub use util::rational::Rational;
|
pub use util::rational::Rational;
|
||||||
|
pub use util::color_space::ColorSpace;
|
||||||
|
64
src/util/color_space.rs
Normal file
64
src/util/color_space.rs
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
use std::ffi::CStr;
|
||||||
|
use std::str::from_utf8_unchecked;
|
||||||
|
|
||||||
|
use ffi::*;
|
||||||
|
|
||||||
|
#[derive(Eq, PartialEq, Clone, Copy, Debug)]
|
||||||
|
pub enum ColorSpace {
|
||||||
|
RGB,
|
||||||
|
BT709,
|
||||||
|
Unspecified,
|
||||||
|
Reserved,
|
||||||
|
FCC,
|
||||||
|
BT470BG,
|
||||||
|
SMPTE170M,
|
||||||
|
SMPTE240M,
|
||||||
|
YCOCG,
|
||||||
|
BT2020NCL,
|
||||||
|
BT2020CL,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl ColorSpace {
|
||||||
|
pub fn name(&self) -> &'static str {
|
||||||
|
unsafe {
|
||||||
|
from_utf8_unchecked(CStr::from_ptr(av_get_colorspace_name((*self).into())).to_bytes())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl From<AVColorSpace> for ColorSpace {
|
||||||
|
fn from(value: AVColorSpace) -> Self {
|
||||||
|
match value {
|
||||||
|
AVCOL_SPC_RGB => ColorSpace::RGB,
|
||||||
|
AVCOL_SPC_BT709 => ColorSpace::BT709,
|
||||||
|
AVCOL_SPC_UNSPECIFIED => ColorSpace::Unspecified,
|
||||||
|
AVCOL_SPC_RESERVED => ColorSpace::Reserved,
|
||||||
|
AVCOL_SPC_FCC => ColorSpace::FCC,
|
||||||
|
AVCOL_SPC_BT470BG => ColorSpace::BT470BG,
|
||||||
|
AVCOL_SPC_SMPTE170M => ColorSpace::SMPTE170M,
|
||||||
|
AVCOL_SPC_SMPTE240M => ColorSpace::SMPTE240M,
|
||||||
|
AVCOL_SPC_YCOCG => ColorSpace::YCOCG,
|
||||||
|
AVCOL_SPC_BT2020_NCL => ColorSpace::BT2020NCL,
|
||||||
|
AVCOL_SPC_BT2020_CL => ColorSpace::BT2020CL,
|
||||||
|
AVCOL_SPC_NB => ColorSpace::Unspecified
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Into<AVColorSpace> for ColorSpace {
|
||||||
|
fn into(self) -> AVColorSpace {
|
||||||
|
match self {
|
||||||
|
ColorSpace::RGB => AVCOL_SPC_RGB,
|
||||||
|
ColorSpace::BT709 => AVCOL_SPC_BT709,
|
||||||
|
ColorSpace::Unspecified => AVCOL_SPC_UNSPECIFIED,
|
||||||
|
ColorSpace::Reserved => AVCOL_SPC_RESERVED,
|
||||||
|
ColorSpace::FCC => AVCOL_SPC_FCC,
|
||||||
|
ColorSpace::BT470BG => AVCOL_SPC_BT470BG,
|
||||||
|
ColorSpace::SMPTE170M => AVCOL_SPC_SMPTE170M,
|
||||||
|
ColorSpace::SMPTE240M => AVCOL_SPC_SMPTE240M,
|
||||||
|
ColorSpace::YCOCG => AVCOL_SPC_YCOCG,
|
||||||
|
ColorSpace::BT2020NCL => AVCOL_SPC_BT2020_NCL,
|
||||||
|
ColorSpace::BT2020CL => AVCOL_SPC_BT2020_CL
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -1,6 +1,7 @@
|
|||||||
pub mod dictionary;
|
pub mod dictionary;
|
||||||
pub mod error;
|
pub mod error;
|
||||||
pub mod rational;
|
pub mod rational;
|
||||||
|
pub mod color_space;
|
||||||
|
|
||||||
use std::ffi::CStr;
|
use std::ffi::CStr;
|
||||||
use std::str::from_utf8_unchecked;
|
use std::str::from_utf8_unchecked;
|
||||||
|
Reference in New Issue
Block a user