Commit Graph

133 Commits

Author SHA1 Message Date
Artur Wieczorek
073a7ff95a Fixed CMake issue with FFMPEG highgui configuration
Currently, FFMPEG source files are included in highgui project file regardless of CMake WITH_FFMPEG option.
After applying this PR FFMPEG files are included only if WITH_FFMPEG option is enabled.
2014-09-23 23:46:03 +02:00
Artur Wieczorek
7c354c14f7 CMake configuration for MSMF capture 2014-09-21 21:03:41 +02:00
Vadim Pisarevsky
ccaedaedc8 Merge pull request #2047 from GregoryMorse:patch-4 2014-09-17 12:48:45 +00:00
GregoryMorse
b9d5f3f6e9 Add support for WinRT in the MF capture framework by removing the disallowed calls to enumerate devices and create a sample grabber sink and adding framework for the MediaCapture interface and a custom sink which interfaces with the sample grabber callback interface. The change requires discussion for making it completely functional as redundancy is required given that if the source is a video file, the old code pathways must be used. Otherwise all IMFMediaSession, IMFMediaSource, and IMFActivate code must use a MediaCapture code path and all sink code must use the CMediaSink custom sink.
Support for the custom sink is extended to non-WinRT not for compatibility as Windows Vista client is a minimum regardless, but because it offers more flexibility, could be faster and is able to be used as an optionally different code path during sink creation based on a future configuration parameter.

My discussion and proposal to finish this change:
 Devices are so easily enumerated through WinRT Windows.Devices namespace that wrapping the calls in a library is quite a chore for little benefit though to get the various modes and formats could still be a worthwhile project. For now conditional compilation to remove videodevices and any offending non-video file related activity in videodevice. In my opinion, this is a different , far less fundamental and important change which can possibly be done as a future project and also much more easily implemented in C++/CX.

ImageGrabber has the IMFSampleGrabberSinkCallback replaced with a base class (SharedSampleGrabber) which also be is base class for ImageGrabberRT. This change is necessary as the custom sink does not require a thread to pump events which is done through MediaCapture already. IMFSampleGrabberSinkCallback is the common element between both models and that piece can be shared. Initializing the new ImageGrabberRT is as simple as passing an already initialized MediaCapture object and any video format/encoding parameters.

The concurrency event is necessary to wait for completion and is the way the underlying, IAsyncAction wrappers in the task library work as well. Native WIN32 event objects would be an option if HAVE_CONCURRENCY is not defined. I could even imagine doing it with sleep/thread yield and InterlockedCompareExchange yet I am not enthusiastic about that approach either. Since there is a specific compiler HAVE_ for concurrency, I do not like pulling it in though I think for WinRT it is safe to say we will always have it available though should probably conditionally compile with the Interlocked option as WIN32 events would require HAVE_WIN32.

It looks like C++/CX cannot be used for the IMediaExtension sink (which should not be a problem) as using COM objects requires WRL and though deriving from IMediaExtension can be done, there is little purpose without COM. Objects from C++/CX can be swapped to interact with objects from native C++ as Inspectable* can reinterpret_cast to the ref object IInspectable^ and vice-versa. A solution to the COM class with C++/CX would be great so we could have dual support. Also without #define for every WRL object in use, the code will get quite muddy given that the */^ would need to be ifdef'd everywhere.

Update cap_msmf.cpp

Fixed bugs and completed the change.  I believe the new classes need to be moved to a header file as the file has become to large and more classes need to be added for handling all the asynchronous problems (one wrapping IAsyncAction in a task and another for making a task out of IAsyncAction).  Unfortunately, blocking on the UI thread is not an option in WinRT so a synchronous architecture is considered "illegal" by Microsoft's standards even if implementable (C++/CX ppltasks library throws errors if you try it).  Worse, either by design or a bug in the MF MediaCapture class with Custom Sinks causes a crash if stop/start previewing without reinitializing (spPreferredPreviewMediaType is fatally nulled).  After decompiling Windows.Media.dll, I worked around this in my own projects by using an activate-able custom sink ID which strangely assigns 1 to this pointer allowing it to be reinitialized in what can only be described as a hack by Microsoft.  This would add additional overhead to the project to implement especially for static libraries as it requires IDL/DLL exporting followed by manifest declaration.  Better to document that it is not supported.

Furthermore, an additional class for IMFAttributes should be implemented to make clean architecture for passing around attributes as opposed to directly calling non-COM interface calls on the objects and making use of SetProperties which would also be a set up for an object that uses the RuntimeClass activation ID.

