X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-rad%2Fsrc%2Fcodecs%2Fbinkaud.rs;h=7848e7e461035b685f42f8db1f0f91b318e3a201;hb=e6aaad5c5273cd814b5748b7faf3751835a37217;hp=479ee35d1b2fac7fc8f54c270d334acae5cfcd6b;hpb=3b98184209c40cd8f77c833103427ca67a3487eb;p=nihav.git diff --git a/nihav-rad/src/codecs/binkaud.rs b/nihav-rad/src/codecs/binkaud.rs index 479ee35..7848e7e 100644 --- a/nihav-rad/src/codecs/binkaud.rs +++ b/nihav-rad/src/codecs/binkaud.rs @@ -45,8 +45,8 @@ fn read_bink_float(br: &mut BitReader) -> DecoderResult { Ok(v) }*/ let exp = br.read(5)? as u8; - let mant = br.read(23)? as u32; - let sign = br.read(1)? as u32; + let mant = br.read(23)?; + let sign = br.read(1)?; let nexp = exp.wrapping_add(0x7E) as u32; let nmant = (mant << 1) & ((1 << 23) - 1); Ok(f32::from_bits((sign << 31) | (nexp << 23) | nmant)) @@ -130,6 +130,7 @@ impl BinkAudioDecoder { } Ok(()) } + #[allow(clippy::transmute_ptr_to_ptr)] fn output(&mut self, dst: &mut [f32], off0: usize, off1: usize, chno: usize) { match self.transform { Transform::DCT(ref mut dct) => { @@ -278,6 +279,12 @@ impl NADecoder for BinkAudioDecoder { } } +impl NAOptionHandler for BinkAudioDecoder { + 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_dct() -> Box { Box::new(BinkAudioDecoder::new(true)) } @@ -291,7 +298,7 @@ mod test { use nihav_core::codecs::RegisteredDecoders; use nihav_core::demuxers::RegisteredDemuxers; use nihav_codec_support::test::dec_video::*; - use crate::rad_register_all_codecs; + use crate::rad_register_all_decoders; use crate::rad_register_all_demuxers; #[test] @@ -299,8 +306,9 @@ mod test { let mut dmx_reg = RegisteredDemuxers::new(); rad_register_all_demuxers(&mut dmx_reg); let mut dec_reg = RegisteredDecoders::new(); - rad_register_all_codecs(&mut dec_reg); + rad_register_all_decoders(&mut dec_reg); + // sample: https://samples.mplayerhq.hu/game-formats/bink/ActivisionLogo.bik let file = "assets/RAD/ActivisionLogo.bik"; test_decode_audio("bink", file, None, None/*Some("bink")*/, &dmx_reg, &dec_reg); } @@ -309,8 +317,9 @@ mod test { let mut dmx_reg = RegisteredDemuxers::new(); rad_register_all_demuxers(&mut dmx_reg); let mut dec_reg = RegisteredDecoders::new(); - rad_register_all_codecs(&mut dec_reg); + rad_register_all_decoders(&mut dec_reg); + // sample from Heroes of Might and Magic 3 let file = "assets/RAD/NWCLOGO.BIK"; test_decode_audio("bink", file, None, None/*Some("bink")*/, &dmx_reg, &dec_reg); }