impl Default for BinkTrees {
fn default() -> Self {
- let mut cb: [Codebook<u8>; 16];
- unsafe {
- cb = std::mem::uninitialized();
- for i in 0..16 {
- let mut cr = TableCodebookDescReader::new(&BINK_TREE_CODES[i], &BINK_TREE_BITS[i], map_u8);
- std::ptr::write(&mut cb[i], Codebook::new(&mut cr, CodebookMode::LSB).unwrap());
- }
- }
+ let cb = unsafe {
+ let mut ucb: std::mem::MaybeUninit::<[Codebook<u8>; 16]> = std::mem::MaybeUninit::uninit();
+ for i in 0..16 {
+ let mut cr = TableCodebookDescReader::new(&BINK_TREE_CODES[i], &BINK_TREE_BITS[i], map_u8);
+ std::ptr::write(&mut (*ucb.as_mut_ptr())[i], Codebook::new(&mut cr, CodebookMode::LSB).unwrap());
+ }
+ ucb.assume_init()
+ };
Self { cb }
}
}
let mut dec_reg = RegisteredDecoders::new();
rad_register_all_decoders(&mut dec_reg);
+ // sample: https://samples.mplayerhq.hu/game-formats/bink/bikb/NEW.BIK
test_decoding("bink", "bink-video", "assets/RAD/NEW.BIK", Some(16), &dmx_reg, &dec_reg,
ExpectedTestResult::MD5Frames(vec![
[0x00edef7e, 0x7efad3b1, 0x7e8bdd74, 0x3f6b00ba],
let mut dec_reg = RegisteredDecoders::new();
rad_register_all_decoders(&mut dec_reg);
+ // sample: https://samples.mplayerhq.hu/game-formats/bink/ActivisionLogo.bik
test_decoding("bink", "bink-video", "assets/RAD/ActivisionLogo.bik", Some(42),
&dmx_reg, &dec_reg,
ExpectedTestResult::MD5([0x41128884, 0x73a8c710, 0x5072ea4a, 0x8caca428]));