The remaining changes are not difficult and will be complete soon along with debug tracing messages.

Update and rename cap_msmf.h to cap_msmf.hpp

Successful test - samples are grabbed

Library updated and cleaned up with comments, marshaling, exceptions and linker settings
Fixed trailing whitespace

VS 2013 support and cleanup consistency plus C++/CX new object fixed

VS 2013 Update 2 library bug fix integrated

Various minor cleanup

Create agile_wrl.h

a-wi's changes integrated

Update cap_msmf.hpp

Update cap_msmf.cpp

Regression test fixes and simplifications
2014-09-10 17:21:38 +08:00
Igor Kuzmin
0421da78b3 XIMEA cam support: allow on OS X too 2014-09-09 19:17:13 +04:00
Igor Kuzmin
b027a84fa1 XIMEA cam support: use correct library for 64 bit Linux 2014-09-09 19:15:03 +04:00
Alexander Smorkalov
b75cbfde45 All installed files marked with component names for install customization. 2014-01-21 20:34:36 +04:00
Vladimir Bystricky
cc08e00876 Fix notes about cmake files. Fix build warning. 2013-12-17 16:13:55 +04:00
Vladimir Bystricky
e8d2a9752b Add support Creative Senz3D camera by Intel Perceptual Computing SDK 2013-12-13 17:25:16 +04:00
Philippe FOUBERT
05d9375759 Trailing whitespace removal. 2013-11-11 10:26:28 +01:00
Philippe FOUBERT
8b0fc04d93 Fix the build of OpenCV with XIMEA on Windows 64 bits:
- crosses initializations in "cap_ximea.cpp" (which also contained some awfull "goto" instructions)
  - the "CMAKE_CL_64" variable is not initialized when using mingw

PR#1039 modified to be able to merge on branch 2.4
2013-11-10 17:46:59 +01:00
Alexander Alekhin
555c505b70 update cmake 'install' target for Windows platform
Allow to build samples via OpenCV binaries from distribution package
(find_package with OpenCV_DIR).
2013-10-09 17:49:10 +04:00
kamjagin
7ff07e94a3 Fix for bug Bug #3215. Added HAVE_QTKIT as a separate mode from HAVE_QUICKTIME 2013-08-14 13:34:34 +02:00
Roman Donchenko
d9f71b762f Deleted almost all of the precomp.cpp files.
Looks like we don't actually use them; when creating precompiled headers
with Visual C++, a dummy .cpp is created at build time.
2013-08-08 12:43:07 +04:00
Andrey Pavlenko
af8a03e17f Merge pull request #1222 from philippefoubert:branch_2.4_pvapi 2013-08-05 10:20:25 +04:00
Philippe FOUBERT
9c04db554f Rename PVAPI_DECLARATIONS to PVAPI_DEFINITIONS 2013-07-20 15:03:30 +02:00
Roman Donchenko
e2ef2a5781 Refactored image format library finding logic.
Now the HAVE_* macros are set in cvconfig.h. Most of them already were there,
but were nonfunctional.
2013-07-11 12:40:16 +04:00
Roman Donchenko
ca8b621b4f Refactored detecting several Apple-related technologies.
Now the HAVE_* macros are set using cvconfig.h. Previously most
of them already were there, but were always undefined. One,
HAVE_COCOA, I had to add.

