dst_qmat[0] = (base_qmat[0] * dc_quant / 100).max(minval * 2) << 2;
}
-fn expand_token(blk: &mut Block, br: &mut BitReader, eob_run: &mut usize, coef_no: usize, token: u8) -> DecoderResult<()> {
+fn expand_token(blk: &mut Block, br: &mut BitReader, eob_run: &mut usize, token: u8) -> DecoderResult<()> {
match token {
// EOBs
0 | 1 | 2 => { *eob_run = (token as usize) + 1; },
if *eob_run > 0 {
blk.idx = 64;
*eob_run -= 1;
- } else if coef_no > 0 {
+ } else if (token > 8) && (blk.idx > 1) {
blk.has_ac = true;
}
Ok(())
&codes.ac_p_cb[table]
};
let token = br.read_cb(cb)?;
- expand_token(blk, br, &mut self.eob_run, coef_no, token)?;
+ expand_token(blk, br, &mut self.eob_run, token)?;
}
Ok(())
} else {
}
let cb = if (blkaddr & 3) == 0 { cbs[0] } else { cbs[1] };
let token = br.read_cb(cb)?;
- expand_token(blk, br, &mut self.eob_run, coef_no, token)?;
+ expand_token(blk, br, &mut self.eob_run, token)?;
}
Ok(())
} else {
};
let cb = if (blkaddr & 3) == 0 { cbs[0] } else { cbs[1] };
let token = br.read_cb(cb)?;
- expand_token(blk, br, &mut coef_eob[blk.idx], blk.idx, token)?;
+ expand_token(blk, br, &mut coef_eob[blk.idx], token)?;
if blk.idx == 64 { break; }
}
let idx = blkaddr >> 2;
let myinfo = NACodecTypeInfo::Video(NAVideoInfo::new(vinfo.get_width(), vinfo.get_height(), true, fmt));
self.info = NACodecInfo::new_ref(info.get_name(), myinfo, info.get_extradata()).into_ref();
supp.pool_u8.set_dec_bufs(3);
- supp.pool_u8.prealloc_video(NAVideoInfo::new(vinfo.get_width(), vinfo.get_height(), false, fmt), 4)?;
+ supp.pool_u8.prealloc_video(NAVideoInfo::new(vinfo.get_width(), vinfo.get_height(), true, fmt), 4)?;
self.generate_block_addr();
if self.version == 4 {
self.parse_header(&mut br)?;
if self.is_intra {
self.shuf.clear();
+ } else {
+ if !self.shuf.has_refs() {
+ return Err(DecoderError::MissingReference);
+ }
}
let ret = supp.pool_u8.get_free();
}
}
-pub fn get_decoder_vp3() -> Box<NADecoder> {
+pub fn get_decoder_vp3() -> Box<NADecoder + Send> {
Box::new(VP34Decoder::new(3))
}
-pub fn get_decoder_vp4() -> Box<NADecoder> {
+pub fn get_decoder_vp4() -> Box<NADecoder + Send> {
Box::new(VP34Decoder::new(4))
}