X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-rad%2Fsrc%2Fcodecs%2Fbink2.rs;h=719608d4b5b5c2ab236811c1f9a722f3e7762390;hb=1a967e6bad5f17943b4de0607078eb940ad5adfe;hp=399ceae16f6a3a74a11d733feeb70760c59b9b72;hpb=9dce67e34bf9bd6f9a1293e54606e19fe1f608e6;p=nihav.git diff --git a/nihav-rad/src/codecs/bink2.rs b/nihav-rad/src/codecs/bink2.rs index 399ceae..719608d 100644 --- a/nihav-rad/src/codecs/bink2.rs +++ b/nihav-rad/src/codecs/bink2.rs @@ -1027,7 +1027,7 @@ impl Bink2Decoder { let (mut off_y, mut off_u, mut off_v, mut off_a) = (buf.get_offset(0), buf.get_offset(1), buf.get_offset(2), buf.get_offset(3)); let (ooff_y, ooff_u, ooff_v, ooff_a) = (off_y, off_u, off_v, off_a); let (width, height) = buf.get_dimensions(0); - let mut data = buf.get_data_mut(); + let data = buf.get_data_mut().unwrap(); let dst = data.as_mut_slice(); let bw = (width + 31) >> 5; let bheight = (height + 31) >> 5; @@ -1492,7 +1492,7 @@ fn decode_luma_inter(br: &mut BitReader, codes: &Bink2Codes, prev_cbp: u32, q: u let dcs = &dcinfo.dcs; for i in 0..4 { decode_acs_4blocks(br, codes, &mut dst[i], BINK2_QUANT_INTER, q, cbp >> (i * 4))?; - for j in 0..4 { dst[i][j][0] = dcs[i * 4 + j]; } + for j in 0..4 { dst[i][j][0] = dcs[i * 4 + j] * 8; } } Ok(cbp) } @@ -1504,7 +1504,7 @@ fn decode_chroma_inter(br: &mut BitReader, codes: &Bink2Codes, prev_cbp: u32, q: dcinfo.predict_inter(min_dc, max_dc); let dcs = &dcinfo.dcs; decode_acs_4blocks(br, codes, dst, BINK2_QUANT_INTER, q, cbp)?; - for i in 0..4 { dst[i][0] = dcs[i]; } + for i in 0..4 { dst[i][0] = dcs[i] * 8; } Ok(cbp) } @@ -1832,7 +1832,7 @@ fn decode_acs_4blocks_old(br: &mut BitReader, codes: &Bink2Codes, dst: &mut [[f3 level = -level; } let pos = scan[idx]; - dst[blk_no][pos] = (level as f32) * quant_mat[idx] * quant; + dst[blk_no][pos] = (level as f32) * quant_mat[(pos & 7) * 8 + (pos >> 3)] * quant; } idx += 1; if idx >= 64 { break; }