]> git.nihav.org Git - nihav.git/blobdiff - nihav-itu/src/codecs/h264/dsp/mc/debug.rs
h264/dsp: split chroma_interp() by width
[nihav.git] / nihav-itu / src / codecs / h264 / dsp / mc / debug.rs
index 9f773ac1e35a974acb20fbf0bc843231f28ceddb..e1808004bd9f54547a5af243767b4578e6f6d626 100644 (file)
@@ -164,7 +164,7 @@ fn h264_mc33(dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, w: usiz
 }
 
 
-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;
@@ -202,6 +202,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) {
@@ -251,3 +263,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) {}
+}