X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-rad%2Fsrc%2Fcodecs%2Fbink2.rs;h=1305878bed5b36a5c2590bc2e586d4667f7fcf26;hb=7d57ae2f680d7a1eba7af2ee831f305b2f0f9324;hp=eb3158b1a8261d5376b2aae11ce8bde5c5f930dc;hpb=c2a4fa57b414ec496948a1812344a60bd72e1845;p=nihav.git diff --git a/nihav-rad/src/codecs/bink2.rs b/nihav-rad/src/codecs/bink2.rs index eb3158b..1305878 100644 --- a/nihav-rad/src/codecs/bink2.rs +++ b/nihav-rad/src/codecs/bink2.rs @@ -4,6 +4,7 @@ use nihav_core::io::byteio::*; use nihav_core::io::bitreader::*; use nihav_core::io::codebook::*; use nihav_core::io::intcode::*; +use nihav_codec_support::codecs::{IPShuffler, MV, ZERO_MV}; macro_rules! mktag { ($a:expr, $b:expr, $c:expr, $d:expr) => ({ @@ -973,7 +974,7 @@ struct Bink2Codes { } fn map_ac(idx: usize) -> u8 { idx as u8 } -fn map_mv(idx: usize) -> i8 { BINK2_MV_SYMS[idx] } +fn map_mv(idx: usize) -> i8 { BINK2_MV_SYMS[idx] } impl Default for Bink2Codes { fn default() -> Self { @@ -1713,11 +1714,11 @@ fn decode_cbp_luma_old(br: &mut BitReader, prev_cbp: u32) -> DecoderResult if !br.read_bool()? { nib1 = br.read(4)?; } - new_cbp = new_cbp | (nib1 << 4); + new_cbp |= nib1 << 4; if !br.read_bool()? { nib1 = br.read(4)?; } - new_cbp = new_cbp | (nib1 << 8); + new_cbp |= nib1 << 8; if !br.read_bool()? { nib1 = br.read(4)?; } @@ -1921,14 +1922,12 @@ impl NADecoder for Bink2Decoder { fn decode(&mut self, _supp: &mut NADecoderSupport, pkt: &NAPacket) -> DecoderResult { 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(); - let bufret = alloc_video_buffer(self.info.get_properties().get_video_info().unwrap(), 5); - if let Err(_) = bufret { return Err(DecoderError::InvalidData); } - let bufinfo = bufret.unwrap(); + let bufinfo = alloc_video_buffer(self.info.get_properties().get_video_info().unwrap(), 5)?; buf = bufinfo.get_vbuf().unwrap(); self.decode_frame_new(&mut br, &mut buf, pkt.is_keyframe())?; @@ -1939,9 +1938,18 @@ impl NADecoder for Bink2Decoder { frm.set_frame_type(if self.key_frame { FrameType::I } else { FrameType::P }); Ok(frm.into_ref()) } + fn flush(&mut self) { + self.ips.clear(); + } +} + +impl NAOptionHandler for Bink2Decoder { + fn get_supported_options(&self) -> &[NAOptionDefinition] { &[] } + fn set_options(&mut self, _options: &[NAOption]) { } + fn query_option_value(&self, _name: &str) -> Option { None } } -pub fn get_decoder() -> Box { +pub fn get_decoder() -> Box { Box::new(Bink2Decoder::new()) } @@ -1949,9 +1957,9 @@ pub fn get_decoder() -> Box { 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_bink2() { let mut dmx_reg = RegisteredDemuxers::new();