]> git.nihav.org Git - nihav-player.git/blobdiff - sndplay/src/main.rs
improve ID3 handling
[nihav-player.git] / sndplay / src / main.rs
index b58577f0611f6a7cd47e17f590d9aec0b71b6de7..ce9b6f66d54271788ed7ee2ae21eb30becdba166 100644 (file)
@@ -153,6 +153,9 @@ impl<'a> Decoder<'a> {
                                 if let Some(pts) = frm.ts.get_pts() {
                                     self.samplepos = NATimeInfo::ts_to_time(pts, u64::from(self.arate), frm.ts.tb_num, frm.ts.tb_den);
                                 }
+                                if buf.get_audio_length() == 0 {
+                                    return false;
+                                }
                                 let out_buf = convert_audio_frame(&buf, &self.dst_info, &self.dst_chmap).unwrap();
                                 match out_buf {
                                     NABufferType::AudioI16(abuf) => {
@@ -193,6 +196,7 @@ impl<'a> Decoder<'a> {
     fn seek(&mut self, time: u64) -> bool {
         let ret = self.demuxer.seek(NATimePoint::Milliseconds(time));
 if ret.is_err() { println!(" seek error\n"); }
+        self.decoder.flush();
         ret.is_ok()
     }
 }
@@ -244,6 +248,10 @@ impl Player {
 
         let mut fr = FileReader::new_read(file);
         let mut br = ByteReader::new(&mut fr);
+        if br.peek_byte().is_err() {
+            println!("Cannot read {}", name);
+            return;
+        }
         let (is_raw, start, end) = detect_tags(&mut br);
 
         let mut nfr: Box<dyn ByteIO>;