This also makes the CMake code more consistent; now, WITH_* variables
are always checked in cmake/*, while HAVE_* variables are checked in
modules/highgui/CMakeLists.txt.
2013-07-10 19:45:56 +04:00
Philippe FOUBERT
639450efdc PvAPI support on Windows with MinGW (PR #1038 applied to the branch 2.4) 2013-07-03 00:19:22 +02:00
Alexander Shishkov
7b06592dea added conversions between UIImage and cv::Mat 2013-06-28 13:26:54 +04:00
Andrew Senin
8eb6decb25 Fixed Ximea cameras support 2013-06-11 21:17:31 +04:00
Roman Donchenko
8714cbac91 Fix a missing header path when building with Qt 4.
Also, removing explicit include path configuration,
since QT_USE_FILE takes care of that.
2013-06-06 14:09:33 +04:00
Andrey Kamaev
f856f78ac0 Update CMake scripts to recognize Qt 5.0 2013-05-13 17:10:32 +04:00
Alexander Smorkalov
4703f4552a Experimental MS Media Foundation API support added 2013-04-02 18:10:55 -07:00
Alexander Smorkalov
09bc99a0c0 HAVE_WIN32UI and HAVE_VFW checks and defines added. 2013-03-27 08:03:51 -07:00
Alexander Smorkalov
6f68640d4d Multiple fixes for WinRT
Fixed flann build with NEON;
Fixed Haming distance with NEON;
Honest cvRound for WinRT added;
cvRound test added;
Video IO with direct show disabled;
2013-03-26 17:19:52 -07:00
Alexander Smorkalov
429cd85b46 More accurate guards for WinRT features in CMake. 2013-03-20 12:21:29 -07:00
Alexander Smorkalov
3d594c70ff Multiple Windows RT fixes
TIFF build was fixed;
Direct Show back-end was enabled;
More accurate guards implemented.
2013-03-19 17:46:01 -07:00
Alexander Smorkalov
06aff4e7b0 Initial Windows RT support commit.
GPU module turned off;
TIFF support turned off;
Windows Managment and Video IO (VFW) turned off.
2013-03-13 09:02:15 -07:00
Vladislav Vinogradov
df456245e7 fixed ffmpeg destination folder for NMake generator 2013-02-28 10:16:41 +04:00
Andrey Kamaev
86b4b30a6d Merge pull request #358 from taka-no-me:objc_exceptions 2013-01-30 14:40:32 +04:00
Andrey Kamaev
0b1fe53a46 Add -fobjc-exceptions flag to ObjectiveC sources if supported (bug #2657) 2013-01-29 17:09:23 +04:00
Patrick Welche
d90b8d615c NetBSD video(4) support, patch 1 of 3
The video(4) driver provides a Video4Linux2 compatible API for
various video peripherals. This patch propagates HAVE_VIDEOIO if
the sys/videoio.h include file is found, which is the signature of
video(4).
2013-01-28 17:11:36 +04:00
Evgeny Talanin
2e7656dbdf #2192 patch apply 2012-10-12 13:03:43 +04:00
Andrey Kamaev
354b77e2e1 Applied fix from bug #2324: ocv_list_unique makes for incorrect linking 2012-10-10 19:40:55 +04:00
Andrey Kamaev
cabddaeb4f Revert "Issue #2035 Calling cv::namedWindow crashes on Android fixed."
This reverts commit 36135fc59d.
2012-10-10 13:24:49 +04:00
Alexander Smorkalov
36135fc59d Issue #2035 Calling cv::namedWindow crashes on Android fixed.
Window-related functions is guarded from calls from application code.
Old implementations with "no-gui" exception are stell compiled and linked to OpenCV library for binary compatibility.
2012-10-10 12:40:36 +04:00
Andrey Kamaev
867777f825 Added OpenEXR library v1.7.1 2012-09-02 20:44:04 +04:00
Sergiu Dotenco
85eae7b30d win32: always link to vfw32 2012-08-30 14:52:39 +02:00
Vadim Pisarevsky
a6e2acbfee added a few missing images for tutorials; integrated pull request #26 2012-08-30 16:23:18 +04:00
Vadim Pisarevsky
8efb84b5a4 added ios camera support in highgui. turned on optimization in opencv2.framework (ticket #2232) 2012-08-20 19:36:36 +04:00
Vadim Pisarevsky
82cb2ab556 fixed bug in SVD, ticket #2027; fixed building highgui with ffmpeg support on MacOSX 2012-06-28 19:45:13 +00:00
Andrey Kamaev
69b5972e03 Fixed MSVC build with Qt enabled #2096 2012-06-26 21:05:15 +00:00
Andrey Kamaev
55567582a6 added XIMEA support for linux (by Igor Kuzmin) #2085 2012-06-26 11:48:58 +00:00
Andrey Kamaev
827d7ba2e9 fixed highgui configuration with QT enabled 2012-06-13 11:49:27 +00:00
Andrey Kamaev
694f0e954f Added linking against AppKit framework when OpenCV is configured with WITH_QUICKTIME=OFF 2012-06-13 10:43:03 +00:00
Andrey Kamaev
c5aba337e9 Fixed number of warnings. Fixed mingw64 build. 2012-06-12 14:46:12 +00:00
Andrey Kamaev
f2d3b9b4a1 Warning fixes continued 2012-06-09 15:00:04 +00:00
Andrey Kamaev
79df8db76f Fixed recently introduced build problems on some platforms 2012-06-08 06:19:17 +00:00
Andrey Kamaev
f62028dc16 Fixed mingw build. 2012-06-08 03:15:08 +00:00