flowly-mpegts 0.2.1

Mpeg2Ts format streaming parser
Documentation
use crate::Error;

use super::WritableLen;

/// Piecewise rate.
#[allow(missing_docs)]
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, PartialOrd, Ord)]
pub struct PiecewiseRate(pub(crate) u32);
impl PiecewiseRate {
    /// Maximum rate.
    pub const MAX: u32 = (1 << 22) - 1;

    /// Makes a new `PiecewiseRate` instance.
    ///
    /// # Errors
    ///
    /// If `rate` exceeds `PiecewiseRate::MAX`, it will return an `ErrorKind::InvalidInput` error.
    pub fn new(rate: u32) -> Result<Self, Error> {
        assert!(rate <= Self::MAX, "Too large rate: {}", rate);

        Ok(PiecewiseRate(rate))
    }

    /// Returns the value of the `PiecewiseRate` instance.
    pub fn as_u32(&self) -> u32 {
        self.0
    }
}

impl WritableLen for PiecewiseRate {
    fn writable_len(&self) -> usize {
        3
    }
}