use alpha2_time::{FrameRate, MediaTime};
use crate::EngineError;
pub(crate) fn frame_times(
rate: FrameRate,
first_frame: i64,
count: u32,
end_frame: Option<i64>,
) -> Result<Vec<(i64, MediaTime)>, EngineError> {
let mut frames = Vec::with_capacity(usize::try_from(count).unwrap_or(0));
for offset in 0..count {
let frame = first_frame
.checked_add(i64::from(offset))
.ok_or(EngineError::OutOfRange)?;
if end_frame.is_some_and(|end| frame >= end) {
break;
}
let time = rate.frame_start(frame).ok_or(EngineError::OutOfRange)?;
frames.push((frame, time));
}
Ok(frames)
}