make diff/luma calc prettier
This commit is contained in:
parent
470273d387
commit
5b6c75de6a
@ -65,17 +65,16 @@ impl Decoder for Vec<[u8; 4]> {
|
|||||||
(known[q as usize & 63], 1)
|
(known[q as usize & 63], 1)
|
||||||
},
|
},
|
||||||
q if q >> 6 == 1 => { // QOI_OP_DIFF
|
q if q >> 6 == 1 => { // QOI_OP_DIFF
|
||||||
let dr = ((q & 48) >> 4) as i8 - 2;
|
let mut diff = [((q & 48) >> 4) as i8 - 2, ((q & 12) >> 2) as i8 - 2, (q & 3) as i8 - 2, 0].into_iter();
|
||||||
let dg = ((q & 12) >> 2) as i8 - 2;
|
(prev.map(|p| p.wrapping_add_signed(diff.next().unwrap())), 1)
|
||||||
let db = (q & 3) as i8 - 2;
|
|
||||||
([ prev[0].wrapping_add_signed(dr), prev[1].wrapping_add_signed(dg), prev[2].wrapping_add_signed(db), prev[3]], 1)
|
|
||||||
},
|
},
|
||||||
q if q >> 6 == 2 => { // QOI_OP_LUMA
|
q if q >> 6 == 2 => { // QOI_OP_LUMA
|
||||||
let extra = *iter.next()?;
|
let extra = *iter.next()?;
|
||||||
let dg = (q & 63) as i8 - 32;
|
let dg = (q & 63) as i8 - 32;
|
||||||
let dr = ((extra & 240) >> 4) as i8 - 8;
|
let dr = ((extra & 240) >> 4) as i8 - 8 + dg;
|
||||||
let db = (extra & 15) as i8 - 8;
|
let db = (extra & 15) as i8 - 8 + dg;
|
||||||
([ prev[0].wrapping_add_signed(dr + dg), prev[1].wrapping_add_signed(dg), prev[2].wrapping_add_signed(db + dg), prev[3]], 1)
|
let mut diff = [dr, dg, db, 0].into_iter();
|
||||||
|
(prev.map(|p| p.wrapping_add_signed(diff.next().unwrap())), 1)
|
||||||
},
|
},
|
||||||
q if q >> 6 == 3 => { // QOI_OP_RUN
|
q if q >> 6 == 3 => { // QOI_OP_RUN
|
||||||
let len = ((q & 63) + 1) as usize;
|
let len = ((q & 63) + 1) as usize;
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user