use crate::{Backend, DecoderOptions, limits::DecoderLimits};
#[cfg(doc)]
use super::VideoDecoder;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash)]
#[non_exhaustive]
pub struct VideoDecoderOpen {
backend: Option<Backend>,
limits: DecoderLimits,
timebase: Option<mediadecode::Timebase>,
options: DecoderOptions,
}
impl VideoDecoderOpen {
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn new() -> Self {
Self {
backend: None,
limits: DecoderLimits::new(),
timebase: None,
options: DecoderOptions::new(),
}
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn backend(&self) -> Option<Backend> {
self.backend
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn limits(&self) -> DecoderLimits {
self.limits
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn timebase(&self) -> Option<mediadecode::Timebase> {
self.timebase
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn options(&self) -> DecoderOptions {
self.options
}
#[cfg_attr(not(tarpaulin), inline(always))]
#[must_use]
pub const fn with_backend(mut self, value: Option<Backend>) -> Self {
self.backend = value;
self
}
#[cfg_attr(not(tarpaulin), inline(always))]
#[must_use]
pub const fn with_limits(mut self, value: DecoderLimits) -> Self {
self.limits = value;
self
}
#[cfg_attr(not(tarpaulin), inline(always))]
#[must_use]
pub const fn with_timebase(mut self, value: Option<mediadecode::Timebase>) -> Self {
self.timebase = value;
self
}
#[cfg_attr(not(tarpaulin), inline(always))]
#[must_use]
pub const fn with_options(mut self, value: DecoderOptions) -> Self {
self.options = value;
self
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn set_backend(&mut self, value: Option<Backend>) -> &mut Self {
self.backend = value;
self
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn set_limits(&mut self, value: DecoderLimits) -> &mut Self {
self.limits = value;
self
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn set_timebase(&mut self, value: Option<mediadecode::Timebase>) -> &mut Self {
self.timebase = value;
self
}
#[cfg_attr(not(tarpaulin), inline(always))]
pub const fn set_options(&mut self, value: DecoderOptions) -> &mut Self {
self.options = value;
self
}
}
impl Default for VideoDecoderOpen {
#[inline]
fn default() -> Self {
Self::new()
}
}