None
}
}
+ pub fn has_refs(&self) -> bool {
+ self.lastframe.is_some()
+ }
}
+pub const VP56_COEF_BASE: [i16; 6] = [ 5, 7, 11, 19, 35, 67 ];
+pub const VP56_COEF_ADD_PROBS: [[u8; 12]; 6] = [
+ [ 159, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
+ [ 165, 145, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0 ],
+ [ 173, 148, 140, 128, 0, 0, 0, 0, 0, 0, 0, 0 ],
+ [ 176, 155, 140, 135, 128, 0, 0, 0, 0, 0, 0, 0 ],
+ [ 180, 157, 141, 134, 130, 128, 0, 0, 0, 0, 0, 0 ],
+ [ 254, 254, 243, 230, 196, 177, 153, 140, 133, 130, 129, 128 ],
+];
+
#[allow(dead_code)]
pub struct BoolCoder<'a> {
pub src: &'a [u8],
}
val
}
+ pub fn read_byte(&mut self) -> u8 {
+ let mut val = 0u8;
+ for _ in 0..8 {
+ val = (val << 1) | (self.read_prob(128) as u8);
+ }
+ val
+ }
+ pub fn read_sbits(&mut self, bits: u8) -> i32 {
+ let mut val = if self.read_prob(128) { -1i32 } else { 0i32 };
+ for _ in 1..bits {
+ val = (val << 1) | (self.read_prob(128) as i32);
+ }
+ val
+ }
pub fn read_probability(&mut self) -> u8 {
let val = self.read_bits(7) as u8;
if val == 0 {
}
}
-fn vp3_interp11(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, bw: usize, bh: usize)
+fn vp3_interp1x(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, bw: usize, bh: usize)
{
let mut didx = 0;
let mut sidx = 0;
for _ in 0..bh {
for x in 0..bw {
dst[didx + x] = (((src[sidx + x] as u16) +
- (src[sidx + x + 1] as u16) +
- (src[sidx + x + sstride] as u16) +
- (src[sidx + x + sstride + 1] as u16)) >> 2) as u8;
+ (src[sidx + x + sstride + 1] as u16)) >> 1) as u8;
+ }
+ didx += dstride;
+ sidx += sstride;
+ }
+}
+
+fn vp3_interp1y(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, bw: usize, bh: usize)
+{
+ let mut didx = 0;
+ let mut sidx = 0;
+ for _ in 0..bh {
+ for x in 0..bw {
+ dst[didx + x] = (((src[sidx + x + 1] as u16) +
+ (src[sidx + x + sstride] as u16)) >> 1) as u8;
}
didx += dstride;
sidx += sstride;
}
}
-pub const VP3_INTERP_FUNCS: &[blockdsp::BlkInterpFunc] = &[ vp3_interp00, vp3_interp01, vp3_interp10, vp3_interp11 ];
+pub const VP3_INTERP_FUNCS: &[blockdsp::BlkInterpFunc] = &[ vp3_interp00, vp3_interp01, vp3_interp10, vp3_interp1x, vp3_interp1y ];