Update the trunk to the OpenCV's CVS (2008-07-14)
[opencv] / otherlibs / highgui / _highgui.h
index 4d069d1..702b939 100644 (file)
@@ -64,58 +64,35 @@ void  FillBitmapInfo( BITMAPINFO* bmi, int width, int height, int bpp, int origi
 #define HG_INITFAILED -2 /* Can't initialize HigHGUI. Possibly, can't find vlgrfmts.dll */
 #define HG_WCFAILED   -3 /* Can't create a window */
 #define HG_NULLPTR    -4 /* The null pointer where it should not appear */
-#define HG_BADPARAM   -5 
+#define HG_BADPARAM   -5
 
 #define CV_WINDOW_MAGIC_VAL     0x00420042
 #define CV_TRACKBAR_MAGIC_VAL   0x00420043
 
 /***************************** CvCapture structure ******************************/
 
-#define CV_CAPTURE_BASE_API_COUNT 6
-
-typedef void         (CV_CDECL* CvCaptureCloseFunc)         ( CvCapture* capture );
-typedef int          (CV_CDECL* CvCaptureGrabFrameFunc)     ( CvCapture* capture );
-typedef IplImage   * (CV_CDECL* CvCaptureRetrieveFrameFunc) ( CvCapture* capture );
-typedef double       (CV_CDECL* CvCaptureGetPropertyFunc)   ( CvCapture* capture, int id );
-typedef int          (CV_CDECL* CvCaptureSetPropertyFunc)   ( CvCapture* capture,
-                                                              int id, double value );
-typedef const char * (CV_CDECL* CvCaptureGetDescriptionFunc)( CvCapture* capture );
-
-typedef struct CvCaptureVTable
-{
-    int                           count;
-    CvCaptureCloseFunc            close;
-    CvCaptureGrabFrameFunc        grab_frame;
-    CvCaptureRetrieveFrameFunc    retrieve_frame;
-    CvCaptureGetPropertyFunc      get_property;
-    CvCaptureSetPropertyFunc      set_property;
-    CvCaptureGetDescriptionFunc   get_description;
-}
-CvCaptureVTable;
-
-typedef struct CvCapture
+struct CvCapture
 {
-    CvCaptureVTable* vtable;
-}
-CvCapture;
-
-extern "C" {
-
-typedef CvCapture* (CV_CDECL * CvCaptureFromFile)( const char* filename );
+    virtual ~CvCapture() {}
+    virtual double getProperty(int) { return 0; }
+    virtual bool setProperty(int, double) { return 0; }
+    virtual bool grabFrame() { return true; }
+    virtual IplImage* retrieveFrame() { return 0; }
+    virtual IplImage* queryFrame() { return grabFrame() ? retrieveFrame() : 0; }
+};
 
-typedef CvVideoWriter* (CV_CDECL * CvCreateVideoWriter)( const char * filename,
-        int fourcc, double fps, CvSize frameSize, int is_color );
+/*************************** CvVideoWriter structure ****************************/
 
-typedef int (CV_CDECL * CvWriteFrame)( CvVideoWriter * writer, const IplImage * image );
-
-typedef void (CV_CDECL * CvReleaseVideoWriter)( CvVideoWriter ** writer );
-
-}
+struct CvVideoWriter
+{
+    virtual ~CvVideoWriter() {}
+    virtual bool writeFrame(const IplImage*) { return false; }
+};
 
 #ifdef WIN32
 #define HAVE_VFW 1
 
-/* uncomment to enable OpenEXR codec (will not compile under MSVC6) */ 
+/* uncomment to enable OpenEXR codec (will not compile under MSVC6) */
 //#define HAVE_ILMIMF 1
 
 /* uncomment to enable CMUCamera1394 fireware camera module */
@@ -124,49 +101,74 @@ typedef void (CV_CDECL * CvReleaseVideoWriter)( CvVideoWriter ** writer );
 
 
 #if defined (HAVE_CAMV4L) || defined (HAVE_CAMV4L2)
