use crate::error::DecodeError;
use std::sync::atomic::{AtomicBool, Ordering};
#[inline]
#[must_use]
#[allow(clippy::cast_possible_truncation)]
pub(crate) fn msb_replicate_5(v: u32) -> u8 {
((v << 3) | (v >> 2)) as u8
}
#[inline]
#[must_use]
#[allow(clippy::cast_possible_truncation)]
pub(crate) fn msb_replicate_6(v: u32) -> u8 {
((v << 2) | (v >> 4)) as u8
}
#[inline]
#[must_use]
#[allow(clippy::cast_sign_loss)]
pub(crate) fn clamp_u8(v: i32) -> u8 {
v.clamp(0, 255) as u8
}
#[inline]
pub(crate) fn check_canceled(canceled: &AtomicBool, name: &str) -> Result<(), DecodeError> {
if canceled.load(Ordering::Acquire) {
return Err(DecodeError::Canceled(name.into()));
}
Ok(())
}