cleanup: IPP Async (IPP_A)
authorAlexander Alekhin <alexander.alekhin@intel.com>
Thu, 30 Aug 2018 15:53:07 +0000 (18:53 +0300)
committerAlexander Alekhin <alexander.alekhin@intel.com>
Thu, 30 Aug 2018 15:53:07 +0000 (18:53 +0300)
except header file with conversion routines (will be removed in OpenCV 4.0)

15 files changed:
cmake/OpenCVFindIPPAsync.cmake [deleted file]
cmake/OpenCVFindLibsPerf.cmake
cmake/templates/cvconfig.h.in
doc/Doxyfile.in
doc/tutorials/core/how_to_use_OpenCV_parallel_for_/how_to_use_OpenCV_parallel_for_.markdown
doc/tutorials/core/how_to_use_ippa_conversion/how_to_use_ippa_conversion.markdown [deleted file]
doc/tutorials/core/how_to_use_ippa_conversion/images/How_To_Use_IPPA_Result.jpg [deleted file]
doc/tutorials/core/images/How_To_Use_IPPA.jpg [deleted file]
doc/tutorials/core/interoperability_with_OpenCV_1/interoperability_with_OpenCV_1.markdown
doc/tutorials/core/table_of_content_core.markdown
doc/tutorials/introduction/windows_install/windows_install.markdown
modules/core/include/opencv2/core/ippasync.hpp
modules/core/test/test_ippasync.cpp [deleted file]
samples/cpp/CMakeLists.txt
samples/cpp/tutorial_code/core/ippasync/ippasync_sample.cpp [deleted file]

diff --git a/cmake/OpenCVFindIPPAsync.cmake b/cmake/OpenCVFindIPPAsync.cmake
deleted file mode 100644 (file)
index 6f4765c..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-# Main variables:
-# IPP_A_LIBRARIES and IPP_A_INCLUDE to use IPP Async
-# HAVE_IPP_A for conditional compilation OpenCV with/without IPP Async
-
-# IPP_ASYNC_ROOT - root of IPP Async installation
-
-if(X86_64)
-    find_path(
-    IPP_A_INCLUDE_DIR
-    NAMES ipp_async_defs.h
-    PATHS $ENV{IPP_ASYNC_ROOT}
-    PATH_SUFFIXES include
-    DOC "Path to Intel IPP Async interface headers")
-
-    find_file(
-    IPP_A_LIBRARIES
-    NAMES ipp_async_preview.lib
-    PATHS $ENV{IPP_ASYNC_ROOT}
-    PATH_SUFFIXES lib/intel64
-    DOC "Path to Intel IPP Async interface libraries")
-
-else()
-    find_path(
-    IPP_A_INCLUDE_DIR
-    NAMES ipp_async_defs.h
-    PATHS $ENV{IPP_ASYNC_ROOT}
-    PATH_SUFFIXES include
-    DOC "Path to Intel IPP Async interface headers")
-
-    find_file(
-    IPP_A_LIBRARIES
-    NAMES ipp_async_preview.lib
-    PATHS $ENV{IPP_ASYNC_ROOT}
-    PATH_SUFFIXES lib/ia32
-    DOC "Path to Intel IPP Async interface libraries")
-endif()
-
-if(IPP_A_INCLUDE_DIR AND IPP_A_LIBRARIES)
-    set(HAVE_IPP_A TRUE)
-else()
-    set(HAVE_IPP_A FALSE)
-    message(WARNING "Intel IPP Async library directory (set by IPP_A_LIBRARIES_DIR variable) is not found or does not have Intel IPP Async libraries.")
-endif()
-
-mark_as_advanced(FORCE IPP_A_LIBRARIES IPP_A_INCLUDE_DIR)
\ No newline at end of file
index 4dfd7aa..84fc79d 100644 (file)
@@ -28,17 +28,6 @@ if(WITH_IPP)
   endif()
 endif()
 
