use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct StreamFrameHeader {
pub stream_id: u32,
pub sequence: u32,
pub timestamp_ms: u64,
}
#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
pub struct FrameSequence {
pub frames: Vec<StreamFrameHeader>,
}
impl FrameSequence {
pub fn new() -> Self {
Self::default()
}
pub fn push(&mut self, header: StreamFrameHeader) {
self.frames.push(header);
}
pub fn len(&self) -> usize {
self.frames.len()
}
pub fn is_empty(&self) -> bool {
self.frames.is_empty()
}
}
#[derive(Debug, Clone, PartialEq, Eq, Default, Serialize, Deserialize)]
pub struct MotionStream {
pub sequence: FrameSequence,
pub fps_hint: u16,
}
impl MotionStream {
pub fn with_fps(fps_hint: u16) -> Self {
Self {
sequence: FrameSequence::new(),
fps_hint,
}
}
}