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) => {
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()
}
}
}
}
std::io::stdout().flush().unwrap();
- if device.size() < underfill_limit && !self.paused && refill_limit < (1 << 20) {
+ if device.size() < underfill_limit && !self.paused && (refill_limit < (1 << 20)) & !eof {
if full_ms > 5000 {
println!("underrun!");
}