From c17aa799186229fd7dd9f2a06e0b79bb3456251d Mon Sep 17 00:00:00 2001 From: Kostya Shishkov Date: Thu, 2 Oct 2025 19:08:52 +0200 Subject: [PATCH] fix some clippy warnings Mostly it is using clamp() where appropriate and using "static" instead of "const" for large tables. --- nihav-acorn/src/codecs/escape.rs | 2 +- nihav-acorn/src/codecs/supermovingblocks.rs | 2 +- nihav-acorn/src/codecs/yuvtab.rs | 2 +- nihav-commonfmt/src/codecs/cinepakenc.rs | 6 ++-- nihav-commonfmt/src/codecs/clearvideo.rs | 26 ++++----------- nihav-commonfmt/src/codecs/gif.rs | 2 +- nihav-commonfmt/src/codecs/jpeg.rs | 2 +- nihav-commonfmt/src/codecs/sipro.rs | 4 +-- nihav-commonfmt/src/codecs/ts102366.rs | 2 +- nihav-core/src/scale/colorcvt.rs | 32 +++++++++---------- nihav-core/src/scale/palette/neuquant.rs | 6 ++-- nihav-core/src/scale/scale/mod.rs | 4 +-- nihav-core/src/soundcvt/mod.rs | 8 ++--- nihav-core/src/soundcvt/resample.rs | 2 +- nihav-duck/src/codecs/truemotion2.rs | 8 ++--- nihav-duck/src/codecs/truemotion2x.rs | 6 ++-- nihav-duck/src/codecs/truemotionrt.rs | 2 +- nihav-duck/src/codecs/truemotionrtenc.rs | 6 ++-- nihav-duck/src/codecs/vp3.rs | 14 ++++---- nihav-duck/src/codecs/vp6.rs | 4 +-- nihav-duck/src/codecs/vp6enc/mb.rs | 20 ++++++------ nihav-duck/src/codecs/vp78dsp.rs | 2 +- nihav-duck/src/codecs/vp7dsp.rs | 4 +-- nihav-duck/src/codecs/vp7enc/blocks.rs | 8 ++--- nihav-duck/src/codecs/vp7enc/mb_coding.rs | 2 +- nihav-duck/src/codecs/vp7enc/models.rs | 2 +- nihav-duck/src/codecs/vp7enc/rdo.rs | 2 +- nihav-duck/src/codecs/vp8.rs | 6 ++-- nihav-duck/src/codecs/vp8dsp.rs | 8 ++--- nihav-duck/src/codecs/vpcommon.rs | 16 +++++----- nihav-flash/src/codecs/adpcmenc.rs | 2 +- nihav-flash/src/codecs/asao.rs | 4 +-- nihav-flash/src/codecs/flv263.rs | 6 ++-- nihav-game/src/codecs/ipma.rs | 2 +- nihav-game/src/codecs/midivid3.rs | 14 ++++---- nihav-game/src/codecs/smush/vima.rs | 2 +- nihav-indeo/src/codecs/imc.rs | 4 +-- nihav-indeo/src/codecs/intel263.rs | 11 +++---- nihav-indeo/src/codecs/yv92.rs | 2 +- nihav-itu/src/codecs/h264/cabac.rs | 4 +-- nihav-itu/src/codecs/h264/cabac_coder.rs | 2 +- nihav-itu/src/codecs/h264/decoder_mt.rs | 4 +-- nihav-itu/src/codecs/h264/decoder_st.rs | 4 +-- nihav-itu/src/codecs/h264/dsp/mc/mod.rs | 2 +- nihav-itu/src/codecs/h264/dsp/mod.rs | 6 ++-- nihav-itu/src/codecs/h264/loopfilter.rs | 2 +- nihav-itu/src/codecs/h264/mb_recon.rs | 6 ++-- nihav-itu/src/codecs/h264/test/conformance.rs | 2 +- nihav-itu/src/codecs/h264/test/raw_demux.rs | 2 +- nihav-itu/src/codecs/h264/types.rs | 6 ++-- nihav-llaudio/src/codecs/apepred.rs | 2 +- nihav-llaudio/src/codecs/flacenc.rs | 4 +-- nihav-misc/src/codecs/motionpixels/data.rs | 14 ++++---- nihav-misc/src/codecs/mwv1.rs | 4 +-- nihav-misc/src/codecs/pgvv.rs | 6 ++-- nihav-misc/src/codecs/tealvid.rs | 8 ++--- nihav-mpeg/src/codecs/aac/mod.rs | 2 +- nihav-mpeg/src/codecs/aac/sbr/synth.rs | 3 -- nihav-mpeg/src/codecs/mpeg4asp/dsp.rs | 4 +-- nihav-mpeg/src/codecs/mpeg4asp/types.rs | 6 ++-- nihav-mpeg/src/codecs/mpegaudio/mp3code.rs | 2 +- nihav-ms/src/codecs/msadpcm.rs | 4 +-- nihav-qt/src/codecs/mace.rs | 2 +- nihav-qt/src/codecs/svq1.rs | 4 +-- nihav-qt/src/codecs/svq3.rs | 2 +- nihav-qt/src/codecs/svq3dsp.rs | 4 +-- nihav-rad/src/codecs/bink2.rs | 2 +- nihav-rad/src/codecs/binkaudenc.rs | 2 +- nihav-realmedia/src/codecs/cook.rs | 2 +- nihav-realmedia/src/codecs/cookenc.rs | 6 ++-- nihav-realmedia/src/codecs/ra144.rs | 2 +- nihav-realmedia/src/codecs/ra288.rs | 2 +- nihav-realmedia/src/codecs/ralf.rs | 14 ++++---- nihav-realmedia/src/codecs/rv10.rs | 3 +- nihav-realmedia/src/codecs/rv20.rs | 3 +- nihav-realmedia/src/codecs/rv40enc/dsp/blk.rs | 2 +- .../src/codecs/rv40enc/dsp/ipred.rs | 2 +- .../src/codecs/rv40enc/mb_coding.rs | 2 +- nihav-realmedia/src/codecs/rv40enc/mod.rs | 2 +- nihav-realmedia/src/codecs/rv60dsp.rs | 2 +- nihav-vivo/src/codecs/g723_1.rs | 4 +-- nihav-vivo/src/codecs/siren.rs | 6 ++-- nihav-vivo/src/codecs/vivo.rs | 13 ++++---- nihav-vivo/src/demuxers/vivo.rs | 4 +-- 84 files changed, 208 insertions(+), 233 deletions(-) diff --git a/nihav-acorn/src/codecs/escape.rs b/nihav-acorn/src/codecs/escape.rs index efe8ca5..f37bca9 100644 --- a/nihav-acorn/src/codecs/escape.rs +++ b/nihav-acorn/src/codecs/escape.rs @@ -616,7 +616,7 @@ impl NADecoder for Escape130Decoder { let step_idx = br.read(2)? as usize; blk.y_avg = br.read(5)? as u8 * 2; for (dst, &sign) in blk.y.iter_mut().zip(E130_Y_SIGNS[sign_idx].iter()) { - *dst = (i16::from(blk.y_avg) + i16::from(sign) * Y_STEPS[step_idx]).max(0).min(0x3F) as u8; + *dst = (i16::from(blk.y_avg) + i16::from(sign) * Y_STEPS[step_idx]).clamp(0, 0x3F) as u8; } } else if br.read_bool()? { blk.y_avg = if br.read_bool()? { diff --git a/nihav-acorn/src/codecs/supermovingblocks.rs b/nihav-acorn/src/codecs/supermovingblocks.rs index 9df1ae6..e4fc8c3 100644 --- a/nihav-acorn/src/codecs/supermovingblocks.rs +++ b/nihav-acorn/src/codecs/supermovingblocks.rs @@ -607,7 +607,7 @@ const MV_TAB_SELF_2X2: [(i8, i8); 8] = [ ]; // generated the same way as 15-bit YUV2RGB table but with an additional bit of luma -const YUV655TAB: [u16; 65536] = [ +static YUV655TAB: [u16; 65536] = [ 0x0000, 0x0000, 0x0421, 0x0421, 0x0842, 0x0842, 0x0C63, 0x0C63, 0x1084, 0x1084, 0x14A5, 0x14A5, 0x18C6, 0x18C6, 0x1CE7, 0x1CE7, 0x2108, 0x2108, 0x2529, 0x2529, 0x294A, 0x294A, 0x2D6B, 0x2D6B, diff --git a/nihav-acorn/src/codecs/yuvtab.rs b/nihav-acorn/src/codecs/yuvtab.rs index f2d6558..def1218 100644 --- a/nihav-acorn/src/codecs/yuvtab.rs +++ b/nihav-acorn/src/codecs/yuvtab.rs @@ -15,7 +15,7 @@ *el = r | (g << 5) | (b << 10); } */ -pub const YUV2RGB: [u16; 32768] = [ +pub static YUV2RGB: [u16; 32768] = [ 0x0000, 0x0421, 0x0842, 0x0C63, 0x1084, 0x14A5, 0x18C6, 0x1CE7, 0x2108, 0x2529, 0x294A, 0x2D6B, 0x318C, 0x35AD, 0x39CE, 0x3DEF, 0x4210, 0x4631, 0x4A52, 0x4E73, 0x5294, 0x56B5, 0x5AD6, 0x5EF7, diff --git a/nihav-commonfmt/src/codecs/cinepakenc.rs b/nihav-commonfmt/src/codecs/cinepakenc.rs index baff7b7..8d78fb3 100644 --- a/nihav-commonfmt/src/codecs/cinepakenc.rs +++ b/nihav-commonfmt/src/codecs/cinepakenc.rs @@ -44,7 +44,7 @@ impl VQElement for YUVCode { let mut counts = [0; 256]; for entry in arr.iter() { let idx = match component { - 0 | 1 | 2 | 3 => entry.y[component], + 0..=3 => entry.y[component], 4 => entry.u, _ => entry.v, } as usize; @@ -57,7 +57,7 @@ impl VQElement for YUVCode { let mut dst = vec![YUVCode::default(); arr.len()]; for entry in arr.iter() { let idx = match component { - 0 | 1 | 2 | 3 => entry.y[component], + 0..=3 => entry.y[component], 4 => entry.u, _ => entry.v, } as usize; @@ -1211,7 +1211,7 @@ impl NAEncoder for CinepakEncoder { if let Some(ref vbuf) = buf.get_vbuf() { if self.nstrips == 0 { let (w, h) = vbuf.get_dimensions(0); - self.nstrips = ((((w * h) >> 4) + 1200) / 2400).max(1).min(3); + self.nstrips = ((((w * h) >> 4) + 1200) / 2400).clamp(1, 3); let strip_h = ((h + self.nstrips - 1) / self.nstrips + 3) & !3; self.nstrips = (h + strip_h - 1) / strip_h; } diff --git a/nihav-commonfmt/src/codecs/clearvideo.rs b/nihav-commonfmt/src/codecs/clearvideo.rs index 0abdeac..e6aa568 100644 --- a/nihav-commonfmt/src/codecs/clearvideo.rs +++ b/nihav-commonfmt/src/codecs/clearvideo.rs @@ -214,41 +214,29 @@ fn put_blocks(buf: &mut NAVideoBuffer, xpos: usize, ypos: usize, blk: &[[i32 for j in 0..8 { for k in 0..8 { - let mut v = blk[0][k + j * 8] + 128; - if v < 0 { v = 0; } else if v > 255 { v = 255; } - framebuf[idxy + k] = v as u8; + framebuf[idxy + k] = (blk[0][k + j * 8] + 128).clamp(0, 255) as u8; } for k in 0..8 { - let mut v = blk[1][k + j * 8] + 128; - if v < 0 { v = 0; } else if v > 255 { v = 255; } - framebuf[idxy + k + 8] = v as u8; + framebuf[idxy + k + 8] = (blk[1][k + j * 8] + 128).clamp(0, 255) as u8; } idxy += stridey; } for j in 0..8 { for k in 0..8 { - let mut v = blk[2][k + j * 8] + 128; - if v < 0 { v = 0; } else if v > 255 { v = 255; } - framebuf[idxy + k] = v as u8; + framebuf[idxy + k] = (blk[2][k + j * 8] + 128).clamp(0, 255) as u8; } for k in 0..8 { - let mut v = blk[3][k + j * 8] + 128; - if v < 0 { v = 0; } else if v > 255 { v = 255; } - framebuf[idxy + k + 8] = v as u8; + framebuf[idxy + k + 8] = (blk[3][k + j * 8] + 128).clamp(0, 255) as u8; } idxy += stridey; } for j in 0..8 { for k in 0..8 { - let mut v = blk[4][k + j * 8] + 128; - if v < 0 { v = 0; } else if v > 255 { v = 255; } - framebuf[idxu + k] = v as u8; + framebuf[idxu + k] = (blk[4][k + j * 8] + 128).clamp(0, 255) as u8; } for k in 0..8 { - let mut v = blk[5][k + j * 8] + 128; - if v < 0 { v = 0; } else if v > 255 { v = 255; } - framebuf[idxv + k] = v as u8; + framebuf[idxv + k] = (blk[5][k + j * 8] + 128).clamp(0, 255) as u8; } idxu += strideu; idxv += stridev; @@ -382,7 +370,7 @@ fn copyadd_block_w(dst: &mut WFrame, src: &NAVideoBuffer, for _y in 0..blk_h { for x in 0..blk_w { let scale = u32::from(*cur_w.next().unwrap()); - let val = (i16::from(sbuf[soff + x]) + bias).max(0).min(255) as u32; + let val = (i16::from(sbuf[soff + x]) + bias).clamp(0, 255) as u32; dbuf[doff + x] += scale | ((val * scale) << 8); } soff += sstride; diff --git a/nihav-commonfmt/src/codecs/gif.rs b/nihav-commonfmt/src/codecs/gif.rs index e29c275..2810db3 100644 --- a/nihav-commonfmt/src/codecs/gif.rs +++ b/nihav-commonfmt/src/codecs/gif.rs @@ -210,7 +210,7 @@ impl NADecoder for GIFDecoder { } fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult { let src = pkt.get_buffer(); - validate!(src.len() > 0); + validate!(!src.is_empty()); for sd in pkt.side_data.iter() { if let NASideData::Palette(true, ref pal) = sd { diff --git a/nihav-commonfmt/src/codecs/jpeg.rs b/nihav-commonfmt/src/codecs/jpeg.rs index b63068c..b90c999 100644 --- a/nihav-commonfmt/src/codecs/jpeg.rs +++ b/nihav-commonfmt/src/codecs/jpeg.rs @@ -117,7 +117,7 @@ fn idct(blk: &mut [i16; 64]) { fn put_block(blk: &[i16; 64], dst: &mut [u8], stride: usize) { for (drow, srow) in dst.chunks_mut(stride).zip(blk.chunks(8)) { for (del, &pix) in drow.iter_mut().zip(srow.iter()) { - *del = pix.max(0).min(255) as u8; + *del = pix.clamp(0, 255) as u8; } } } diff --git a/nihav-commonfmt/src/codecs/sipro.rs b/nihav-commonfmt/src/codecs/sipro.rs index 9626e04..276cf75 100644 --- a/nihav-commonfmt/src/codecs/sipro.rs +++ b/nihav-commonfmt/src/codecs/sipro.rs @@ -241,7 +241,7 @@ impl SiproDecoder { } } else { if idx < 62 { - (self.prev_pitch - 10).max(30).min(281 - 19) * 3 + idx - 2 + (self.prev_pitch - 10).clamp(30, 281 - 19) * 3 + idx - 2 } else { self.prev_pitch * 3 } @@ -270,7 +270,7 @@ impl SiproDecoder { idx * 3 - 335 } } else { - idx + (self.prev_pitch - 5).max(20).min(134) * 3 - 1 + idx + (self.prev_pitch - 5).clamp(20, 134) * 3 - 1 }; self.pitch_int = (pitch_idx * 10923) >> 15; let pitch_frac = (pitch_idx as i32) - (self.pitch_int as i32) * 3 - 1; diff --git a/nihav-commonfmt/src/codecs/ts102366.rs b/nihav-commonfmt/src/codecs/ts102366.rs index 85f8b0e..7fd70fe 100644 --- a/nihav-commonfmt/src/codecs/ts102366.rs +++ b/nihav-commonfmt/src/codecs/ts102366.rs @@ -668,7 +668,7 @@ impl ChannelData { mask[band] = (mask[band] - self.snroffset - i32::from(floor)).max(0) & 0x1FE0; mask[band] += i32::from(floor); while bin < lastbin { - let addr = ((i32::from(self.psd[bin]) - mask[band]) >> 5).min(63).max(0) as usize; + let addr = ((i32::from(self.psd[bin]) - mask[band]) >> 5).clamp(0, 63) as usize; self.bap[bin] = TS102366_BAPTAB[addr]; bin += 1; } diff --git a/nihav-core/src/scale/colorcvt.rs b/nihav-core/src/scale/colorcvt.rs index 4b076d6..f1422c7 100644 --- a/nihav-core/src/scale/colorcvt.rs +++ b/nihav-core/src/scale/colorcvt.rs @@ -264,9 +264,9 @@ impl Kernel for RgbToYuv { let b = f32::from(src[boff + x]); let (y, u, v) = matrix_mul(&self.matrix, r, g, b); - dst[yoff + x] = (y as i16).max(0).min(255) as u8; - dst[uoff + x] = ((u as i16).max(-128).min(127) + 128) as u8; - dst[voff + x] = ((v as i16).max(-128).min(127) + 128) as u8; + dst[yoff + x] = (y as i16).clamp(0, 255) as u8; + dst[uoff + x] = ((u as i16).clamp(-128, 127) + 128) as u8; + dst[voff + x] = ((v as i16).clamp(-128, 127) + 128) as u8; } roff += istrides[0]; goff += istrides[1]; @@ -298,7 +298,7 @@ impl RgbToYuv { let b = f32::from(src[boff + x]); let (y, _u, _v) = matrix_mul(&self.matrix, r, g, b); - dst[yoff + x] = (y as i16).max(0).min(255) as u8; + dst[yoff + x] = (y as i16).clamp(0, 255) as u8; } roff += istrides[0]; goff += istrides[1]; @@ -439,9 +439,9 @@ impl Kernel for YuvToRgb { let r = y + self.r_chr[v]; let g = y + self.g_u[u] + self.g_v[v]; let b = y + self.b_chr[u]; - dst[roff + x] = r.max(0).min(255) as u8; - dst[goff + x] = g.max(0).min(255) as u8; - dst[boff + x] = b.max(0).min(255) as u8; + dst[roff + x] = r.clamp(0, 255) as u8; + dst[goff + x] = g.clamp(0, 255) as u8; + dst[boff + x] = b.clamp(0, 255) as u8; } roff += dstrides[0]; goff += dstrides[1]; @@ -463,9 +463,9 @@ impl Kernel for YuvToRgb { let v = f32::from(i16::from(src[voff + (x >> sv1)]) - 128); let (r, g, b) = matrix_mul(&self.matrix, y, u, v); - dst[roff + x] = (r as i16).max(0).min(255) as u8; - dst[goff + x] = (g as i16).max(0).min(255) as u8; - dst[boff + x] = (b as i16).max(0).min(255) as u8; + dst[roff + x] = (r as i16).clamp(0, 255) as u8; + dst[goff + x] = (g as i16).clamp(0, 255) as u8; + dst[boff + x] = (b as i16).clamp(0, 255) as u8; } roff += dstrides[0]; goff += dstrides[1]; @@ -500,9 +500,9 @@ impl YuvToRgb { let r = y + self.r_chr[128]; let g = y + self.g_u[128] + self.g_v[128]; let b = y + self.b_chr[128]; - dst[roff + x] = r.max(0).min(255) as u8; - dst[goff + x] = g.max(0).min(255) as u8; - dst[boff + x] = b.max(0).min(255) as u8; + dst[roff + x] = r.clamp(0, 255) as u8; + dst[goff + x] = g.clamp(0, 255) as u8; + dst[boff + x] = b.clamp(0, 255) as u8; } roff += dstrides[0]; goff += dstrides[1]; @@ -514,9 +514,9 @@ impl YuvToRgb { for x in 0..w { let y = f32::from(src[yoff + x]); let (r, g, b) = matrix_mul(&self.matrix, y, 0.0, 0.0); - dst[roff + x] = (r as i16).max(0).min(255) as u8; - dst[goff + x] = (g as i16).max(0).min(255) as u8; - dst[boff + x] = (b as i16).max(0).min(255) as u8; + dst[roff + x] = (r as i16).clamp(0, 255) as u8; + dst[goff + x] = (g as i16).clamp(0, 255) as u8; + dst[boff + x] = (b as i16).clamp(0, 255) as u8; } roff += dstrides[0]; goff += dstrides[1]; diff --git a/nihav-core/src/scale/palette/neuquant.rs b/nihav-core/src/scale/palette/neuquant.rs index 787f340..c28b179 100644 --- a/nihav-core/src/scale/palette/neuquant.rs +++ b/nihav-core/src/scale/palette/neuquant.rs @@ -127,9 +127,9 @@ impl NeuQuantQuantiser { } pub fn make_pal(&self, pal: &mut [[u8; 3]; 256]) { for (pal, node) in pal.iter_mut().zip(self.weights.iter()) { - pal[0] = (node[0] + 0.5).max(0.0).min(255.0) as u8; - pal[1] = (node[1] + 0.5).max(0.0).min(255.0) as u8; - pal[2] = (node[2] + 0.5).max(0.0).min(255.0) as u8; + pal[0] = (node[0] + 0.5).clamp(0.0, 255.0) as u8; + pal[1] = (node[1] + 0.5).clamp(0.0, 255.0) as u8; + pal[2] = (node[2] + 0.5).clamp(0.0, 255.0) as u8; } } } diff --git a/nihav-core/src/scale/scale/mod.rs b/nihav-core/src/scale/scale/mod.rs index 67c0be3..29a91b0 100644 --- a/nihav-core/src/scale/scale/mod.rs +++ b/nihav-core/src/scale/scale/mod.rs @@ -92,10 +92,10 @@ impl CustomFrom for usize { fn cvt_from(val: u16) -> Self { usize::from(val) } } impl CustomFrom for u8 { - fn cvt_from(val: f32) -> Self { val.max(0.0).min(255.0) as u8 } + fn cvt_from(val: f32) -> Self { val.clamp(0.0, 255.0) as u8 } } impl CustomFrom for u16 { - fn cvt_from(val: f32) -> Self { val.max(0.0).min(65535.0) as u16 } + fn cvt_from(val: f32) -> Self { val.clamp(0.0, 65535.0) as u16 } } impl CustomFrom for f32 { fn cvt_from(val: u8) -> Self { val as f32 } diff --git a/nihav-core/src/soundcvt/mod.rs b/nihav-core/src/soundcvt/mod.rs index b8fda80..242e96a 100644 --- a/nihav-core/src/soundcvt/mod.rs +++ b/nihav-core/src/soundcvt/mod.rs @@ -107,7 +107,7 @@ impl FromFmt for f32 { } impl FromFmt for u8 { - fn cvt_from(val: i16) -> u8 { ((val >> 8) + 128).min(255).max(0) as u8 } + fn cvt_from(val: i16) -> u8 { ((val >> 8) + 128).clamp(0, 255) as u8 } } impl FromFmt for i16 { fn cvt_from(val: i16) -> i16 { val } @@ -120,7 +120,7 @@ impl FromFmt for f32 { } impl FromFmt for u8 { - fn cvt_from(val: i32) -> u8 { ((val >> 24) + 128).min(255).max(0) as u8 } + fn cvt_from(val: i32) -> u8 { ((val >> 24) + 128).clamp(0, 255) as u8 } } impl FromFmt for i16 { fn cvt_from(val: i32) -> i16 { (val >> 16) as i16 } @@ -133,10 +133,10 @@ impl FromFmt for f32 { } impl FromFmt for u8 { - fn cvt_from(val: f32) -> u8 { ((val * 128.0) + 128.0).min(255.0).max(0.0) as u8 } + fn cvt_from(val: f32) -> u8 { ((val * 128.0) + 128.0).clamp(0.0, 255.0) as u8 } } impl FromFmt for i16 { - fn cvt_from(val: f32) -> i16 { (val * 32768.0).min(32767.0).max(-32768.0) as i16 } + fn cvt_from(val: f32) -> i16 { (val * 32768.0).clamp(-32768.0, 32767.0) as i16 } } impl FromFmt for i32 { fn cvt_from(val: f32) -> i32 { diff --git a/nihav-core/src/soundcvt/resample.rs b/nihav-core/src/soundcvt/resample.rs index dc2f178..df7baf5 100644 --- a/nihav-core/src/soundcvt/resample.rs +++ b/nihav-core/src/soundcvt/resample.rs @@ -79,7 +79,7 @@ fn gen_sinc_coeffs(order: usize, num: usize, den: usize, norm: f32) -> Vec *coef = norm; continue; } - let wval = f64::from((pos * win_scale).max(-1.0).min(1.0)); + let wval = f64::from((pos * win_scale).clamp(-1.0, 1.0)); let win = bessel_i0(BESSEL_BETA - (1.0 - wval * wval).sqrt()) as f32; *coef = norm * (pos * sinc_scale).sinc() * win; } diff --git a/nihav-duck/src/codecs/truemotion2.rs b/nihav-duck/src/codecs/truemotion2.rs index 1bdb0dd..2c4c173 100644 --- a/nihav-duck/src/codecs/truemotion2.rs +++ b/nihav-duck/src/codecs/truemotion2.rs @@ -233,7 +233,7 @@ impl DeltaState { for x in 0..4 { d += ydeltas[x + y * 4]; last[x] += d; - dst[yoff + x] = last[x].max(0).min(255) as u8; + dst[yoff + x] = last[x].clamp(0, 255) as u8; } self.dy[y] = d; yoff += ystride; @@ -516,9 +516,9 @@ impl TM2Decoder { let y = i16::from(self.cur_frame.ydata[ysrc + x]); let u = self.cur_frame.udata[csrc + (x >> 1)]; let v = self.cur_frame.vdata[csrc + (x >> 1)]; - pic[offs[0]] = (y + u).max(0).min(255) as u8; - pic[offs[1]] = y.max(0).min(255) as u8; - pic[offs[2]] = (y + v).max(0).min(255) as u8; + pic[offs[0]] = (y + u).clamp(0, 255) as u8; + pic[offs[1]] = y.clamp(0, 255) as u8; + pic[offs[2]] = (y + v).clamp(0, 255) as u8; } off += stride; ysrc += self.cur_frame.ystride; diff --git a/nihav-duck/src/codecs/truemotion2x.rs b/nihav-duck/src/codecs/truemotion2x.rs index be776ef..a8d84e2 100644 --- a/nihav-duck/src/codecs/truemotion2x.rs +++ b/nihav-duck/src/codecs/truemotion2x.rs @@ -189,9 +189,9 @@ impl TM2XDecoder { let y = self.cur_frame.ydata[pos + x]; let u = self.cur_frame.udata[pos + x]; let v = self.cur_frame.vdata[pos + x]; - dst[offs[0] + x] = y.max(0).min(255) as u8; - dst[offs[1] + x] = u.max(0).min(255) as u8; - dst[offs[2] + x] = v.max(0).min(255) as u8; + dst[offs[0] + x] = y.clamp(0, 255) as u8; + dst[offs[1] + x] = u.clamp(0, 255) as u8; + dst[offs[2] + x] = v.clamp(0, 255) as u8; } for c in 0..3 { offs[c] += strides[c]; diff --git a/nihav-duck/src/codecs/truemotionrt.rs b/nihav-duck/src/codecs/truemotionrt.rs index 182cf05..26a3464 100644 --- a/nihav-duck/src/codecs/truemotionrt.rs +++ b/nihav-duck/src/codecs/truemotionrt.rs @@ -24,7 +24,7 @@ impl TMRTDecoder { let delta = delta_tab[br.read(dbits)? as usize]; diff += delta; let pred = if y > 0 { dst[off + x - stride].into() } else if !is_chroma { 0 } else { 0x80 }; - dst[off + x] = (pred + diff).min(255).max(0) as u8; + dst[off + x] = (pred + diff).clamp(0, 255) as u8; if hscale { dst[off + x + 1] = dst[off + x]; } diff --git a/nihav-duck/src/codecs/truemotionrtenc.rs b/nihav-duck/src/codecs/truemotionrtenc.rs index da02ba8..03e057e 100644 --- a/nihav-duck/src/codecs/truemotionrtenc.rs +++ b/nihav-duck/src/codecs/truemotionrtenc.rs @@ -79,7 +79,7 @@ impl TMRTEncoder { bw.write(idx as u32, self.dbits); hor_pred += ndelta; - *pred = (i16::from(*pred) + hor_pred).max(0).min(255) as u8; + *pred = (i16::from(*pred) + hor_pred).clamp(0, 255) as u8; } } @@ -119,7 +119,7 @@ impl TMRTEncoder { if src.err == ERR_MAX { continue; } - let nval = i32::from((top_val + src.hpred + delta).max(0).min(255)); + let nval = i32::from((top_val + src.hpred + delta).clamp(0, 255)); let new_err = src.err + (((nval - pix_val) * (nval - pix_val)) as u32); if new_err < dst.err { dst.err = new_err; @@ -154,7 +154,7 @@ impl TMRTEncoder { for (pred, &idx) in self.top_line.iter_mut().step_by(step).zip(self.indices.iter()) { bw.write(u32::from(idx), self.dbits); hor_pred += delta_tab[usize::from(idx)]; - *pred = (i16::from(*pred) + hor_pred).max(0).min(255) as u8; + *pred = (i16::from(*pred) + hor_pred).clamp(0, 255) as u8; } } diff --git a/nihav-duck/src/codecs/vp3.rs b/nihav-duck/src/codecs/vp3.rs index ba5db75..7eea073 100644 --- a/nihav-duck/src/codecs/vp3.rs +++ b/nihav-duck/src/codecs/vp3.rs @@ -450,8 +450,8 @@ fn rescale_qmat_vp4(dst_qmat: &mut [i16; 64], base_qmat: &[i16; 64], dc_quant: i fn expand_token(blk: &mut Block, br: &mut BitReader, eob_run: &mut usize, token: u8) -> DecoderResult<()> { match token { // EOBs - 0 | 1 | 2 => { *eob_run = (token as usize) + 1; }, - 3 | 4 | 5 => { + 0..=2 => { *eob_run = (token as usize) + 1; }, + 3..=5 => { let bits = token - 1; *eob_run = (br.read(bits)? as usize) + (1 << bits); }, @@ -464,7 +464,7 @@ fn expand_token(blk: &mut Block, br: &mut BitReader, eob_run: &mut usize, token: validate!(blk.idx <= 64); }, // single coefficients - 9 | 10 | 11 | 12 => { + 9..=12 => { let val = (i16::from(token) - 7) >> 1; if (token & 1) == 1 { blk.coeffs[ZIGZAG[blk.idx]] = val; @@ -473,7 +473,7 @@ fn expand_token(blk: &mut Block, br: &mut BitReader, eob_run: &mut usize, token: } blk.idx += 1; }, - 13 | 14 | 15 | 16 => { + 13..= 16 => { let val = i16::from(token) - 10; if !br.read_bool()? { blk.coeffs[ZIGZAG[blk.idx]] = val; @@ -482,7 +482,7 @@ fn expand_token(blk: &mut Block, br: &mut BitReader, eob_run: &mut usize, token: } blk.idx += 1; }, - 17 | 18 | 19 | 20 | 21 | 22 => { + 17..=22 => { let add_bits = if token == 22 { 9 } else { token - 16 }; let sign = br.read_bool()?; let val = (br.read(add_bits)? as i16) + VP3_LITERAL_BASE[(token - 17) as usize]; @@ -494,7 +494,7 @@ fn expand_token(blk: &mut Block, br: &mut BitReader, eob_run: &mut usize, token: blk.idx += 1; } // zero run plus coefficient - 23 | 24 | 25 | 26 | 27 => { + 23..=27 => { blk.idx += (token - 22) as usize; validate!(blk.idx < 64); if !br.read_bool()? { @@ -1841,7 +1841,7 @@ impl NADecoder for VP34Decoder { #[allow(clippy::collapsible_else_if)] fn decode(&mut self, supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult { let src = pkt.get_buffer(); - validate!(src.len() > 0); + validate!(!src.is_empty()); let mut br = BitReader::new(&src, BitReaderMode::BE); self.parse_header(&mut br)?; diff --git a/nihav-duck/src/codecs/vp6.rs b/nihav-duck/src/codecs/vp6.rs index 131e26e..8d2ef47 100644 --- a/nihav-duck/src/codecs/vp6.rs +++ b/nihav-duck/src/codecs/vp6.rs @@ -423,14 +423,14 @@ fn decode_token_huff(br: &mut BitReader, huff: &VP6Huff) -> DecoderResult<(i16, let tok = br.read_huff(huff)?; match tok { 0 => Ok((0, false)), - 1 | 2 | 3 | 4 => { + 1..=4 => { if !br.read_bool()? { Ok((i16::from(tok), false)) } else { Ok((-i16::from(tok), false)) } }, - 5 | 6 | 7 | 8 | 9 | 10 => { + 5..=10 => { let base = (tok - 5) as usize; let add_bits = br.read(VP6_COEF_ADD_BITS[base])? as i16; let val = VP56_COEF_BASE[base] + add_bits; diff --git a/nihav-duck/src/codecs/vp6enc/mb.rs b/nihav-duck/src/codecs/vp6enc/mb.rs index cece9d1..4dd7d48 100644 --- a/nihav-duck/src/codecs/vp6enc/mb.rs +++ b/nihav-duck/src/codecs/vp6enc/mb.rs @@ -255,7 +255,7 @@ impl FrameEncoder { if mb_type.is_intra() { for (dblk, sblk) in blocks.iter_mut().zip(mb.coeffs.iter()) { for (dcoef, &scoef) in dblk.iter_mut().zip(sblk.iter()) { - *dcoef = (scoef + 128).max(0).min(255) as u8; + *dcoef = (scoef + 128).clamp(0, 255) as u8; } } } else { @@ -271,7 +271,7 @@ impl FrameEncoder { for (dblk, (sblk1, sblk2)) in blocks.iter_mut().zip(mb.coeffs.iter().zip(res_mb.iter())) { for (dcoef, (&scoef1, &scoef2)) in dblk.iter_mut().zip(sblk1.iter().zip(sblk2.iter())) { - *dcoef = (scoef1 + scoef2).max(0).min(255) as u8; + *dcoef = (scoef1 + scoef2).clamp(0, 255) as u8; } } } @@ -440,7 +440,7 @@ impl FrameEncoder { tmp_mb.idct(); for blk in tmp_mb.coeffs.iter_mut() { for coef in blk.iter_mut() { - *coef = (*coef + 128).max(0).min(255); + *coef = (*coef + 128).clamp(0, 255); } } let intra_dist = calc_mb_dist(&self.src_mbs[mb_idx], &tmp_mb); @@ -451,7 +451,7 @@ impl FrameEncoder { tmp_mb.idct(); for (blk, res) in tmp_mb.coeffs.iter_mut().zip(self.inter_mbs[mb_idx].reference.iter()) { for (coef, add) in blk.iter_mut().zip(res.iter()) { - *coef = (*coef + add).max(0).min(255); + *coef = (*coef + add).clamp(0, 255); } } let inter_dist = calc_mb_dist(&self.src_mbs[mb_idx], &tmp_mb); @@ -473,7 +473,7 @@ impl FrameEncoder { tmp_mb.idct(); for (blk, res) in tmp_mb.coeffs.iter_mut().zip(self.fourmv_mbs[mb_idx].reference.iter()) { for (coef, add) in blk.iter_mut().zip(res.iter()) { - *coef = (*coef + add).max(0).min(255); + *coef = (*coef + add).clamp(0, 255); } } let fourmv_dist = calc_mb_dist(&self.src_mbs[mb_idx], &tmp_mb); @@ -491,7 +491,7 @@ impl FrameEncoder { tmp_mb.idct(); for (blk, res) in tmp_mb.coeffs.iter_mut().zip(self.golden_mbs[mb_idx].reference.iter()) { for (coef, add) in blk.iter_mut().zip(res.iter()) { - *coef = (*coef + add).max(0).min(255); + *coef = (*coef + add).clamp(0, 255); } } let golden_dist = calc_mb_dist(&self.src_mbs[mb_idx], &tmp_mb); @@ -567,7 +567,7 @@ impl FrameEncoder { tmp_mb.idct(); for (blk, res) in tmp_mb.coeffs.iter_mut().zip(inter_mb.reference.iter()) { for (coef, add) in blk.iter_mut().zip(res.iter()) { - *coef = (*coef + add).max(0).min(255); + *coef = (*coef + add).clamp(0, 255); } } let mut best_dist = calc_mb_dist(smb, &tmp_mb); @@ -586,7 +586,7 @@ impl FrameEncoder { tmp_mb.idct(); for (blk, res) in tmp_mb.coeffs.iter_mut().zip(self.fourmv_mbs[mb_idx].reference.iter()) { for (coef, add) in blk.iter_mut().zip(res.iter()) { - *coef = (*coef + add).max(0).min(255); + *coef = (*coef + add).clamp(0, 255); } } let fourmv_dist = calc_mb_dist(smb, &tmp_mb); @@ -610,7 +610,7 @@ impl FrameEncoder { tmp_mb.idct(); for (blk, res) in tmp_mb.coeffs.iter_mut().zip(gold_mb.reference.iter()) { for (coef, add) in blk.iter_mut().zip(res.iter()) { - *coef = (*coef + add).max(0).min(255); + *coef = (*coef + add).clamp(0, 255); } } let golden_dist = calc_mb_dist(smb, &tmp_mb); @@ -636,7 +636,7 @@ impl FrameEncoder { tmp_mb.idct(); for blk in tmp_mb.coeffs.iter_mut() { for coef in blk.iter_mut() { - *coef = (*coef + 128).max(0).min(255); + *coef = (*coef + 128).clamp(0, 255); } } let intra_dist = calc_mb_dist(smb, &tmp_mb); diff --git a/nihav-duck/src/codecs/vp78dsp.rs b/nihav-duck/src/codecs/vp78dsp.rs index 9487c16..df18adf 100644 --- a/nihav-duck/src/codecs/vp78dsp.rs +++ b/nihav-duck/src/codecs/vp78dsp.rs @@ -3,7 +3,7 @@ use nihav_core::frame::*; use nihav_codec_support::codecs::blockdsp::edge_emu; fn clip_u8(val: i16) -> u8 { - val.max(0).min(255) as u8 + val.clamp(0, 255) as u8 } pub struct IPredContext { diff --git a/nihav-duck/src/codecs/vp7dsp.rs b/nihav-duck/src/codecs/vp7dsp.rs index 090eada..76fe663 100644 --- a/nihav-duck/src/codecs/vp7dsp.rs +++ b/nihav-duck/src/codecs/vp7dsp.rs @@ -1,7 +1,7 @@ use nihav_core::frame::*; fn clip_u8(val: i16) -> u8 { - val.max(0).min(255) as u8 + val.clamp(0, 255) as u8 } const DCT_COEFFS: [i32; 16] = [ @@ -145,7 +145,7 @@ pub fn fade_frame(srcfrm: NAVideoBufferRef, dstfrm: &mut NASimpleVideoFrame< let mut fade_lut = [0u8; 256]; for (i, el) in fade_lut.iter_mut().enumerate() { let y = i as u16; - *el = (y + ((y * beta) >> 8) + alpha).max(0).min(255) as u8; + *el = (y + ((y * beta) >> 8) + alpha).clamp(0, 255) as u8; } let (w, h) = srcfrm.get_dimensions(0); diff --git a/nihav-duck/src/codecs/vp7enc/blocks.rs b/nihav-duck/src/codecs/vp7enc/blocks.rs index 4f4b451..1cf4939 100644 --- a/nihav-duck/src/codecs/vp7enc/blocks.rs +++ b/nihav-duck/src/codecs/vp7enc/blocks.rs @@ -46,7 +46,7 @@ pub fn get_block_difference(dst: &mut [i16; 16], src1: &[u8; 16], src2: &[u8; 16 pub fn get_difference_dist(old: &[u8; 16], new: &[u8; 16], diff: &[i16; 16]) -> u32 { let mut dist = 0; for ((&old, &new), &diff) in old.iter().zip(new.iter()).zip(diff.iter()) { - let nval = (i16::from(new) + diff).max(0).min(255); + let nval = (i16::from(new) + diff).clamp(0, 255); let oval = i16::from(old); dist += (i32::from(nval - oval) * i32::from(nval - oval)) as u32; } @@ -324,7 +324,7 @@ impl Residue { for (x, blk) in src.iter().enumerate() { for (drow, srow) in dst[x * 4..].chunks_mut(16).zip(blk.chunks(4)) { for (del, &sel) in drow.iter_mut().zip(srow.iter()) { - *del = (i16::from(*del) + sel).max(0).min(255) as u8; + *del = (i16::from(*del) + sel).clamp(0, 255) as u8; } } } @@ -334,7 +334,7 @@ impl Residue { for (x, blk) in src.iter().enumerate() { for (drow, srow) in dst[x * 4..].chunks_mut(8).zip(blk.chunks(4)) { for (del, &sel) in drow.iter_mut().zip(srow.iter()) { - *del = (i16::from(*del) + sel).max(0).min(255) as u8; + *del = (i16::from(*del) + sel).clamp(0, 255) as u8; } } } @@ -355,7 +355,7 @@ impl Residue { blk.idct(); for (drow, srow) in dst[x * 4..].chunks_mut(8).zip(blk.chunks(4)) { for (del, &sel) in drow.iter_mut().zip(srow.iter()) { - *del = (i16::from(*del) + sel).max(0).min(255) as u8; + *del = (i16::from(*del) + sel).clamp(0, 255) as u8; } } } diff --git a/nihav-duck/src/codecs/vp7enc/mb_coding.rs b/nihav-duck/src/codecs/vp7enc/mb_coding.rs index 8fc79ff..05b3058 100644 --- a/nihav-duck/src/codecs/vp7enc/mb_coding.rs +++ b/nihav-duck/src/codecs/vp7enc/mb_coding.rs @@ -112,7 +112,7 @@ pub fn try_i4x4_pred(mut src: LumaIterator, modes: &mut [PredMode; 16], res: &mu let nblk = &mut new[x * 4 + y * 4 * 16..]; for (dst, (src, res)) in nblk.chunks_mut(16).zip(yblk.chunks(4).zip(diff.chunks(4))) { for (del, (&sel, &rel)) in dst.iter_mut().zip(src.iter().zip(res.iter())) { - *del = (i16::from(sel) + rel).max(0).min(255) as u8; + *del = (i16::from(sel) + rel).clamp(0, 255) as u8; } } diff --git a/nihav-duck/src/codecs/vp7enc/models.rs b/nihav-duck/src/codecs/vp7enc/models.rs index 8b83301..986d224 100644 --- a/nihav-duck/src/codecs/vp7enc/models.rs +++ b/nihav-duck/src/codecs/vp7enc/models.rs @@ -36,7 +36,7 @@ pub trait VP7ProbCounter { impl VP7ProbCounter for ProbCounter { fn to_prob8(self) -> u8 { if self.total > 0 { - ((self.zeroes << 8) / self.total).min(255).max(1) as u8 + ((self.zeroes << 8) / self.total).clamp(1, 255) as u8 } else { 128 } diff --git a/nihav-duck/src/codecs/vp7enc/rdo.rs b/nihav-duck/src/codecs/vp7enc/rdo.rs index 4dc7cea..9189b15 100644 --- a/nihav-duck/src/codecs/vp7enc/rdo.rs +++ b/nihav-duck/src/codecs/vp7enc/rdo.rs @@ -184,7 +184,7 @@ impl BitRateControl { } q } else { - ((((800.0 - nits_per_mb) / 155.0).exp() + 6.0) as usize).max(10).min(127) + ((((800.0 - nits_per_mb) / 155.0).exp() + 6.0) as usize).clamp(10, 127) } } } diff --git a/nihav-duck/src/codecs/vp8.rs b/nihav-duck/src/codecs/vp8.rs index 83539b6..465474f 100644 --- a/nihav-duck/src/codecs/vp8.rs +++ b/nihav-duck/src/codecs/vp8.rs @@ -416,7 +416,7 @@ impl VP8Decoder { let loop_str = if self.dstate.seg_feature_mode { segment.lf as u8 } else { - (i16::from(self.dstate.loop_filter_level) + i16::from(segment.lf)).max(0).min(63) as u8 + (i16::from(self.dstate.loop_filter_level) + i16::from(segment.lf)).clamp(0, 63) as u8 }; self.dstate.force_loop_str = Some(loop_str); } @@ -536,7 +536,7 @@ impl VP8Decoder { let q = if self.dstate.seg_feature_mode { seg.quant.max(0) as usize } else { - ((y_ac_q as i16) + i16::from(seg.quant)).max(0).min(127) as usize + ((y_ac_q as i16) + i16::from(seg.quant)).clamp(0, 127) as usize }; Self::set_single_qmat(qmat, q, q, q, q, q, q); } @@ -1452,7 +1452,7 @@ impl NADecoder for VP8Decoder { if self.mb_info[mb_idx].mb_type != VPMBType::Intra || self.mb_info[mb_idx].ymode == PredMode::BPred { loop_str += self.dstate.lf_mode_delta[idx]; } - self.mb_info[mb_idx].loop_str = loop_str.max(0).min(63) as u8; + self.mb_info[mb_idx].loop_str = loop_str.clamp(0, 63) as u8; } self.mb_info[mb_idx].inner_filt = has_coeffs || (self.mb_info[mb_idx].ymode == PredMode::BPred) || (self.mb_info[mb_idx].mb_type == VPMBType::InterFourMV); } diff --git a/nihav-duck/src/codecs/vp8dsp.rs b/nihav-duck/src/codecs/vp8dsp.rs index fa7aa09..17a78c1 100644 --- a/nihav-duck/src/codecs/vp8dsp.rs +++ b/nihav-duck/src/codecs/vp8dsp.rs @@ -2,11 +2,11 @@ use nihav_core::frame::NAVideoBufferRef; use nihav_codec_support::codecs::blockdsp::edge_emu; fn clip_u8(val: i16) -> u8 { - val.max(0).min(255) as u8 + val.clamp(0, 255) as u8 } fn delta(p1: i16, p0: i16, q0: i16, q1: i16) -> i16 { - ((p1 - q1).max(-128).min(127) + 3 * (q0 - p0)).max(-128).min(127) + ((p1 - q1).clamp(-128, 127) + 3 * (q0 - p0)).clamp(-128, 127) } pub type LoopFilterFunc = fn(buf: &mut [u8], off: usize, step: usize, stride: usize, len: usize, thr: i16, thr_inner: i16, thr_hev: i16); @@ -71,7 +71,7 @@ fn normal_loop_filter(buf: &mut [u8], mut off: usize, step: usize, stride: usize buf[off - step * 3] = clip_u8(p2 + diff2); buf[off + step * 2] = clip_u8(q2 - diff2); } else { - let diff = (3 * (q0 - p0)).max(-128).min(127); + let diff = (3 * (q0 - p0)).clamp(-128, 127); let diffq0 = (diff + 4).min(127) >> 3; let diffp0 = (diff + 3).min(127) >> 3; buf[off - step * 1] = clip_u8(p0 + diffp0); @@ -167,7 +167,7 @@ macro_rules! interpolate { let s1 = i32::from($src[$off + 1 * $step]); let a = (8 - $mode) as i32; let b = $mode as i32; - ((a * s0 + b * s1 + 4) >> 3).max(0).min(255) as u8 + ((a * s0 + b * s1 + 4) >> 3).clamp(0, 255) as u8 }} } diff --git a/nihav-duck/src/codecs/vpcommon.rs b/nihav-duck/src/codecs/vpcommon.rs index 7ab7a07..6d4a53a 100644 --- a/nihav-duck/src/codecs/vpcommon.rs +++ b/nihav-duck/src/codecs/vpcommon.rs @@ -274,7 +274,7 @@ pub fn vp_put_block(coeffs: &mut [i16; 64], bx: usize, by: usize, plane: usize, let mut off = frm.offset[plane] + bx * 8 + by * 8 * frm.stride[plane]; for y in 0..8 { for x in 0..8 { - frm.data[off + x] = (coeffs[x + y * 8] + 128).min(255).max(0) as u8; + frm.data[off + x] = (coeffs[x + y * 8] + 128).clamp(0, 255) as u8; } off += frm.stride[plane]; } @@ -285,7 +285,7 @@ pub fn vp_put_block_ilace(coeffs: &mut [i16; 64], bx: usize, by: usize, plane: u let mut off = frm.offset[plane] + bx * 8 + ((by & !1) * 8 + (by & 1)) * frm.stride[plane]; for y in 0..8 { for x in 0..8 { - frm.data[off + x] = (coeffs[x + y * 8] + 128).min(255).max(0) as u8; + frm.data[off + x] = (coeffs[x + y * 8] + 128).clamp(0, 255) as u8; } off += frm.stride[plane] * 2; } @@ -293,7 +293,7 @@ pub fn vp_put_block_ilace(coeffs: &mut [i16; 64], bx: usize, by: usize, plane: u pub fn vp_put_block_dc(coeffs: &mut [i16; 64], bx: usize, by: usize, plane: usize, frm: &mut NASimpleVideoFrame) { vp_idct_dc(coeffs); - let dc = (coeffs[0] + 128).min(255).max(0) as u8; + let dc = (coeffs[0] + 128).clamp(0, 255) as u8; let mut off = frm.offset[plane] + bx * 8 + by * 8 * frm.stride[plane]; for _ in 0..8 { for x in 0..8 { @@ -308,7 +308,7 @@ pub fn vp_add_block(coeffs: &mut [i16; 64], bx: usize, by: usize, plane: usize, let mut off = frm.offset[plane] + bx * 8 + by * 8 * frm.stride[plane]; for y in 0..8 { for x in 0..8 { - frm.data[off + x] = (coeffs[x + y * 8] + i16::from(frm.data[off + x])).min(255).max(0) as u8; + frm.data[off + x] = (coeffs[x + y * 8] + i16::from(frm.data[off + x])).clamp(0, 255) as u8; } off += frm.stride[plane]; } @@ -319,7 +319,7 @@ pub fn vp_add_block_ilace(coeffs: &mut [i16; 64], bx: usize, by: usize, plane: u let mut off = frm.offset[plane] + bx * 8 + ((by & !1) * 8 + (by & 1)) * frm.stride[plane]; for y in 0..8 { for x in 0..8 { - frm.data[off + x] = (coeffs[x + y * 8] + i16::from(frm.data[off + x])).min(255).max(0) as u8; + frm.data[off + x] = (coeffs[x + y * 8] + i16::from(frm.data[off + x])).clamp(0, 255) as u8; } off += frm.stride[plane] * 2; } @@ -331,7 +331,7 @@ pub fn vp_add_block_dc(coeffs: &mut [i16; 64], bx: usize, by: usize, plane: usiz let mut off = frm.offset[plane] + bx * 8 + by * 8 * frm.stride[plane]; for _ in 0..8 { for x in 0..8 { - frm.data[off + x] = (dc + i16::from(frm.data[off + x])).min(255).max(0) as u8; + frm.data[off + x] = (dc + i16::from(frm.data[off + x])).clamp(0, 255) as u8; } off += frm.stride[plane]; } @@ -355,8 +355,8 @@ pub fn vp31_loop_filter(data: &mut [u8], mut off: usize, step: usize, stride: us } } if diff != 0 { - data[off - step] = (b + diff).max(0).min(255) as u8; - data[off] = (c - diff).max(0).min(255) as u8; + data[off - step] = (b + diff).clamp(0, 255) as u8; + data[off] = (c - diff).clamp(0, 255) as u8; } off += stride; diff --git a/nihav-flash/src/codecs/adpcmenc.rs b/nihav-flash/src/codecs/adpcmenc.rs index c7bf3aa..ae86546 100644 --- a/nihav-flash/src/codecs/adpcmenc.rs +++ b/nihav-flash/src/codecs/adpcmenc.rs @@ -70,7 +70,7 @@ impl NAEncoder for ADPCMEncoder { NACodecTypeInfo::Video(_) => Err(EncoderError::FormatError), NACodecTypeInfo::Audio(ainfo) => { let mut outinfo = ainfo; - outinfo.channels = outinfo.channels.max(1).min(2); + outinfo.channels = outinfo.channels.clamp(1, 2); if outinfo.format != SND_S16P_FORMAT && outinfo.format != SND_S16_FORMAT { outinfo.format = SND_S16_FORMAT; } diff --git a/nihav-flash/src/codecs/asao.rs b/nihav-flash/src/codecs/asao.rs index ca71792..fd92c8d 100644 --- a/nihav-flash/src/codecs/asao.rs +++ b/nihav-flash/src/codecs/asao.rs @@ -71,7 +71,7 @@ fn sum_bits(src: &[i32; 128], shift: i8, off: i32) -> i32 { let mut sum = 0; for &el in src[..CODED_LEN].iter() { let val = (((el - off) >> (shift - 1)) + 1) >> 1; - sum += val.max(0).min(MAX_CBITS); + sum += val.clamp(0, MAX_CBITS); } sum } @@ -151,7 +151,7 @@ fn bitalloc(bits: &mut [i8; 128], scales: &[i32; 128]) { } for (bits, &val) in bits.iter_mut().zip(tmp.iter()).take(CODED_LEN) { - *bits = ((((val - offset) >> (ref_shift - 1)) + 1) >> 1).max(0).min(MAX_CBITS) as i8; + *bits = ((((val - offset) >> (ref_shift - 1)) + 1) >> 1).clamp(0, MAX_CBITS) as i8; } if bitsum > SUBPART_BITS { let mut sum = 0; diff --git a/nihav-flash/src/codecs/flv263.rs b/nihav-flash/src/codecs/flv263.rs index c4b55c4..fd8dbd9 100644 --- a/nihav-flash/src/codecs/flv263.rs +++ b/nihav-flash/src/codecs/flv263.rs @@ -104,8 +104,7 @@ impl<'a> SparkBR<'a> { } else { level = (level * q) - q_add; } - if level < -2048 { level = -2048; } - if level > 2047 { level = 2047; } + level = level.clamp(-2048, 2047); } else { let fmt_bit = br.read_bool()?; last = br.read_bool()?; @@ -122,8 +121,7 @@ impl<'a> SparkBR<'a> { } else { level = (level * q) - q_add; } - if level < -2048 { level = -2048; } - if level > 2047 { level = 2047; } + level = level.clamp(-2048, 2047); } idx += run; validate!(idx < 64); diff --git a/nihav-game/src/codecs/ipma.rs b/nihav-game/src/codecs/ipma.rs index 99d4122..9f735de 100644 --- a/nihav-game/src/codecs/ipma.rs +++ b/nihav-game/src/codecs/ipma.rs @@ -155,7 +155,7 @@ impl NADecoder for IPMADecoder { } fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult { let src = pkt.get_buffer(); - validate!(src.len() > 0); + validate!(!src.is_empty()); for sd in pkt.side_data.iter() { if let NASideData::Palette(true, ref pal) = sd { diff --git a/nihav-game/src/codecs/midivid3.rs b/nihav-game/src/codecs/midivid3.rs index 910688b..5a49794 100644 --- a/nihav-game/src/codecs/midivid3.rs +++ b/nihav-game/src/codecs/midivid3.rs @@ -353,7 +353,7 @@ fn decode_block_intra(dst: &mut [u8], stride: usize, btype: usize, coeffs: &[i16 match btype { 0 | 1 => { let fill_val = if btype == 0 { 0x80 } else { - ((dequant(coeffs[0], qmat[0]) >> 5) + 128).max(0).min(255) as u8 + ((dequant(coeffs[0], qmat[0]) >> 5) + 128).clamp(0, 255) as u8 }; for line in dst.chunks_mut(stride).take(8) { for el in line.iter_mut().take(8) { @@ -370,7 +370,7 @@ fn decode_block_intra(dst: &mut [u8], stride: usize, btype: usize, coeffs: &[i16 idct(&mut blk); for (line, row) in dst.chunks_mut(stride).zip(blk.chunks(8)).take(8) { for (dst, coef) in line.iter_mut().zip(row.iter()).take(8) { - *dst = (*coef + 128).max(0).min(255) as u8; + *dst = (*coef + 128).clamp(0, 255) as u8; } } }, @@ -382,7 +382,7 @@ fn decode_block_intra(dst: &mut [u8], stride: usize, btype: usize, coeffs: &[i16 idct(&mut blk); for (line, row) in dst.chunks_mut(stride).zip(blk.chunks(8)).take(8) { for (dst, coef) in line.iter_mut().zip(row.iter()).take(8) { - *dst = (*coef + 128).max(0).min(255) as u8; + *dst = (*coef + 128).clamp(0, 255) as u8; } } }, @@ -396,7 +396,7 @@ fn decode_block_inter(dst: &mut [u8], stride: usize, btype: usize, coeffs: &[i16 let dc = dequant(coeffs[0], qmat[0]) >> 5; for line in dst.chunks_mut(stride).take(8) { for el in line.iter_mut().take(8) { - *el = (i32::from(*el) + dc).max(0).min(255) as u8; + *el = (i32::from(*el) + dc).clamp(0, 255) as u8; } } }, @@ -409,7 +409,7 @@ fn decode_block_inter(dst: &mut [u8], stride: usize, btype: usize, coeffs: &[i16 idct(&mut blk); for (line, row) in dst.chunks_mut(stride).zip(blk.chunks(8)).take(8) { for (dst, coef) in line.iter_mut().zip(row.iter()).take(8) { - *dst = (i32::from(*dst) + *coef).max(0).min(255) as u8; + *dst = (i32::from(*dst) + *coef).clamp(0, 255) as u8; } } }, @@ -421,7 +421,7 @@ fn decode_block_inter(dst: &mut [u8], stride: usize, btype: usize, coeffs: &[i16 idct(&mut blk); for (line, row) in dst.chunks_mut(stride).zip(blk.chunks(8)).take(8) { for (dst, coef) in line.iter_mut().zip(row.iter()).take(8) { - *dst = (i32::from(*dst) + *coef).max(0).min(255) as u8; + *dst = (i32::from(*dst) + *coef).clamp(0, 255) as u8; } } }, @@ -435,7 +435,7 @@ fn init_quant(qmat: &mut [i16; 64], base_qmat: &[u8; 64], quant: u8) { i32::from((100 - quant.min(100)) * 2) }; for (inq, (outq, scale)) in base_qmat.iter().zip(qmat.iter_mut().zip(QUANT_MATRIX.iter())) { - let val = ((i32::from(*inq) * q + 50) / 100).max(1).min(0x7FFF); + let val = ((i32::from(*inq) * q + 50) / 100).clamp(1, 0x7FFF); *outq = ((val * i32::from(*scale) + 0x800) >> 12) as i16; } } diff --git a/nihav-game/src/codecs/smush/vima.rs b/nihav-game/src/codecs/smush/vima.rs index f473be3..879438a 100644 --- a/nihav-game/src/codecs/smush/vima.rs +++ b/nihav-game/src/codecs/smush/vima.rs @@ -113,7 +113,7 @@ impl NADecoder for VIMADecoder { diff = -diff; } - (sample + diff).max(-32768).min(32767) + (sample + diff).clamp(-32768, 32767) } else { br.read_s(16)? }; diff --git a/nihav-indeo/src/codecs/imc.rs b/nihav-indeo/src/codecs/imc.rs index 79c8dfd..d44cd27 100644 --- a/nihav-indeo/src/codecs/imc.rs +++ b/nihav-indeo/src/codecs/imc.rs @@ -157,9 +157,7 @@ impl BitAlloc { cur_bits = 0; let mut acc = 0; for band in start..BANDS { - let mut len = (ch_data.bit_est[band] * 0.5 - pool + 0.5) as i32; - if len < 0 { len = 0; } - if len > 6 { len = 6; } + let len = ((ch_data.bit_est[band] * 0.5 - pool + 0.5) as i32).clamp(0, 6); self.band_bits[band] = len as u8; cur_bits += (self.band_width[band] as i32) * len; if len > 0 { diff --git a/nihav-indeo/src/codecs/intel263.rs b/nihav-indeo/src/codecs/intel263.rs index 9131dba..91aa7d2 100644 --- a/nihav-indeo/src/codecs/intel263.rs +++ b/nihav-indeo/src/codecs/intel263.rs @@ -165,8 +165,8 @@ fn deblock_hor(buf: &mut NAVideoBuffer, comp: usize, strength: u8, off: usiz let d1a = (diff.abs() - 2 * (diff.abs() - i16::from(strength)).max(0)).max(0); let d1 = if diff < 0 { -d1a } else { d1a }; - buf[off - 1 * stride + x] = (b + d1).max(0).min(255) as u8; - buf[off + 0 * stride + x] = (c - d1).max(0).min(255) as u8; + buf[off - 1 * stride + x] = (b + d1).clamp(0, 255) as u8; + buf[off + 0 * stride + x] = (c - d1).clamp(0, 255) as u8; } } } @@ -186,8 +186,8 @@ fn deblock_ver(buf: &mut NAVideoBuffer, comp: usize, strength: u8, off: usiz let d1a = (diff.abs() - 2 * (diff.abs() - i16::from(strength)).max(0)).max(0); let d1 = if diff < 0 { -d1a } else { d1a }; - buf[off - 1 + y * stride] = (b + d1).max(0).min(255) as u8; - buf[off + y * stride] = (c - d1).max(0).min(255) as u8; + buf[off - 1 + y * stride] = (b + d1).clamp(0, 255) as u8; + buf[off + y * stride] = (c - d1).clamp(0, 255) as u8; } } } @@ -390,8 +390,7 @@ impl<'a> Intel263BR<'a> { } else { level = (level * q) - q_add; } - if level < -2048 { level = -2048; } - if level > 2047 { level = 2047; } + level = level.clamp(-2048, 2047); } idx += run; validate!(idx < 64); diff --git a/nihav-indeo/src/codecs/yv92.rs b/nihav-indeo/src/codecs/yv92.rs index 22de5b0..c38ca35 100644 --- a/nihav-indeo/src/codecs/yv92.rs +++ b/nihav-indeo/src/codecs/yv92.rs @@ -75,7 +75,7 @@ impl YV92Decoder { if delta == ESCAPE { delta = br.read(8)? as u8; } - pred = ((i16::from(*top) - last_top + i16::from(pred)).max(0).min(255) as u8).wrapping_add(delta << 1); + pred = ((i16::from(*top) - last_top + i16::from(pred)).clamp(0, 255) as u8).wrapping_add(delta << 1); last_top = i16::from(*top); *dst = pred; *top = pred; diff --git a/nihav-itu/src/codecs/h264/cabac.rs b/nihav-itu/src/codecs/h264/cabac.rs index ae0d435..ac93982 100644 --- a/nihav-itu/src/codecs/h264/cabac.rs +++ b/nihav-itu/src/codecs/h264/cabac.rs @@ -634,7 +634,7 @@ fn decode_block(cabac: &mut CABAC, coeffs: &mut [i16], cat: usize, ctx_off: usiz 1 } else { let cur_ctx = 227 + coef_off + (coef_ctx + 2).max(5); - coef_ctx = (coef_ctx + 1).max(4).min(7); + coef_ctx = (coef_ctx + 1).clamp(4, 7); let mut coef = 2; while coef < 15 && cabac.decode_bit(cur_ctx) { @@ -703,7 +703,7 @@ fn decode_block8x8(cabac: &mut CABAC, coeffs: &mut [i16; 64], _cat: usize) { 1 } else { let cur_ctx = 426 + coef_off + (coef_ctx + 2).max(5); - coef_ctx = (coef_ctx + 1).max(4).min(7); + coef_ctx = (coef_ctx + 1).clamp(4, 7); let mut coef = 2; while coef < 15 && cabac.decode_bit(cur_ctx) { diff --git a/nihav-itu/src/codecs/h264/cabac_coder.rs b/nihav-itu/src/codecs/h264/cabac_coder.rs index c41928b..8e61272 100644 --- a/nihav-itu/src/codecs/h264/cabac_coder.rs +++ b/nihav-itu/src/codecs/h264/cabac_coder.rs @@ -20,7 +20,7 @@ pub struct CABAC<'a> { impl<'a> CABAC<'a> { fn calc_state(qp: u8, m: i8, n: i8) -> u8 { - let pre_ctx_state = (((i16::from(m) * i16::from(qp)) >> 4) + i16::from(n)).max(1).min(126) as u8; + let pre_ctx_state = (((i16::from(m) * i16::from(qp)) >> 4) + i16::from(n)).clamp(1, 126) as u8; if pre_ctx_state < 64 { 63 - pre_ctx_state } else { diff --git a/nihav-itu/src/codecs/h264/decoder_mt.rs b/nihav-itu/src/codecs/h264/decoder_mt.rs index e5a8cb5..1c2cb52 100644 --- a/nihav-itu/src/codecs/h264/decoder_mt.rs +++ b/nihav-itu/src/codecs/h264/decoder_mt.rs @@ -268,9 +268,9 @@ impl FrameDecoder { #[allow(clippy::cognitive_complexity)] fn handle_macroblock(&mut self, slice_hdr: &SliceHeader, mb_info: &mut CurrentMBInfo, refs: &SimplifiedSliceRefs, frm: &mut NASimpleVideoFrame) -> DecoderResult<()> { let qp_y = mb_info.qp_y; - let qpr = ((qp_y as i8) + self.pps.chroma_qp_index_offset).max(0).min(51) as usize; + let qpr = ((qp_y as i8) + self.pps.chroma_qp_index_offset).clamp(0, 51) as usize; let qp_u = CHROMA_QUANTS[qpr]; - let qpb = ((qp_y as i8) + self.pps.second_chroma_qp_index_offset).max(0).min(51) as usize; + let qpb = ((qp_y as i8) + self.pps.second_chroma_qp_index_offset).clamp(0, 51) as usize; let qp_v = CHROMA_QUANTS[qpb]; let tx_bypass = qp_y == 0 && self.sps.qpprime_y_zero_transform_bypass; diff --git a/nihav-itu/src/codecs/h264/decoder_st.rs b/nihav-itu/src/codecs/h264/decoder_st.rs index ce36d2a..dd57832 100644 --- a/nihav-itu/src/codecs/h264/decoder_st.rs +++ b/nihav-itu/src/codecs/h264/decoder_st.rs @@ -356,9 +356,9 @@ println!("PAFF?"); let pps = &self.pps[self.cur_pps]; let qp_y = mb_info.qp_y; - let qpr = ((qp_y as i8) + pps.chroma_qp_index_offset).max(0).min(51) as usize; + let qpr = ((qp_y as i8) + pps.chroma_qp_index_offset).clamp(0, 51) as usize; let qp_u = CHROMA_QUANTS[qpr]; - let qpb = ((qp_y as i8) + pps.second_chroma_qp_index_offset).max(0).min(51) as usize; + let qpb = ((qp_y as i8) + pps.second_chroma_qp_index_offset).clamp(0, 51) as usize; let qp_v = CHROMA_QUANTS[qpb]; let tx_bypass = qp_y == 0 && self.sps[self.cur_sps].qpprime_y_zero_transform_bypass; diff --git a/nihav-itu/src/codecs/h264/dsp/mc/mod.rs b/nihav-itu/src/codecs/h264/dsp/mc/mod.rs index 44f8a51..7f04518 100644 --- a/nihav-itu/src/codecs/h264/dsp/mc/mod.rs +++ b/nihav-itu/src/codecs/h264/dsp/mc/mod.rs @@ -30,7 +30,7 @@ module_selector! ( type MCFunc = fn (dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, h: usize); -fn clip_u8(val: i16) -> u8 { val.max(0).min(255) as u8 } +fn clip_u8(val: i16) -> u8 { val.clamp(0, 255) as u8 } trait RegisterSIMD { fn register_simd(&mut self); diff --git a/nihav-itu/src/codecs/h264/dsp/mod.rs b/nihav-itu/src/codecs/h264/dsp/mod.rs index 16af6de..3642d0f 100644 --- a/nihav-itu/src/codecs/h264/dsp/mod.rs +++ b/nihav-itu/src/codecs/h264/dsp/mod.rs @@ -264,7 +264,7 @@ pub fn add_coeffs(dst: &mut [u8], offset: usize, stride: usize, coeffs: &[i16]) let out = &mut dst[offset..][..stride * 3 + 4]; for (line, src) in out.chunks_mut(stride).take(4).zip(coeffs.chunks_exact(4)) { for (dst, src) in line.iter_mut().take(4).zip(src.iter()) { - *dst = (i32::from(*dst) + i32::from(*src)).max(0).min(255) as u8; + *dst = (i32::from(*dst) + i32::from(*src)).clamp(0, 255) as u8; } } } @@ -273,12 +273,12 @@ pub fn add_coeffs8(dst: &mut [u8], offset: usize, stride: usize, coeffs: &[i16; let out = &mut dst[offset..]; for (line, src) in out.chunks_mut(stride).take(8).zip(coeffs.chunks_exact(8)) { for (dst, src) in line.iter_mut().take(8).zip(src.iter()) { - *dst = (i32::from(*dst) + i32::from(*src)).max(0).min(255) as u8; + *dst = (i32::from(*dst) + i32::from(*src)).clamp(0, 255) as u8; } } } -fn clip8(val: i16) -> u8 { val.max(0).min(255) as u8 } +fn clip8(val: i16) -> u8 { val.clamp(0, 255) as u8 } fn ipred_dc128(buf: &mut [u8], stride: usize, bsize: usize) { for row in buf.chunks_mut(stride).take(bsize) { diff --git a/nihav-itu/src/codecs/h264/loopfilter.rs b/nihav-itu/src/codecs/h264/loopfilter.rs index 0890f30..feba5e1 100644 --- a/nihav-itu/src/codecs/h264/loopfilter.rs +++ b/nihav-itu/src/codecs/h264/loopfilter.rs @@ -32,7 +32,7 @@ const TC0: [[u8; 3]; 52] = [ ]; fn get_lf_idx(qp0: u8, qp1: u8, off: i8) -> usize { - (i16::from((qp0 + qp1 + 1) >> 1) + i16::from(off)).max(0).min(51) as usize + (i16::from((qp0 + qp1 + 1) >> 1) + i16::from(off)).clamp(0, 51) as usize } macro_rules! filter_edge_func { diff --git a/nihav-itu/src/codecs/h264/mb_recon.rs b/nihav-itu/src/codecs/h264/mb_recon.rs index d8e51f3..4cafcbb 100644 --- a/nihav-itu/src/codecs/h264/mb_recon.rs +++ b/nihav-itu/src/codecs/h264/mb_recon.rs @@ -436,10 +436,10 @@ fn get_weights(slice_hdr: &SliceHeader, frame_refs: &SimplifiedSliceRefs, mode: return (DEF_WEIGHT_INFO, DEF_WEIGHT_INFO); } - let td = (i32::from(r1_poc) - i32::from(r0_poc)).max(-128).min(127); + let td = (i32::from(r1_poc) - i32::from(r0_poc)).clamp(-128, 127); let tx = (16384 + (td / 2).abs()) / td; - let tb = (i32::from(cur_id) - i32::from(r0_poc)).max(-128).min(127); - let scale = ((tb * tx + 32) >> 6).max(-1024).min(1023); + let tb = (i32::from(cur_id) - i32::from(r0_poc)).clamp(-128, 127); + let scale = ((tb * tx + 32) >> 6).clamp(-1024, 1023); if scale == 128 || (scale >> 2) < -64 || (scale >> 2) > 128 { return (DEF_WEIGHT_INFO, DEF_WEIGHT_INFO); } diff --git a/nihav-itu/src/codecs/h264/test/conformance.rs b/nihav-itu/src/codecs/h264/test/conformance.rs index 9cd7088..0e28914 100644 --- a/nihav-itu/src/codecs/h264/test/conformance.rs +++ b/nihav-itu/src/codecs/h264/test/conformance.rs @@ -78,7 +78,7 @@ const MMCO_TEST_STREAMS: &[(&str, [u32; 4])] = &[ ("MR1_BT_A.h264", [0x617BF915, 0x48E89440, 0xC899A917, 0xC73CF171]), ("MR2_TANDBERG_E.264", [0x69C17B20, 0xDF6E89E6, 0x82BD82F1, 0x93B6D282]), ("MR3_TANDBERG_B.264", [0xC8AAC175, 0xE5E73C68, 0x87EE02FF, 0x6DEA0F64]), - ("MR4_TANDBERG_C.264", [0xA40042BC, 0xAB00C341, 0xA9651725, 0x46d31A2C]), + ("MR4_TANDBERG_C.264", [0xA40042BC, 0xAB00C341, 0xA9651725, 0x46D31A2C]), ("MR5_TANDBERG_C.264", [0x999EAE2E, 0x016DB374, 0x708B00E4, 0x335AE723]), ("MR1_MW_A.264", [0xDD56DC8E, 0x403B18EC, 0x57EB5B3A, 0xD834FFDE]), ("MR2_MW_A.264", [0xE1E93E65, 0x96AF2EFD, 0x0E7D0FE5, 0x94D5BE85]), diff --git a/nihav-itu/src/codecs/h264/test/raw_demux.rs b/nihav-itu/src/codecs/h264/test/raw_demux.rs index ba6ff6e..0e92a95 100644 --- a/nihav-itu/src/codecs/h264/test/raw_demux.rs +++ b/nihav-itu/src/codecs/h264/test/raw_demux.rs @@ -112,7 +112,7 @@ impl<'a> DemuxCore<'a> for RawH264Demuxer<'a> { let vhdr = NAVideoInfo::new(width, height, false, YUV420_FORMAT); let vinfo = NACodecInfo::new("h264", NACodecTypeInfo::Video(vhdr), Some(edata)); - if let None = strmgr.add_stream(NAStream::new(StreamType::Video, 0, vinfo, 1, 25, 0)) { + if strmgr.add_stream(NAStream::new(StreamType::Video, 0, vinfo, 1, 25, 0)).is_none() { return Err(DemuxerError::InvalidData); } self.cur_frame = 0; diff --git a/nihav-itu/src/codecs/h264/types.rs b/nihav-itu/src/codecs/h264/types.rs index 577cefe..9619e06 100644 --- a/nihav-itu/src/codecs/h264/types.rs +++ b/nihav-itu/src/codecs/h264/types.rs @@ -843,13 +843,13 @@ impl SliceState { }; let (col_ref, r0_long) = frame_refs.map_ref0(r0_poc); if temporal_mv { - let td = (i32::from(r1_poc) - i32::from(r0_poc)).max(-128).min(127); + let td = (i32::from(r1_poc) - i32::from(r0_poc)).clamp(-128, 127); if r0_long || td == 0 { (col_mv, col_ref, ZERO_MV, ZERO_REF) } else { let tx = (16384 + (td / 2).abs()) / td; - let tb = (i32::from(cur_id) - i32::from(r0_poc)).max(-128).min(127); - let scale = ((tb * tx + 32) >> 6).max(-1024).min(1023); + let tb = (i32::from(cur_id) - i32::from(r0_poc)).clamp(-128, 127); + let scale = ((tb * tx + 32) >> 6).clamp(-1024, 1023); let mv0 = MV { x: ((i32::from(col_mv.x) * scale + 128) >> 8) as i16, y: ((i32::from(col_mv.y) * scale + 128) >> 8) as i16, diff --git a/nihav-llaudio/src/codecs/apepred.rs b/nihav-llaudio/src/codecs/apepred.rs index c635059..95b4b88 100644 --- a/nihav-llaudio/src/codecs/apepred.rs +++ b/nihav-llaudio/src/codecs/apepred.rs @@ -196,7 +196,7 @@ impl NFilterContext { let pred = (sum + (1 << (self.bits - 1))) >> self.bits; let val = *el + pred; *el = val; - self.buf[delay_pos] = val.min(32767).max(-32768) as i16; + self.buf[delay_pos] = val.clamp(-32768, 32767) as i16; if self.new { let aval = val.abs(); let sign = val2sign(val) as i16; diff --git a/nihav-llaudio/src/codecs/flacenc.rs b/nihav-llaudio/src/codecs/flacenc.rs index 3b99294..e1e8958 100644 --- a/nihav-llaudio/src/codecs/flacenc.rs +++ b/nihav-llaudio/src/codecs/flacenc.rs @@ -403,14 +403,14 @@ impl NAEncoder for FLACEncoder { NACodecTypeInfo::Video(_) => Err(EncoderError::FormatError), NACodecTypeInfo::Audio(ainfo) => { let mut outinfo = ainfo; - outinfo.channels = outinfo.channels.max(1).min(8); + outinfo.channels = outinfo.channels.clamp(1, 8); if outinfo.format != SND_S16P_FORMAT && outinfo.format != SND_S16_FORMAT { outinfo.format = SND_S16P_FORMAT; } if outinfo.block_len == 0 { outinfo.block_len = DEFAULT_BLOCK_LEN; } - outinfo.block_len = outinfo.block_len.max(2).min(65535); + outinfo.block_len = outinfo.block_len.clamp(2, 65535); let mut ofmt = *encinfo; ofmt.format = NACodecTypeInfo::Audio(outinfo); Ok(ofmt) diff --git a/nihav-misc/src/codecs/motionpixels/data.rs b/nihav-misc/src/codecs/motionpixels/data.rs index 2cdaf77..e16b157 100644 --- a/nihav-misc/src/codecs/motionpixels/data.rs +++ b/nihav-misc/src/codecs/motionpixels/data.rs @@ -4,18 +4,18 @@ pub trait MVClipPixel { } impl MVClipPixel for i8 { - fn clip_y(self) -> Self { self.max(0).min(31) } - fn clip_c(self) -> Self { self.max(-31).min(31) } + fn clip_y(self) -> Self { self.clamp(0, 31) } + fn clip_c(self) -> Self { self.clamp(-31, 31) } } impl MVClipPixel for i16 { - fn clip_y(self) -> Self { self.max(0).min(31) } - fn clip_c(self) -> Self { self.max(-31).min(31) } + fn clip_y(self) -> Self { self.clamp(0, 31) } + fn clip_c(self) -> Self { self.clamp(-31, 31) } } impl MVClipPixel for i32 { - fn clip_y(self) -> Self { self.max(0).min(31) } - fn clip_c(self) -> Self { self.max(-31).min(31) } + fn clip_y(self) -> Self { self.clamp(0, 31) } + fn clip_c(self) -> Self { self.clamp(-31, 31) } } #[derive(Clone,Copy,Debug,Default)] @@ -102,7 +102,7 @@ void main() { printf("];\n"); } */ -const RGB2YUV: [YuvPixel; 32768] = [ +static RGB2YUV: [YuvPixel; 32768] = [ pix!( 0, -1, -1), pix!( 0, 2, -1), pix!( 0, 3, -1), pix!( 0, 4, -1), pix!( 0, 5, -1), pix!( 0, 6, -1), pix!( 0, 7, -1), pix!( 1, 7, -2), pix!( 1, 8, -2), pix!( 1, 10, -2), pix!( 1, 11, -2), pix!( 1, 12, -2), diff --git a/nihav-misc/src/codecs/mwv1.rs b/nihav-misc/src/codecs/mwv1.rs index 532b892..ac1e25a 100644 --- a/nihav-misc/src/codecs/mwv1.rs +++ b/nihav-misc/src/codecs/mwv1.rs @@ -88,7 +88,7 @@ fn decode_band(br: &mut BitReader, cb: &Codebook, dst: &mut [f32], w: usize, esc + 0x8FC } }, - 0xFC | 0xFD | 0xFE | 0xFF => { + 0xFC..=0xFF => { zero_run = u32::from(val - 0xFC); if zero_skip { continue; @@ -242,7 +242,7 @@ impl MWV1Decoder { let dst = &mut frm.data[frm.offset[plane]..]; for (drow, srow) in dst.chunks_mut(frm.stride[plane]).zip(self.plane[plane].chunks(self.stride[plane])) { for (dst, &src) in drow.iter_mut().zip(srow.iter()) { - *dst = (src + 128.0).max(0.0).min(255.0) as u8; + *dst = (src + 128.0).clamp(0.0, 255.0) as u8; } } } diff --git a/nihav-misc/src/codecs/pgvv.rs b/nihav-misc/src/codecs/pgvv.rs index 21e15bd..7d27fe2 100644 --- a/nihav-misc/src/codecs/pgvv.rs +++ b/nihav-misc/src/codecs/pgvv.rs @@ -121,7 +121,7 @@ fn idct(blk: &mut [i16; 64]) { fn put_block(blk: &[i16; 64], dst: &mut [u8], stride: usize) { for (drow, srow) in dst.chunks_mut(stride).zip(blk.chunks(8)) { for (del, &pix) in drow.iter_mut().zip(srow.iter()) { - *del = pix.max(0).min(255) as u8; + *del = pix.clamp(0, 255) as u8; } } } @@ -449,8 +449,8 @@ impl NADecoder for RadiusStudioDecoder { ]; for (i, (&luma_q, &chroma_q)) in DEF_LUMA_QUANT.iter().zip(DEF_CHROMA_QUANT.iter()).enumerate() { - self.quant[0][ZIGZAG[i]] = ((i16::from(quant) * i16::from(luma_q) + 25) / 50).max(1).min(255); - self.quant[1][ZIGZAG[i]] = ((i16::from(quant) * i16::from(chroma_q) + 25) / 50).max(1).min(255); + self.quant[0][ZIGZAG[i]] = ((i16::from(quant) * i16::from(luma_q) + 25) / 50).clamp(1, 255); + self.quant[1][ZIGZAG[i]] = ((i16::from(quant) * i16::from(chroma_q) + 25) / 50).clamp(1, 255); } if let Some(buf) = bufinfo.get_vbuf() { diff --git a/nihav-misc/src/codecs/tealvid.rs b/nihav-misc/src/codecs/tealvid.rs index e37ec8d..a301753 100644 --- a/nihav-misc/src/codecs/tealvid.rs +++ b/nihav-misc/src/codecs/tealvid.rs @@ -572,7 +572,7 @@ mod test { } } -const MVS: [(i8, i8); 225] = [ +static MVS: [(i8, i8); 225] = [ ( 0,-16), ( 3,-16), ( -6,-14), ( 6,-14), ( -2,-13), ( 0,-13), ( 2,-13), @@ -606,7 +606,7 @@ const MVS: [(i8, i8); 225] = [ ( -3, 16) ]; -const PATTERNS: [u64; 256] = [ +static PATTERNS: [u64; 256] = [ 0x0000000080808000, 0x0000008080808000, 0x0000808080808000, 0x0080808080808000, 0xC080808080808000, 0xE0C0C0C080808000, 0xF0E0E0C0C0808000, 0xF8F0E0E0C0808000, 0xFCF8F0E0C0808000, 0xFEFCF8F0E0C08000, 0xFFFFFEFCF8E0C000, 0xFFFFFFFEFCF0C000, @@ -673,7 +673,7 @@ const PATTERNS: [u64; 256] = [ 0x0000000000000070, 0x55AA55AA55AA55AA, 0xE7E7E7E7E7E7E7E7, 0xFFFFFF0000FFFFFF ]; -const BLOCK4_PATTERNS: [u16; 256] = [ +static BLOCK4_PATTERNS: [u16; 256] = [ 0x0008, 0x00FF, 0x0FFF, 0x7FFF, 0x37FF, 0xFEC8, 0xFFEC, 0xFFFE, 0xEEEE, 0xCCCC, 0xCCC8, 0x07FF, 0xEEC8, 0xEEEC, 0x0088, 0x0080, 0x0FF0, 0xFFF0, 0x7FF0, 0xEC80, 0xFEC0, 0xFFE0, 0xFFF0, 0xFFF1, @@ -708,7 +708,7 @@ const BLOCK4_PATTERNS: [u16; 256] = [ 0x0066, 0x0466, 0x0EE0, 0x0020, 0xA954, 0x6561, 0x6C50, 0x6E74 ]; -const RGB_TAB: [[u16; 32768]; 2] = [ +static RGB_TAB: [[u16; 32768]; 2] = [ [ 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, 0x0000, diff --git a/nihav-mpeg/src/codecs/aac/mod.rs b/nihav-mpeg/src/codecs/aac/mod.rs index 5adbc07..0dd7a89 100644 --- a/nihav-mpeg/src/codecs/aac/mod.rs +++ b/nihav-mpeg/src/codecs/aac/mod.rs @@ -276,7 +276,7 @@ impl ICS { let mut bottom = self.get_num_bands(); for f in 0..tns_data.n_filt[w] { let top = bottom; - bottom = if top >= tns_data.coeffs[w][f].length { top - tns_data.coeffs[w][f].length } else { 0 }; + bottom = top.saturating_sub(tns_data.coeffs[w][f].length); let order = tns_data.coeffs[w][f].order; if order == 0 { continue; } let start = w * 128 + self.get_band_start(tns_max_bands.min(bottom)); diff --git a/nihav-mpeg/src/codecs/aac/sbr/synth.rs b/nihav-mpeg/src/codecs/aac/sbr/synth.rs index 6d326bd..f6ee371 100644 --- a/nihav-mpeg/src/codecs/aac/sbr/synth.rs +++ b/nihav-mpeg/src/codecs/aac/sbr/synth.rs @@ -349,7 +349,6 @@ impl SBRChannel { match self.qmode { QuantMode::Single => { for (env_no, &env_end) in self.env_border[1..=self.num_env].iter().enumerate() { - let env_end = env_end; let mut noise_env_no = 0; for nenv in 0..self.num_noise { if (start >= noise_env[nenv]) && (env_end <= noise_env[nenv + 1]) { @@ -370,7 +369,6 @@ impl SBRChannel { }, QuantMode::Left => { for (env_no, &env_end) in self.env_border[1..=self.num_env].iter().enumerate() { - let env_end = env_end; let mut noise_env_no = 0; for nenv in 0..self.num_noise { if (start >= noise_env[nenv]) && (env_end <= noise_env[nenv + 1]) { @@ -391,7 +389,6 @@ impl SBRChannel { }, QuantMode::Right => { for (env_no, &env_end) in self.env_border[1..=self.num_env].iter().enumerate() { - let env_end = env_end; let mut noise_env_no = 0; for nenv in 0..self.num_noise { if (start >= noise_env[nenv]) && (env_end <= noise_env[nenv + 1]) { diff --git a/nihav-mpeg/src/codecs/mpeg4asp/dsp.rs b/nihav-mpeg/src/codecs/mpeg4asp/dsp.rs index 80d8ef2..7db0b74 100644 --- a/nihav-mpeg/src/codecs/mpeg4asp/dsp.rs +++ b/nihav-mpeg/src/codecs/mpeg4asp/dsp.rs @@ -93,7 +93,7 @@ trait Clip8 { } impl Clip8 for i16 { - fn clip8(self) -> u8 { self.max(0).min(255) as u8 } + fn clip8(self) -> u8 { self.clamp(0, 255) as u8 } } trait ClipCoef { @@ -101,7 +101,7 @@ trait ClipCoef { } impl ClipCoef for i32 { - fn clip_coef(self) -> i16 { self.max(-2048).min(2047) as i16 } + fn clip_coef(self) -> i16 { self.clamp(-2048, 2047) as i16 } } pub fn get_dc_scales(quant: u8) -> [u8; 2] { diff --git a/nihav-mpeg/src/codecs/mpeg4asp/types.rs b/nihav-mpeg/src/codecs/mpeg4asp/types.rs index ddb9e26..28ff0c3 100644 --- a/nihav-mpeg/src/codecs/mpeg4asp/types.rs +++ b/nihav-mpeg/src/codecs/mpeg4asp/types.rs @@ -290,19 +290,19 @@ impl PredState { 0..=3 => { let cur_addr = mb_x * 2 + (n & 1) + (n / 2) * self.y_dc.stride; let (diff, dir) = Self::dc_pred(&self.y_dc, cur_addr); - let dc = ((cur_dc + (diff + i16::from(dc_scale >> 1)) / i16::from(dc_scale)) * i16::from(dc_scale)).max(-2048).min(2047); + let dc = ((cur_dc + (diff + i16::from(dc_scale >> 1)) / i16::from(dc_scale)) * i16::from(dc_scale)).clamp(-2048, 2047); self.y_dc.data[self.y_dc.xpos + cur_addr] = dc; (dc, dir) }, 4 => { let (diff, dir) = Self::dc_pred(&self.u_dc, mb_x); - let dc = ((cur_dc + (diff + i16::from(dc_scale >> 1)) / i16::from(dc_scale)) * i16::from(dc_scale)).max(-2048).min(2047); + let dc = ((cur_dc + (diff + i16::from(dc_scale >> 1)) / i16::from(dc_scale)) * i16::from(dc_scale)).clamp(-2048, 2047); self.u_dc.data[self.u_dc.xpos + mb_x] = dc; (dc, dir) }, 5 => { let (diff, dir) = Self::dc_pred(&self.v_dc, mb_x); - let dc = ((cur_dc + (diff + i16::from(dc_scale >> 1)) / i16::from(dc_scale)) * i16::from(dc_scale)).max(-2048).min(2047); + let dc = ((cur_dc + (diff + i16::from(dc_scale >> 1)) / i16::from(dc_scale)) * i16::from(dc_scale)).clamp(-2048, 2047); self.v_dc.data[self.v_dc.xpos + mb_x] = dc; (dc, dir) }, diff --git a/nihav-mpeg/src/codecs/mpegaudio/mp3code.rs b/nihav-mpeg/src/codecs/mpegaudio/mp3code.rs index 2ee78e5..a3e77cd 100644 --- a/nihav-mpeg/src/codecs/mpegaudio/mp3code.rs +++ b/nihav-mpeg/src/codecs/mpegaudio/mp3code.rs @@ -263,7 +263,7 @@ impl MP3Data { - 8 * i32::from(sblk_gain) - if gr.scalefac_scale { 4 } else { 2 } * (i32::from(gr.scalefac[ssb]) + if gr.preflag { i32::from(MP3_PREEMP_SCALES[sb]) } else { 0 }) - ).min(127).max(-124) as i8 + ).clamp(-124, 127) as i8 } fn read_mp3_coeffs(&mut self, br: &mut BitReader, end: usize, gr_no: usize, ch: usize, coeffs: &mut [f32]) -> DecoderResult<()> { let mut scales = [0; SAMPLES / 2]; diff --git a/nihav-ms/src/codecs/msadpcm.rs b/nihav-ms/src/codecs/msadpcm.rs index 7cb6a78..e37b6f8 100644 --- a/nihav-ms/src/codecs/msadpcm.rs +++ b/nihav-ms/src/codecs/msadpcm.rs @@ -24,7 +24,7 @@ impl Predictor { fn expand_nibble(&mut self, nibble: u8) -> i16 { let mul = if (nibble & 8) == 0 { i32::from(nibble) } else { i32::from(nibble) - 16 }; let pred = self.calc_pred() + self.delta.wrapping_mul(mul); - self.update(pred.max(-0x8000).min(0x7FFF)); + self.update(pred.clamp(-0x8000, 0x7FFF)); self.delta = (ADAPT_TABLE[nibble as usize].wrapping_mul(self.delta) >> 8).max(16); self.sample1 as i16 } @@ -294,7 +294,7 @@ impl MSADPCMEncoder { dist } fn calculate_mul(delta: i32, diff: i32) -> u8 { - ((diff / delta).max(-8).min(7) & 0xF) as u8 + ((diff / delta).clamp(-8, 7) & 0xF) as u8 } fn calc_block_size(nsamps: usize, channels: usize) -> usize { (nsamps - 2) * channels / 2 + 7 * channels diff --git a/nihav-qt/src/codecs/mace.rs b/nihav-qt/src/codecs/mace.rs index 460dca9..6ee1ad9 100644 --- a/nihav-qt/src/codecs/mace.rs +++ b/nihav-qt/src/codecs/mace.rs @@ -19,7 +19,7 @@ fn clip(val: i32) -> i16 { } fn to_sample(val: i32) -> u8 { - ((val >> 8) + 128).max(0).min(255) as u8 + ((val >> 8) + 128).clamp(0, 255) as u8 } impl ChannelPredictor { diff --git a/nihav-qt/src/codecs/svq1.rs b/nihav-qt/src/codecs/svq1.rs index 1fd52e3..431a049 100644 --- a/nihav-qt/src/codecs/svq1.rs +++ b/nihav-qt/src/codecs/svq1.rs @@ -226,7 +226,7 @@ impl SVQ1Decoder { } for (dline, sline) in dst[off..].chunks_mut(dstride).zip(blk.chunks_exact(w)).take(h) { for (dst, &src) in dline.iter_mut().zip(sline.iter()) { - *dst = src.max(0).min(255) as u8; + *dst = src.clamp(0, 255) as u8; } } } else { @@ -295,7 +295,7 @@ impl SVQ1Decoder { for (dline, sline) in dst[off..].chunks_mut(dstride).zip(blk.chunks_exact(w)).take(h) { for (dst, &src) in dline.iter_mut().zip(sline.iter()) { - *dst = src.max(0).min(255) as u8; + *dst = src.clamp(0, 255) as u8; } } } diff --git a/nihav-qt/src/codecs/svq3.rs b/nihav-qt/src/codecs/svq3.rs index 9951cd2..e773349 100644 --- a/nihav-qt/src/codecs/svq3.rs +++ b/nihav-qt/src/codecs/svq3.rs @@ -1090,7 +1090,7 @@ impl NADecoder for SVQ3Decoder { } fn decode(&mut self, supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult { let src = pkt.get_buffer(); - validate!(src.len() > 0); + validate!(!src.is_empty()); if src.len() == 1 { validate!(src[0] == 0xFF); diff --git a/nihav-qt/src/codecs/svq3dsp.rs b/nihav-qt/src/codecs/svq3dsp.rs index b97ea16..002d117 100644 --- a/nihav-qt/src/codecs/svq3dsp.rs +++ b/nihav-qt/src/codecs/svq3dsp.rs @@ -128,7 +128,7 @@ pub fn add_coeffs(dst: &mut [u8], offset: usize, stride: usize, coeffs: &[i16]) let out = &mut dst[offset..][..stride * 3 + 4]; for (line, src) in out.chunks_mut(stride).take(4).zip(coeffs.chunks(4)) { for (dst, src) in line.iter_mut().take(4).zip(src.iter()) { - *dst = (i32::from(*dst) + i32::from(*src)).max(0).min(255) as u8; + *dst = (i32::from(*dst) + i32::from(*src)).clamp(0, 255) as u8; } } } @@ -142,7 +142,7 @@ pub fn avg(dst: &mut [u8], dstride: usize, } } -fn clip8(val: i16) -> u8 { val.max(0).min(255) as u8 } +fn clip8(val: i16) -> u8 { val.clamp(0, 255) as u8 } fn ipred_dc128(buf: &mut [u8], mut idx: usize, stride: usize, bsize: usize) { for _ in 0..bsize { diff --git a/nihav-rad/src/codecs/bink2.rs b/nihav-rad/src/codecs/bink2.rs index 69d3c46..eb1c0b4 100644 --- a/nihav-rad/src/codecs/bink2.rs +++ b/nihav-rad/src/codecs/bink2.rs @@ -109,7 +109,7 @@ fn bink2_idct_old(coeffs: &mut [f32; 64]) { struct Bink2DSP { } fn clip8(val: i32) -> u8 { - val.min(255).max(0) as u8 + val.clamp(0, 255) as u8 } macro_rules! el { diff --git a/nihav-rad/src/codecs/binkaudenc.rs b/nihav-rad/src/codecs/binkaudenc.rs index b8a03ab..7ee54ee 100644 --- a/nihav-rad/src/codecs/binkaudenc.rs +++ b/nihav-rad/src/codecs/binkaudenc.rs @@ -388,7 +388,7 @@ impl NAEncoder for BinkAudioEncoder { NACodecTypeInfo::Video(_) => Err(EncoderError::FormatError), NACodecTypeInfo::Audio(ainfo) => { let mut outinfo = ainfo; - outinfo.channels = if !self.use_dct { 2 } else { ainfo.channels.min(2).max(1) }; + outinfo.channels = if !self.use_dct { 2 } else { ainfo.channels.clamp(1, 2) }; outinfo.format = SND_F32P_FORMAT; let mut ofmt = *encinfo; ofmt.format = NACodecTypeInfo::Audio(outinfo); diff --git a/nihav-realmedia/src/codecs/cook.rs b/nihav-realmedia/src/codecs/cook.rs index 405b3fb..c360145 100644 --- a/nihav-realmedia/src/codecs/cook.rs +++ b/nihav-realmedia/src/codecs/cook.rs @@ -356,7 +356,7 @@ impl CookChannelPair { } else { pos >>= 1; } - let ipos = ((pos as i8) - 1).max(0).min(12); + let ipos = ((pos as i8) - 1).clamp(0, 12); let cb = &codebooks.quant_cb[ipos as usize]; self.qindex[i] = (br.read_cb(cb)? as i8) + self.qindex[i - 1] - 12; validate!((self.qindex[i] >= -63) && (self.qindex[i] <= 63)); diff --git a/nihav-realmedia/src/codecs/cookenc.rs b/nihav-realmedia/src/codecs/cookenc.rs index 19f1a88..fa26ad2 100644 --- a/nihav-realmedia/src/codecs/cookenc.rs +++ b/nihav-realmedia/src/codecs/cookenc.rs @@ -298,7 +298,7 @@ fn calc_qindex(nrg: f32) -> i8 { } else { nrg0 *= std::f32::consts::SQRT_2; } - nrg0.log2().max(-31.0).min(47.0) as i8 + nrg0.log2().clamp(-31.0, 47.0) as i8 } impl CookChannelPair { @@ -357,7 +357,7 @@ impl CookChannelPair { if params.js_bits == 0 { for (i, qscale) in qindex[..total_bands].iter_mut().enumerate().skip(1) { let cb_idx = (i - 1).min(12); - let diff = (*qscale - last_q).max(-12).min(11); + let diff = (*qscale - last_q).clamp(-12, 11); *qscale = last_q + diff; last_q = *qscale; @@ -368,7 +368,7 @@ impl CookChannelPair { for (i, qscale) in qindex[..total_bands].iter_mut().enumerate().skip(1) { let band_no = if i < params.js_start * 2 { i >> 1 } else { i - params.js_start }; let cb_idx = band_no.saturating_sub(1).min(12); - let diff = (*qscale - last_q).max(-12).min(11); + let diff = (*qscale - last_q).clamp(-12, 11); *qscale = last_q + diff; last_q = *qscale; diff --git a/nihav-realmedia/src/codecs/ra144.rs b/nihav-realmedia/src/codecs/ra144.rs index f3237e7..ffe847c 100644 --- a/nihav-realmedia/src/codecs/ra144.rs +++ b/nihav-realmedia/src/codecs/ra144.rs @@ -232,7 +232,7 @@ fn eval_reflection(coeffs: &[i16; LPC_ORDER]) -> Option { } fn clip_out(sample: i16) -> i16 { - sample.max(-16384 >> 2).min(16383 >> 2) + sample.clamp(-16384 >> 2, 16383 >> 2) } impl NADecoder for RA144Decoder { diff --git a/nihav-realmedia/src/codecs/ra288.rs b/nihav-realmedia/src/codecs/ra288.rs index 1774ff5..aab2180 100644 --- a/nihav-realmedia/src/codecs/ra288.rs +++ b/nihav-realmedia/src/codecs/ra288.rs @@ -129,7 +129,7 @@ impl RA288Decoder { let sum = self.gain_hist[GAIN_START..].iter().rev() .zip(self.gain_lpc.iter()) .fold(32.0f32, |acc, (&a, &b)| acc - a * b) - .max(0.0).min(60.0); + .clamp(0.0, 60.0); let scale = (sum * 0.1151292546497).exp() * gain * (1.0 / ((1 << 23) as f32)); let mut buf: [f32; BLOCKSIZE] = [0.0; BLOCKSIZE]; diff --git a/nihav-realmedia/src/codecs/ralf.rs b/nihav-realmedia/src/codecs/ralf.rs index ac34797..4203655 100644 --- a/nihav-realmedia/src/codecs/ralf.rs +++ b/nihav-realmedia/src/codecs/ralf.rs @@ -207,7 +207,7 @@ impl Channel { let code_params = br.read_cb(&cset.coding_mode_cb).unwrap(); let (add_bits, range, range2, codes_cb) = if code_params >= 15 { - let mut add_bits = ((code_params / 5 - 3) / 2).max(0).min(10) as u8; + let mut add_bits = ((code_params / 5 - 3) / 2).clamp(0, 10) as u8; if add_bits > 9 && ((code_params % 5) != 2) { add_bits -= 1; } @@ -507,7 +507,7 @@ const RALF_FILTER_COEFFS_LEN: usize = 43; const RALF_SHORT_CODES_LEN: usize = 169; const RALF_LONG_CODES_LEN: usize = 441; -const RALF_FILTER_PARAM_TAB: [[u8; 324]; 3] = [ +static RALF_FILTER_PARAM_TAB: [[u8; 324]; 3] = [ [ 0x48, 0x86, 0x66, 0x8A, 0xBB, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, @@ -595,7 +595,7 @@ const RALF_FILTER_PARAM_TAB: [[u8; 324]; 3] = [ ] ]; -const RALF_BIAS_TAB: [[u8; 128]; 3] = [ +static RALF_BIAS_TAB: [[u8; 128]; 3] = [ [ 0x4A, 0xAA, 0xAA, 0xAA, 0xBA, 0xBA, 0xBA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAB, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0x9A, 0xA9, 0xA9, @@ -635,7 +635,7 @@ const RALF_BIAS_TAB: [[u8; 128]; 3] = [ ] ]; -const RALF_CODING_MODE_TAB: [[u8; 72]; 3] = [ +static RALF_CODING_MODE_TAB: [[u8; 72]; 3] = [ [ 0xAA, 0x99, 0xAC, 0xB9, 0xBD, 0xAA, 0x7A, 0xA8, 0xA8, 0xA8, 0x79, 0x79, 0x77, 0xA8, 0x97, 0x79, 0x89, 0x77, 0x87, 0x87, 0x68, 0x78, 0x66, 0x86, @@ -660,7 +660,7 @@ const RALF_CODING_MODE_TAB: [[u8; 72]; 3] = [ ] ]; -const RALF_FILTER_COEFFS_TAB: [[[[u8; 24]; 11]; 10]; 3] = [ +static RALF_FILTER_COEFFS_TAB: [[[[u8; 24]; 11]; 10]; 3] = [ [ [ [ @@ -2049,7 +2049,7 @@ const RALF_FILTER_COEFFS_TAB: [[[[u8; 24]; 11]; 10]; 3] = [ ], ]; -const RALF_SHORT_CODES_TAB: [[[u8; 88]; 15]; 3] = [ +static RALF_SHORT_CODES_TAB: [[[u8; 88]; 15]; 3] = [ [ [ 0xDF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD, 0xCF, 0xFF, @@ -2508,7 +2508,7 @@ const RALF_SHORT_CODES_TAB: [[[u8; 88]; 15]; 3] = [ ], ]; -const RALF_LONG_CODES_TAB: [[[u8; 224]; 125]; 3] = [ +static RALF_LONG_CODES_TAB: [[[u8; 224]; 125]; 3] = [ [ [ 0xBE, 0xED, 0xDD, 0xDD, 0xDD, 0xDD, 0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, diff --git a/nihav-realmedia/src/codecs/rv10.rs b/nihav-realmedia/src/codecs/rv10.rs index 9eca2a9..8992a13 100644 --- a/nihav-realmedia/src/codecs/rv10.rs +++ b/nihav-realmedia/src/codecs/rv10.rs @@ -187,8 +187,7 @@ impl<'a> RealVideo10BR<'a> { } else { level = (level * q) - q_add; } - if level < -2048 { level = -2048; } - if level > 2047 { level = 2047; } + level = level.clamp(-2048, 2047); } idx += run; validate!(idx < 64); diff --git a/nihav-realmedia/src/codecs/rv20.rs b/nihav-realmedia/src/codecs/rv20.rs index 8c83760..be4fdba 100644 --- a/nihav-realmedia/src/codecs/rv20.rs +++ b/nihav-realmedia/src/codecs/rv20.rs @@ -287,8 +287,7 @@ impl<'a> RealVideo20BR<'a> { } else { level = (level * q) - q_add; } - if level < -2048 { level = -2048; } - if level > 2047 { level = 2047; } + level = level.clamp(-2048, 2047); } idx += run; validate!(idx < 64); diff --git a/nihav-realmedia/src/codecs/rv40enc/dsp/blk.rs b/nihav-realmedia/src/codecs/rv40enc/dsp/blk.rs index 192cf72..e72d466 100644 --- a/nihav-realmedia/src/codecs/rv40enc/dsp/blk.rs +++ b/nihav-realmedia/src/codecs/rv40enc/dsp/blk.rs @@ -62,7 +62,7 @@ impl BlockOps for Block { for (i, el) in self.coeffs.iter_mut().enumerate() { if *el != 0 { let q = if matches!(i, 0 | 1 | 4) { q_dc } else { q_ac }; - *el = (i32::from(*el) * 16 / q).max(-511).min(511) as i16; + *el = (i32::from(*el) * 16 / q).clamp(-511, 511) as i16; } } } diff --git a/nihav-realmedia/src/codecs/rv40enc/dsp/ipred.rs b/nihav-realmedia/src/codecs/rv40enc/dsp/ipred.rs index aac1c1b..f63d6c9 100644 --- a/nihav-realmedia/src/codecs/rv40enc/dsp/ipred.rs +++ b/nihav-realmedia/src/codecs/rv40enc/dsp/ipred.rs @@ -50,7 +50,7 @@ impl IntraPred16x16 { for line in dst.chunks_mut(stride).take(16) { let mut oval = a; for el in line[..16].iter_mut() { - *el = (oval >> 5).max(0).min(255) as u8; + *el = (oval >> 5).clamp(0, 255) as u8; oval += b; } a += c; diff --git a/nihav-realmedia/src/codecs/rv40enc/mb_coding.rs b/nihav-realmedia/src/codecs/rv40enc/mb_coding.rs index b3b3025..605f2eb 100644 --- a/nihav-realmedia/src/codecs/rv40enc/mb_coding.rs +++ b/nihav-realmedia/src/codecs/rv40enc/mb_coding.rs @@ -755,7 +755,7 @@ impl MacroblockDecider { let mut dist = 0u32; for (diffs, (pred, refsrc)) in blk.coeffs.chunks(4).zip(pred.chunks(stride).zip(refsrc.chunks(stride))) { for (&diff, (&p, &r)) in diffs.iter().zip(pred.iter().zip(refsrc.iter())) { - let new = (i32::from(p) + i32::from(diff)).max(0).min(255); + let new = (i32::from(p) + i32::from(diff)).clamp(0, 255); let expected = i32::from(r); dist += ((new - expected) * (new - expected)) as u32; } diff --git a/nihav-realmedia/src/codecs/rv40enc/mod.rs b/nihav-realmedia/src/codecs/rv40enc/mod.rs index 8096697..402cf3d 100644 --- a/nihav-realmedia/src/codecs/rv40enc/mod.rs +++ b/nihav-realmedia/src/codecs/rv40enc/mod.rs @@ -687,7 +687,7 @@ fn calc_psnr(pic1: &NAVideoBuffer, pic2: &NAVideoBuffer) -> f64 { if size > 0 { 48.13080360867910341240 - 10.0 * ((sum as f64) / (size as f64)).log10() } else { - std::f64::INFINITY + f64::INFINITY } } diff --git a/nihav-realmedia/src/codecs/rv60dsp.rs b/nihav-realmedia/src/codecs/rv60dsp.rs index 84fdeff..e5315bc 100644 --- a/nihav-realmedia/src/codecs/rv60dsp.rs +++ b/nihav-realmedia/src/codecs/rv60dsp.rs @@ -2,7 +2,7 @@ use nihav_core::frame::{NAVideoBuffer, NASimpleVideoFrame}; use nihav_codec_support::codecs::MV; use nihav_codec_support::codecs::blockdsp::edge_emu; -fn clip8(val: i16) -> u8 { val.min(255).max(0) as u8 } +fn clip8(val: i16) -> u8 { val.clamp(0, 255) as u8 } macro_rules! el { ($s: ident, $o: expr) => ( $s[$o] as i16 ) diff --git a/nihav-vivo/src/codecs/g723_1.rs b/nihav-vivo/src/codecs/g723_1.rs index ea229fb..a27ed63 100644 --- a/nihav-vivo/src/codecs/g723_1.rs +++ b/nihav-vivo/src/codecs/g723_1.rs @@ -619,7 +619,7 @@ impl G7231Decoder { } }; let shift = shift + 1; - let x = (if shift >= 0 { x << shift } else { x >> -shift }).min(10000).max(-10000); + let x = (if shift >= 0 { x << shift } else { x >> -shift }).clamp(-10000, 10000); for j in 0..11 { let val = (x * signs[i / 2][j]) >> 15; buf[pos[i / 2 * 11 + j]] = buf[pos[i / 2 * 11 + j]].saturating_add(val as i16); @@ -838,7 +838,7 @@ impl G7231Decoder { let bits2 = norm_bits(den, 31); num = num << bits1 >> 1; den <<= bits2; - let shift = (5 + bits1 - bits2).max(0); + let shift = (5 + bits1).saturating_sub(bits2); gain = square_root_i32(((num >> 1) / (den >> 16)) << 16 >> shift); } else { diff --git a/nihav-vivo/src/codecs/siren.rs b/nihav-vivo/src/codecs/siren.rs index 89cb97d..868b4d4 100644 --- a/nihav-vivo/src/codecs/siren.rs +++ b/nihav-vivo/src/codecs/siren.rs @@ -115,7 +115,7 @@ impl SirenDecoder { for i in 1..NUM_REGIONS { let diff = br.read_cb(&self.diff_cb[i - 1])?; - self.pow_index[i] = (self.pow_index[i - 1] + i32::from(diff)).max(-24).min(39); + self.pow_index[i] = (self.pow_index[i - 1] + i32::from(diff)).clamp(-24, 39); } for i in 0..NUM_REGIONS { self.region_quant[i] = self.quant_tab[(self.pow_index[i] + 24) as usize]; @@ -132,7 +132,7 @@ impl SirenDecoder { while delta > 0 { let mut bitpool = 0; for reg in 0..NUM_REGIONS { - let cat = ((delta + offset - self.pow_index[reg]) >> 1).max(0).min(7) as usize; + let cat = ((delta + offset - self.pow_index[reg]) >> 1).clamp(0, 7) as usize; //self.power_cat[reg] = cat; bitpool += CATEGORY_BITS[cat]; } @@ -146,7 +146,7 @@ impl SirenDecoder { let mut max_rate_cat = [0; NUM_REGIONS]; let mut min_rate_cat = [0; NUM_REGIONS]; for reg in 0..NUM_REGIONS { - let cat = ((offset - self.pow_index[reg]) >> 1).max(0).min(7) as usize; + let cat = ((offset - self.pow_index[reg]) >> 1).clamp(0, 7) as usize; max_rate_cat[reg] = cat; min_rate_cat[reg] = cat; self.power_cat[reg] = cat; diff --git a/nihav-vivo/src/codecs/vivo.rs b/nihav-vivo/src/codecs/vivo.rs index 2b44a2e..b6de0bb 100644 --- a/nihav-vivo/src/codecs/vivo.rs +++ b/nihav-vivo/src/codecs/vivo.rs @@ -63,8 +63,8 @@ fn deblock_hor(buf: &mut [u8], stride: usize, off: usize, clip_tab: &[i16; 64]) let diff = (3 * (p1 - q1) + 8 * (q0 - p0)) >> 4; if (diff != 0) && (diff > -32) && (diff < 32) { let delta = clip_tab[(diff + 32) as usize]; - buf[off - 1 * stride + x] = (p0 + delta).max(0).min(255) as u8; - buf[off + 0 * stride + x] = (q0 - delta).max(0).min(255) as u8; + buf[off - 1 * stride + x] = (p0 + delta).clamp(0, 255) as u8; + buf[off + 0 * stride + x] = (q0 - delta).clamp(0, 255) as u8; } } } @@ -79,8 +79,8 @@ fn deblock_ver(buf: &mut [u8], stride: usize, off: usize, clip_tab: &[i16; 64]) let diff = (3 * (p1 - q1) + 8 * (q0 - p0)) >> 4; if (diff != 0) && (diff > -32) && (diff < 32) { let delta = clip_tab[(diff + 32) as usize]; - buf[off - 1 + y * stride] = (p0 + delta).max(0).min(255) as u8; - buf[off + y * stride] = (q0 - delta).max(0).min(255) as u8; + buf[off - 1 + y * stride] = (p0 + delta).clamp(0, 255) as u8; + buf[off + y * stride] = (q0 - delta).clamp(0, 255) as u8; } } } @@ -342,8 +342,7 @@ impl<'a> VivoBR<'a> { } else { level = (level * q) - q_add; } - if level < -2048 { level = -2048; } - if level > 2047 { level = 2047; } + level = level.clamp(-2048, 2047); } } idx += run; @@ -653,7 +652,7 @@ impl NADecoder for VivoDecoder { fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult { let src = pkt.get_buffer(); - if src.len() == 0 { + if src.is_empty() { let buftype; let ftype; if self.lastframe.is_none() { diff --git a/nihav-vivo/src/demuxers/vivo.rs b/nihav-vivo/src/demuxers/vivo.rs index d5d1861..c718cb7 100644 --- a/nihav-vivo/src/demuxers/vivo.rs +++ b/nihav-vivo/src/demuxers/vivo.rs @@ -217,9 +217,7 @@ impl<'a> VivoDemuxer<'a> { }; }, b"Duration" => { - self.duration = if let Ok(val) = valstr.parse() { - val - } else { 0 }; + self.duration = valstr.parse().unwrap_or_default(); }, /* b"TimeUnitNumerator" => { self.v_num = if let Ok(val) = valstr.parse() { -- 2.39.5