core: fix some clippy warnings
authorKostya Shishkov <kostya.shishkov@gmail.com>
Wed, 15 May 2019 12:36:43 +0000 (14:36 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Wed, 15 May 2019 12:36:43 +0000 (14:36 +0200)
nihav-core/src/codecs/blockdsp.rs
nihav-core/src/codecs/h263/code.rs
nihav-core/src/codecs/h263/data.rs
nihav-core/src/codecs/h263/decoder.rs
nihav-core/src/codecs/h263/mod.rs
nihav-core/src/dsp/dct.rs
nihav-core/src/dsp/fft.rs
nihav-core/src/dsp/window.rs
nihav-core/src/lib.rs

index 70b842037522470f49dc1d563b8f80e2305c0cbd..86fb864421c750930433a6ea5791103bde7ac527 100644 (file)
@@ -131,10 +131,12 @@ pub fn edge_emu(src: &NAVideoBuffer<u8>, xpos: isize, ypos: isize, bw: usize, bh
     }
 }
 
+pub type BlkInterpFunc = fn(&mut [u8], usize, &[u8], usize, usize, usize);
+
 pub fn copy_blocks(dst: &mut NAVideoBuffer<u8>, src: &NAVideoBuffer<u8>,
                    dx: usize, dy: usize, sx: isize, sy: isize, bw: usize, bh: usize,
                    preborder: usize, postborder: usize,
-                   mode: usize, interp: &[fn(&mut [u8], usize, &[u8], usize, usize, usize)])
+                   mode: usize, interp: &[BlkInterpFunc])
 {
     let pre  = if mode != 0 { preborder  as isize } else { 0 };
     let post = if mode != 0 { postborder as isize } else { 0 };
index fa02e4e590082037af6948bf7921d960baa1aac7..1f101a27f8c81a4b4a94f10de5064f5eec697616 100644 (file)
@@ -270,7 +270,7 @@ fn h263_interp11(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, bw:
     }
 }
 
-pub const H263_INTERP_FUNCS: &[fn(&mut [u8], usize, &[u8], usize, usize, usize)] = &[
+pub const H263_INTERP_FUNCS: &[blockdsp::BlkInterpFunc] = &[
         h263_interp00, h263_interp01, h263_interp10, h263_interp11 ];
 
 fn h263_interp00_avg(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, bw: usize, bh: usize)
@@ -336,7 +336,7 @@ fn h263_interp11_avg(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize,
     }
 }
 
