fix some warnings (unneeded parentheses, missing dyn keyword)
[nihav.git] / nihav-commonfmt / src / demuxers / wav.rs
index bf30686436273f61ebc35d2d9a8903dce17e5b7c..ce6318a6a41dd292015102aaae23611df91b541e 100644 (file)
@@ -4,10 +4,10 @@ use nihav_core::demuxers::DemuxerError::*;
 
 macro_rules! mktag {
     ($a:expr, $b:expr, $c:expr, $d:expr) => {
-        (($a as u32) << 24) | (($b as u32) << 16) | (($c as u32) << 8) | ($d as u32)
+        (u32::from($a) << 24) | (u32::from($b) << 16) | (u32::from($c) << 8) | u32::from($d)
     };
     ($arr:expr) => {
-        (($arr[0] as u32) << 24) | (($arr[1] as u32) << 16) | (($arr[2] as u32) << 8) | ($arr[3] as u32)
+        (u32::from($arr[0]) << 24) | (u32::from($arr[1]) << 16) | (u32::from($arr[2]) << 8) | u32::from($arr[3])
     };
 }
 
@@ -25,7 +25,7 @@ impl<'a> DemuxCore<'a> for WAVDemuxer<'a> {
     fn open(&mut self, strmgr: &mut StreamManager, seek_index: &mut SeekIndex) -> DemuxerResult<()> {
         let riff                        = self.src.read_u32be()?;
         let riff_size                   = self.src.read_u32le()? as usize;
-        let riff_end = self.src.tell() + if riff_size > 0 { (riff_size as u64) } else { u64::from(std::u32::MAX) };
+        let riff_end = self.src.tell() + if riff_size > 0 { riff_size as u64 } else { u64::from(std::u32::MAX) };
         let wave                        = self.src.read_u32be()?;
         validate!(riff == mktag!(b"RIFF"));
         validate!(wave == mktag!(b"WAVE"));
@@ -83,10 +83,16 @@ impl<'a> DemuxCore<'a> for WAVDemuxer<'a> {
         }
     }
 
-    fn seek(&mut self, time: u64, _seek_index: &SeekIndex) -> DemuxerResult<()> {
+    fn seek(&mut self, time: NATimePoint, _seek_index: &SeekIndex) -> DemuxerResult<()> {
         if self.block_size != 0 && self.avg_bytes != 0 {
-            let seek_dst = u64::from(self.avg_bytes) * time / 1000;
-            let seek_off = seek_dst / (self.block_size as u64) * (self.block_size as u64);
+            let seek_off = match time {
+                    NATimePoint::Milliseconds(ms) => {
+                        let seek_dst = u64::from(self.avg_bytes) * ms / 1000;
+                        seek_dst / (self.block_size as u64) * (self.block_size as u64)
+                    },
+                    NATimePoint::PTS(pts) => (self.block_size as u64) * pts,
+                    NATimePoint::None => return Ok(()),
+                };
             self.src.seek(SeekFrom::Start(self.data_pos + seek_off))?;
             Ok(())
         } else {
@@ -127,16 +133,15 @@ impl<'a> WAVDemuxer<'a> {
         let bits_per_sample             = if csize >= 16 { self.src.read_u16le()? } else { 8 };
         validate!(channels < 256);
 
-        let edata;
-        if csize > 16 {
-            validate!(csize >= 18);
-            let cb_size                 = self.src.read_u16le()? as usize;
-            let mut buf = vec![0; cb_size];
+        let edata = if csize > 16 {
+                validate!(csize >= 18);
+                let cb_size             = self.src.read_u16le()? as usize;
+                let mut buf = vec![0; cb_size];
                                           self.src.read_buf(buf.as_mut_slice())?;
-            edata = Some(buf);
-        } else {
-            edata = None;
-        }
+                Some(buf)
+            } else {
+                None
+            };
 
         let cname = register::find_codec_from_wav_twocc(format_tag).unwrap_or("unknown");
         let soniton = if cname == "pcm" {