Tegra optimization for GaussianBlur
authorAndrey Kamaev <no@email>
Wed, 4 Jan 2012 18:20:03 +0000 (18:20 +0000)
committerAndrey Kamaev <no@email>
Wed, 4 Jan 2012 18:20:03 +0000 (18:20 +0000)
modules/imgproc/src/smooth.cpp

index 4a9c27e..bcff981 100644 (file)
@@ -418,12 +418,6 @@ void cv::GaussianBlur( InputArray _src, OutputArray _dst, Size ksize,
     _dst.create( src.size(), src.type() );
     Mat dst = _dst.getMat();
     
-    if( ksize.width == 1 && ksize.height == 1 )
-    {
-        src.copyTo(dst);
-        return;
-    }
-
     if( borderType != BORDER_CONSTANT )
     {
         if( src.rows == 1 )
@@ -431,6 +425,18 @@ void cv::GaussianBlur( InputArray _src, OutputArray _dst, Size ksize,
         if( src.cols == 1 )
             ksize.width = 1;
     }
+
+    if( ksize.width == 1 && ksize.height == 1 )
+    {
+        src.copyTo(dst);
+        return;
+    }
+
+#ifdef HAVE_TEGRA_OPTIMIZATION
+    if(tegra::gaussian(src, dst, ksize, borderType))
+        return;
+#endif
+
     Ptr<FilterEngine> f = createGaussianFilter( src.type(), ksize, sigma1, sigma2, borderType );
     f->apply( src, dst );
 }