use crate::serialize::*;
use crate::wasm_bindgen::*;
use arg_enum_proc_macro::ArgEnum;
use num_derive::FromPrimitive;
#[wasm_bindgen]
#[derive(
Copy, Clone, Debug, PartialEq, FromPrimitive, Serialize, Deserialize,
)]
#[repr(C)]
pub enum ChromaSamplePosition {
Unknown,
Vertical,
Colocated,
}
impl Default for ChromaSamplePosition {
fn default() -> Self {
ChromaSamplePosition::Unknown
}
}
pub use v_frame::pixel::ChromaSampling;
#[derive(
ArgEnum, Debug, Clone, Copy, PartialEq, FromPrimitive, Serialize, Deserialize,
)]
#[repr(C)]
pub enum ColorPrimaries {
BT709 = 1,
Unspecified,
BT470M = 4,
BT470BG,
BT601,
SMPTE240,
GenericFilm,
BT2020,
XYZ,
SMPTE431,
SMPTE432,
EBU3213 = 22,
}
impl Default for ColorPrimaries {
fn default() -> Self {
ColorPrimaries::Unspecified
}
}
#[derive(
ArgEnum, Debug, Clone, Copy, PartialEq, FromPrimitive, Serialize, Deserialize,
)]
#[repr(C)]
pub enum TransferCharacteristics {
BT709 = 1,
Unspecified,
BT470M = 4,
BT470BG,
BT601,
SMPTE240,
Linear,
Log100,
Log100Sqrt10,
IEC61966,
BT1361,
SRGB,
BT2020_10Bit,
BT2020_12Bit,
SMPTE2084,
SMPTE428,
HLG,
}
impl Default for TransferCharacteristics {
fn default() -> Self {
TransferCharacteristics::Unspecified
}
}
#[derive(
ArgEnum, Debug, Clone, Copy, PartialEq, FromPrimitive, Serialize, Deserialize,
)]
#[repr(C)]
pub enum MatrixCoefficients {
Identity = 0,
BT709,
Unspecified,
FCC = 4,
BT470BG,
BT601,
SMPTE240,
YCgCo,
BT2020NCL,
BT2020CL,
SMPTE2085,
ChromatNCL,
ChromatCL,
ICtCp,
}
impl Default for MatrixCoefficients {
fn default() -> Self {
MatrixCoefficients::Unspecified
}
}
#[derive(Copy, Clone, Debug, Serialize, Deserialize)]
pub struct ColorDescription {
pub color_primaries: ColorPrimaries,
pub transfer_characteristics: TransferCharacteristics,
pub matrix_coefficients: MatrixCoefficients,
}
#[wasm_bindgen]
#[derive(
ArgEnum, Debug, Clone, Copy, PartialEq, FromPrimitive, Serialize, Deserialize,
)]
#[repr(C)]
pub enum PixelRange {
Limited,
Full,
}
impl Default for PixelRange {
fn default() -> Self {
PixelRange::Limited
}
}
#[derive(Copy, Clone, Debug, Serialize, Deserialize)]
pub struct ContentLight {
pub max_content_light_level: u16,
pub max_frame_average_light_level: u16,
}
#[derive(Clone, Copy, Debug, Serialize, Deserialize)]
#[repr(C)]
pub struct ChromaticityPoint {
pub x: u16,
pub y: u16,
}
#[derive(Copy, Clone, Debug, Serialize, Deserialize)]
pub struct MasteringDisplay {
pub primaries: [ChromaticityPoint; 3],
pub white_point: ChromaticityPoint,
pub max_luminance: u32,
pub min_luminance: u32,
}