-# --- IPP Async ---
-
-if(WITH_IPP_A)
-  include("${OpenCV_SOURCE_DIR}/cmake/OpenCVFindIPPAsync.cmake")
-  if(IPP_A_INCLUDE_DIR AND IPP_A_LIBRARIES)
-    ocv_include_directories(${IPP_A_INCLUDE_DIR})
-    link_directories(${IPP_A_LIBRARIES})
-    set(OPENCV_LINKER_LIBS ${OPENCV_LINKER_LIBS} ${IPP_A_LIBRARIES})
-   endif()
-endif(WITH_IPP_A)
-
 # --- CUDA ---
 if(WITH_CUDA)
   include("${OpenCV_SOURCE_DIR}/cmake/OpenCVDetectCUDA.cmake")
index c661a20..0606a40 100644 (file)
 #cmakedefine HAVE_IPP_ICV
 #cmakedefine HAVE_IPP_IW
 
-/* Intel IPP Async */
-#cmakedefine HAVE_IPP_A
-
 /* JPEG-2000 codec */
 #cmakedefine HAVE_JASPER
 
index 1ac09c4..8f9d02d 100644 (file)
@@ -227,7 +227,6 @@ SEARCH_INCLUDES        = YES
 INCLUDE_PATH           =
 INCLUDE_FILE_PATTERNS  =
 PREDEFINED             = __cplusplus=1 \
-                         HAVE_IPP_A=1 \
                          CVAPI(x)=x \
                          CV_DOXYGEN= \
                          CV_EXPORTS= \
