//turns off console messages - default is to print messages static void setVerbose(bool _verbose); //Functions in rough order they should be used. static int listDevices(bool silent = false); //needs to be called after listDevices - otherwise returns NULL static char * getDeviceName(int deviceID); //choose to use callback based capture - or single threaded void setUseCallback(bool useCallback); //call before setupDevice //directshow will try and get the closest possible framerate to what is requested void setIdealFramerate(int deviceID, int idealFramerate); //some devices will stop delivering frames after a while - this method gives you the option to try and reconnect //to a device if videoInput detects that a device has stopped delivering frames. //you MUST CALL isFrameNew every app loop for this to have any effect void setAutoReconnectOnFreeze(int deviceNumber, bool doReconnect, int numMissedFramesBeforeReconnect); //Choose one of these four to setup your device bool setupDevice(int deviceID); bool setupDevice(int deviceID, int w, int h); //These two are only for capture cards //USB and Firewire cameras souldn't specify connection bool setupDevice(int deviceID, int connection); bool setupDevice(int deviceID, int w, int h, int connection); //If you need to you can set your NTSC/PAL/SECAM //preference here. if it is available it will be used. //see #defines above for available formats - eg VI_NTSC_M or VI_PAL_B //should be called after setupDevice //can be called multiple times bool setFormat(int deviceNumber, int format); //Tells you when a new frame has arrived - you should call this if you have specified setAutoReconnectOnFreeze to true bool isFrameNew(int deviceID); bool isDeviceSetup(int deviceID); //Returns the pixels - flipRedAndBlue toggles RGB/BGR flipping - and you can flip the image too unsigned char * getPixels(int deviceID, bool flipRedAndBlue = true, bool flipImage = false); //Or pass in a buffer for getPixels to fill returns true if successful. bool getPixels(int id, unsigned char * pixels, bool flipRedAndBlue = true, bool flipImage = false); //Launches a pop up settings window //For some reason in GLUT you have to call it twice each time. void showSettingsWindow(int deviceID); //Manual control over settings thanks..... //These are experimental for now. bool setVideoSettingFilter(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); bool setVideoSettingFilterPct(int deviceID, long Property, float pctValue, long Flags = NULL); bool getVideoSettingFilter(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long ¤tValue, long &flags, long &defaultValue); bool setVideoSettingCamera(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); bool setVideoSettingCameraPct(int deviceID, long Property, float pctValue, long Flags = NULL); bool getVideoSettingCamera(int deviceID, long Property, long &min, long &max, long &SteppingDelta, long ¤tValue, long &flags, long &defaultValue); //bool setVideoSettingCam(int deviceID, long Property, long lValue, long Flags = NULL, bool useDefaultValue = false); //get width, height and number of pixels int getWidth(int deviceID); int getHeight(int deviceID); int getSize(int deviceID); //completely stops and frees a device void stopDevice(int deviceID); //as above but then sets it up with same settings bool restartDevice(int deviceID);