use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize)]
pub enum FrameType {
KeyFrame,
DeltaFrame,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct VideoFrame {
pub sequence_number: u64,
pub frame_type: FrameType,
pub data: Vec<u8>,
pub timestamp: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct FrameBuffer {
pub frame: VideoFrame,
pub arrival_time_ms: u128,
}
impl FrameBuffer {
pub fn new(frame: VideoFrame, arrival_time_ms: u128) -> Self {
Self {
frame,
arrival_time_ms,
}
}
pub fn sequence_number(&self) -> u64 {
self.frame.sequence_number
}
pub fn is_keyframe(&self) -> bool {
self.frame.frame_type == FrameType::KeyFrame
}
}