From: Kostya Shishkov Date: Sat, 3 Jun 2023 07:40:19 +0000 (+0200) Subject: cinepakenc: make ELBG mode to behave like hybrid mode (and drop that one) X-Git-Url: https://git.nihav.org/?a=commitdiff_plain;h=13704efd78d1055406fead7d801edada74c2ddf3;p=nihav.git cinepakenc: make ELBG mode to behave like hybrid mode (and drop that one) In reality it is the proper way to perform (E)LBG VQ so the old ineffective ELBG should be replaced with "hybrid" quantisation way. --- diff --git a/nihav-commonfmt/src/codecs/cinepakenc.rs b/nihav-commonfmt/src/codecs/cinepakenc.rs index 8273de0..99194ce 100644 --- a/nihav-commonfmt/src/codecs/cinepakenc.rs +++ b/nihav-commonfmt/src/codecs/cinepakenc.rs @@ -214,7 +214,6 @@ impl MaskWriter { #[derive(Clone,Copy,PartialEq)] enum QuantMode { ELBG, - Hybrid, MedianCut, } @@ -222,7 +221,6 @@ impl std::string::ToString for QuantMode { fn to_string(&self) -> String { match *self { QuantMode::ELBG => "elbg".to_string(), - QuantMode::Hybrid => "hybrid".to_string(), QuantMode::MedianCut => "mediancut".to_string(), } } @@ -606,20 +604,6 @@ impl CinepakEncoder { fn quant_vectors(&mut self) { match self.qmode { QuantMode::ELBG => { - let mut elbg_v1: ELBG = ELBG::new(&self.v1_cb[self.cur_strip]); - let mut elbg_v4: ELBG = ELBG::new(&self.v4_cb[self.cur_strip]); - - for entry in self.v1_cb[self.cur_strip].iter_mut().skip(self.v1_len) { - self.rng.fill_entry(entry); - } - for entry in self.v4_cb[self.cur_strip].iter_mut().skip(self.v4_len) { - self.rng.fill_entry(entry); - } - - self.v1_len = elbg_v1.quantise(&self.v1_entries, &mut self.v1_cur_cb[self.cur_strip]); - self.v4_len = if !self.force_v1 { elbg_v4.quantise(&self.v4_entries, &mut self.v4_cur_cb[self.cur_strip]) } else { 0 }; - }, - QuantMode::Hybrid => { let v1_len = quantise_median_cut::(&self.v1_entries, &mut self.v1_cur_cb[self.cur_strip]); let v4_len = if !self.force_v1 { quantise_median_cut::(&self.v4_entries, &mut self.v4_cur_cb[self.cur_strip]) @@ -1057,7 +1041,7 @@ const ENCODER_OPTS: &[NAOptionDefinition] = &[ opt_type: NAOptionDefinitionType::Int(Some(0), Some(16)) }, NAOptionDefinition { name: "quant_mode", description: "Quantisation mode", - opt_type: NAOptionDefinitionType::String(Some(&["elbg", "hybrid", "mediancut"])) }, + opt_type: NAOptionDefinitionType::String(Some(&["elbg", "mediancut"])) }, NAOptionDefinition { name: "force_v1", description: "Force coarse (V1-only) mode", opt_type: NAOptionDefinitionType::Bool }, @@ -1084,7 +1068,6 @@ impl NAOptionHandler for CinepakEncoder { if let NAValue::String(ref strval) = option.value { match strval.as_str() { "elbg" => self.qmode = QuantMode::ELBG, - "hybrid" => self.qmode = QuantMode::Hybrid, "mediancut" => self.qmode = QuantMode::MedianCut, _ => {}, };