#[derive(Debug, Default, Clone, Copy, PartialEq, Eq, PartialOrd, Ord)]
pub struct Millibits(u32);
impl super::EntropyCoder for Millibits {
fn encode_bit(&mut self, probability: super::ans::Probability, bit: bool) {
*self += probability.millibits(bit);
}
}
impl Millibits {
pub fn bytes(num_bytes: usize) -> Self {
Self(num_bytes as u32 * 1000 * 8)
}
pub fn bits(num_bits: usize) -> Self {
Self(num_bits as u32 * 1000)
}
pub fn new(millibits: usize) -> Self {
Self(millibits as u32)
}
}
impl std::ops::AddAssign<Millibits> for Millibits {
fn add_assign(&mut self, rhs: Millibits) {
self.0 += rhs.0;
}
}