fn output_vol_i16(device: &AudioDevice, tmp: &mut Vec<i16>, src: &[i16], mute: bool, volume: u8) {
if !mute {
- tmp.truncate(0);
+ tmp.clear();
tmp.reserve(src.len());
let vol = i32::from(volume);
for &sample in src.iter() {
tmp.push(nsamp.min(32767).max(-32768) as i16);
}
} else {
- tmp.truncate(0);
+ tmp.clear();
tmp.resize(src.len(), 0);
}
device.queue(&tmp);
fn output_vol_u8(device: &AudioDevice, tmp: &mut Vec<i16>, src: &[u8], mute: bool, volume: u8) {
if !mute {
- tmp.truncate(0);
+ tmp.clear();
tmp.reserve(src.len());
let vol = i32::from(volume);
for sample in src.chunks_exact(2) {
tmp.push(nsamp.min(32767).max(-32768) as i16);
}
} else {
- tmp.truncate(0);
+ tmp.clear();
tmp.resize(src.len() / 2, 0);
}
device.queue(&tmp);
match self.decoder.decode(&mut self.dsupp, &pkt) {
Ok(frm) => {
let buf = frm.get_buffer();
+ if let NABufferType::None = buf {
+ return false;
+ }
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);
}
let ch = ainfo.channels;
println!("Playing {} [{}Hz {}ch]", name, arate, ch);
- let ret = AudioDevice::open(arate, ch.max(2));
+ let ret = AudioDevice::open(arate, ch.min(2));
if ret.is_none() {
println!("cannot open output");
return;