X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-indeo%2Fsrc%2Fcodecs%2Findeo3enc%2Fcell.rs;h=b4e30f912080442baff9b44a169bef2b23648226;hb=e6aaad5c5273cd814b5748b7faf3751835a37217;hp=e5ad44c13110885458d29b0744c4c5f3af0f8e4e;hpb=f5c61879b56145c3fe371edeb58fb3b7abd94851;p=nihav.git diff --git a/nihav-indeo/src/codecs/indeo3enc/cell.rs b/nihav-indeo/src/codecs/indeo3enc/cell.rs index e5ad44c..b4e30f9 100644 --- a/nihav-indeo/src/codecs/indeo3enc/cell.rs +++ b/nihav-indeo/src/codecs/indeo3enc/cell.rs @@ -132,7 +132,7 @@ impl CodebookSuggester { if delta == 0 { continue; } - let delta = delta.abs() as u8; + let delta = delta.unsigned_abs(); self.add_delta(delta); } } @@ -141,7 +141,7 @@ impl CodebookSuggester { if delta == 0 { continue; } - let delta = delta.abs() as u8; + let delta = delta.unsigned_abs(); self.add_delta(delta); } } @@ -176,7 +176,7 @@ impl CellEncoder { buf: [0; MAX_CELL_SIZE + 160], rbuf: [0; MAX_CELL_SIZE + 160], deltas: [0; MAX_CELL_SIZE], - cell: Indeo3Cell::new(0, 0, false), + cell: Indeo3Cell::new(0, 0), out: [0; MAX_CELL_SIZE / 2 + 1], osize: 0, @@ -253,9 +253,9 @@ impl CellEncoder { fn determine_mode(&self, intra: bool, mut mode_hint: u8) -> (u8, [u8; 2]) { if let Some(qmode) = self.quant { if intra { - return (mode_hint, [qmode as u8, qmode as u8]); + return (mode_hint, [qmode, qmode]); } else { - let qmode = (qmode & 7) as u8; + let qmode = qmode & 7; return (mode_hint, [qmode, qmode]); } } @@ -368,10 +368,6 @@ impl CellEncoder { } } self.out[0] = (mode << 4) | (idx as u8); - - if idx >= 8 { - requant_idx = Some(idx - 8); - } } else { self.out[0] = (mode << 4) | (cb_no1 as u8); @@ -379,7 +375,7 @@ impl CellEncoder { requant_idx = Some(cb_no1 - 8); } } - if self.cell.get_y() == 0 { + if self.cell.get_y() == 0 || !matches!(mode, 0 | 3 | 10) { requant_idx = None; } @@ -650,7 +646,7 @@ fn compress_intra_cell(iwriter: &mut IndexWriter, cell4: &mut [u8; 20], cbs: &[& let (prev, cur) = cell4.split_at_mut(pivot); let prev = &prev[prev.len() - 4..]; let cur = &mut cur[..4]; - let (idx0, idx1) = find_quad(&cb.data, prev, cur); + let (idx0, idx1) = find_quad(cb.data, prev, cur); cur[0] = ((prev[0] as i8) + cb.data[usize::from(idx1) * 2]) as u8; cur[1] = ((prev[1] as i8) + cb.data[usize::from(idx1) * 2 + 1]) as u8; @@ -669,7 +665,7 @@ fn compress_inter_cell(iwriter: &mut IndexWriter, ccell4: &mut [u8; 20], pcell: let cb = cbs[y]; let esc_val = esc_vals[y]; - let (idx0, idx1) = find_quad(&cb.data, prev, cur); + let (idx0, idx1) = find_quad(cb.data, prev, cur); cur[0] = ((prev[0] as i8) + cb.data[usize::from(idx1) * 2]) as u8; cur[1] = ((prev[1] as i8) + cb.data[usize::from(idx1) * 2 + 1]) as u8; @@ -784,8 +780,8 @@ fn compress_inter_cell_mode11(iwriter: &mut IndexWriter, cell: &mut [u8; 32], di } fn pair_dist(src: &[i8], pair: &[i8]) -> u32 { - let d0 = (i32::from(src[0]) - i32::from(pair[0])).abs() as u32; - let d1 = (i32::from(src[1]) - i32::from(pair[1])).abs() as u32; + let d0 = (i32::from(src[0]) - i32::from(pair[0])).unsigned_abs(); + let d1 = (i32::from(src[1]) - i32::from(pair[1])).unsigned_abs(); d0 * d0 + d1 * d1 }