use super::{
arb_via_code, arb_via_code_weighted, arb_via_code_weighted_range, arb_via_named_variants,
};
arb_via_code!(crate::disposition::TrackDisposition);
arb_via_code_weighted_range!(crate::color::Primaries, max_named = 22);
arb_via_code_weighted_range!(crate::color::Transfer, max_named = 18);
arb_via_code_weighted_range!(crate::pixel_format::PixelFormat, max_named = 947);
impl<'a> ::arbitrary::Arbitrary<'a> for crate::color::Matrix {
fn arbitrary(u: &mut ::arbitrary::Unstructured<'a>) -> ::arbitrary::Result<Self> {
let code = match u.int_in_range(0u8..=2)? {
0 => u.int_in_range(0u32..=17)?, 1 => crate::color::DOMAIN_EXT_BASE, _ => <u32 as ::arbitrary::Arbitrary>::arbitrary(u)?,
};
Ok(crate::color::Matrix::from_u32(code))
}
}
arb_via_code_weighted!(crate::color::DynamicRange, [Unspecified, Limited, Full]);
arb_via_code_weighted!(
crate::color::ChromaLocation,
[Unspecified, Left, Center, TopLeft, Top, BottomLeft, Bottom]
);
arb_via_code_weighted!(crate::color::DcpTargetGamut, [DciP3, Rec709, Rec2020]);
arb_via_code_weighted!(crate::frame::Rotation, [D0, D90, D180, D270]);
arb_via_code_weighted!(crate::frame::FieldOrder, [Progressive, Tt, Bb, Tb, Bt]);
arb_via_code_weighted!(
crate::frame::StereoMode,
[
Mono,
SideBySide,
TopBottom,
FrameSequence,
Checkerboard,
SideBySideQuincunx,
Lines,
Columns,
]
);
arb_via_named_variants!(crate::audio::BitRateMode, [Cbr, Vbr, Abr]);
arb_via_named_variants!(crate::subtitle::TrackOrigin, [Embedded, Sidecar, External]);
impl<'a> ::arbitrary::Arbitrary<'a> for crate::color::Info {
fn arbitrary(u: &mut ::arbitrary::Unstructured<'a>) -> ::arbitrary::Result<Self> {
Ok(Self::new(
crate::color::Primaries::arbitrary(u)?,
crate::color::Transfer::arbitrary(u)?,
crate::color::Matrix::arbitrary(u)?,
crate::color::DynamicRange::arbitrary(u)?,
crate::color::ChromaLocation::arbitrary(u)?,
))
}
}
impl<'a> ::arbitrary::Arbitrary<'a> for crate::color::ContentLightLevel {
fn arbitrary(u: &mut ::arbitrary::Unstructured<'a>) -> ::arbitrary::Result<Self> {
Ok(Self::new(u32::arbitrary(u)?, u32::arbitrary(u)?))
}
}
impl<'a> ::arbitrary::Arbitrary<'a> for crate::color::ChromaCoord {
fn arbitrary(u: &mut ::arbitrary::Unstructured<'a>) -> ::arbitrary::Result<Self> {
Ok(Self::new(u32::arbitrary(u)?, u32::arbitrary(u)?))
}
}
impl<'a> ::arbitrary::Arbitrary<'a> for crate::color::MasteringDisplay {
fn arbitrary(u: &mut ::arbitrary::Unstructured<'a>) -> ::arbitrary::Result<Self> {
let primaries = [
crate::color::ChromaCoord::arbitrary(u)?,
crate::color::ChromaCoord::arbitrary(u)?,
crate::color::ChromaCoord::arbitrary(u)?,
];
let white_point = crate::color::ChromaCoord::arbitrary(u)?;
Ok(Self::new(
primaries,
white_point,
u32::arbitrary(u)?,
u32::arbitrary(u)?,
))
}
}
impl<'a> ::arbitrary::Arbitrary<'a> for crate::color::HdrStaticMetadata {
fn arbitrary(u: &mut ::arbitrary::Unstructured<'a>) -> ::arbitrary::Result<Self> {
Ok(Self::new(
<Option<crate::color::MasteringDisplay> as ::arbitrary::Arbitrary>::arbitrary(u)?,
<Option<crate::color::ContentLightLevel> as ::arbitrary::Arbitrary>::arbitrary(u)?,
))
}
}
impl<'a> ::arbitrary::Arbitrary<'a> for crate::color::DolbyVisionConfig {
fn arbitrary(u: &mut ::arbitrary::Unstructured<'a>) -> ::arbitrary::Result<Self> {
Ok(Self::new(
u8::arbitrary(u)?,
u8::arbitrary(u)?,
bool::arbitrary(u)?,
bool::arbitrary(u)?,
u8::arbitrary(u)?,
))
}
}
impl<'a> ::arbitrary::Arbitrary<'a> for crate::frame::Dimensions {
fn arbitrary(u: &mut ::arbitrary::Unstructured<'a>) -> ::arbitrary::Result<Self> {
Ok(Self::new(u32::arbitrary(u)?, u32::arbitrary(u)?))
}
}
impl<'a> ::arbitrary::Arbitrary<'a> for crate::frame::Rect {
fn arbitrary(u: &mut ::arbitrary::Unstructured<'a>) -> ::arbitrary::Result<Self> {
Ok(Self::new(
u32::arbitrary(u)?,
u32::arbitrary(u)?,
u32::arbitrary(u)?,
u32::arbitrary(u)?,
))
}
}
impl<'a> ::arbitrary::Arbitrary<'a> for crate::frame::Rational {
fn arbitrary(u: &mut ::arbitrary::Unstructured<'a>) -> ::arbitrary::Result<Self> {
Ok(Self::new(
u32::arbitrary(u)?,
core::num::NonZeroU32::arbitrary(u)?,
))
}
}
impl<'a> ::arbitrary::Arbitrary<'a> for crate::frame::SampleAspectRatio {
fn arbitrary(u: &mut ::arbitrary::Unstructured<'a>) -> ::arbitrary::Result<Self> {
Ok(Self::new(
u32::arbitrary(u)?,
core::num::NonZeroU32::arbitrary(u)?,
))
}
}
impl<'a> ::arbitrary::Arbitrary<'a> for crate::frame::FrameRate {
fn arbitrary(u: &mut ::arbitrary::Unstructured<'a>) -> ::arbitrary::Result<Self> {
Ok(Self::new(
crate::frame::Rational::arbitrary(u)?,
bool::arbitrary(u)?,
))
}
}