X-Git-Url: https://git.nihav.org/?p=nihav.git;a=blobdiff_plain;f=nihav-core%2Fsrc%2Fio%2Fcodebook.rs;h=4f041c6067491b5ae4667aca102f2a3ae6733ea7;hp=b86d0c1e067acb6ffadfd5d3e402bc96f742258c;hb=e243ceb4d694cc08767ad70027bb6963f4cefea3;hpb=250c49f64633580d3e294a7b871fad4618694209 diff --git a/nihav-core/src/io/codebook.rs b/nihav-core/src/io/codebook.rs index b86d0c1..4f041c6 100644 --- a/nihav-core/src/io/codebook.rs +++ b/nihav-core/src/io/codebook.rs @@ -55,14 +55,14 @@ fn fill_lut_msb(table: &mut Vec, off: usize, let fill_len = lut_bits - bits; let fill_size = 1 << fill_len; let fill_code = code << (lut_bits - bits); - let lut_value = (symidx << 8) | (bits as u32); + let lut_value = (symidx << 8) | u32::from(bits); for j in 0..fill_size { let idx = (fill_code + j) as usize; table[idx + off] = lut_value; } } else { let idx = (code as usize) + off; - table[idx] = (symidx << 8) | 0x80 | (bits as u32); + table[idx] = (symidx << 8) | 0x80 | u32::from(bits); } } @@ -75,11 +75,11 @@ fn fill_lut_lsb(table: &mut Vec, off: usize, let step = lut_bits - fill_len; for j in 0..fill_size { let idx = (fill_code + (j << step)) as usize; - table[idx + off] = (symidx << 8) | (bits as u32); + table[idx + off] = (symidx << 8) | u32::from(bits); } } else { let idx = (code as usize) + off; - table[idx] = (symidx << 8) | 0x80 | (bits as u32); + table[idx] = (symidx << 8) | 0x80 | u32::from(bits); } } @@ -143,10 +143,10 @@ impl CodeBucket { type EscapeCodes = HashMap; fn add_esc_code(cc: &mut EscapeCodes, key: u32, code: u32, bits: u8, idx: usize) { - if !cc.contains_key(&key) { cc.insert(key, CodeBucket::new()); } + cc.entry(key).or_insert_with(CodeBucket::new); let b = cc.get_mut(&key); if let Some(bucket) = b { - bucket.add_code(Code {code: code, bits: bits, idx: idx }); + bucket.add_code(Code {code, bits, idx }); } else { panic!("no bucket when expected!"); } } @@ -178,7 +178,7 @@ fn build_esc_lut(table: &mut Vec, sec_bucket.offset = new_off as usize; } - for (_, sec_bucket) in &escape_list { + for sec_bucket in escape_list.values() { build_esc_lut(table, mode, sec_bucket)?; } @@ -196,7 +196,7 @@ impl Codebook { for i in 0..cb.len() { let bits = cb.bits(i); if bits > 0 { - nnz = nnz + 1; + nnz += 1; if cb.code(i) >= (1 << bits) { return Err(CodebookError::InvalidCodebook); } @@ -208,7 +208,7 @@ impl Codebook { let cval = extract_esc_part(code, bits, MAX_LUT_BITS, mode); add_esc_code(&mut escape_list, ckey, cval, bits - MAX_LUT_BITS, symidx); } - if bits > 0 { symidx = symidx + 1; } + if bits > 0 { symidx += 1; } } if maxbits == 0 { return Err(CodebookError::InvalidCodebook); } @@ -240,10 +240,10 @@ impl Codebook { } } } - symidx = symidx + 1; + symidx += 1; } - for (_, bucket) in &escape_list { + for bucket in escape_list.values() { build_esc_lut(&mut table, mode, &bucket)?; } @@ -253,7 +253,7 @@ impl Codebook { } } - Ok(Codebook { table: table, syms: syms, lut_bits: maxbits }) + Ok(Codebook { table, syms, lut_bits: maxbits }) } } @@ -272,8 +272,8 @@ impl<'a, S: Copy> CodebookReader for BitReader<'a> { if (bits as isize) > self.left() { return Err(CodebookError::InvalidCode); } - let skip_bits = if esc { lut_bits as u32 } else { bits }; - if let Err(_) = self.skip(skip_bits as u32) {} + let skip_bits = if esc { u32::from(lut_bits) } else { bits }; + self.skip(skip_bits as u32).unwrap(); lut_bits = bits as u8; } Ok(cb.syms[idx]) @@ -286,7 +286,7 @@ pub struct FullCodebookDescReader { impl FullCodebookDescReader { pub fn new(data: Vec>) -> Self { - FullCodebookDescReader { data: data } + FullCodebookDescReader { data } } } @@ -303,7 +303,7 @@ pub struct ShortCodebookDescReader { impl ShortCodebookDescReader { pub fn new(data: Vec>) -> Self { - ShortCodebookDescReader { data: data } + ShortCodebookDescReader { data } } }