ffmpeg-the-third 5.0.0+ffmpeg-8.1

Safe FFmpeg wrapper (FFmpeg 5+ compatible fork of the ffmpeg crate)
Documentation
use crate::ffi::*;
#[cfg(feature = "serialize")]
use serde::{Deserialize, Serialize};

#[derive(Eq, PartialEq, Clone, Copy, Debug)]
#[cfg_attr(feature = "serialize", derive(Serialize, Deserialize))]
pub enum Discard {
    None,
    Default,
    NonReference,
    Bidirectional,
    NonIntra,
    NonKey,
    All,
}

impl From<AVDiscard> for Discard {
    fn from(value: AVDiscard) -> Self {
        use AVDiscard as AV;

        match value {
            AV::NONE => Discard::None,
            AV::DEFAULT => Discard::Default,
            AV::NONREF => Discard::NonReference,
            AV::BIDIR => Discard::Bidirectional,
            AV::NONINTRA => Discard::NonIntra,
            AV::NONKEY => Discard::NonKey,
            AV::ALL => Discard::All,

            _ => unimplemented!(),
        }
    }
}

impl From<Discard> for AVDiscard {
    fn from(value: Discard) -> AVDiscard {
        use AVDiscard as AV;

        match value {
            Discard::None => AV::NONE,
            Discard::Default => AV::DEFAULT,
            Discard::NonReference => AV::NONREF,
            Discard::Bidirectional => AV::BIDIR,
            Discard::NonIntra => AV::NONINTRA,
            Discard::NonKey => AV::NONKEY,
            Discard::All => AV::ALL,
        }
    }
}