diff --git a/CMakeLists.txt b/CMakeLists.txt index 949ca43c66f0d3ca3859c8496ba4e340cfebfe49..091bc2255d2266e2f913a50f13b1f26a7726076b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -110,43 +110,44 @@ endif() # Optional 3rd party components # =================================================== -OCV_OPTION(WITH_1394 "Include IEEE1394 support" ON IF (UNIX AND NOT ANDROID AND NOT IOS) ) +OCV_OPTION(WITH_1394 "Include IEEE1394 support" ON IF (UNIX AND NOT ANDROID AND NOT IOS AND NOT CARMA) ) OCV_OPTION(WITH_AVFOUNDATION "Use AVFoundation for Video I/O" ON IF IOS) OCV_OPTION(WITH_CARBON "Use Carbon for UI instead of Cocoa" OFF IF APPLE ) -OCV_OPTION(WITH_CUBLAS "Include NVidia Cuda Basic Linear Algebra Subprograms (BLAS) library support" OFF IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) ) OCV_OPTION(WITH_CUDA "Include NVidia Cuda Runtime support" ON IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) ) OCV_OPTION(WITH_CUFFT "Include NVidia Cuda Fast Fourier Transform (FFT) library support" ON IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) ) +OCV_OPTION(WITH_CUBLAS "Include NVidia Cuda Basic Linear Algebra Subprograms (BLAS) library support" OFF IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS) ) +OCV_OPTION(WITH_NVCUVID "Include NVidia Video Decoding library support" OFF IF (CMAKE_VERSION VERSION_GREATER "2.8" AND NOT ANDROID AND NOT IOS AND NOT APPLE) ) OCV_OPTION(WITH_EIGEN "Include Eigen2/Eigen3 support" ON) -OCV_OPTION(WITH_FFMPEG "Include FFMPEG support" ON IF (NOT ANDROID AND NOT IOS) ) -OCV_OPTION(WITH_GSTREAMER "Include Gstreamer support" ON IF (UNIX AND NOT APPLE AND NOT ANDROID) ) -OCV_OPTION(WITH_GTK "Include GTK support" ON IF (UNIX AND NOT APPLE AND NOT ANDROID) ) +OCV_OPTION(WITH_FFMPEG "Include FFMPEG support" ON IF (NOT ANDROID AND NOT IOS AND NOT CARMA) ) +OCV_OPTION(WITH_GSTREAMER "Include Gstreamer support" ON IF (UNIX AND NOT APPLE AND NOT ANDROID AND NOT CARMA) ) +OCV_OPTION(WITH_GTK "Include GTK support" ON IF (UNIX AND NOT APPLE AND NOT ANDROID AND NOT CARMA) ) OCV_OPTION(WITH_IPP "Include Intel IPP support" OFF IF (MSVC OR X86 OR X86_64) ) OCV_OPTION(WITH_JASPER "Include JPEG2K support" ON IF (NOT IOS) ) OCV_OPTION(WITH_JPEG "Include JPEG support" ON IF (NOT IOS) ) OCV_OPTION(WITH_OPENEXR "Include ILM support via OpenEXR" ON IF (NOT IOS) ) -OCV_OPTION(WITH_OPENGL "Include OpenGL support" OFF IF (NOT ANDROID AND NOT APPLE) ) -OCV_OPTION(WITH_OPENNI "Include OpenNI support" OFF IF (NOT ANDROID AND NOT IOS) ) +OCV_OPTION(WITH_OPENGL "Include OpenGL support" OFF IF (NOT ANDROID AND NOT APPLE AND NOT CARMA) ) +OCV_OPTION(WITH_OPENNI "Include OpenNI support" OFF IF (NOT ANDROID AND NOT IOS AND NOT CARMA) ) OCV_OPTION(WITH_PNG "Include PNG support" ON IF (NOT IOS) ) -OCV_OPTION(WITH_PVAPI "Include Prosilica GigE support" ON IF (NOT ANDROID AND NOT IOS) ) -OCV_OPTION(WITH_QT "Build with Qt Backend support" OFF IF (NOT ANDROID AND NOT IOS) ) +OCV_OPTION(WITH_PVAPI "Include Prosilica GigE support" ON IF (NOT ANDROID AND NOT IOS AND NOT CARMA) ) +OCV_OPTION(WITH_QT "Build with Qt Backend support" OFF IF (NOT ANDROID AND NOT IOS AND NOT CARMA) ) OCV_OPTION(WITH_QUICKTIME "Use QuickTime for Video I/O insted of QTKit" OFF IF APPLE ) -OCV_OPTION(WITH_TBB "Include Intel TBB support" OFF IF (NOT IOS) ) +OCV_OPTION(WITH_TBB "Include Intel TBB support" OFF IF (NOT IOS AND NOT CARMA) ) OCV_OPTION(WITH_CSTRIPES "Include C= support" OFF IF WIN32 ) OCV_OPTION(WITH_TIFF "Include TIFF support" ON IF (NOT IOS) ) -OCV_OPTION(WITH_UNICAP "Include Unicap support (GPL)" OFF IF (UNIX AND NOT APPLE AND NOT ANDROID) ) -OCV_OPTION(WITH_V4L "Include Video 4 Linux support" ON IF (UNIX AND NOT APPLE AND NOT ANDROID) ) +OCV_OPTION(WITH_UNICAP "Include Unicap support (GPL)" OFF IF (UNIX AND NOT APPLE AND NOT ANDROID AND NOT CARMA) ) +OCV_OPTION(WITH_V4L "Include Video 4 Linux support" ON IF (UNIX AND NOT APPLE AND NOT ANDROID AND NOT CARMA) ) OCV_OPTION(WITH_VIDEOINPUT "Build HighGUI with DirectShow support" ON IF WIN32 ) -OCV_OPTION(WITH_XIMEA "Include XIMEA cameras support" OFF IF (NOT ANDROID AND NOT APPLE) ) -OCV_OPTION(WITH_XINE "Include Xine support (GPL)" OFF IF (UNIX AND NOT APPLE AND NOT ANDROID) ) +OCV_OPTION(WITH_XIMEA "Include XIMEA cameras support" OFF IF (NOT ANDROID AND NOT APPLE AND NOT CARMA) ) +OCV_OPTION(WITH_XINE "Include Xine support (GPL)" OFF IF (UNIX AND NOT APPLE AND NOT ANDROID AND NOT CARMA) ) OCV_OPTION(WITH_CLP "Include Clp support (EPL)" OFF) -OCV_OPTION(WITH_OPENCL "Include OpenCL Runtime support" OFF IF (NOT ANDROID AND NOT IOS) ) -OCV_OPTION(WITH_OPENCLAMDFFT "Include AMD OpenCL FFT library support" OFF IF (NOT ANDROID AND NOT IOS) ) -OCV_OPTION(WITH_OPENCLAMDBLAS "Include AMD OpenCL BLAS library support" OFF IF (NOT ANDROID AND NOT IOS) ) +OCV_OPTION(WITH_OPENCL "Include OpenCL Runtime support" OFF IF (NOT ANDROID AND NOT IOS AND NOT CARMA) ) +OCV_OPTION(WITH_OPENCLAMDFFT "Include AMD OpenCL FFT library support" OFF IF (NOT ANDROID AND NOT IOS AND NOT CARMA) ) +OCV_OPTION(WITH_OPENCLAMDBLAS "Include AMD OpenCL BLAS library support" OFF IF (NOT ANDROID AND NOT IOS AND NOT CARMA) ) # OpenCV build components # =================================================== -OCV_OPTION(BUILD_SHARED_LIBS "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)" NOT (ANDROID OR IOS) ) +OCV_OPTION(BUILD_SHARED_LIBS "Build shared libraries (.dll/.so) instead of static ones (.lib/.a)" NOT (ANDROID OR IOS OR CARMA) ) OCV_OPTION(BUILD_ANDROID_EXAMPLES "Build examples for Android platform" ON IF ANDROID ) OCV_OPTION(BUILD_DOCS "Create build rules for OpenCV Documentation" ON ) OCV_OPTION(BUILD_EXAMPLES "Build all examples" OFF ) @@ -160,12 +161,12 @@ OCV_OPTION(BUILD_ANDROID_SERVICE "Build OpenCV Manager for Google Play" OFF I OCV_OPTION(BUILD_ANDROID_PACKAGE "Build platform-specific package for Google Play" OFF IF ANDROID ) # 3rd party libs -OCV_OPTION(BUILD_ZLIB "Build zlib from source" WIN32 OR APPLE ) -OCV_OPTION(BUILD_TIFF "Build libtiff from source" WIN32 OR ANDROID OR APPLE ) -OCV_OPTION(BUILD_JASPER "Build libjasper from source" WIN32 OR ANDROID OR APPLE ) -OCV_OPTION(BUILD_JPEG "Build libjpeg from source" WIN32 OR ANDROID OR APPLE ) -OCV_OPTION(BUILD_PNG "Build libpng from source" WIN32 OR ANDROID OR APPLE ) -OCV_OPTION(BUILD_OPENEXR "Build openexr from source" WIN32 OR ANDROID OR APPLE ) +OCV_OPTION(BUILD_ZLIB "Build zlib from source" WIN32 OR APPLE OR CARMA ) +OCV_OPTION(BUILD_TIFF "Build libtiff from source" WIN32 OR ANDROID OR APPLE OR CARMA ) +OCV_OPTION(BUILD_JASPER "Build libjasper from source" WIN32 OR ANDROID OR APPLE OR CARMA ) +OCV_OPTION(BUILD_JPEG "Build libjpeg from source" WIN32 OR ANDROID OR APPLE OR CARMA ) +OCV_OPTION(BUILD_PNG "Build libpng from source" WIN32 OR ANDROID OR APPLE OR CARMA ) +OCV_OPTION(BUILD_OPENEXR "Build openexr from source" WIN32 OR ANDROID OR APPLE OR CARMA ) # OpenCV installation options diff --git a/cmake/OpenCVDetectCUDA.cmake b/cmake/OpenCVDetectCUDA.cmake index 354ffbf996928419316450f22bbed743a1440579..da06b89777d593fe8da42a85a7f9a776ddd57927 100644 --- a/cmake/OpenCVDetectCUDA.cmake +++ b/cmake/OpenCVDetectCUDA.cmake @@ -13,7 +13,7 @@ if(CMAKE_COMPILER_IS_GNUCXX AND NOT APPLE AND CMAKE_CXX_COMPILER_ID STREQUAL "Cl return() endif() -find_package(CUDA 4.1) +find_package(CUDA 4.2) if(CUDA_FOUND) set(HAVE_CUDA 1) @@ -26,16 +26,21 @@ if(CUDA_FOUND) set(HAVE_CUBLAS 1) endif() + if(WITH_NVCUVID) + find_cuda_helper_libs(nvcuvid) + set(HAVE_NVCUVID 1) + endif() + message(STATUS "CUDA detected: " ${CUDA_VERSION}) - if(${CUDA_VERSION_STRING} VERSION_GREATER "4.1") - set(CUDA_ARCH_BIN "1.1 1.2 1.3 2.0 2.1(2.0) 3.0" CACHE STRING "Specify 'real' GPU architectures to build binaries for, BIN(PTX) format is supported") + if (CARMA) + set(CUDA_ARCH_BIN "3.0" CACHE STRING "Specify 'real' GPU architectures to build binaries for, BIN(PTX) format is supported") + set(CUDA_ARCH_PTX "3.0" CACHE STRING "Specify 'virtual' PTX architectures to build PTX intermediate code for") else() - set(CUDA_ARCH_BIN "1.1 1.2 1.3 2.0 2.1(2.0)" CACHE STRING "Specify 'real' GPU architectures to build binaries for, BIN(PTX) format is supported") + set(CUDA_ARCH_BIN "1.1 1.2 1.3 2.0 2.1(2.0) 3.0" CACHE STRING "Specify 'real' GPU architectures to build binaries for, BIN(PTX) format is supported") + set(CUDA_ARCH_PTX "2.0 3.0" CACHE STRING "Specify 'virtual' PTX architectures to build PTX intermediate code for") endif() - set(CUDA_ARCH_PTX "2.0" CACHE STRING "Specify 'virtual' PTX architectures to build PTX intermediate code for") - string(REGEX REPLACE "\\." "" ARCH_BIN_NO_POINTS "${CUDA_ARCH_BIN}") string(REGEX REPLACE "\\." "" ARCH_PTX_NO_POINTS "${CUDA_ARCH_PTX}") @@ -78,6 +83,10 @@ if(CUDA_FOUND) set(OPENCV_CUDA_ARCH_FEATURES "${OPENCV_CUDA_ARCH_FEATURES} ${ARCH}") endforeach() + if(CARMA) + set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} --target-cpu-architecture=ARM "-ccbin=${CMAKE_CXX_COMPILER}") + endif() + # These vars will be processed in other scripts set(CUDA_NVCC_FLAGS ${CUDA_NVCC_FLAGS} ${NVCC_FLAGS_EXTRA}) set(OpenCV_CUDA_CC "${NVCC_FLAGS_EXTRA}") diff --git a/cmake/templates/cvconfig.h.cmake b/cmake/templates/cvconfig.h.cmake index 37e092b66eaf0da2c7ec82b955866e9efcdc63ac..6d4d2184f948e35bf7b0e2524e287755d2c46fa9 100644 --- a/cmake/templates/cvconfig.h.cmake +++ b/cmake/templates/cvconfig.h.cmake @@ -172,21 +172,15 @@ /* NVidia Cuda Runtime API*/ #cmakedefine HAVE_CUDA -/* OpenCL Support */ -#cmakedefine HAVE_OPENCL - -/* AMD's OpenCL Fast Fourier Transform Library*/ -#cmakedefine HAVE_CLAMDFFT - -/* AMD's Basic Linear Algebra Subprograms Library*/ -#cmakedefine HAVE_CLAMDBLAS - /* NVidia Cuda Fast Fourier Transform (FFT) API*/ #cmakedefine HAVE_CUFFT /* NVidia Cuda Basic Linear Algebra Subprograms (BLAS) API*/ #cmakedefine HAVE_CUBLAS +/* NVidia Video Decoding API*/ +#cmakedefine HAVE_NVCUVID + /* Compile for 'real' NVIDIA GPU architectures */ #define CUDA_ARCH_BIN "${OPENCV_CUDA_ARCH_BIN}" @@ -199,6 +193,15 @@ /* Create PTX or BIN for 1.0 compute capability */ #cmakedefine CUDA_ARCH_BIN_OR_PTX_10 +/* OpenCL Support */ +#cmakedefine HAVE_OPENCL + +/* AMD's OpenCL Fast Fourier Transform Library*/ +#cmakedefine HAVE_CLAMDFFT + +/* AMD's Basic Linear Algebra Subprograms Library*/ +#cmakedefine HAVE_CLAMDBLAS + /* VideoInput library */ #cmakedefine HAVE_VIDEOINPUT diff --git a/modules/gpu/CMakeLists.txt b/modules/gpu/CMakeLists.txt index 1227b93a3493acb7a8a1cdc6c6aa99902160f65c..ff9d0fda988ac57f60691237d68deda03a237f08 100644 --- a/modules/gpu/CMakeLists.txt +++ b/modules/gpu/CMakeLists.txt @@ -46,19 +46,16 @@ if (HAVE_CUDA) set(cuda_link_libs ${CUDA_LIBRARIES} ${CUDA_npp_LIBRARY}) - if(NOT APPLE) - unset(CUDA_nvcuvid_LIBRARY CACHE) - find_cuda_helper_libs(nvcuvid) + if(WITH_NVCUVID) set(cuda_link_libs ${cuda_link_libs} ${CUDA_nvcuvid_LIBRARY}) endif() if(WIN32) - unset(CUDA_nvcuvenc_LIBRARY CACHE) find_cuda_helper_libs(nvcuvenc) set(cuda_link_libs ${cuda_link_libs} ${CUDA_nvcuvenc_LIBRARY}) endif() - if(NOT APPLE AND WITH_FFMPEG) + if(WITH_FFMPEG) set(cuda_link_libs ${cuda_link_libs} ${HIGHGUI_LIBRARIES}) endif() else() diff --git a/modules/gpu/misc/carma.toolchain.cmake b/modules/gpu/misc/carma.toolchain.cmake new file mode 100644 index 0000000000000000000000000000000000000000..a5531f44bb02c65ca4b67ac1fbda03a4a4d91f36 --- /dev/null +++ b/modules/gpu/misc/carma.toolchain.cmake @@ -0,0 +1,10 @@ +set(CMAKE_SYSTEM_NAME Linux) +SET(CMAKE_SYSTEM_VERSION 1) + +set(CMAKE_C_COMPILER /usr/bin/arm-linux-gnueabi-gcc-4.5) +set(CMAKE_CXX_COMPILER /usr/bin/arm-linux-gnueabi-g++-4.5) + +SET(CMAKE_FIND_ROOT_PATH /usr/arm-linux-gnueabi) + +set(CARMA 1) +add_definitions(-DCARMA) diff --git a/modules/gpu/src/cuvid_video_source.cpp b/modules/gpu/src/cuvid_video_source.cpp index 5c46913539bd33278a0504df8f3cd09bfb9af1db..7d45b8fee90ffd6c644c9ae2c354f1cb8dd67ac3 100644 --- a/modules/gpu/src/cuvid_video_source.cpp +++ b/modules/gpu/src/cuvid_video_source.cpp @@ -1,7 +1,7 @@ #include "cuvid_video_source.h" #include "cu_safe_call.h" -#if defined(HAVE_CUDA) && !defined(__APPLE__) +#if defined(HAVE_CUDA) && defined(HAVE_NVCUVID) cv::gpu::detail::CuvidVideoSource::CuvidVideoSource(const std::string& fname) { diff --git a/modules/gpu/src/cuvid_video_source.h b/modules/gpu/src/cuvid_video_source.h index a06353fedd037491c172cdc8013341bc7ad752a4..1c4c0e5e00e1cc1a33d4a7a592202a5f5c39b8c6 100644 --- a/modules/gpu/src/cuvid_video_source.h +++ b/modules/gpu/src/cuvid_video_source.h @@ -45,7 +45,7 @@ #include "precomp.hpp" -#if defined(HAVE_CUDA) && !defined(__APPLE__) +#if defined(HAVE_CUDA) && defined(HAVE_NVCUVID) namespace cv { namespace gpu { diff --git a/modules/gpu/src/ffmpeg_video_source.cpp b/modules/gpu/src/ffmpeg_video_source.cpp index 7538de601d52dcc040fa86d6929f602ddc0b4ac4..42327fef38c16af39a3956607595ba679d4e67dd 100644 --- a/modules/gpu/src/ffmpeg_video_source.cpp +++ b/modules/gpu/src/ffmpeg_video_source.cpp @@ -42,7 +42,7 @@ #include "ffmpeg_video_source.h" -#if defined(HAVE_CUDA) && !defined(__APPLE__) +#if defined(HAVE_CUDA) && defined(HAVE_NVCUVID) #if defined(HAVE_FFMPEG) && defined(BUILD_SHARED_LIBS) #include "cap_ffmpeg_impl.hpp" diff --git a/modules/gpu/src/ffmpeg_video_source.h b/modules/gpu/src/ffmpeg_video_source.h index 66bb7c71cad0c04a28a5f31469e01d661ab6dcf5..41bf0cfd0eb4dde278fc977d7486a6424f0ff819 100644 --- a/modules/gpu/src/ffmpeg_video_source.h +++ b/modules/gpu/src/ffmpeg_video_source.h @@ -46,7 +46,7 @@ #include "precomp.hpp" #include "thread_wrappers.h" -#if defined(HAVE_CUDA) && !defined(__APPLE__) +#if defined(HAVE_CUDA) && defined(HAVE_NVCUVID) struct InputMediaStream_FFMPEG; diff --git a/modules/gpu/src/frame_queue.cpp b/modules/gpu/src/frame_queue.cpp index 4ed6d0f147822f9690a1bdf3bb3b0ecdec0e46e6..0d939187320010520cf2ede0adf4ee02945006fb 100644 --- a/modules/gpu/src/frame_queue.cpp +++ b/modules/gpu/src/frame_queue.cpp @@ -42,7 +42,7 @@ #include "frame_queue.h" -#if defined(HAVE_CUDA) && !defined(__APPLE__) +#if defined(HAVE_CUDA) && defined(HAVE_NVCUVID) cv::gpu::detail::FrameQueue::FrameQueue() : endOfDecode_(0), diff --git a/modules/gpu/src/frame_queue.h b/modules/gpu/src/frame_queue.h index 5c049a28e5ff2671f29796052bc779b8c6493436..00c44a4015882926568dc9db19afc8ef9ce3a31a 100644 --- a/modules/gpu/src/frame_queue.h +++ b/modules/gpu/src/frame_queue.h @@ -46,7 +46,7 @@ #include "precomp.hpp" #include "thread_wrappers.h" -#if defined(HAVE_CUDA) && !defined(__APPLE__) +#if defined(HAVE_CUDA) && defined(HAVE_NVCUVID) namespace cv { namespace gpu { diff --git a/modules/gpu/src/precomp.hpp b/modules/gpu/src/precomp.hpp index c37332ae4527f6b29ea2091125e1c47eabe4dd5e..7c531851079bbd23b4ac55b16530e4b224a10bde 100644 --- a/modules/gpu/src/precomp.hpp +++ b/modules/gpu/src/precomp.hpp @@ -97,12 +97,12 @@ #include #endif - #ifndef __APPLE__ + #ifdef HAVE_NVCUVID #include - #endif - #ifdef WIN32 - #include + #ifdef WIN32 + #include + #endif #endif #include "internal_shared.hpp" diff --git a/modules/gpu/src/thread_wrappers.cpp b/modules/gpu/src/thread_wrappers.cpp index fcfa59827e219ed55d9479fea5b61410cb367f5e..f8099aca91ca99d74a953cffd8dc108734a1a1b9 100644 --- a/modules/gpu/src/thread_wrappers.cpp +++ b/modules/gpu/src/thread_wrappers.cpp @@ -42,7 +42,7 @@ #include "thread_wrappers.h" -#if defined(HAVE_CUDA) && !defined(__APPLE__) +#if defined(HAVE_CUDA) && defined(HAVE_NVCUVID) #ifdef WIN32 #define NOMINMAX diff --git a/modules/gpu/src/thread_wrappers.h b/modules/gpu/src/thread_wrappers.h index 9198d3e9066b288d0c3c93449cbb97be100eef10..78e675216cfcc3cec94ba94f68b06ee7f75584f5 100644 --- a/modules/gpu/src/thread_wrappers.h +++ b/modules/gpu/src/thread_wrappers.h @@ -45,7 +45,7 @@ #include "precomp.hpp" -#if defined(HAVE_CUDA) && !defined(__APPLE__) +#if defined(HAVE_CUDA) && defined(HAVE_NVCUVID) namespace cv { namespace gpu { diff --git a/modules/gpu/src/video_decoder.cpp b/modules/gpu/src/video_decoder.cpp index 41e1d26078a01ead708ea6960698b29b9ed76e3e..c1e8f86a4c282331dd596b45ac9a395c1bbe10bf 100644 --- a/modules/gpu/src/video_decoder.cpp +++ b/modules/gpu/src/video_decoder.cpp @@ -43,7 +43,7 @@ #include "video_decoder.h" #include "frame_queue.h" -#if defined(HAVE_CUDA) && !defined(__APPLE__) +#if defined(HAVE_CUDA) && defined(HAVE_NVCUVID) void cv::gpu::detail::VideoDecoder::create(const VideoReader_GPU::FormatInfo& videoFormat) { diff --git a/modules/gpu/src/video_decoder.h b/modules/gpu/src/video_decoder.h index 9c4dfa9294f0f6079766fab46845590cf58ec7d0..634643b88959096f8cce1a2264f208b345ec7181 100644 --- a/modules/gpu/src/video_decoder.h +++ b/modules/gpu/src/video_decoder.h @@ -46,7 +46,7 @@ #include "precomp.hpp" #include "cu_safe_call.h" -#if defined(HAVE_CUDA) && !defined(__APPLE__) +#if defined(HAVE_CUDA) && defined(HAVE_NVCUVID) namespace cv { namespace gpu { diff --git a/modules/gpu/src/video_parser.cpp b/modules/gpu/src/video_parser.cpp index 2ff14bd75aa2ec9fca18a9cdab2b5300a048e6bb..70187fcb2f9fcb42e5c7a264d19f758b30467355 100644 --- a/modules/gpu/src/video_parser.cpp +++ b/modules/gpu/src/video_parser.cpp @@ -43,7 +43,7 @@ #include "video_parser.h" #include "cu_safe_call.h" -#if defined(HAVE_CUDA) && !defined(__APPLE__) +#if defined(HAVE_CUDA) && defined(HAVE_NVCUVID) cv::gpu::detail::VideoParser::VideoParser(VideoDecoder* videoDecoder, FrameQueue* frameQueue) : videoDecoder_(videoDecoder), frameQueue_(frameQueue), unparsedPackets_(0), hasError_(false) diff --git a/modules/gpu/src/video_parser.h b/modules/gpu/src/video_parser.h index 3935ffcefe7cc92ba64e56c6c4af0f54ae146528..44a53710bf9f11e59a6a711c29278a7ea3a51d10 100644 --- a/modules/gpu/src/video_parser.h +++ b/modules/gpu/src/video_parser.h @@ -48,7 +48,7 @@ #include "frame_queue.h" #include "video_decoder.h" -#if defined(HAVE_CUDA) && !defined(__APPLE__) +#if defined(HAVE_CUDA) && defined(HAVE_NVCUVID) namespace cv { namespace gpu { diff --git a/modules/gpu/src/video_reader.cpp b/modules/gpu/src/video_reader.cpp index df3c2ff2f0b1ce9e4eaa72a2f1f9bf9ee2e778a4..3224902c6dc423bed412a8a5c143c2dd84633bfa 100644 --- a/modules/gpu/src/video_reader.cpp +++ b/modules/gpu/src/video_reader.cpp @@ -42,7 +42,7 @@ #include "precomp.hpp" -#if !defined HAVE_CUDA || defined(CUDA_DISABLER) || defined(__APPLE__) +#if !defined(HAVE_CUDA) || defined(CUDA_DISABLER) || !defined(HAVE_NVCUVID) class cv::gpu::VideoReader_GPU::Impl { diff --git a/modules/gpu/src/video_writer.cpp b/modules/gpu/src/video_writer.cpp index 617c1eabc6dbd9f44813ba3f611e7398da77afa7..dd4b8fb0393e7ca21dd6d5de5955f19c0cb38f43 100644 --- a/modules/gpu/src/video_writer.cpp +++ b/modules/gpu/src/video_writer.cpp @@ -42,7 +42,7 @@ #include "precomp.hpp" -#if !defined HAVE_CUDA || defined(CUDA_DISABLER) || !defined(WIN32) +#if !defined(HAVE_CUDA) || defined(CUDA_DISABLER) || !defined(HAVE_NVCUVID) || !defined(WIN32) class cv::gpu::VideoWriter_GPU::Impl { @@ -1001,4 +1001,4 @@ void cv::gpu::VideoWriter_GPU::EncoderParams::save(const std::string& configFile cv::write(fs, "DisableSPSPPS" , DisableSPSPPS); } -#endif // !defined HAVE_CUDA || !defined WIN32 \ No newline at end of file +#endif // !defined HAVE_CUDA || !defined WIN32 diff --git a/modules/gpu/test/test_video.cpp b/modules/gpu/test/test_video.cpp index 424bdbd3b7c7838c9e63a632669c982f3b3e7f62..b9502814a1b2a86ddafcc375b101393bac24e465 100644 --- a/modules/gpu/test/test_video.cpp +++ b/modules/gpu/test/test_video.cpp @@ -41,7 +41,47 @@ #include "test_precomp.hpp" -#ifdef HAVE_CUDA +#if defined(HAVE_CUDA) && defined(HAVE_NVCUVID) + +////////////////////////////////////////////////////// +// VideoReader + +PARAM_TEST_CASE(VideoReader, cv::gpu::DeviceInfo, std::string) +{ + cv::gpu::DeviceInfo devInfo; + std::string inputFile; + + virtual void SetUp() + { + devInfo = GET_PARAM(0); + inputFile = GET_PARAM(1); + + cv::gpu::setDevice(devInfo.deviceID()); + + inputFile = std::string(cvtest::TS::ptr()->get_data_path()) + "video/" + inputFile; + } +}; + +GPU_TEST_P(VideoReader, Regression) +{ + cv::gpu::VideoReader_GPU reader(inputFile); + ASSERT_TRUE(reader.isOpened()); + + cv::gpu::GpuMat frame; + + for (int i = 0; i < 10; ++i) + { + ASSERT_TRUE(reader.read(frame)); + ASSERT_FALSE(frame.empty()); + } + + reader.close(); + ASSERT_FALSE(reader.isOpened()); +} + +INSTANTIATE_TEST_CASE_P(GPU_Video, VideoReader, testing::Combine( + ALL_DEVICES, + testing::Values(std::string("768x576.avi"), std::string("1920x1080.avi")))); ////////////////////////////////////////////////////// // VideoWriter @@ -109,48 +149,4 @@ INSTANTIATE_TEST_CASE_P(GPU_Video, VideoWriter, testing::Combine( #endif // WIN32 -////////////////////////////////////////////////////// -// VideoReader - -#ifdef HAVE_NVCUVID - -PARAM_TEST_CASE(VideoReader, cv::gpu::DeviceInfo, std::string) -{ - cv::gpu::DeviceInfo devInfo; - std::string inputFile; - - virtual void SetUp() - { - devInfo = GET_PARAM(0); - inputFile = GET_PARAM(1); - - cv::gpu::setDevice(devInfo.deviceID()); - - inputFile = std::string(cvtest::TS::ptr()->get_data_path()) + "video/" + inputFile; - } -}; - -GPU_TEST_P(VideoReader, Regression) -{ - cv::gpu::VideoReader_GPU reader(inputFile); - ASSERT_TRUE(reader.isOpened()); - - cv::gpu::GpuMat frame; - - for (int i = 0; i < 10; ++i) - { - ASSERT_TRUE(reader.read(frame)); - ASSERT_FALSE(frame.empty()); - } - - reader.close(); - ASSERT_FALSE(reader.isOpened()); -} - -INSTANTIATE_TEST_CASE_P(GPU_Video, VideoReader, testing::Combine( - ALL_DEVICES, - testing::Values(std::string("768x576.avi"), std::string("1920x1080.avi")))); - -#endif // HAVE_NVCUVID - -#endif // HAVE_CUDA +#endif // defined(HAVE_CUDA) && defined(HAVE_NVCUVID)