edited misprint
authorIlya Lavrenov <ilya.lavrenov@itseez.com>
Mon, 24 Sep 2012 09:46:09 +0000 (13:46 +0400)
committerIlya Lavrenov <ilya.lavrenov@itseez.com>
Mon, 24 Sep 2012 09:46:09 +0000 (13:46 +0400)
modules/imgproc/src/imgwarp.cpp

index 6752d22..b899ae0 100644 (file)
@@ -1400,9 +1400,13 @@ struct DecimateAlpha
 };
 
 #ifdef __APPLE__ 
-    #define HAVE_TBB HAVE_GDC
+    #define HAVE_GDC
 #elif defined _MSC_VER && _MSC_VER >= 1600
-    #define HABE_TBB HAVE_CONCURRENCY 
+    #define HAVE_CONCURRENCY 
+#endif
+
+#if defined(HAVE_TBB) || defined(HAVE_OPENMP) || defined(HAVE_GDC) || defined(HAVE_CONCURRENCY)
+    #define HAVE_PARALLEL
 #endif
 
 template <typename T, typename WT>
@@ -1412,21 +1416,19 @@ class resizeArea_Invoker :
 public:
     resizeArea_Invoker(const Mat& _src, Mat& _dst, const DecimateAlpha* _xofs, 
         int _xofs_count, double _scale_y_
-#ifdef HAVE_TBB
+#ifdef HAVE_PARALLEL
         , const int* _cur_dy_ofs, const std::vector<std::pair<int, int> >& _bands
 #endif
         ) :
         ParallelLoopBody(), src(_src), dst(_dst), xofs(_xofs), 
         xofs_count(_xofs_count), scale_y_(_scale_y_)
-#ifdef HAVE_TBB
+#ifdef HAVE_PARALLEL
         , cur_dy_ofs(_cur_dy_ofs), bands(_bands)
 #endif
     {
-//         if (src.size() == Size(16, 16) && dst.size() == Size(5, 5))
-//             std::cout << "scale_y = " << scale_y_ << std::endl << std::endl; 
     }
     
-#ifdef HAVE_TBB
+#ifdef HAVE_PARALLEL
     void resize_signle_band(const Range& range) const 
 #else
     virtual void operator() (const Range& range) const
@@ -1444,7 +1446,7 @@ public:
         for( dx = 0; dx < dsize.width; dx++ )
             buf[dx] = sum[dx] = 0;
         
-#ifdef HAVE_TBB
+#ifdef HAVE_PARALLEL
         cur_dy = cur_dy_ofs[range.start];
 #endif
         for (sy = range.start; sy < range.end; sy++)
@@ -1494,9 +1496,6 @@ public:
             
             if( (cur_dy + 1)*scale_y <= sy + 1 || sy == ssize.height - 1 )
             {
-//                 if (dsize == Size(5, 5) && ssize == Size(16, 16))
-//                     std::cout << "Band: (" << range.start << ", " << range.end << ")" << std::endl;
-                
                 WT beta = std::max(sy + 1 - (cur_dy+1)*scale_y, (WT)0);
                 WT beta1 = 1 - beta;
                 T* D = (T*)(dst.data + dst.step*cur_dy);
@@ -1507,14 +1506,6 @@ public:
                     for( dx = 0; dx < dsize.width; dx++ )
                     {
                         D[dx] = saturate_cast<T>((sum[dx] + buf[dx]) / min(scale_y, src.rows - cur_dy * scale_y)); //
-//                         if (dsize == Size(5, 5) && ssize == Size(16, 16))
-//                         {
-//                             std::cout << "sum[" << dx << "] = " << sum[dx] << std::endl;
-//                             std::cout << "buf[" << dx << "] = " << buf[dx] << std::endl;
-//                             std::cout << "min(scale_y, src.rows - cur_dy * scale_y) = " << min(scale_y, src.rows - cur_dy * scale_y) << std::endl;
-//                             std::cout << "D[" << dx << "] = " << D[dx] << std::endl;
-//                             std::cout << std::endl;
-//                         }
                         sum[dx] = buf[dx] = 0;
                     }
                 }
@@ -1522,15 +1513,6 @@ public:
                     for( dx = 0; dx < dsize.width; dx++ )
                     {                        
                         D[dx] = saturate_cast<T>((sum[dx] + buf[dx]* beta1)/ min(scale_y, src.rows - cur_dy*scale_y)); //
-//                         if (dsize == Size(5, 5) && ssize == Size(16, 16))
-//                         {
-//                             std::cout << "sum[" << dx << "] = " << sum[dx] << std::endl;
-//                             std::cout << "buf[" << dx << "] = " << buf[dx] << std::endl;
-//                             std::cout << "beta1 = " << beta1 << std::endl;
-//                             std::cout << "min(scale_y, src.rows - cur_dy * scale_y) = " << min(scale_y, src.rows - cur_dy * scale_y) << std::endl;
-//                             std::cout << "D[" << dx << "] = " << D[dx] << std::endl;
-//                             std::cout << std::endl;
-//                         }
                         sum[dx] = buf[dx]*beta;
                         buf[dx] = 0;
                     }
@@ -1554,7 +1536,7 @@ public:
         }
     }
     
-#ifdef HAVE_TBB
+#ifdef HAVE_PARALLEL
     virtual void operator() (const Range& range) const
     {
         for (int i = range.start; i < range.end; ++i)
@@ -1571,7 +1553,7 @@ private:
     const DecimateAlpha* xofs;
     const int xofs_count;
     const double scale_y_;
-#ifdef HAVE_TBB
+#ifdef HAVE_PARALLEL
     const int *cur_dy_ofs;
     std::vector<std::pair<int, int> > bands;
 #endif
@@ -1582,7 +1564,7 @@ private:
 template <typename T, typename WT>
 static void resizeArea_( const Mat& src, Mat& dst, const DecimateAlpha* xofs, int xofs_count, double scale_y_)
 {
-#ifdef HAVE_TBB
+#ifdef HAVE_PARALLEL
     Size ssize = src.size(), dsize = dst.size();
     AutoBuffer<int> _yofs(ssize.height);
     int *cur_dy_ofs = _yofs;
@@ -1590,7 +1572,6 @@ static void resizeArea_( const Mat& src, Mat& dst, const DecimateAlpha* xofs, in
     std::vector<std::pair<int, int> > bands;
     
     // cur_dy_ofs - dy for the current sy
-    // yofs - a starting row for calculating a band according to the current sy
     
     for (int sy = 0; sy < ssize.height; sy++)
     {
@@ -1609,20 +1590,10 @@ static void resizeArea_( const Mat& src, Mat& dst, const DecimateAlpha* xofs, in
             cur_dy++;
         }
     }
-//     bands.push_back(std::make_pair(index, ssize.height));
 #endif
 
-#ifdef HAVE_TBB
+#ifdef HAVE_PARALLEL
     Range range(0, bands.size());
-    
-//     if (dsize == Size(5, 5) && ssize == Size(16, 16))
-//     {
-//         std::cout << "Bands" << std::endl;
-//         for (std::vector<std::pair<int, int> >::const_iterator i = bands.begin(), end = bands.end(); i != end; ++i)
-//             std::cout << i->first << " " << i->second << std::endl;
-//         std::cout << std::endl;
-//     }
-    
     resizeArea_Invoker<T, WT> invoker(src, dst, xofs, xofs_count, scale_y_, cur_dy_ofs, bands);
 #else
     Range range(0, src.rows);