X-Git-Url: https://git.nihav.org/?p=nihav.git;a=blobdiff_plain;f=nihav-game%2Fsrc%2Fcodecs%2Fmidivid.rs;h=ac91fde5dacfa7e9177f53e101716fa9a7059ef5;hp=48456d6af427e9a94a8c39b0289129013acda15c;hb=78fb6560c73965d834b215fb0b49505ae5443288;hpb=b4d5b8515e75383b4fc59ea2813c90c615d59a96 diff --git a/nihav-game/src/codecs/midivid.rs b/nihav-game/src/codecs/midivid.rs index 48456d6..ac91fde 100644 --- a/nihav-game/src/codecs/midivid.rs +++ b/nihav-game/src/codecs/midivid.rs @@ -5,7 +5,7 @@ use nihav_codec_support::codecs::HAMShuffler; #[derive(Default)] struct MidividDecoder { info: NACodecInfoRef, - hams: HAMShuffler, + hams: HAMShuffler, lzbuf: Vec, width: usize, height: usize, @@ -22,10 +22,10 @@ fn lz_decompress(src: &[u8], dst: &mut [u8]) -> DecoderResult<()> { let mut dpos = 0; let end = src.len(); while spos < end { - let oplo = src[spos] as u16; + let oplo = u16::from(src[spos]); spos += 1; if spos >= end { return Err(DecoderError::ShortData); } - let ophi = src[spos] as u16; + let ophi = u16::from(src[spos]); spos += 1; let mut op = (ophi << 8) | oplo; for _ in 0..16 { @@ -58,6 +58,7 @@ fn lz_decompress(src: &[u8], dst: &mut [u8]) -> DecoderResult<()> { Ok(()) } +#[allow(clippy::identity_op)] fn decode_frame(frm: &mut NASimpleVideoFrame, src: &[u8], width: usize, height: usize) -> DecoderResult { validate!(src.len() > 8); let num_vec = read_u16le(&src[0..])? as usize; @@ -175,6 +176,12 @@ impl NADecoder for MidividDecoder { } } +impl NAOptionHandler for MidividDecoder { + 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_video() -> Box { Box::new(MidividDecoder::new()) @@ -184,23 +191,27 @@ pub fn get_decoder_video() -> Box { mod test { use nihav_core::codecs::RegisteredDecoders; use nihav_core::demuxers::RegisteredDemuxers; - use nihav_core::test::dec_video::*; - use crate::game_register_all_codecs; + use nihav_codec_support::test::dec_video::*; + use crate::game_register_all_decoders; use nihav_commonfmt::generic_register_all_demuxers; #[test] fn test_midivid_video() { let mut dmx_reg = RegisteredDemuxers::new(); generic_register_all_demuxers(&mut dmx_reg); let mut dec_reg = RegisteredDecoders::new(); - game_register_all_codecs(&mut dec_reg); - - let file = "assets/Game/MVDV.avi"; - //let file = "assets/Game/bbglogo.avi"; - //let file = "assets/Game/close.avi"; - //let file = "assets/Game/inland.avi"; - //let file = "assets/Game/midway.avi"; - //let file = "assets/Game/midway.1.avi"; - //let file = "assets/Game/open.avi"; - test_file_decoding("avi", file, Some(16), true, false, None, &dmx_reg, &dec_reg); + game_register_all_decoders(&mut dec_reg); + + test_decoding("avi", "midivid", "assets/Game/MVDV.avi", Some(16), &dmx_reg, &dec_reg, + ExpectedTestResult::MD5Frames(vec![ + [0x383e1995, 0x32bf000d, 0x2067aa2e, 0x54425bd4], + [0x91d0bff6, 0x5106cb75, 0x463ba358, 0xdc17d126], + [0x4ce54833, 0xb4fd3e35, 0x639d3830, 0xb47f871b], + [0x7c0c5604, 0x3c89e3ff, 0x05ae09f5, 0x7b725143], + [0xc561ddd9, 0xa3515c8e, 0x6119b31a, 0xb1608e77], + [0xa49bb9aa, 0xaf57e55b, 0xf351d4b0, 0x6289cd91], + [0xc7add756, 0x45574231, 0x5f1d651b, 0x2ae29e0d], + [0x7dd57d54, 0x4ec83f80, 0xef2e870b, 0x6cc310fe], + [0xe9c5fed6, 0xa4a4bab2, 0x70f84ed6, 0xc9d8a010], + [0x586ba118, 0x623fd7b9, 0x480fe7ab, 0xa1a5ad6f]])); } }