}
#[repr(u8)]
-#[derive(Clone,Copy,PartialEq,Debug)]
+#[derive(Clone,Copy,PartialEq,Debug,Default)]
pub enum PredMode {
+ #[default]
DCPred,
HPred,
VPred,
Inter,
}
-impl Default for PredMode {
- fn default() -> Self { PredMode::DCPred }
-}
-
impl PredMode {
pub fn to_b_mode(self) -> Self {
if self == PredMode::DCPred {
}
#[derive(Clone,Copy,PartialEq)]
+#[allow(clippy::upper_case_acronyms)]
pub enum DCTToken {
Zero,
One,
}
pub fn expand_token(bc: &mut BoolCoder, token: DCTToken) -> i16 {
- let cat;
- match token {
- DCTToken::Zero => return 0,
- DCTToken::One => return if bc.read_bool() { -1 } else { 1 },
- DCTToken::Two => return if bc.read_bool() { -2 } else { 2 },
- DCTToken::Three => return if bc.read_bool() { -3 } else { 3 },
- DCTToken::Four => return if bc.read_bool() { -4 } else { 4 },
- DCTToken::Cat1 => cat = 0,
- DCTToken::Cat2 => cat = 1,
- DCTToken::Cat3 => cat = 2,
- DCTToken::Cat4 => cat = 3,
- DCTToken::Cat5 => cat = 4,
- DCTToken::Cat6 => cat = 5,
- _ => unreachable!(),
- };
+ let cat = match token {
+ DCTToken::Zero => return 0,
+ DCTToken::One => return if bc.read_bool() { -1 } else { 1 },
+ DCTToken::Two => return if bc.read_bool() { -2 } else { 2 },
+ DCTToken::Three => return if bc.read_bool() { -3 } else { 3 },
+ DCTToken::Four => return if bc.read_bool() { -4 } else { 4 },
+ DCTToken::Cat1 => 0,
+ DCTToken::Cat2 => 1,
+ DCTToken::Cat3 => 2,
+ DCTToken::Cat4 => 3,
+ DCTToken::Cat5 => 4,
+ DCTToken::Cat6 => 5,
+ _ => unreachable!(),
+ };
let mut add = 0i16;
let add_probs = &VP56_COEF_ADD_PROBS[cat];
for prob in add_probs.iter() {
self.v_pred.update_row();
self.y2_pred.update_row();
}
+ pub fn reset_left(&mut self) {
+ self.y_pred_left = [0; 4];
+ self.u_pred_left = [0; 2];
+ self.v_pred_left = [0; 2];
+ self.y2_pred_left = 0;
+ }
}
pub const Y_MODE_TREE: &[VPTreeDef<PredMode>] = &[