use MaybeUninit properly
[nihav.git] / nihav-commonfmt / src / codecs / aac.rs
index 0329eb5423106ebf26fb635571db1275e756a26d..85854206ab3e3470b4fe175027a14c17cbb6cea1 100644 (file)
@@ -325,12 +325,16 @@ impl ICSInfo {
         self.window_sequence                            = br.read(2)? as u8;
         match self.prev_window_sequence {
             ONLY_LONG_SEQUENCE | LONG_STOP_SEQUENCE => {
-                    validate!((self.window_sequence == ONLY_LONG_SEQUENCE) ||
-                              (self.window_sequence == LONG_START_SEQUENCE));
+                    if (self.window_sequence != ONLY_LONG_SEQUENCE) &&
+                       (self.window_sequence != LONG_START_SEQUENCE) {
+                        println!("incorrect previous window");
+                    }
                 },
             LONG_START_SEQUENCE | EIGHT_SHORT_SEQUENCE => {
-                    validate!((self.window_sequence == EIGHT_SHORT_SEQUENCE) ||
-                              (self.window_sequence == LONG_STOP_SEQUENCE));
+                    if (self.window_sequence != EIGHT_SHORT_SEQUENCE) &&
+                       (self.window_sequence != LONG_STOP_SEQUENCE) {
+                        println!("incorrect previous window");
+                    }
                 },
             _ => {},
         };
@@ -552,14 +556,14 @@ impl Codebooks {
     fn new() -> Self {
         let mut coderead = TableCodebookDescReader::new(AAC_SCF_CODEBOOK_CODES, AAC_SCF_CODEBOOK_BITS, scale_map);
         let scale_cb = Codebook::new(&mut coderead, CodebookMode::MSB).unwrap();
-        let mut spec_cb: [Codebook<u16>; 11];
-        unsafe {
-            spec_cb = mem::uninitialized();
-            for i in 0..AAC_SPEC_CODES.len() {
-                let mut coderead = TableCodebookDescReader::new(AAC_SPEC_CODES[i], AAC_SPEC_BITS[i], cb_map);
-                ptr::write(&mut spec_cb[i], Codebook::new(&mut coderead, CodebookMode::MSB).unwrap());
-            }
-        }
+        let spec_cb = unsafe {
+                let mut uspec_cb: mem::MaybeUninit::<[Codebook<u16>; 11]> = mem::MaybeUninit::uninit();
+                for i in 0..AAC_SPEC_CODES.len() {
+                    let mut coderead = TableCodebookDescReader::new(AAC_SPEC_CODES[i], AAC_SPEC_BITS[i], cb_map);
+                    ptr::write(&mut (*uspec_cb.as_mut_ptr())[i], Codebook::new(&mut coderead, CodebookMode::MSB).unwrap());
+                }
+                uspec_cb.assume_init()
+            };
         Self { scale_cb, spec_cb }
     }
 }
@@ -1011,7 +1015,7 @@ impl DSP {
             tmp: [0.0; 2048], ew_buf: [0.0; 1152],
         }
     }
-    #[allow(clippy::cyclomatic_complexity)]
+    #[allow(clippy::cognitive_complexity)]
     fn synth(&mut self, coeffs: &[f32; 1024], delay: &mut [f32; 1024], seq: u8, window_shape: bool, prev_window_shape: bool, dst: &mut [f32]) {
         let long_win  = if window_shape { &self.kbd_long_win  } else { &self.sine_long_win };
         let short_win = if window_shape { &self.kbd_short_win } else { &self.sine_short_win };