use nihav_core::io::byteio::*;
use nihav_core::io::bitreader::*;
use nihav_core::io::codebook::*;
+use nihav_codec_support::codecs::{IPShuffler, HAMShuffler};
const SKIP_BLOCK: u8 = 0;
const SCALED_BLOCK: u8 = 1;
self.dec_pos = self.data.len();
self.read_pos = self.data.len() - 1;
}
-println!(" read {} of {} bits", len, self.bits);
Ok(len)
}
fn get_val(&mut self) -> DecoderResult<T> {
}
fn read_bundles_binkb(&mut self, br: &mut BitReader) -> DecoderResult<()> {
self.btype.read_binkb(br)?;
-println!(" @ {}", br.tell());
self.colors.read_binkb(br)?;
-println!(" @ {}", br.tell());
self.pattern.read_binkb(br)?;
-println!(" @ {}", br.tell());
self.xoff.read_binkb(br)?;
-println!(" @ {}", br.tell());
self.yoff.read_binkb(br)?;
-println!(" @ {}", br.tell());
self.intradc.read_binkb(br)?;
-println!(" @ {}", br.tell());
self.interdc.read_binkb(br)?;
-println!(" @ {}", br.tell());
self.intraq.read_binkb(br)?;
-println!(" @ {}", br.tell());
self.interq.read_binkb(br)?;
-println!(" @ {}", br.tell());
self.nresidues.read_binkb(br)?;
-println!(" @ {}", br.tell());
Ok(())
}
fn read_bundles(&mut self, br: &mut BitReader) -> DecoderResult<()> {
let ybias = if self.key_frame { -15 } else { 0 };
let yoff = yoff1 + ybias;
-println!(" copy from {}.{} + {},{}({})", bx*8, by*8, xoff, yoff, ybias);
let xpos = ((bx * 8) as isize) + (xoff as isize);
let ypos = ((by * 8) as isize) + (yoff as isize);
validate!((xpos >= 0) && (xpos + 8 <= (self.cur_w as isize)));
self.cur_h = (height + 7) & !7;
self.cur_plane = plane_no;
self.init_bundle_lengths_binkb();
-println!(" plane {}", plane_no);
for by in 0..bh {
self.read_bundles_binkb(br)?;
-println!(" bline {} @ {}", by, br.tell());
for bx in 0..bw {
let mut coeffs: [i32; 64] = [0; 64];
let btype = self.btype.get_val()?;
-println!(" blk {}.{} type {}", bx,by,btype);
match btype {
0 => { // skip
},
}
mask >>= 1;
}
-
+
Ok(())
}
fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult<NAFrameRef> {
let src = pkt.get_buffer();
- let mut br = BitReader::new(&src, src.len(), BitReaderMode::LE);
+ let mut br = BitReader::new(&src, BitReaderMode::LE);
let mut buf;
self.key_frame = pkt.is_keyframe();
buf = bufinfo.get_vbuf().unwrap();
}
-println!("decode frame {} b={} i={}", pkt.get_pts().unwrap(), self.is_ver_b, self.is_ver_i);
let nplanes = if self.is_gray { 1 } else { 3 };
if self.has_alpha {
validate!(!self.is_ver_b);
}
}
-pub fn get_decoder() -> Box<dyn NADecoder> {
+pub fn get_decoder() -> Box<dyn NADecoder + Send> {
Box::new(BinkDecoder::new())
}
mod test {
use nihav_core::codecs::RegisteredDecoders;
use nihav_core::demuxers::RegisteredDemuxers;
- use nihav_core::test::dec_video::*;
- use crate::codecs::rad_register_all_codecs;
- use crate::demuxers::rad_register_all_demuxers;
+ use nihav_codec_support::test::dec_video::*;
+ use crate::rad_register_all_codecs;
+ use crate::rad_register_all_demuxers;
#[test]
fn test_binkvid() {
let mut dmx_reg = RegisteredDemuxers::new();