X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-duck%2Fsrc%2Fcodecs%2Fvp5.rs;h=0b7062e2757b05edec4dbce89cde4a4d05485f8d;hb=HEAD;hp=70c26c6fa77d57f734abb21edb59839f3d0da9c2;hpb=78fb6560c73965d834b215fb0b49505ae5443288;p=nihav.git diff --git a/nihav-duck/src/codecs/vp5.rs b/nihav-duck/src/codecs/vp5.rs index 70c26c6..a58ce1b 100644 --- a/nihav-duck/src/codecs/vp5.rs +++ b/nihav-duck/src/codecs/vp5.rs @@ -102,6 +102,7 @@ impl VP56Parser for VP5BR { } Ok(()) } + #[allow(clippy::needless_range_loop)] fn decode_coeff_models(&self, bc: &mut BoolCoder, models: &mut VP56Models, is_intra: bool) -> DecoderResult<()> { const COEF_PROBS: [[u8; 11]; 2] = [ [ 146, 197, 181, 207, 232, 243, 238, 251, 244, 250, 249 ], @@ -109,13 +110,14 @@ impl VP56Parser for VP5BR { ]; let mut def_prob = [128u8; 11]; - for plane in 0..2 { - for i in 0..11 { - if bc.read_prob(COEF_PROBS[plane][i]) { - def_prob[i] = bc.read_probability(); - models.coeff_models[plane].dc_value_probs[i] = def_prob[i]; + for (coef_mdl, coef_probs) in models.coeff_models.iter_mut().zip(COEF_PROBS.iter()) { + for ((dc_prob, def_prob), &coef_prob) in coef_mdl.dc_value_probs.iter_mut() + .zip(def_prob.iter_mut()).zip(coef_probs.iter()) { + if bc.read_prob(coef_prob) { + *def_prob = bc.read_probability(); + *dc_prob = *def_prob; } else if is_intra { - models.coeff_models[plane].dc_value_probs[i] = def_prob[i]; + *dc_prob = *def_prob; } } } @@ -133,8 +135,7 @@ impl VP56Parser for VP5BR { } } } - for plane in 0..2 { - let mdl = &mut models.coeff_models[plane]; + for mdl in models.coeff_models.iter_mut() { for i in 0..6 { for j in 0..6 { for k in 0..5 { @@ -284,7 +285,7 @@ impl NAOptionHandler for VP5Decoder { fn query_option_value(&self, _name: &str) -> Option { None } } -pub fn get_decoder() -> Box { +pub fn get_decoder() -> Box { Box::new(VP5Decoder::new()) } @@ -305,6 +306,7 @@ mod test { let file = "assets/Duck/Cell-140.vp5"; //let file = "assets/Duck/Chocolat-500.vp5"; + // sample: https://samples.mplayerhq.hu/V-codecs/VP5/Cell-140.vp5 test_decoding("avi", "vp5", file, Some(96), &dmx_reg, &dec_reg, ExpectedTestResult::MD5([0x9ad78b0f, 0xed988ead, 0x88ed2ea9, 0xcdb75cdf])); }