if(MSVC_VERSION EQUAL 1400)
ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4510 /wd4610 /wd4312 /wd4201 /wd4244 /wd4328 /wd4267)
endif()
- if(MSVC_VERSION LESS 1900) # MSVS2015
- ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4127) # warning C4127: conditional expression is constant
- endif()
endif()
# allow extern "C" functions throw exceptions
endforeach()
if(NOT ENABLE_NOISY_WARNINGS)
+ ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4127) # conditional expression is constant
ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4251) # class 'std::XXX' needs to have dll-interface to be used by clients of YYY
ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4324) # 'struct_name' : structure was padded due to __declspec(align())
ocv_warnings_disable(CMAKE_CXX_FLAGS /wd4275) # non dll-interface class 'std::exception' used as base for dll-interface class 'cv::Exception'
#define CV_OCL_DBG_CHECK_(expr, check_result) expr; (void)check_result
#define CV_OCL_DBG_CHECK(expr) do { cl_int __cl_result = (expr); CV_OCL_CHECK_RESULT(__cl_result, #expr); } while (0)
+static const bool CV_OPENCL_DISABLE_BUFFER_RECT_OPERATIONS = false;
+
#else // HAVE_OPENCL
#ifndef _DEBUG
static const bool CV_OPENCL_VALIDATE_BINARY_PROGRAMS_VALUE = utils::getConfigurationParameterBool("OPENCV_OPENCL_VALIDATE_BINARY_PROGRAMS", false);
#endif
+// Option to disable calls clEnqueueReadBufferRect / clEnqueueWriteBufferRect / clEnqueueCopyBufferRect
+static const bool CV_OPENCL_DISABLE_BUFFER_RECT_OPERATIONS = utils::getConfigurationParameterBool("OPENCV_OPENCL_DISABLE_BUFFER_RECT_OPERATIONS",
+#ifdef __APPLE__
+ true
+#else
+ false
+#endif
+);
+
#endif // HAVE_OPENCL
struct UMat2D
CV_OCL_CHECK(clEnqueueReadBuffer(q, (cl_mem)u->handle, CL_TRUE,
srcrawofs, total, alignedPtr.getAlignedPtr(), 0, 0, 0));
}
-#ifdef __APPLE__
- else
+ else if (CV_OPENCL_DISABLE_BUFFER_RECT_OPERATIONS)
{
const size_t padding = CV_OPENCL_DATA_PTR_ALIGNMENT;
size_t new_srcrawofs = srcrawofs & ~(padding-1);
for( size_t i = 0; i < new_sz[1]; i++ )
memcpy( (uchar*)dstptr + i*new_dststep[0], ptr + i*new_srcstep[0] + membuf_ofs, new_sz[0]);
}
-#else
else
{
AlignedDataPtr2D<false, true> alignedPtr((uchar*)dstptr, new_sz[1], new_sz[0], new_dststep[0], CV_OPENCL_DATA_PTR_ALIGNMENT);
new_dststep[0], 0,
ptr, 0, 0, 0));
}
-#endif
}
}
CV_OCL_CHECK(clEnqueueWriteBuffer(q, (cl_mem)u->handle, CL_TRUE,
dstrawofs, total, alignedPtr.getAlignedPtr(), 0, 0, 0));
}
-#ifdef __APPLE__
- else
+ else if (CV_OPENCL_DISABLE_BUFFER_RECT_OPERATIONS)
{
const size_t padding = CV_OPENCL_DATA_PTR_ALIGNMENT;
size_t new_dstrawofs = dstrawofs & ~(padding-1);
CV_OCL_CHECK(clEnqueueWriteBuffer(q, (cl_mem)u->handle, CL_TRUE,
new_dstrawofs, total, ptr, 0, 0, 0));
}
-#else
else
{
AlignedDataPtr2D<true, false> alignedPtr((uchar*)srcptr, new_sz[1], new_sz[0], new_srcstep[0], CV_OPENCL_DATA_PTR_ALIGNMENT);
new_srcstep[0], 0,
ptr, 0, 0, 0));
}
-#endif
}
u->markHostCopyObsolete(true);
#ifdef HAVE_OPENCL_SVM
CV_OCL_CHECK(retval = clEnqueueCopyBuffer(q, (cl_mem)src->handle, (cl_mem)dst->handle,
srcrawofs, dstrawofs, total, 0, 0, 0));
}
-#ifdef __APPLE__
- else
+ else if (CV_OPENCL_DISABLE_BUFFER_RECT_OPERATIONS)
{
const size_t padding = CV_OPENCL_DATA_PTR_ALIGNMENT;
size_t new_srcrawofs = srcrawofs & ~(padding-1);
CV_OCL_CHECK(clEnqueueWriteBuffer(q, (cl_mem)dst->handle, CL_TRUE,
new_dstrawofs, dst_total, dstptr, 0, 0, 0));
}
-#else
else
{
CV_OCL_CHECK(retval = clEnqueueCopyBufferRect(q, (cl_mem)src->handle, (cl_mem)dst->handle,
new_dststep[0], 0,
0, 0, 0));
}
-#endif
}
if (retval == CL_SUCCESS)
{
#define _ncvtest_hpp_
#if defined _MSC_VER
-# pragma warning( disable : 4201 4408 4127 4100)
+# pragma warning( disable : 4201 4408 4100)
#endif
#include <string>
#include "precomp.hpp"
#include "agast_score.hpp"
-#ifdef _MSC_VER
-#pragma warning( disable : 4127 )
-#endif
-
namespace cv
{
#include "agast_score.hpp"
-#ifdef _MSC_VER
-#pragma warning( disable : 4127 )
-#endif
-
namespace cv
{
#include "opencv2/core/hal/intrin.hpp"
#include "opencv2/core/openvx/ovx_defs.hpp"
-#if defined _MSC_VER
-# pragma warning( disable : 4127)
-#endif
namespace cv
{
namespace cv
{
-#ifdef _MSC_VER
-# pragma warning(push)
-# pragma warning(disable:4324) //structure was padded due to __declspec(align())
-#endif
struct JpegErrorMgr
{
struct jpeg_error_mgr pub;
jmp_buf setjmp_buffer;
};
-#ifdef _MSC_VER
-# pragma warning(pop)
-#endif
struct JpegSource
{
PERF_TEST_P(MatInfo_Size_Size, resizeUpLinear,
testing::Values(
MatInfo_Size_Size_t(CV_8UC1, szVGA, szqHD),
+ MatInfo_Size_Size_t(CV_8UC2, szVGA, szqHD),
+ MatInfo_Size_Size_t(CV_8UC3, szVGA, szqHD),
+ MatInfo_Size_Size_t(CV_8UC4, szVGA, szqHD),
MatInfo_Size_Size_t(CV_8UC1, szVGA, sz720p),
+ MatInfo_Size_Size_t(CV_8UC2, szVGA, sz720p),
+ MatInfo_Size_Size_t(CV_8UC3, szVGA, sz720p),
MatInfo_Size_Size_t(CV_8UC4, szVGA, sz720p)
)
)
PERF_TEST_P(MatInfo_Size_Size, resizeDownLinear,
testing::Values(
MatInfo_Size_Size_t(CV_8UC1, szVGA, szQVGA),
+ MatInfo_Size_Size_t(CV_8UC2, szVGA, szQVGA),
+ MatInfo_Size_Size_t(CV_8UC3, szVGA, szQVGA),
+ MatInfo_Size_Size_t(CV_8UC4, szVGA, szQVGA),
+ MatInfo_Size_Size_t(CV_8UC1, szqHD, szVGA),
+ MatInfo_Size_Size_t(CV_8UC2, szqHD, szVGA),
+ MatInfo_Size_Size_t(CV_8UC3, szqHD, szVGA),
MatInfo_Size_Size_t(CV_8UC4, szqHD, szVGA),
MatInfo_Size_Size_t(CV_8UC1, sz720p, Size(120 * sz720p.width / sz720p.height, 120)),//face detection min_face_size = 20%
+ MatInfo_Size_Size_t(CV_8UC2, sz720p, Size(120 * sz720p.width / sz720p.height, 120)),//face detection min_face_size = 20%
+ MatInfo_Size_Size_t(CV_8UC3, sz720p, Size(120 * sz720p.width / sz720p.height, 120)),//face detection min_face_size = 20%
+ MatInfo_Size_Size_t(CV_8UC4, sz720p, Size(120 * sz720p.width / sz720p.height, 120)),//face detection min_face_size = 20%
+ MatInfo_Size_Size_t(CV_8UC1, sz720p, szVGA),
+ MatInfo_Size_Size_t(CV_8UC2, sz720p, szVGA),
+ MatInfo_Size_Size_t(CV_8UC3, sz720p, szVGA),
MatInfo_Size_Size_t(CV_8UC4, sz720p, szVGA),
+ MatInfo_Size_Size_t(CV_8UC1, sz720p, szQVGA),
+ MatInfo_Size_Size_t(CV_8UC2, sz720p, szQVGA),
+ MatInfo_Size_Size_t(CV_8UC3, sz720p, szQVGA),
MatInfo_Size_Size_t(CV_8UC4, sz720p, szQVGA)
)
)
#include "opencv2/core/openvx/ovx_defs.hpp"
-#ifdef _MSC_VER
-#pragma warning( disable: 4127 ) // conditional expression is constant
-#endif
-
#if CV_SIMD128
#define CV_MALLOC_SIMD128 16
#endif
}
}
template <>
-void hlineResizeCn<uint8_t, ufixedpoint16, 2, true, 3>(uint8_t* src, int, int *ofst, ufixedpoint16* m, ufixedpoint16* dst, int dst_min, int dst_max, int dst_width)
-{
- int i = 0;
- ufixedpoint16 srccn[3] = { src[0], src[1], src[2] };
- v_uint16x8 v_srccn0 = v_setall_u16(((uint16_t*)srccn)[0]);
- v_uint16x8 v_srccn1 = v_setall_u16(((uint16_t*)srccn)[1]);
- v_uint16x8 v_srccn2 = v_setall_u16(((uint16_t*)srccn)[2]);
- for (; i < dst_min - 7; i += 8, m += 16, dst += 24) // Points that fall left from src image so became equal to leftmost src point
- {
- v_store_interleave((uint16_t*)dst, v_srccn0, v_srccn1, v_srccn2);
- }
- for (; i < dst_min; i++, m += 2)
- {
- *(dst++) = srccn[0];
- *(dst++) = srccn[1];
- *(dst++) = srccn[2];
- }
- for (; i < dst_max - 7 && ofst[i + 7] + 15 <= ofst[dst_width - 1]; i += 8, m += 16, dst += 24)
- {
- v_uint8x16 v_src0_c1, v_src0_c2, v_src0_c3;
- v_load_deinterleave(src + 3 * ofst[i ], v_src0_c1, v_src0_c2, v_src0_c3);
- v_uint8x16 v_src1_c1, v_src1_c2, v_src1_c3;
- v_load_deinterleave(src + 3 * ofst[i + 1], v_src1_c1, v_src1_c2, v_src1_c3);
- v_uint8x16 v_src2_c1, v_src2_c2, v_src2_c3;
- v_load_deinterleave(src + 3 * ofst[i + 2], v_src2_c1, v_src2_c2, v_src2_c3);
- v_uint8x16 v_src3_c1, v_src3_c2, v_src3_c3;
- v_load_deinterleave(src + 3 * ofst[i + 3], v_src3_c1, v_src3_c2, v_src3_c3);
-
- v_uint16x8 v_tmp0, v_tmp1, v_tmp2;
- v_uint16x8 v_src0123_c1, v_src0123_c2, v_src0123_c3;
- v_zip(v_reinterpret_as_u16(v_src0_c1), v_reinterpret_as_u16(v_src2_c1), v_tmp0, v_tmp1);
- v_zip(v_reinterpret_as_u16(v_src1_c1), v_reinterpret_as_u16(v_src3_c1), v_tmp1, v_tmp2);
- v_zip(v_tmp0, v_tmp1, v_src0123_c1, v_tmp2);
- v_zip(v_reinterpret_as_u16(v_src0_c2), v_reinterpret_as_u16(v_src2_c2), v_tmp0, v_tmp1);
- v_zip(v_reinterpret_as_u16(v_src1_c2), v_reinterpret_as_u16(v_src3_c2), v_tmp1, v_tmp2);
- v_zip(v_tmp0, v_tmp1, v_src0123_c2, v_tmp2);
- v_zip(v_reinterpret_as_u16(v_src0_c3), v_reinterpret_as_u16(v_src2_c3), v_tmp0, v_tmp1);
- v_zip(v_reinterpret_as_u16(v_src1_c3), v_reinterpret_as_u16(v_src3_c3), v_tmp1, v_tmp2);
- v_zip(v_tmp0, v_tmp1, v_src0123_c3, v_tmp2);
-
- v_load_deinterleave(src + 3 * ofst[i + 4], v_src0_c1, v_src0_c2, v_src0_c3);
- v_load_deinterleave(src + 3 * ofst[i + 5], v_src1_c1, v_src1_c2, v_src1_c3);
- v_load_deinterleave(src + 3 * ofst[i + 6], v_src2_c1, v_src2_c2, v_src2_c3);
- v_load_deinterleave(src + 3 * ofst[i + 7], v_src3_c1, v_src3_c2, v_src3_c3);
-
- v_uint16x8 v_src4567_c1, v_src4567_c2, v_src4567_c3;
- v_zip(v_reinterpret_as_u16(v_src0_c1), v_reinterpret_as_u16(v_src2_c1), v_tmp0, v_tmp1);
- v_zip(v_reinterpret_as_u16(v_src1_c1), v_reinterpret_as_u16(v_src3_c1), v_tmp1, v_tmp2);
- v_zip(v_tmp0, v_tmp1, v_src4567_c1, v_tmp2);
- v_zip(v_reinterpret_as_u16(v_src0_c2), v_reinterpret_as_u16(v_src2_c2), v_tmp0, v_tmp1);
- v_zip(v_reinterpret_as_u16(v_src1_c2), v_reinterpret_as_u16(v_src3_c2), v_tmp1, v_tmp2);
- v_zip(v_tmp0, v_tmp1, v_src4567_c2, v_tmp2);
- v_zip(v_reinterpret_as_u16(v_src0_c3), v_reinterpret_as_u16(v_src2_c3), v_tmp0, v_tmp1);
- v_zip(v_reinterpret_as_u16(v_src1_c3), v_reinterpret_as_u16(v_src3_c3), v_tmp1, v_tmp2);
- v_zip(v_tmp0, v_tmp1, v_src4567_c3, v_tmp2);
-
- v_expand(v_reinterpret_as_u8(v_combine_low(v_src0123_c1, v_src4567_c1)),
- v_src0123_c1, v_src4567_c1
- );
- v_expand(v_reinterpret_as_u8(v_combine_low(v_src0123_c2, v_src4567_c2)),
- v_src0123_c2, v_src4567_c2
- );
- v_expand(v_reinterpret_as_u8(v_combine_low(v_src0123_c3, v_src4567_c3)),
- v_src0123_c3, v_src4567_c3
- );
- v_int16x8 v_mul0123 = v_load((int16_t*)m);
- v_int16x8 v_mul4567 = v_load((int16_t*)m+8);
- v_uint32x4 v_res0123_c1 = v_reinterpret_as_u32(v_dotprod(v_reinterpret_as_s16(v_src0123_c1), v_mul0123));
- v_uint32x4 v_res0123_c2 = v_reinterpret_as_u32(v_dotprod(v_reinterpret_as_s16(v_src0123_c2), v_mul0123));
- v_uint32x4 v_res0123_c3 = v_reinterpret_as_u32(v_dotprod(v_reinterpret_as_s16(v_src0123_c3), v_mul0123));
- v_uint32x4 v_res4567_c1 = v_reinterpret_as_u32(v_dotprod(v_reinterpret_as_s16(v_src4567_c1), v_mul4567));
- v_uint32x4 v_res4567_c2 = v_reinterpret_as_u32(v_dotprod(v_reinterpret_as_s16(v_src4567_c2), v_mul4567));
- v_uint32x4 v_res4567_c3 = v_reinterpret_as_u32(v_dotprod(v_reinterpret_as_s16(v_src4567_c3), v_mul4567));
-
- v_store_interleave((uint16_t*)dst , v_pack(v_res0123_c1, v_res4567_c1), v_pack(v_res0123_c2, v_res4567_c2), v_pack(v_res0123_c3, v_res4567_c3));
- }
- for (; i < dst_max; i += 1, m += 2)
- {
- uint8_t* px = src + 3 * ofst[i];
- *(dst++) = m[0] * px[0] + m[1] * px[3];
- *(dst++) = m[0] * px[1] + m[1] * px[4];
- *(dst++) = m[0] * px[2] + m[1] * px[5];
- }
- srccn[0] = (src + 3 * ofst[dst_width - 1])[0]; v_srccn0 = v_setall_u16(((uint16_t*)srccn)[0]);
- srccn[1] = (src + 3 * ofst[dst_width - 1])[1]; v_srccn1 = v_setall_u16(((uint16_t*)srccn)[1]);
- srccn[2] = (src + 3 * ofst[dst_width - 1])[2]; v_srccn2 = v_setall_u16(((uint16_t*)srccn)[2]);
- for (; i < dst_width - 7; i += 8, dst += 24) // Points that fall left from src image so became equal to leftmost src point
- {
- v_store_interleave((uint16_t*)dst, v_srccn0, v_srccn1, v_srccn2);
- }
- for (; i < dst_width; i++)
- {
- *(dst++) = srccn[0];
- *(dst++) = srccn[1];
- *(dst++) = srccn[2];
- }
-}
-template <>
void hlineResizeCn<uint8_t, ufixedpoint16, 2, true, 4>(uint8_t* src, int, int *ofst, ufixedpoint16* m, ufixedpoint16* dst, int dst_min, int dst_max, int dst_width)
{
int i = 0;
inv_scale_y = (double)dsize.height/ssize.height;
}
+ if (interpolation == INTER_LINEAR_EXACT && (_src.depth() == CV_32F || _src.depth() == CV_64F))
+ interpolation = INTER_LINEAR; // If depth isn't supported fallback to generic resize
+
CV_OCL_RUN(_src.dims() <= 2 && _dst.isUMat() && _src.cols() > 10 && _src.rows() > 10,
ocl_resize(_src, _dst, dsize, inv_scale_x, inv_scale_y, interpolation))
#endif
#ifdef _MSC_VER
-#pragma warning( disable: 4127 ) // conditional expression is constant
#pragma warning( disable: 4503 ) // decorated name length exceeded, name was truncated
#endif
// std::runtime_error inherits from std::exception, many testing
// frameworks know how to extract and print the message inside it.
-#ifdef _MSC_VER
-# pragma warning(push) // Saves the current warning state.
-# pragma warning(disable:4275) // Temporarily disables warning 4275.
-#endif // _MSC_VER
-
class GTEST_API_ GoogleTestFailureException : public ::std::runtime_error {
public:
explicit GoogleTestFailureException(const TestPartResult& failure);
};
-#ifdef _MSC_VER
-# pragma warning(pop) // Restores the warning state.
-#endif // _MSC_VER
-
#endif // GTEST_HAS_EXCEPTIONS
// A helper class for creating scoped traces in user programs.
#define CALC_FFMPEG_VERSION(a,b,c) ( a<<16 | b<<8 | c )
#if defined _MSC_VER && _MSC_VER >= 1200
-#pragma warning( disable: 4244 4510 4512 4610 )
+#pragma warning( disable: 4244 4510 4610 )
#endif
#ifdef __GNUC__
#endif
#if defined _MSC_VER && _MSC_VER >= 1200
-#pragma warning( default: 4244 4510 4512 4610 )
+#pragma warning( default: 4244 4510 4610 )
#endif
#ifdef NDEBUG
// succeed but return a nullptr pointer. By default, the list does not allow nullptr
// pointers.
-#ifdef _MSC_VER
-#pragma warning(push)
-#pragma warning(disable: 4127) // constant expression
-#endif
-
template <class T, bool NULLABLE = FALSE>
class ComPtrList : public List<T*>
{
}
};
-#ifdef _MSC_VER
-#pragma warning(pop)
-#endif
-
/* Be sure to declare webcam device capability in manifest
For better media capture support, add the following snippet with correct module name to the project manifest
(videoio needs DLL activation class factoryentry points):