X-Git-Url: https://git.nihav.org/?a=blobdiff_plain;f=nihav-indeo%2Fsrc%2Fcodecs%2Fimc.rs;h=f9a92c0595c7918183c7e42ee9cc55667862a65a;hb=fd8666bc8f48fd374571368cd4b9a0a42e3ea85b;hp=cb89b8ee403d198460080715a0f5c204aa411679;hpb=000e8a3bc5cf55b64e1e6bc2c95574d4472fe45d;p=nihav.git diff --git a/nihav-indeo/src/codecs/imc.rs b/nihav-indeo/src/codecs/imc.rs index cb89b8e..f9a92c0 100644 --- a/nihav-indeo/src/codecs/imc.rs +++ b/nihav-indeo/src/codecs/imc.rs @@ -348,7 +348,6 @@ fn calc_maxcoef(coef: f32) -> (f32, f32) { impl IMCDecoder { fn new(is_imc: bool) -> Self { - let mut codes: [[Codebook; 4]; 4]; let mut cycle1: [usize; BANDS] = [0; BANDS]; let mut cycle2: [usize; BANDS] = [0; BANDS]; let mut weights1: [f32; BANDS-1] = [0.0; BANDS-1]; @@ -359,15 +358,16 @@ impl IMCDecoder { weights1.copy_from_slice(&IMC_WEIGHTS1); weights2.copy_from_slice(&IMC_WEIGHTS2); } - unsafe { - codes = mem::MaybeUninit::uninit().assume_init(); - for i in 0..4 { - for j in 0..4 { - let mut cr = IMCCodeReader::new(i, j); - ptr::write(&mut codes[i][j], Codebook::new(&mut cr, CodebookMode::MSB).unwrap()); + let codes = unsafe { + let mut ucodes: mem::MaybeUninit::<[[Codebook; 4]; 4]> = mem::MaybeUninit::uninit(); + for i in 0..4 { + for j in 0..4 { + let mut cr = IMCCodeReader::new(i, j); + ptr::write(&mut (*ucodes.as_mut_ptr())[i][j], Codebook::new(&mut cr, CodebookMode::MSB).unwrap()); + } } - } - } + ucodes.assume_init() + }; IMCDecoder { is_imc, chmap: NAChannelMap::new(),