-pub const H263_INTERP_AVG_FUNCS: &[fn(&mut [u8], usize, &[u8], usize, usize, usize)] = &[
+pub const H263_INTERP_AVG_FUNCS: &[blockdsp::BlkInterpFunc] = &[
         h263_interp00_avg, h263_interp01_avg, h263_interp10_avg, h263_interp11_avg ];
 
 pub struct H263BlockDSP { }
index 36b22e19c8ac42b6df3b5d8e387c77b9059d17b5..4f6a7057535dbd2c926219c62c36e729d778d969 100644 (file)
@@ -127,10 +127,10 @@ impl CodebookDescReader<u8> for H263ShortCodeReader {
 #[derive(Clone,Copy)]
 pub struct H263RLSym { run: u8, level: i8 }
 impl H263RLSym {
-    pub fn get_run(&self)   -> u8 { self.run }
-    pub fn is_last(&self)   -> bool { self.level < 0 }
-    pub fn is_escape(&self) -> bool { (self.run == 0) && (self.level == 0) }
-    pub fn get_level(&self) -> i16 { if self.level < 0 { -self.level as i16 } else { self.level as i16 } }
+    pub fn get_run(self)   -> u8 { self.run }
+    pub fn is_last(self)   -> bool { self.level < 0 }
+    pub fn is_escape(self) -> bool { (self.run == 0) && (self.level == 0) }
+    pub fn get_level(self) -> i16 { if self.level < 0 { -self.level as i16 } else { self.level as i16 } }
 }
 
 pub struct H263RLCodeDesc { code: u8, bits: u8, sym: H263RLSym }
index 502187d280b697e32e882acbf56905e53d633c72..2a841ba0d6097511353636a57b94f5d2c076a43d 100644 (file)
@@ -522,7 +522,7 @@ impl H263BaseDecoder {
     }
 
     pub fn get_bframe(&mut self, bdsp: &BlockDSP) -> DecoderResult<NABufferType> {
-        if !self.has_b || !self.ipbs.get_lastref().is_some() || !self.ipbs.get_nextref().is_some() {
+        if !self.has_b || self.ipbs.get_lastref().is_none() || self.ipbs.get_nextref().is_none() {
             return Err(DecoderError::MissingReference);
         }
         self.has_b = false;
@@ -533,7 +533,7 @@ impl H263BaseDecoder {
         let mut b_buf = bufinfo.get_vbuf().unwrap();
 
         if let (Some(ref bck_buf), Some(ref fwd_buf)) = (self.ipbs.get_nextref(), self.ipbs.get_lastref()) {
-            recon_b_frame(&mut b_buf, fwd_buf, bck_buf, self.mb_w, self.mb_h, &self.b_data, bdsp);
+            recon_b_frame(&mut b_buf, fwd_buf, bck_buf, self.mb_w, self.mb_h, self.b_data.as_slice(), bdsp);
         }
 
         self.b_data.truncate(0);
@@ -542,7 +542,7 @@ impl H263BaseDecoder {
 }
 
 fn recon_b_frame(b_buf: &mut NAVideoBuffer<u8>, bck_buf: &NAVideoBuffer<u8>, fwd_buf: &NAVideoBuffer<u8>,
-                 mb_w: usize, mb_h: usize, b_data: &Vec<BMB>, bdsp: &BlockDSP) {
+                 mb_w: usize, mb_h: usize, b_data: &[BMB], bdsp: &BlockDSP) {
     let mut cbpi = CBPInfo::new();
     let mut cur_mb = 0;
     cbpi.reset(mb_w);
index 76cd7a1945ff8038ea2397d853a901f6c060824c..6f3d548b01a939520fe02d06b66b802aaa8d3749 100644 (file)
@@ -4,6 +4,7 @@ use crate::frame::NAVideoBuffer;
 #[allow(clippy::many_single_char_names)]
 pub mod code;
 pub mod data;
+#[allow(clippy::needless_range_loop)]
 pub mod decoder;
 
 pub trait BlockDecoder {
@@ -29,8 +30,8 @@ pub enum Type {
 }
 
 impl Type {
-    pub fn is_ref(&self) -> bool {
-        match *self {
+    pub fn is_ref(self) -> bool {
+        match self {
             Type::I | Type::P | Type::PB => true,
             _                            => false,
         }
@@ -49,9 +50,9 @@ impl PBInfo {
     pub fn new(trb: u8, dbquant: u8, improved: bool) -> Self {
         PBInfo{ trb, dbquant, improved }
     }
-    pub fn get_trb(&self) -> u8 { self.trb }
-    pub fn get_dbquant(&self) -> u8 { self.dbquant }
-    pub fn is_improved(&self) -> bool { self.improved }
+    pub fn get_trb(self) -> u8 { self.trb }
+    pub fn get_dbquant(self) -> u8 { self.dbquant }
+    pub fn is_improved(self) -> bool { self.improved }
 }
 
 #[allow(dead_code)]
@@ -253,7 +254,7 @@ impl BlockInfo {
     pub fn get_num_mvs2(&self) -> usize { self.num_mv2 }
     pub fn get_mv2(&self, idx: usize) -> MV { self.mv2[idx] }
     pub fn set_mv(&mut self, mvs: &[MV]) {
-        if mvs.len() > 0 { self.skip = false; }
+        if !mvs.is_empty() { self.skip = false; }
         let mut mv_arr: [MV; 4] = [MV::new(0, 0), MV::new(0, 0), MV::new(0, 0), MV::new(0, 0)];
         for i in 0..mvs.len() { mv_arr[i] = mvs[i]; }
         self.mv     = mv_arr;
@@ -266,7 +267,7 @@ impl BlockInfo {
         self.num_mv2 = bbinfo.get_num_mv();
     }
     pub fn set_b_mv(&mut self, mvs: &[MV]) {
-        if mvs.len() > 0 { self.skip = false; }
+        if !mvs.is_empty() { self.skip = false; }
         let mut mv_arr: [MV; 2] = [ZERO_MV, ZERO_MV];
         for i in 0..mvs.len() { mv_arr[i] = mvs[i]; }
         self.mv2     = mv_arr;
index ae04e8e88e2ff13da4f35ba5bbfb9183b22bf333..b3415e395971b694d14a4a3ee7614bb0a35d5829 100644 (file)
@@ -48,7 +48,7 @@ impl DCT {
             perm_tab.push(0); // size = 1
             perm_tab.push(0); // size = 2
             perm_tab.push(1);
-            for blen in 2..bits+1 {
+            for blen in 2..=bits {
                 let ssize = 1 << blen;
                 for i in 0..ssize { perm_tab.push(swp_idx(i, blen)); }
             }
@@ -66,7 +66,7 @@ impl DCT {
                     tab.push((consts::PI / 8.0).sin()); // size = 1
                     tab.push((consts::PI / 8.0).cos());
                     if bits > 1 {
-                        for blen in 1..bits+1 {
+                        for blen in 1..=bits {
                             let tsize = 1 << blen;
                             let base = consts::PI / ((tsize * 8) as f32);
                             for i in 0..tsize {
@@ -153,7 +153,7 @@ fn reverse_bits(inval: u32) -> u32 {
     let mut val = inval;
     for _ in 0..8 {
         ret = (ret << 4) | (REV_TAB[(val & 0xF) as usize] as u32);
-        val = val >> 4;
+        val >>= 4;
     }
     ret
 }
index ee4ab7c774b58c065a75b2263126ec40fbc9a7fb..a626ad95a638b99b2b3a055a72e4d7ab31c8a7cb 100644 (file)
@@ -245,7 +245,7 @@ impl FFTSplitRadix {
         let size = 1 << bits;
         let mut table = Vec::with_capacity(size);
         for _ in 0..4 { table.push(FFTC_ZERO); }
-        for b in 3..(bits+1) {
+        for b in 3..=bits {
             let qsize = (1 << (b - 2)) as usize;
             let base = -consts::PI / ((qsize * 2) as f32);
             for k in 0..qsize {
@@ -648,7 +648,7 @@ fn gen_sr_perms(swaps: &mut [usize], size: usize) {
     gen_sr_perms(&mut swaps[3*size/4..],       size/4);
 }
 
-fn gen_swaps_for_perm(swaps: &mut Vec<usize>, perms: &Vec<usize>) {
+fn gen_swaps_for_perm(swaps: &mut Vec<usize>, perms: &[usize]) {
     let mut idx_arr: Vec<usize> = Vec::with_capacity(perms.len());
     for i in 0..perms.len() { idx_arr.push(i); }
     let mut run_size = 0;
@@ -719,7 +719,7 @@ impl FFTBuilder {
         for (mode, _) in ffts.iter().rev() {
             mode.permute(&mut perms);
         }
-        gen_swaps_for_perm(&mut swaps, &perms);
+        gen_swaps_for_perm(&mut swaps, perms.as_slice());
 
         FFT { perms, swaps, ffts }
     }
@@ -733,7 +733,7 @@ pub struct RDFT {
     fwd_fft:    bool,
 }
 
-fn crossadd(a: &FFTComplex, b: &FFTComplex) -> FFTComplex {
+fn crossadd(a: FFTComplex, b: FFTComplex) -> FFTComplex {
     FFTComplex { re: a.re + b.re, im: a.im - b.im }
 }
 
@@ -748,7 +748,7 @@ impl RDFT {
                 let in0 = buf[n + 1];
                 let in1 = buf[self.size - n - 1];
 
-                let t0 = crossadd(&in0, &in1);
+                let t0 = crossadd(in0, in1);
                 let t1 = FFTComplex { re: in1.im + in0.im, im: in1.re - in0.re };
                 let tab = self.table[n];
                 let t2 = FFTComplex { re: t1.im * tab.im + t1.re * tab.re, im: t1.im * tab.re - t1.re * tab.im };
@@ -771,11 +771,11 @@ impl RDFT {
                 let in0 = buf[n + 1];
                 let in1 = buf[self.size - n - 1];
 
-                let t0 = crossadd(&in0, &in1).scale(0.5);
+                let t0 = crossadd(in0, in1).scale(0.5);
                 let t1 = FFTComplex { re: in0.im + in1.im, im: in0.re - in1.re };
                 let t2 = t1 * self.table[n];
 
-                buf[n + 1] = crossadd(&t0, &t2);
+                buf[n + 1] = crossadd(t0, t2);
                 buf[self.size - n - 1] = FFTComplex { re: t0.re - t2.re, im: -(t0.im + t2.im) }; 
             }
             let a = buf[0].re;
index 42b6b6d1d556f4918006b15ac51428fd26c2a102..92a26556587dff8528570bd580f795f413f64457 100644 (file)
@@ -13,19 +13,18 @@ pub fn generate_window(mode: WindowType, scale: f32, size: usize, half: bool, ds
                 for n in 0..size { dst[n] = scale; }
             },
         WindowType::Sine => {
-                let param;
-                if half {
-                    param = consts::PI / ((2 * size) as f32);
-                } else {
-                    param = consts::PI / (size as f32);
-                }
+                let param = if half {
+                        consts::PI / ((2 * size) as f32)
+                    } else {
+                        consts::PI / (size as f32)
+                    };
                 for n in 0..size {
                     dst[n] = (((n as f32) + 0.5) * param).sin() * scale;
                 }
             },
         WindowType::KaiserBessel(alpha) => {
                 let dlen = if half { size as f32 } else { (size as f32) * 0.5 };
-                let alpha2 = ((alpha * consts::PI / dlen) * (alpha * consts::PI / dlen)) as f64;
+                let alpha2 = f64::from((alpha * consts::PI / dlen) * (alpha * consts::PI / dlen));
 
                 let mut kb: Vec<f64> = Vec::with_capacity(size);
                 let mut sum = 0.0;
@@ -45,7 +44,7 @@ pub fn generate_window(mode: WindowType, scale: f32, size: usize, half: bool, ds
 fn bessel_i0(inval: f64) -> f64 {
     let mut val: f64 = 1.0;
     for n in (1..64).rev() {
-        val *= inval / ((n * n) as f64);
+        val *= inval / f64::from(n * n);
         val += 1.0;
     }
     val
index 08e7134906784825bcba042b6e1db41698355892..a3e2df12925794f2ebc2c023c1fab8d760b60335 100644 (file)
@@ -1,12 +1,17 @@
 #[cfg(feature="decoders")]
+#[allow(clippy::cast_lossless)]
+#[allow(clippy::identity_op)]
+#[allow(clippy::too_many_arguments)]
 #[allow(clippy::unreadable_literal)]
 pub mod codecs;
 
 #[cfg(feature="demuxers")]
 pub mod demuxers;
 
+#[allow(clippy::too_many_arguments)]
 pub mod formats;
 pub mod frame;
+#[allow(clippy::too_many_arguments)]
 pub mod io;
 pub mod refs;
 pub mod register;
@@ -15,6 +20,9 @@ pub mod detect;
 pub mod scale;
 
 #[cfg(feature="dsp")]
+#[allow(clippy::excessive_precision)]
+#[allow(clippy::identity_op)]
+#[allow(clippy::needless_range_loop)]
 #[allow(clippy::unreadable_literal)]
 pub mod dsp;