added missing evcode.h; made videoinput optional (ticket #1142)
authorVadim Pisarevsky <no@email>
Thu, 16 Jun 2011 09:51:34 +0000 (09:51 +0000)
committerVadim Pisarevsky <no@email>
Thu, 16 Jun 2011 09:51:34 +0000 (09:51 +0000)
3rdparty/include/dshow/dshow.h
3rdparty/include/dshow/evcode.h [new file with mode: 0644]
CMakeLists.txt
modules/highgui/src/cap_dshow.cpp

index 6a2ea06..7ec9e5a 100644 (file)
@@ -44,7 +44,7 @@
 /* FIXME: #include <amaudio.h>*/
 #endif
 #include <dshow/control.h>
-#include <evcode.h>
+#include <dshow/evcode.h>
 #include <dshow/uuids.h>
 #include <errors.h>
 /* FIXME: #include <edevdefs.h> */
diff --git a/3rdparty/include/dshow/evcode.h b/3rdparty/include/dshow/evcode.h
new file mode 100644 (file)
index 0000000..11426e4
--- /dev/null
@@ -0,0 +1,68 @@
+#ifndef _EVCODE_H
+#define _EVCODE_H
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*--- DirectShow Reference - Constants and GUIDs - Event Notification Codes */
+#define EC_ACTIVATE 0x0013
+#define EC_BUFFERING_DATA 0x0011
+#define EC_BUILT 0x0300
+#define EC_CLOCK_CHANGED 0x000D
+#define EC_CLOCK_UNSET 0x0051
+#define EC_CODECAPI_EVENT 0x0057
+#define EC_COMPLETE 0x0001
+#define EC_DEVICE_LOST 0x001F
+#define EC_DISPLAY_CHANGED 0x0016
+#define EC_END_OF_SEGMENT 0x001C
+#define EC_ERROR_STILLPLAYING 0x0008
+#define EC_ERRORABORT 0x0003
+#define EC_EXTDEVICE_MODE_CHANGE 0x0031
+#define EC_FULLSCREEN_LOST 0x0012
+#define EC_GRAPH_CHANGED 0x0050
+#define EC_LENGTH_CHANGED 0x001E
+#define EC_NEED_RESTART 0x0014
+#define EC_NOTIFY_WINDOW 0x0019
+#define EC_OLE_EVENT 0x0018
+#define EC_OPENING_FILE 0x0010
+#define EC_PALETTE_CHANGED 0x0009
+#define EC_PAUSED 0x000E
+#define EC_PREPROCESS_COMPLETE 0x0056
+#define EC_QUALITY_CHANGE 0x000B
+#define EC_REPAINT 0x0005
+#define EC_SEGMENT_STARTED 0x001D
+#define EC_SHUTTING_DOWN 0x000C
+#define EC_SNDDEV_IN_ERROR 0x0200
+#define EC_SNDDEV_OUT_ERROR 0x0201
+#define EC_STARVATION 0x0017
+#define EC_STATE_CHANGE 0x0032
+#define EC_STEP_COMPLETE 0x0024
+#define EC_STREAM_CONTROL_STARTED 0x001B
+#define EC_STREAM_CONTROL_STOPPED 0x001A
+#define EC_STREAM_ERROR_STILLPLAYING 0x0007
+#define EC_STREAM_ERROR_STOPPED 0x0006
+#define EC_TIMECODE_AVAILABLE 0x0030
+#define EC_UNBUILT 0x0301
+#define EC_USERABORT 0x0002
+#define EC_VIDEO_SIZE_CHANGED 0x000A
+#define EC_VMR_RENDERDEVICE_SET 0x0053
+#define EC_VMR_SURFACE_FLIPPED 0x0054
+#define EC_VMR_RECONNECTION_FAILED 0x0055
+#define EC_WINDOW_DESTROYED 0x0015
+#define EC_WMT_EVENT 0x0252
+#define EC_WMT_INDEX_EVENT 0x0251
+#define EC_USER 0x8000
+/*--- DirectShow Reference - DirectShow Structures */
+typedef struct {
+       HRESULT hrStatus;
+       void   *pData;
+} AM_WMT_EVENT_DATA;
+
+#ifdef __cplusplus
+}
+#endif
+#endif
index c7c805e..aad12c1 100644 (file)
@@ -844,8 +844,14 @@ endif()
 ################## Extra HighGUI libs on Windows ###################
 
 if(WIN32)
-    set(HAVE_VIDEOINPUT 1)
-    set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} comctl32 gdi32 ole32 strmiids)
+    set(WITH_VIDEOINPUT ON CACHE BOOL "Build HighGUI with DirectShow support")
+    
+    set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} comctl32 gdi32 ole32)
+
+    if(WITH_VIDEOINPUT)
+        set(HAVE_VIDEOINPUT 1)
+        set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} strmiids)
+    endif()
     
     if (MSVC)
         set(HIGHGUI_LIBRARIES ${HIGHGUI_LIBRARIES} vfw32)
@@ -1474,7 +1480,7 @@ message(STATUS "  Video I/O:                    QTKit")
 endif()
 endif()
 
-if(WIN32)
+if(WIN32 and HAVE_VIDEOINPUT)
 message(STATUS "")
 message(STATUS "  Video I/O:                    DirectShow")
 endif()
index 68e72ca..8c162cd 100644 (file)
@@ -41,7 +41,7 @@
 
 #include "precomp.hpp"
 
-#if defined WIN32 || defined _WIN32
+#if (defined WIN32 || defined _WIN32) && defined HAVE_VIDEOINPUT
 
 /*
    DirectShow-based Video Capturing module is based on