cv::updateMotionHistory
authorIlya Lavrenov <ilya.lavrenov@itseez.com>
Sat, 5 Apr 2014 18:35:21 +0000 (22:35 +0400)
committerIlya Lavrenov <ilya.lavrenov@itseez.com>
Tue, 8 Apr 2014 20:11:28 +0000 (00:11 +0400)
modules/video/src/motempl.cpp

index 3fc87e6..4dfe5d7 100644 (file)
@@ -80,13 +80,27 @@ void cv::updateMotionHistory( InputArray _silhouette, InputOutputArray _mhi,
 
     Mat silh = _silhouette.getMat(), mhi = _mhi.getMat();
     Size size = silh.size();
+#ifdef HAVE_IPP
+    int silhstep = (int)silh.step, mhistep = (int)mhi.step;
+#endif
 
     if( silh.isContinuous() && mhi.isContinuous() )
     {
         size.width *= size.height;
         size.height = 1;
+#ifdef HAVE_IPP
+        silhstep = (int)silh.total();
+        mhistep = (int)mhi.total() * sizeof(Ipp32f);
+#endif
     }
 
+#ifdef HAVE_IPP
+    IppStatus status = ippiUpdateMotionHistory_8u32f_C1IR((const Ipp8u *)silh.data, silhstep, (Ipp32f *)mhi.data, mhistep,
+                                                          ippiSize(size.width, size.height), (Ipp32f)timestamp, (Ipp32f)duration);
+    if (status >= 0)
+        return;
+#endif
+
 #if CV_SSE2
     volatile bool useSIMD = cv::checkHardwareSupport(CV_CPU_SSE2);
 #endif