}
fn reset(&mut self) {
for i in 0..self.last.len() {
- self.tree[self.last[i]] = 0;
+ if self.last[i] != SMK_LAST_UNINIT {
+ self.tree[self.last[i]] = 0;
+ }
}
}
}
}
fn output_frame(&self, buf: &mut NAVideoBuffer<u8>) {
let stride = buf.get_stride(0);
- let mut data = buf.get_data_mut();
+ let data = buf.get_data_mut().unwrap();
let dst = data.as_mut_slice();
let is_scaled = (self.flags & SMK_FLAG_SCALED) != 0;
let is_interlaced = (self.flags & SMK_FLAG_INTERLACED) != 0;
let is_intra;
let ftype;
- let mut bufinfo;
+ let bufinfo;
if src.len() > PAL_SIZE {
let mut br = BitReader::new(&src[PAL_SIZE..], src.len() - PAL_SIZE, BitReaderMode::LE);
is_intra = self.decode_frame(&mut br)?;
self.output_frame(&mut buf);
let paloff = buf.get_offset(1);
- let mut data = buf.get_data_mut();
+ let data = buf.get_data_mut().unwrap();
let dst = data.as_mut_slice();
let palout = &mut dst[paloff..][..PAL_SIZE];
palout.copy_from_slice(&src[0..PAL_SIZE]);
validate!(!(stereo ^ (self.chans == 2)));
validate!(!(bits16 ^ (self.bits == 16)));
- let mut abuf;
+ let abuf;
let samples;
let nch = if stereo { 2 } else { 1 };
if bits16 {
abuf = alloc_audio_buffer(self.ainfo, samples, self.chmap.clone())?;
let mut adata = abuf.get_abuf_i16().unwrap();
let offs: [usize; 2] = [0, adata.get_offset(1)];
- let mut dst = adata.get_data_mut();
+ let dst = adata.get_data_mut().unwrap();
for ch in 0..nch {
dst[offs[ch]] = pred[ch];
}
samples = unp_size / nch;
abuf = alloc_audio_buffer(self.ainfo, samples, self.chmap.clone())?;
let mut adata = abuf.get_abuf_u8().unwrap();
- let mut dst = adata.get_data_mut();
+ let dst = adata.get_data_mut().unwrap();
if stereo {
let mut trees: [SmackerTree8; 2] = [SmackerTree8::new(), SmackerTree8::new()];
trees[0].decode(&mut br)?;