X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-game%2Fsrc%2Fcodecs%2Fmidivid.rs;h=74ec75f6b33f689abf7d891d0b48f8584738bf13;hb=8ec8fe90dd159a4361442a66be6f627ad751d387;hp=037248fc8c11630e0fd96d157cc824bdad247cfe;hpb=f9be4e750dccff762b9a3d894faec50ffdb59233;p=nihav.git diff --git a/nihav-game/src/codecs/midivid.rs b/nihav-game/src/codecs/midivid.rs index 037248f..74ec75f 100644 --- a/nihav-game/src/codecs/midivid.rs +++ b/nihav-game/src/codecs/midivid.rs @@ -1,5 +1,6 @@ use nihav_core::codecs::*; use nihav_core::io::byteio::*; +use nihav_codec_support::codecs::HAMShuffler; #[derive(Default)] struct MidividDecoder { @@ -92,7 +93,7 @@ fn decode_frame(frm: &mut NASimpleVideoFrame, src: &[u8], width: usize, heig idx_br.read_byte()? as usize } else { if bits == 0 { - hi9 = idx9_br.read_byte()?; + hi9 = idx9_br.read_byte()?; bits = 8; } bits -= 1; @@ -112,7 +113,7 @@ fn decode_frame(frm: &mut NASimpleVideoFrame, src: &[u8], width: usize, heig } } } - + Ok(is_intra) } @@ -174,8 +175,14 @@ 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 { +pub fn get_decoder_video() -> Box { Box::new(MidividDecoder::new()) } @@ -183,9 +190,9 @@ 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::codecs::game_register_all_codecs; - use nihav_commonfmt::demuxers::generic_register_all_demuxers; + use nihav_codec_support::test::dec_video::*; + use crate::game_register_all_codecs; + use nihav_commonfmt::generic_register_all_demuxers; #[test] fn test_midivid_video() { let mut dmx_reg = RegisteredDemuxers::new(); @@ -193,13 +200,17 @@ mod test { 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); + 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]])); } }