From 3acdcb20cfe540fba1b6f87588c16e325945e4d9 Mon Sep 17 00:00:00 2001 From: Khyber Sen Date: Sat, 28 Oct 2023 00:58:54 -0700 Subject: [PATCH] `struct Rav1dFilmGrainData::*_shift`: Make bit shift fields `u8`s. --- include/dav1d/headers.rs | 18 +++++++++--------- src/filmgrain.rs | 16 ++++++++-------- src/obu.rs | 6 +++--- 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/include/dav1d/headers.rs b/include/dav1d/headers.rs index 84fa5f53a..bdb6dae0e 100644 --- a/include/dav1d/headers.rs +++ b/include/dav1d/headers.rs @@ -1038,12 +1038,12 @@ pub struct Rav1dFilmGrainData { pub chroma_scaling_from_luma: bool, pub num_uv_points: [c_int; 2], pub uv_points: [[[u8; 2]; 10]; 2], - pub scaling_shift: c_int, + pub scaling_shift: u8, pub ar_coeff_lag: c_int, pub ar_coeffs_y: [i8; 24], pub ar_coeffs_uv: [[i8; 28]; 2], - pub ar_coeff_shift: u64, - pub grain_scale_shift: c_int, + pub ar_coeff_shift: u8, + pub grain_scale_shift: u8, pub uv_mult: [c_int; 2], pub uv_luma_mult: [c_int; 2], pub uv_offset: [c_int; 2], @@ -1139,12 +1139,12 @@ impl From for Rav1dFilmGrainData { chroma_scaling_from_luma: chroma_scaling_from_luma != 0, num_uv_points, uv_points, - scaling_shift, + scaling_shift: scaling_shift as u8, ar_coeff_lag, ar_coeffs_y, ar_coeffs_uv, - ar_coeff_shift, - grain_scale_shift, + ar_coeff_shift: ar_coeff_shift as u8, + grain_scale_shift: grain_scale_shift as u8, uv_mult, uv_luma_mult, uv_offset, @@ -1182,12 +1182,12 @@ impl From for Dav1dFilmGrainData { chroma_scaling_from_luma: chroma_scaling_from_luma as c_int, num_uv_points, uv_points, - scaling_shift, + scaling_shift: scaling_shift.into(), ar_coeff_lag, ar_coeffs_y, ar_coeffs_uv, - ar_coeff_shift, - grain_scale_shift, + ar_coeff_shift: ar_coeff_shift.into(), + grain_scale_shift: grain_scale_shift.into(), uv_mult, uv_luma_mult, uv_offset, diff --git a/src/filmgrain.rs b/src/filmgrain.rs index 67550147d..43f0afe3e 100644 --- a/src/filmgrain.rs +++ b/src/filmgrain.rs @@ -209,10 +209,9 @@ fn get_random_number(bits: u8, state: &mut c_uint) -> c_int { } #[inline] -fn round2(x: T, shift: B) -> T +fn round2(x: T, shift: u8) -> T where - T: Add + From + Shl + Shr + Shr, - B: Copy, + T: Add + From + Shl + Shr, { (x + (T::from(1) << shift >> 1)) >> shift } @@ -234,7 +233,7 @@ unsafe fn generate_grain_y_rust( data: &Rav1dFilmGrainData, bd: BD, ) { - let bitdepth_min_8 = bd.bitdepth() as c_int - 8; + let bitdepth_min_8 = bd.bitdepth() - 8; let mut seed: c_uint = data.seed; let shift = 4 - bitdepth_min_8 + data.grain_scale_shift; let grain_ctr = (128 as c_int) << bitdepth_min_8; @@ -285,9 +284,9 @@ unsafe fn generate_grain_uv_rust( is_suby: bool, bd: BD, ) { - let [subx, suby] = [is_subx, is_suby].map(|it| it as c_int); + let [subx, suby] = [is_subx, is_suby].map(|it| it as u8); - let bitdepth_min_8 = bd.bitdepth() as c_int - 8; + let bitdepth_min_8 = bd.bitdepth() - 8; let mut seed: c_uint = data.seed ^ (if uv != 0 { 0x49d8 as c_int @@ -338,7 +337,8 @@ unsafe fn generate_grain_uv_rust( let lumaY = (y - ar_pad << suby) + ar_pad; for i in 0..=suby { for j in 0..=subx { - luma += buf_y[(lumaY + i) as usize][(lumaX + j) as usize] + luma += buf_y[lumaY as usize + i as usize] + [lumaX as usize + j as usize] .as_::(); } } @@ -877,7 +877,7 @@ unsafe fn fgy_32x32xn_neon( src_row.offset(bx as isize).cast(), stride, scaling.cast(), - data.scaling_shift, + data.scaling_shift.into(), grain_lut.cast(), &offsets, bh, diff --git a/src/obu.rs b/src/obu.rs index 803399e48..c44ceb996 100644 --- a/src/obu.rs +++ b/src/obu.rs @@ -1488,7 +1488,7 @@ unsafe fn parse_frame_hdr(c: *mut Rav1dContext, gb: *mut GetBits) -> Rav1dResult return parse_frame_hdr_error(c); } (*fgd).scaling_shift = - (rav1d_get_bits(gb, 2 as c_int)).wrapping_add(8 as c_int as c_uint) as c_int; + (rav1d_get_bits(gb, 2 as c_int)).wrapping_add(8 as c_int as c_uint) as u8; (*fgd).ar_coeff_lag = rav1d_get_bits(gb, 2 as c_int) as c_int; let num_y_pos = 2 * (*fgd).ar_coeff_lag * ((*fgd).ar_coeff_lag + 1); if (*fgd).num_y_points != 0 { @@ -1517,8 +1517,8 @@ unsafe fn parse_frame_hdr(c: *mut Rav1dContext, gb: *mut GetBits) -> Rav1dResult pl_0 += 1; } (*fgd).ar_coeff_shift = - (rav1d_get_bits(gb, 2 as c_int)).wrapping_add(6 as c_int as c_uint) as u64; - (*fgd).grain_scale_shift = rav1d_get_bits(gb, 2 as c_int) as c_int; + (rav1d_get_bits(gb, 2 as c_int)).wrapping_add(6 as c_int as c_uint) as u8; + (*fgd).grain_scale_shift = rav1d_get_bits(gb, 2 as c_int) as u8; let mut pl_1 = 0; while pl_1 < 2 { if (*fgd).num_uv_points[pl_1 as usize] != 0 {