h264: fix warnings regarding uninitialised memory
[nihav.git] / nihav-itu / src / codecs / h264 / dsp / mc / release.rs
index 3a43500bb648bcce583d9f32f15c3da021f9f054..7c902d6774574d6af95565a6fb7407640f83b7da 100644 (file)
@@ -97,24 +97,24 @@ fn h264_mc10(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, w: usiz
 }
 
 fn h264_mc11(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, w: usize, h: usize) {
-    let mut tmp : [u8; TMP_BUF_STRIDE * 16] = unsafe { std::mem::MaybeUninit::uninit().assume_init() };
-    let mut tmp2: [u8; TMP_BUF_STRIDE * 16] = unsafe { std::mem::MaybeUninit::uninit().assume_init() };
+    let mut tmp : [u8; TMP_BUF_STRIDE * 16] = unsafe { let arr = std::mem::MaybeUninit::uninit(); arr.assume_init() };
+    let mut tmp2: [u8; TMP_BUF_STRIDE * 16] = unsafe { let arr = std::mem::MaybeUninit::uninit(); arr.assume_init() };
     h264_mc02(&mut tmp,  TMP_BUF_STRIDE, src, sstride, w, h);
     h264_mc20(&mut tmp2, TMP_BUF_STRIDE, src, sstride, w, h);
     mc_avg_tmp(dst, dstride, w, h, &tmp, &tmp2);
 }
 
 fn h264_mc12(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, w: usize, h: usize) {
-    let mut tmp : [u8; TMP_BUF_STRIDE * 16] = unsafe { std::mem::MaybeUninit::uninit().assume_init() };
-    let mut tmp2: [u8; TMP_BUF_STRIDE * 16] = unsafe { std::mem::MaybeUninit::uninit().assume_init() };
+    let mut tmp : [u8; TMP_BUF_STRIDE * 16] = unsafe { let arr = std::mem::MaybeUninit::uninit(); arr.assume_init() };
+    let mut tmp2: [u8; TMP_BUF_STRIDE * 16] = unsafe { let arr = std::mem::MaybeUninit::uninit(); arr.assume_init() };
     h264_mc02(&mut tmp,  TMP_BUF_STRIDE, src, sstride, w, h);
     h264_mc22(&mut tmp2, TMP_BUF_STRIDE, src, sstride, w, h);
     mc_avg_tmp(dst, dstride, w, h, &tmp, &tmp2);
 }
 
 fn h264_mc13(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, w: usize, h: usize) {
-    let mut tmp : [u8; TMP_BUF_STRIDE * 16] = unsafe { std::mem::MaybeUninit::uninit().assume_init() };
-    let mut tmp2: [u8; TMP_BUF_STRIDE * 16] = unsafe { std::mem::MaybeUninit::uninit().assume_init() };
+    let mut tmp : [u8; TMP_BUF_STRIDE * 16] = unsafe { let arr = std::mem::MaybeUninit::uninit(); arr.assume_init() };
+    let mut tmp2: [u8; TMP_BUF_STRIDE * 16] = unsafe { let arr = std::mem::MaybeUninit::uninit(); arr.assume_init() };
     h264_mc02(&mut tmp,  TMP_BUF_STRIDE, src, sstride, w, h);
     h264_mc20(&mut tmp2, TMP_BUF_STRIDE, &src[1..], sstride, w, h);
     mc_avg_tmp(dst, dstride, w, h, &tmp, &tmp2);
@@ -125,15 +125,15 @@ fn h264_mc20(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, w: usiz
 }
 
 fn h264_mc21(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, w: usize, h: usize) {
-    let mut tmp : [u8; TMP_BUF_STRIDE * 16] = unsafe { std::mem::MaybeUninit::uninit().assume_init() };
-    let mut tmp2: [u8; TMP_BUF_STRIDE * 16] = unsafe { std::mem::MaybeUninit::uninit().assume_init() };
+    let mut tmp : [u8; TMP_BUF_STRIDE * 16] = unsafe { let arr = std::mem::MaybeUninit::uninit(); arr.assume_init() };
+    let mut tmp2: [u8; TMP_BUF_STRIDE * 16] = unsafe { let arr = std::mem::MaybeUninit::uninit(); arr.assume_init() };
     h264_mc22(&mut tmp,  TMP_BUF_STRIDE, src, sstride, w, h);
     h264_mc20(&mut tmp2, TMP_BUF_STRIDE, src, sstride, w, h);
     mc_avg_tmp(dst, dstride, w, h, &tmp, &tmp2);
 }
 
 fn h264_mc22(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, w: usize, h: usize) {
-    let mut tmp: [i32; TMP_BUF_STRIDE * 16] = unsafe { std::mem::MaybeUninit::uninit().assume_init() };
+    let mut tmp: [i32; TMP_BUF_STRIDE * 16] = unsafe { let arr = std::mem::MaybeUninit::uninit(); arr.assume_init() };
     unsafe {
         let mut src = src.as_ptr();
         let mut dst = tmp.as_mut_ptr();
@@ -168,8 +168,8 @@ fn h264_mc22(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, w: usiz
 }
 
 fn h264_mc23(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, w: usize, h: usize) {
-    let mut tmp : [u8; TMP_BUF_STRIDE * 16] = unsafe { std::mem::MaybeUninit::uninit().assume_init() };
-    let mut tmp2: [u8; TMP_BUF_STRIDE * 16] = unsafe { std::mem::MaybeUninit::uninit().assume_init() };
+    let mut tmp : [u8; TMP_BUF_STRIDE * 16] = unsafe { let arr = std::mem::MaybeUninit::uninit(); arr.assume_init() };
+    let mut tmp2: [u8; TMP_BUF_STRIDE * 16] = unsafe { let arr = std::mem::MaybeUninit::uninit(); arr.assume_init() };
     h264_mc22(&mut tmp,  TMP_BUF_STRIDE, src, sstride, w, h);
     h264_mc20(&mut tmp2, TMP_BUF_STRIDE, &src[1..], sstride, w, h);
     mc_avg_tmp(dst, dstride, w, h, &tmp, &tmp2);
@@ -180,31 +180,31 @@ fn h264_mc30(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, w: usiz
 }
 
 fn h264_mc31(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, w: usize, h: usize) {
-    let mut tmp : [u8; TMP_BUF_STRIDE * 16] = unsafe { std::mem::MaybeUninit::uninit().assume_init() };
-    let mut tmp2: [u8; TMP_BUF_STRIDE * 16] = unsafe { std::mem::MaybeUninit::uninit().assume_init() };
+    let mut tmp : [u8; TMP_BUF_STRIDE * 16] = unsafe { let arr = std::mem::MaybeUninit::uninit(); arr.assume_init() };
+    let mut tmp2: [u8; TMP_BUF_STRIDE * 16] = unsafe { let arr = std::mem::MaybeUninit::uninit(); arr.assume_init() };
     h264_mc20(&mut tmp,  TMP_BUF_STRIDE, src, sstride, w, h);
     h264_mc02(&mut tmp2, TMP_BUF_STRIDE, &src[sstride..], sstride, w, h);
     mc_avg_tmp(dst, dstride, w, h, &tmp, &tmp2);
 }
 
 fn h264_mc32(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, w: usize, h: usize) {
-    let mut tmp : [u8; TMP_BUF_STRIDE * 16] = unsafe { std::mem::MaybeUninit::uninit().assume_init() };
-    let mut tmp2: [u8; TMP_BUF_STRIDE * 16] = unsafe { std::mem::MaybeUninit::uninit().assume_init() };
+    let mut tmp : [u8; TMP_BUF_STRIDE * 16] = unsafe { let arr = std::mem::MaybeUninit::uninit(); arr.assume_init() };
+    let mut tmp2: [u8; TMP_BUF_STRIDE * 16] = unsafe { let arr = std::mem::MaybeUninit::uninit(); arr.assume_init() };
     h264_mc22(&mut tmp,  TMP_BUF_STRIDE, src, sstride, w, h);
     h264_mc02(&mut tmp2, TMP_BUF_STRIDE, &src[sstride..], sstride, w, h);
     mc_avg_tmp(dst, dstride, w, h, &tmp, &tmp2);
 }
 
 fn h264_mc33(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, w: usize, h: usize) {
-    let mut tmp : [u8; TMP_BUF_STRIDE * 16] = unsafe { std::mem::MaybeUninit::uninit().assume_init() };
-    let mut tmp2: [u8; TMP_BUF_STRIDE * 16] = unsafe { std::mem::MaybeUninit::uninit().assume_init() };
+    let mut tmp : [u8; TMP_BUF_STRIDE * 16] = unsafe { let arr = std::mem::MaybeUninit::uninit(); arr.assume_init() };
+    let mut tmp2: [u8; TMP_BUF_STRIDE * 16] = unsafe { let arr = std::mem::MaybeUninit::uninit(); arr.assume_init() };
     h264_mc20(&mut tmp,  TMP_BUF_STRIDE, &src[1..], sstride, w, h);
     h264_mc02(&mut tmp2, TMP_BUF_STRIDE, &src[sstride..], sstride, w, h);
     mc_avg_tmp(dst, dstride, w, h, &tmp, &tmp2);
 }
 
 
-pub fn chroma_interp(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, dx: u16, dy: u16, w: usize, h: usize) {
+fn chroma_interp(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, dx: u16, dy: u16, w: usize, h: usize) {
     let a0 = 8 - dx;
     let a1 = dx;
     let b0 = 8 - dy;
@@ -274,6 +274,18 @@ pub fn chroma_interp(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize,
     }
 }
 
+pub fn chroma_interp_8(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, dx: u16, dy: u16, h: usize) {
+    chroma_interp(dst, dstride, src, sstride, dx, dy, 8, h);
+}
+
+pub fn chroma_interp_4(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, dx: u16, dy: u16, h: usize) {
+    chroma_interp(dst, dstride, src, sstride, dx, dy, 4, h);
+}
+
+pub fn chroma_interp_2(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, dx: u16, dy: u16, h: usize) {
+    chroma_interp(dst, dstride, src, sstride, dx, dy, 2, h);
+}
+
 macro_rules! luma_mc {
     ($orig:ident, $func4:ident, $func8:ident, $func16:ident) => {
         fn $func4(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, h: usize) {
@@ -323,3 +335,7 @@ pub const H264_LUMA_INTERP: &[[super::MCFunc; 16]; 3] = &[
     h264_mc30_16, h264_mc31_16, h264_mc32_16, h264_mc33_16
   ]
 ];
+
+impl super::RegisterSIMD for super::H264MC {
+    fn register_simd(&mut self) {}
+}