h264/mc: add a stub for using optimised implementations
authorKostya Shishkov <kostya.shishkov@gmail.com>
Sat, 27 Aug 2022 09:39:07 +0000 (11:39 +0200)
committerKostya Shishkov <kostya.shishkov@gmail.com>
Mon, 5 Sep 2022 16:25:39 +0000 (18:25 +0200)
nihav-itu/src/codecs/h264/dsp/mc/debug.rs
nihav-itu/src/codecs/h264/dsp/mc/mod.rs
nihav-itu/src/codecs/h264/dsp/mc/release.rs

index 9f773ac1e35a974acb20fbf0bc843231f28ceddb..34d59daac2af7d587a17a1925ac356274bd9ce36 100644 (file)
@@ -251,3 +251,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) {}
+}
index 3ed248c85298f1f331b3675627b7122ac07983fb..e2036cc39e2a04da1542f5b7a10427dab62849d0 100644 (file)
@@ -15,6 +15,10 @@ type MCFunc = fn (dst: &mut [u8], dstride: usize, src: &[u8], sstride: usize, h:
 
 fn clip_u8(val: i16) -> u8 { val.max(0).min(255) as u8 }
 
+trait RegisterSIMD {
+    fn register_simd(&mut self);
+}
+
 pub struct H264MC {
     avg_buf:    NAVideoBufferRef<u8>,
     pub put_block_weighted:     [fn (dst: &mut [u8], stride: usize, src: &[u8], h: usize, wparams: [i8; 3]); 4],
@@ -23,11 +27,13 @@ pub struct H264MC {
 
 impl H264MC {
     pub fn new(avg_buf: NAVideoBufferRef<u8>) -> Self {
-        Self {
+        let mut obj = Self {
             avg_buf,
             put_block_weighted:     [put_blk_w_2, put_blk_w_4, put_blk_w_8, put_blk_w_16],
             put_block_weighted2:    [put_blk_w2_2, put_blk_w2_4, put_blk_w2_8, put_blk_w2_16],
-        }
+        };
+        obj.register_simd();
+        obj
     }
     pub fn do_mc(&mut self, frm: &mut NASimpleVideoFrame<u8>, refpic: NAVideoBufferRef<u8>, xpos: usize, ypos: usize, w: usize, h: usize, mv: MV) {
         let mut ebuf = [0u8; 22 * 22];
index 3a43500bb648bcce583d9f32f15c3da021f9f054..0a521d025e30fc3e2a0cc914cd2cc81bc00ab4d5 100644 (file)
@@ -323,3 +323,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) {}
+}