libmpegts 0.3.2

MPEG-TS Library
Documentation
#[macro_export]
macro_rules! pack_bits {
    ($type:ty, $($name:ident : $size:expr => $val:expr),* $(,)?) => {{
        const SIZE: usize = core::mem::size_of::<$type>();
        let mut _pos: u32 = SIZE as u32 * 8;
        let mut _result: $type = 0;
        $(
            let _ = stringify!($name);
            _pos -= $size;
            _result |= (($val as $type) & ((1 << $size) - 1)) << _pos;
        )*
        _result.to_be_bytes()
    }};
}

#[macro_export]
macro_rules! unpack_bits {
    ($type:ty, $data:expr, $($name:ident : $size:expr),* $(,)?) => {{
        const SIZE: usize = core::mem::size_of::<$type>();
        let mut _pos: u32 = SIZE as u32 * 8;
        let _val = <$type>::from_be_bytes($data);
        $(
            _pos -= $size;
            let $name = (_val >> _pos) & ((1 << $size) - 1);
        )*
        ($($name),*)
    }};
}