X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=sndplay%2Fsrc%2Fmain.rs;h=ce9b6f66d54271788ed7ee2ae21eb30becdba166;hb=695000c46091c478a9ed4bd7e5d3e7860eaad2c6;hp=b58577f0611f6a7cd47e17f590d9aec0b71b6de7;hpb=e08bbe032e8553d872673701f016d1bcf3070312;p=nihav-player.git diff --git a/sndplay/src/main.rs b/sndplay/src/main.rs index b58577f..ce9b6f6 100644 --- a/sndplay/src/main.rs +++ b/sndplay/src/main.rs @@ -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;