index 3f5f556..eeeb94b 100644 (file)
@@ -1,7 +1,7 @@
 How to use the OpenCV parallel_for_ to parallelize your code {#tutorial_how_to_use_OpenCV_parallel_for_}
 ==================================================================
 
-@prev_tutorial{tutorial_how_to_use_ippa_conversion}
+@prev_tutorial{tutorial_interoperability_with_OpenCV_1}
 
 Goal
 ----
diff --git a/doc/tutorials/core/how_to_use_ippa_conversion/how_to_use_ippa_conversion.markdown b/doc/tutorials/core/how_to_use_ippa_conversion/how_to_use_ippa_conversion.markdown
deleted file mode 100644 (file)
index e5e0e4a..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-Intel® IPP Asynchronous C/C++ library in OpenCV {#tutorial_how_to_use_ippa_conversion}
-===============================================
-
-@prev_tutorial{tutorial_interoperability_with_OpenCV_1}
-@next_tutorial{tutorial_how_to_use_OpenCV_parallel_for_}
-
-Goal
-----
-
-The tutorial demonstrates the [Intel® IPP Asynchronous
-C/C++](http://software.intel.com/en-us/intel-ipp-preview) library usage with OpenCV. The code
-example below illustrates implementation of the Sobel operation, accelerated with Intel® IPP
-Asynchronous C/C++ functions. In this code example, @ref cv::hpp::getMat and @ref cv::hpp::getHpp
-functions are used for data conversion between
-[hppiMatrix](http://software.intel.com/en-us/node/501660) and Mat matrices.
-
-Code
-----
-
-You may also find the source code in the
-`samples/cpp/tutorial_code/core/ippasync/ippasync_sample.cpp` file of the OpenCV source library or
-download it from [here](https://github.com/opencv/opencv/tree/3.4/samples/cpp/tutorial_code/core/ippasync/ippasync_sample.cpp).
-
-@include cpp/tutorial_code/core/ippasync/ippasync_sample.cpp
-
-Explanation
------------
-
--#  Create parameters for OpenCV:
-    @code{.cpp}
-    VideoCapture cap;
-    Mat image, gray, result;
-    @endcode
-    and IPP Async:
-    @code{.cpp}
-    hppiMatrix* src,* dst;
-    hppAccel accel = 0;
-    hppAccelType accelType;
-    hppStatus sts;
-    hppiVirtualMatrix * virtMatrix;
-    @endcode
--#  Load input image or video. How to open and read video stream you can see in the
-    @ref tutorial_video_input_psnr_ssim tutorial.
-    @code{.cpp}
-    if( useCamera )
-    {
-       printf("used camera\n");
-       cap.open(0);
-    }
-    else
-    {
-       printf("used image %s\n", file.c_str());
-       cap.open(file.c_str());
-    }
-
-    if( !cap.isOpened() )
-    {
-       printf("can not open camera or video file\n");
-       return -1;
-    }
-    @endcode
--#  Create accelerator instance using
-    [hppCreateInstance](http://software.intel.com/en-us/node/501686):
-    @code{.cpp}
-    accelType = sAccel == "cpu" ? HPP_ACCEL_TYPE_CPU:
-                sAccel == "gpu" ? HPP_ACCEL_TYPE_GPU:
-                                  HPP_ACCEL_TYPE_ANY;
-
-    //Create accelerator instance
-    sts = hppCreateInstance(accelType, 0, &accel);
-    CHECK_STATUS(sts, "hppCreateInstance");
-    @endcode
--#  Create an array of virtual matrices using
-    [hppiCreateVirtualMatrices](http://software.intel.com/en-us/node/501700) function.
-    @code{.cpp}
-    virtMatrix = hppiCreateVirtualMatrices(accel, 1);
-    @endcode
--#  Prepare a matrix for input and output data:
-    @code{.cpp}
-    cap >> image;
-    if(image.empty())
-       break;
-
-    cvtColor( image, gray, COLOR_BGR2GRAY );
-
-    result.create( image.rows, image.cols, CV_8U);
-    @endcode
--#  Convert Mat to [hppiMatrix](http://software.intel.com/en-us/node/501660) using @ref cv::hpp::getHpp
-    and call [hppiSobel](http://software.intel.com/en-us/node/474701) function.
-    @code{.cpp}
-    //convert Mat to hppiMatrix
-    src = getHpp(gray, accel);
-    dst = getHpp(result, accel);
-
-    sts = hppiSobel(accel,src, HPP_MASK_SIZE_3X3,HPP_NORM_L1,virtMatrix[0]);
-    CHECK_STATUS(sts,"hppiSobel");
-
-    sts = hppiConvert(accel, virtMatrix[0], 0, HPP_RND_MODE_NEAR, dst, HPP_DATA_TYPE_8U);
-    CHECK_STATUS(sts,"hppiConvert");
-
-    // Wait for tasks to complete
-    sts = hppWait(accel, HPP_TIME_OUT_INFINITE);
-    CHECK_STATUS(sts, "hppWait");
-    @endcode
-    We use [hppiConvert](http://software.intel.com/en-us/node/501746) because
-    [hppiSobel](http://software.intel.com/en-us/node/474701) returns destination matrix with
-    HPP_DATA_TYPE_16S data type for source matrix with HPP_DATA_TYPE_8U type. You should check
-    hppStatus after each call IPP Async function.
-
--#  Create windows and show the images, the usual way.
-    @code{.cpp}
-    imshow("image", image);
-    imshow("rez", result);
-
-    waitKey(15);
-    @endcode
--#  Delete hpp matrices.
-    @code{.cpp}
-    sts =  hppiFreeMatrix(src);
-    CHECK_DEL_STATUS(sts,"hppiFreeMatrix");
-
-    sts =  hppiFreeMatrix(dst);
-    CHECK_DEL_STATUS(sts,"hppiFreeMatrix");
-    @endcode
--#  Delete virtual matrices and accelerator instance.
-    @code{.cpp}
-    if (virtMatrix)
-    {
-       sts = hppiDeleteVirtualMatrices(accel, virtMatrix);
-       CHECK_DEL_STATUS(sts,"hppiDeleteVirtualMatrices");
-    }
-
-    if (accel)
-    {
-       sts = hppDeleteInstance(accel);
-       CHECK_DEL_STATUS(sts, "hppDeleteInstance");
-    }
-    @endcode
-
-Result
-------
-
-After compiling the code above we can execute it giving an image or video path and accelerator type
-as an argument. For this tutorial we use baboon.png image as input. The result is below.
-
-![](images/How_To_Use_IPPA_Result.jpg)
diff --git a/doc/tutorials/core/how_to_use_ippa_conversion/images/How_To_Use_IPPA_Result.jpg b/doc/tutorials/core/how_to_use_ippa_conversion/images/How_To_Use_IPPA_Result.jpg
deleted file mode 100644 (file)
index 2bdeb83..0000000
Binary files a/doc/tutorials/core/how_to_use_ippa_conversion/images/How_To_Use_IPPA_Result.jpg and /dev/null differ
diff --git a/doc/tutorials/core/images/How_To_Use_IPPA.jpg b/doc/tutorials/core/images/How_To_Use_IPPA.jpg
deleted file mode 100644 (file)
index 8bba605..0000000
Binary files a/doc/tutorials/core/images/How_To_Use_IPPA.jpg and /dev/null differ
index 0e2b45c..33e116a 100644 (file)
@@ -2,7 +2,7 @@ Interoperability with OpenCV 1 {#tutorial_interoperability_with_OpenCV_1}
 ==============================
 
 @prev_tutorial{tutorial_file_input_output_with_xml_yml}
-@next_tutorial{tutorial_how_to_use_ippa_conversion}
+@next_tutorial{tutorial_how_to_use_OpenCV_parallel_for_}
 
 Goal
 ----
index f3f5381..d775d8f 100644 (file)
@@ -93,15 +93,6 @@ understanding how to manipulate the images on a pixel level.
     Look here to shed light on all this questions.
 
 
--   @subpage tutorial_how_to_use_ippa_conversion
-
-    *Compatibility:* \> OpenCV 2.0
-
-    *Author:* Elena Gvozdeva
-
-    You will see how to use the IPP Async with OpenCV.
-
-
 -   @subpage tutorial_how_to_use_OpenCV_parallel_for_
 
     *Compatibility:* \>= OpenCV 2.4.3
index 0b77e88..c8f46cb 100644 (file)
@@ -142,8 +142,6 @@ of them, you need to download and install them on your system.
 -   [Intel Integrated Performance Primitives (*IPP*)](http://software.intel.com/en-us/articles/intel-ipp/) may be used to improve the performance
     of color conversion, Haar training and DFT functions of the OpenCV library. Watch out, since
     this is not a free service.
--   [Intel IPP Asynchronous C/C++](http://software.intel.com/en-us/intel-ipp-preview) is currently focused delivering Intel Graphics
-    support for advanced image processing and computer vision functions.
 -   OpenCV offers a somewhat fancier and more useful graphical user interface, than the default one
     by using the [Qt framework](http://qt.nokia.com/downloads). For a quick overview of what this has to offer, look into the
     documentations *highgui* module, under the *Qt New Functions* section. Version 4.6 or later of
@@ -204,10 +202,6 @@ libraries). If you do not need the support for some of these, you can just freel
 
         ![](images/IntelTBB.png)
 
-    -#  For the [Intel IPP Asynchronous C/C++](http://software.intel.com/en-us/intel-ipp-preview) download the source files and set environment
-        variable **IPP_ASYNC_ROOT**. It should point to
-        `<your Program Files(x86) directory>/Intel/IPP Preview */ipp directory`. Here \* denotes the
-        particular preview name.
     -#  In case of the [Eigen](http://eigen.tuxfamily.org/index.php?title=Main_Page#Download) library it is again a case of download and extract to the
         `D:/OpenCV/dep` directory.
     -#  Same as above with [OpenEXR](http://www.openexr.com/downloads.html).
index 0ed8264..c35d8d8 100644 (file)
@@ -45,7 +45,7 @@
 #ifndef OPENCV_CORE_IPPASYNC_HPP
 #define OPENCV_CORE_IPPASYNC_HPP
 
-#ifdef HAVE_IPP_A
+#ifdef HAVE_IPP_A  // this file will be removed in OpenCV 4.0
 
 #include "opencv2/core.hpp"
 #include <ipp_async_op.h>
diff --git a/modules/core/test/test_ippasync.cpp b/modules/core/test/test_ippasync.cpp
deleted file mode 100644 (file)
index d52f5c4..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-// This file is part of OpenCV project.
-// It is subject to the license terms in the LICENSE file found in the top-level directory
-// of this distribution and at http://opencv.org/license.html.
-#include "test_precomp.hpp"
-#include "opencv2/ts/ocl_test.hpp"
-
-#ifdef HAVE_IPP_A
-#include "opencv2/core/ippasync.hpp"
-
-using namespace cv;
-using namespace std;
-using namespace opencv_test;
-
-namespace opencv_test {
-namespace ocl {
-
-PARAM_TEST_CASE(IPPAsync, MatDepth, Channels, hppAccelType)
-{
-    int type;
-    int cn;
-    int depth;
-    hppAccelType accelType;
-
-    Mat matrix, result;
-    hppiMatrix * hppMat;
-    hppAccel accel;
-    hppiVirtualMatrix * virtMatrix;
-    hppStatus sts;
-
-    virtual void SetUp()
-    {
-        type = CV_MAKE_TYPE(GET_PARAM(0), GET_PARAM(1));
-        depth = GET_PARAM(0);
-        cn = GET_PARAM(1);
-        accelType = GET_PARAM(2);
-    }
-
-    void generateTestData()
-    {
-        Size matrix_Size = randomSize(2, 100);
-        const double upValue = 100;
-
-        matrix = randomMat(matrix_Size, type, -upValue, upValue);
-    }
-
-    void Near(double threshold = 0.0)
-    {
-        EXPECT_MAT_NEAR(matrix, result, threshold);
-    }
-};
-
-TEST_P(IPPAsync, accuracy)
-{
-    sts = hppCreateInstance(accelType, 0, &accel);
-    if (sts!=HPP_STATUS_NO_ERROR) printf("hppStatus = %d\n",sts);
-    CV_Assert(sts==HPP_STATUS_NO_ERROR);
-
-    virtMatrix = hppiCreateVirtualMatrices(accel, 2);
-
-    for (int j = 0; j < test_loop_times; j++)
-    {
-        generateTestData();
-        hppMat = hpp::getHpp(matrix,accel);
-
-        hppScalar a = 3;
-
-        sts = hppiAddC(accel, hppMat, a, 0, virtMatrix[0]);
-        CV_Assert(sts==HPP_STATUS_NO_ERROR);
-        sts = hppiSubC(accel, virtMatrix[0], a, 0, virtMatrix[1]);
-        CV_Assert(sts==HPP_STATUS_NO_ERROR);
-
-        sts = hppWait(accel, HPP_TIME_OUT_INFINITE);
-        CV_Assert(sts==HPP_STATUS_NO_ERROR);
-
-        result = hpp::getMat(virtMatrix[1], accel, cn);
-
-        Near(5.0e-6);
-
-        sts =  hppiFreeMatrix(hppMat);
-        CV_Assert(sts==HPP_STATUS_NO_ERROR);
-    }
-
-    sts = hppiDeleteVirtualMatrices(accel, virtMatrix);
-    CV_Assert(sts==HPP_STATUS_NO_ERROR);
-    sts = hppDeleteInstance(accel);
-    CV_Assert(sts==HPP_STATUS_NO_ERROR);
-}
-
-PARAM_TEST_CASE(IPPAsyncShared, Channels, hppAccelType)
-{
-    int cn;
-    int type;
-    hppAccelType accelType;
-
-    Mat matrix, result;
-    hppiMatrix* hppMat;
-    hppAccel accel;
-    hppiVirtualMatrix * virtMatrix;
-    hppStatus sts;
-
-    virtual void SetUp()
-    {
-        cn = GET_PARAM(0);
-        accelType = GET_PARAM(1);
-        type=CV_MAKE_TYPE(CV_8U, GET_PARAM(0));
-    }
-
-    void generateTestData()
-    {
-        Size matrix_Size = randomSize(2, 100);
-        hpp32u pitch, size;
-        const int upValue = 100;
-
-        sts = hppQueryMatrixAllocParams(accel, (hpp32u)(matrix_Size.width*cn), (hpp32u)matrix_Size.height, HPP_DATA_TYPE_8U, &pitch, &size);
-
-        matrix = randomMat(matrix_Size, type, 0, upValue);
-    }
-
-    void Near(double threshold = 0.0)
-    {
-        EXPECT_MAT_NEAR(matrix, result, threshold);
-    }
-};
-
-TEST_P(IPPAsyncShared, accuracy)
-{
-    sts = hppCreateInstance(accelType, 0, &accel);
-    if (sts!=HPP_STATUS_NO_ERROR) printf("hppStatus = %d\n",sts);
-    CV_Assert(sts==HPP_STATUS_NO_ERROR);
-
-    virtMatrix = hppiCreateVirtualMatrices(accel, 2);
-
-    for (int j = 0; j < test_loop_times; j++)
-    {
-        generateTestData();
-        hppMat = hpp::getHpp(matrix,accel);
-
-        hppScalar a = 3;
-
-        sts = hppiAddC(accel, hppMat, a, 0, virtMatrix[0]);
-        CV_Assert(sts==HPP_STATUS_NO_ERROR);
-        sts = hppiSubC(accel, virtMatrix[0], a, 0, virtMatrix[1]);
-        CV_Assert(sts==HPP_STATUS_NO_ERROR);
-
-        sts = hppWait(accel, HPP_TIME_OUT_INFINITE);
-        CV_Assert(sts==HPP_STATUS_NO_ERROR);
-
-        result = hpp::getMat(virtMatrix[1], accel, cn);
-
-        Near(0);
-
-        sts =  hppiFreeMatrix(hppMat);
-        CV_Assert(sts==HPP_STATUS_NO_ERROR);
-    }
-
-    sts = hppiDeleteVirtualMatrices(accel, virtMatrix);
-    CV_Assert(sts==HPP_STATUS_NO_ERROR);
-    sts = hppDeleteInstance(accel);
-    CV_Assert(sts==HPP_STATUS_NO_ERROR);
-}
-
-INSTANTIATE_TEST_CASE_P(IppATest, IPPAsyncShared, Combine(Values(1, 2, 3, 4),
-                                                    Values( HPP_ACCEL_TYPE_CPU, HPP_ACCEL_TYPE_GPU)));
-
-INSTANTIATE_TEST_CASE_P(IppATest, IPPAsync, Combine(Values(CV_8U, CV_16U, CV_16S, CV_32F),
-                                                   Values(1, 2, 3, 4),
-                                                   Values( HPP_ACCEL_TYPE_CPU, HPP_ACCEL_TYPE_GPU)));
-
-}
-}
-#endif
\ No newline at end of file
index a96b9e6..d12cc9d 100644 (file)
@@ -36,9 +36,6 @@ endif()
 if(NOT BUILD_opencv_viz OR NOT VTK_USE_FILE)
   ocv_list_filterout(cpp_samples "/viz/")
 endif()
-if(NOT HAVE_IPP_A)
-  ocv_list_filterout(cpp_samples "/ippasync/")
-endif()
 ocv_list_filterout(cpp_samples "real_time_pose_estimation/")
 foreach(sample_filename ${cpp_samples})
   if(sample_filename MATCHES "/viz/")
diff --git a/samples/cpp/tutorial_code/core/ippasync/ippasync_sample.cpp b/samples/cpp/tutorial_code/core/ippasync/ippasync_sample.cpp
deleted file mode 100644 (file)
index 0a25f15..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-#include <stdio.h>
-
-#include "opencv2/core/utility.hpp"
-#include "opencv2/imgproc.hpp"
-#include "opencv2/highgui.hpp"
-#include "cvconfig.h"
-
-using namespace std;
-using namespace cv;
-
-#ifdef HAVE_IPP_A
-#include "opencv2/core/ippasync.hpp"
-
-#define CHECK_STATUS(STATUS, NAME)\
-    if(STATUS!=HPP_STATUS_NO_ERROR){ printf("%s error %d\n", NAME, STATUS);\
-    if (virtMatrix) {hppStatus delSts = hppiDeleteVirtualMatrices(accel, virtMatrix); CHECK_DEL_STATUS(delSts,"hppiDeleteVirtualMatrices");}\
-    if (accel)      {hppStatus delSts = hppDeleteInstance(accel); CHECK_DEL_STATUS(delSts, "hppDeleteInstance");}\
-    return -1;}
-
-#define CHECK_DEL_STATUS(STATUS, NAME)\
-    if(STATUS!=HPP_STATUS_NO_ERROR){ printf("%s error %d\n", NAME, STATUS); return -1;}
-
-#endif
-
-static void help()
-{
- printf("\nThis program shows how to use the conversion for IPP Async.\n"
-"This example uses the Sobel filter.\n"
-"You can use cv::Sobel or hppiSobel.\n"
-"Usage: \n"
-"./ipp_async_sobel [--camera]=<use camera,if this key is present>, \n"
-"                  [--file_name]=<path to movie or image file>\n"
-"                  [--accel]=<accelerator type: auto (default), cpu, gpu>\n\n");
-}
-
-const char* keys =
-{
-    "{c  camera   |           | use camera or not}"
-    "{fn file_name|../data/baboon.jpg | image file       }"
-    "{a accel     |auto       | accelerator type: auto (default), cpu, gpu}"
-};
-
-//this is a sample for hppiSobel functions
-int main(int argc, const char** argv)
-{
-    help();
-
-    VideoCapture cap;
-    CommandLineParser parser(argc, argv, keys);
-    Mat image, gray, result;
-
-#ifdef HAVE_IPP_A
-
-    hppiMatrix* src,* dst;
-    hppAccel accel = 0;
-    hppAccelType accelType;
-    hppStatus sts;
-    hppiVirtualMatrix * virtMatrix;
-
-    bool useCamera = parser.has("camera");
-    string file = parser.get<string>("file_name");
-    string sAccel = parser.get<string>("accel");
-
-    parser.printMessage();
-
-    if( useCamera )
-    {
-        printf("used camera\n");
-        cap.open(0);
-    }
-    else
-    {
-        printf("used image %s\n", file.c_str());
-        cap.open(file.c_str());
-    }
-
-    if( !cap.isOpened() )
-    {
-        printf("can not open camera or video file\n");
-        return -1;
-    }
-
-    accelType = sAccel == "cpu" ? HPP_ACCEL_TYPE_CPU:
-                sAccel == "gpu" ? HPP_ACCEL_TYPE_GPU:
-                                  HPP_ACCEL_TYPE_ANY;
-
-    //Create accelerator instance
-    sts = hppCreateInstance(accelType, 0, &accel);
-    CHECK_STATUS(sts, "hppCreateInstance");
-
-    accelType = hppQueryAccelType(accel);
-
-    sAccel = accelType == HPP_ACCEL_TYPE_CPU ? "cpu":
-             accelType == HPP_ACCEL_TYPE_GPU ? "gpu":
-             accelType == HPP_ACCEL_TYPE_GPU_VIA_DX9 ? "gpu dx9": "?";
-
-    printf("accelType %s\n", sAccel.c_str());
-
-    virtMatrix = hppiCreateVirtualMatrices(accel, 1);
-
-    for(;;)
-    {
-        cap >> image;
-        if(image.empty())
-            break;
-
-        cvtColor( image, gray, COLOR_BGR2GRAY );
-
-        result.create( image.rows, image.cols, CV_8U);
-
-        double execTime = (double)getTickCount();
-
-        //convert Mat to hppiMatrix
-        src = hpp::getHpp(gray,accel);
-        dst = hpp::getHpp(result,accel);
-
-        sts = hppiSobel(accel,src, HPP_MASK_SIZE_3X3,HPP_NORM_L1,virtMatrix[0]);
-        CHECK_STATUS(sts,"hppiSobel");
-
-        sts = hppiConvert(accel, virtMatrix[0], 0, HPP_RND_MODE_NEAR, dst, HPP_DATA_TYPE_8U);
-        CHECK_STATUS(sts,"hppiConvert");
-
-        // Wait for tasks to complete
-        sts = hppWait(accel, HPP_TIME_OUT_INFINITE);
-        CHECK_STATUS(sts, "hppWait");
-
-        execTime = ((double)getTickCount() - execTime)*1000./getTickFrequency();
-
-        printf("Time : %0.3fms\n", execTime);
-
-        imshow("image", image);
-        imshow("rez", result);
-
-        waitKey(15);
-
-        sts =  hppiFreeMatrix(src);
-        CHECK_DEL_STATUS(sts,"hppiFreeMatrix");
-
-        sts =  hppiFreeMatrix(dst);
-        CHECK_DEL_STATUS(sts,"hppiFreeMatrix");
-
-    }
-
-    if (!useCamera)
-        waitKey(0);
-
-    if (virtMatrix)
-    {
-        sts = hppiDeleteVirtualMatrices(accel, virtMatrix);
-        CHECK_DEL_STATUS(sts,"hppiDeleteVirtualMatrices");
-    }
-
-    if (accel)
-    {
-        sts = hppDeleteInstance(accel);
-        CHECK_DEL_STATUS(sts, "hppDeleteInstance");
-    }
-
-    printf("SUCCESS\n");
-
-#else
-
-    printf("IPP Async not supported\n");
-
-#endif
-
-    return 0;
-}