framegrabber.h
00001 /*
00002  * 3D Shape Analysis Library.
00003  * Copyright 2008 AQSENSE, S.L.
00004  */
00005 #if !defined (AQSENSE_SAL3D_FRAME_GRABBER_H)
00006 #define AQSENSE_SAL3D_FRAME_GRABBER_H
00007 
00008 #if defined (_MSC_VER) && (_MSC_VER >= 1020)
00009 #pragma once
00010 #endif
00011 
00012 #include "sal3d_def.h"
00013 #include "frame.h"
00014 
00015 /*
00016  * Type definition.
00017  * --------------------------------
00018  */
00019 
00020 /* A frame grabber device: a board, an IEEE 1394 camera, a GigE camera, ...
00021    \section drivers Details on SAL3D Frame Grabber Drivers
00022   
00023    The SAL3D Frame Grabber Driver files are Dynamic Link Libraries 
00024    (although we use the file name extension \p fgd for distinction),
00025    exporting these required C functions:
00026    - int init(sal3d_frame_grabber fg, void **driverData) : Called on FrameGrabber object creation.
00027    - int grab(void *driverData): Start acquiring
00028    - int freeze(void *driverData): Stop acquiring
00029    - int get_frame(void *driverData): Get the next frame acquired
00030    - int wait(void *driverData, int timeout): Wait for the next frame to be fully available
00031    - int release(void *driverData): Called on FrameGrabber destruction
00032    */
00033 typedef struct sal3d_frame_grabber
00034 {
00035     void *p;
00036 } sal3d_frame_grabber;
00037 
00038 /*
00039  * Functions.
00040  * --------------------------------
00041  */
00042 
00053 SAL3D_API(int) sal3d_frame_grabber_freeze (sal3d_frame_grabber grabber,
00054         struct sal3d_error *e DEFZERO);
00055 
00073 SAL3D_API(int) sal3d_frame_grabber_get_frame (sal3d_frame_grabber grabber,
00074         sal3d_frame *frame,
00075         struct sal3d_error *e DEFZERO);
00076 
00092 SAL3D_API(int) sal3d_frame_grabber_grab (sal3d_frame_grabber grabber,
00093         struct sal3d_error *e DEFZERO);
00094 
00095 SAL3D_API(int) sal3d_frame_grabber_get_lost_frames_counter (sal3d_frame_grabber grabber,
00096         struct sal3d_error *e DEFZERO);
00097 
00106 SAL3D_API(int) sal3d_frame_grabber_check_validity (const sal3d_frame_grabber grabber,
00107         struct sal3d_error *e DEFZERO);
00108 
00123 SAL3D_API(int) sal3d_frame_grabber_new_from_file (
00124         const char *fileName, const char *param, sal3d_frame_grabber *grabber,
00125         struct sal3d_error *e DEFZERO);
00126 
00127 SAL3D_API(int) sal3d_frame_grabber_reconfig (sal3d_frame_grabber grabber,
00128         const char *param,
00129         struct sal3d_error *e DEFZERO);
00130 
00139 SAL3D_API(int) sal3d_frame_grabber_refcount (sal3d_frame_grabber grabber,
00140         struct sal3d_error *e DEFZERO);
00141 
00155 SAL3D_API(int) sal3d_frame_grabber_release (sal3d_frame_grabber grabber);
00156 
00176 SAL3D_API(int) sal3d_frame_grabber_set_size (sal3d_frame_grabber grabber,
00177         int width, int height,
00178         struct sal3d_error *e DEFZERO);
00179 
00188 SAL3D_API(int) sal3d_frame_grabber_share (sal3d_frame_grabber grabber,
00189         struct sal3d_error *e DEFZERO);
00190 
00221 SAL3D_API(int) sal3d_frame_grabber_wait (sal3d_frame_grabber grabber,
00222         int timeout,
00223         struct sal3d_error *e DEFZERO);
00224 
00225 SAL3D_API(void *)
00226 sal3d_frame_grabber_get_driver_data (sal3d_frame_grabber grabber,
00227         struct sal3d_error *e DEFZERO);
00228 
00229 SAL3D_API(void *)
00230 sal3d_frame_grabber_get_function_pointer (sal3d_frame_grabber grabber, const char *name,
00231         struct sal3d_error *e DEFZERO);
00232 
00233 #endif /* !AQSENSE_SAL3D_FRAME_GRABBER_H */