-CvCapture * cvCaptureFromCAM_V4L( int index );
+CvCapture * cvCreateCameraCapture_V4L( int index );
 #endif
 
 #ifdef HAVE_DC1394
-CvCapture * cvCaptureFromCAM_DC1394( int index );
+CvCapture * cvCreateCameraCapture_DC1394( int index );
 #endif
 
 #ifdef HAVE_MIL
-CvCapture* cvCaptureFromCAM_MIL( int index );
+CvCapture* cvCreateCameraCapture_MIL( int index );
 #endif
 
 #ifdef HAVE_CMU1394
-CvCapture * cvCaptureFromCAM_CMU( int index );
+CvCapture * cvCreateCameraCapture_CMU( int index );
 #endif
 
 #ifdef HAVE_TYZX
-CV_IMPL CvCapture * cvCaptureFromCAM_TYZX( int index );
+CV_IMPL CvCapture * cvCreateCameraCapture_TYZX( int index );
 #endif
 
 #ifdef WIN32
-CvCapture* cvCaptureFromFile_Win32( const char* filename );
+CvCapture* cvCreateFileCapture_Win32( const char* filename );
 
-CvCapture* cvCaptureFromCAM_VFW( int index );
-CvCapture* cvCaptureFromFile_VFW( const char* filename );
+CvCapture* cvCreateCameraCapture_VFW( int index );
+CvCapture* cvCreateFileCapture_VFW( const char* filename );
 
+CvVideoWriter* cvCreateVideoWriter_Win32( const char* filename, int fourcc,
+                                          double fps, CvSize frameSize, int is_color );
 CvVideoWriter* cvCreateVideoWriter_VFW( const char* filename, int fourcc,
                                         double fps, CvSize frameSize, int is_color );
-int cvWriteFrame_VFW( CvVideoWriter* _writer, const IplImage* image );
-void cvReleaseVideoWriter_VFW( CvVideoWriter** writer );
-
 #endif
 
+CVAPI(int) cvHaveImageReader(const char* filename);
+CVAPI(int) cvHaveImageWriter(const char* filename);
+
+CvCapture* cvCreateFileCapture_Images(const char* filename);
+CvVideoWriter* cvCreateVideoWriter_Images(const char* filename);
+
 #ifdef HAVE_XINE
-CvCapture* cvCaptureFromFile_XINE   (const char* filename);
+CvCapture* cvCreateFileCapture_XINE (const char* filename);
+#endif
+
+#ifdef HAVE_GSTREAMER
+#define CV_CAP_GSTREAMER_1394          0
+#define CV_CAP_GSTREAMER_V4L           1
+#define CV_CAP_GSTREAMER_V4L2          2
+#define CV_CAP_GSTREAMER_FILE          3
+
+CvCapture * cvCreateCapture_GStreamer(int type, const char *filename);
 #endif
 
 #ifdef HAVE_FFMPEG
-CvCapture* cvCaptureFromFile_FFMPEG (const char* filename);
+CvCapture* cvCreateFileCapture_FFMPEG (const char* filename);
+
+CvVideoWriter* cvCreateVideoWriter_FFMPEG ( const char* filename, int fourcc,
+                                            double fps, CvSize frameSize, int is_color );
 #endif
 
 #ifdef HAVE_QUICKTIME
-CvCapture * cvCaptureFromFile_QT (const char  * filename);
-CvCapture * cvCaptureFromCAM_QT  (const int     index);
+CvCapture * cvCreateFileCapture_QT (const char  * filename);
+CvCapture * cvCreateCameraCapture_QT  (const int     index);
+
+CvVideoWriter* cvCreateVideoWriter_QT ( const char* filename, int fourcc,
+                                        double fps, CvSize frameSize, int is_color );
+#endif
+
+#ifdef HAVE_UNICAP
+CvCapture * cvCreateCameraCapture_Unicap  (const int     index);
+
 #endif
 
 #endif /* __HIGHGUI_H_ */