use super::TranscodeStatus;
#[derive(Clone, Copy, Debug, Eq, PartialEq)]
pub struct TranscodeProgress {
status: TranscodeStatus,
read: usize,
written: usize,
}
impl TranscodeProgress {
#[must_use]
#[inline]
pub const fn new(status: TranscodeStatus, read: usize, written: usize) -> Self {
Self { status, read, written }
}
#[must_use]
#[inline]
pub const fn complete(read: usize, written: usize) -> Self {
Self::new(TranscodeStatus::Complete, read, written)
}
#[must_use]
#[inline]
pub const fn status(self) -> TranscodeStatus {
self.status
}
#[must_use]
#[inline]
pub const fn read(self) -> usize {
self.read
}
#[must_use]
#[inline]
pub const fn written(self) -> usize {
self.written
}
#[must_use]
#[inline]
pub const fn required(self) -> usize {
match self.status {
TranscodeStatus::Complete => 0,
TranscodeStatus::NeedInput { required, .. } => required,
TranscodeStatus::NeedOutput { required, .. } => required,
}
}
#[must_use]
#[inline]
pub const fn index(self) -> Option<usize> {
match self.status {
TranscodeStatus::Complete => None,
TranscodeStatus::NeedInput { input_index, .. } => Some(input_index),
TranscodeStatus::NeedOutput { output_index, .. } => Some(output_index),
}
}
#[must_use]
#[inline]
pub const fn available(self) -> usize {
match self.status {
TranscodeStatus::Complete => 0,
TranscodeStatus::NeedInput { available, .. } => available,
TranscodeStatus::NeedOutput { available, .. } => available,
}
}
}