diff --git a/TIAS_Imager2/Imager.cpp b/TIAS_Imager2/Imager.cpp index c42ae03..8f6e6bb 100644 --- a/TIAS_Imager2/Imager.cpp +++ b/TIAS_Imager2/Imager.cpp @@ -98,6 +98,7 @@ Valid((m_hCam = LucamCameraOpen(CAMERA_NUMBER)) != NULL, _T("�J�����ڑ����s")); // Valid(LucamGpioConfigure(m_hCam, 0x3), "LucamGpioConfigure���s"); Valid(LucamGpioWrite(m_hCam, LED_LASER_OFF), _T("LucamGpioWrite���s")); + LucamGetCameraId(m_hCam, &m_CameraID); // �ݒ�t�@�C���ǂݍ��� Valid(this->LoadConfig(), _T("�ݒ�t�@�C���ǂݍ��ݎ��s")); diff --git a/TIAS_Imager2/Imager.h b/TIAS_Imager2/Imager.h index 37231ff..c1d180a 100644 --- a/TIAS_Imager2/Imager.h +++ b/TIAS_Imager2/Imager.h @@ -4,7 +4,7 @@ #ifdef X64 #pragma comment(lib, "lucamapi64.lib") #else -#pragma comment(lib, "lucamapi32.lib") +#pragma comment(lib, "lucamapi.lib") #endif #include @@ -124,6 +124,7 @@ int m_cdLedInterval; int m_cdLedOn; int m_cdLaserOn; + ULONG m_CameraID; void StartRecord(int numShots); void EndRecord(); @@ -166,6 +167,7 @@ float GetRecordFps() { return m_cdRecordFps; } void SetSubject(CString id, int gender) { m_SubjectID = id, m_Gender = gender; } + ULONG GetCameraID() { return m_CameraID; } // �ÓI�֐� static void __stdcall StreamCBentry( diff --git a/TIAS_Imager2/TIAS_Imager2.rc b/TIAS_Imager2/TIAS_Imager2.rc index 3389347..6bdf3f0 100644 --- a/TIAS_Imager2/TIAS_Imager2.rc +++ b/TIAS_Imager2/TIAS_Imager2.rc Binary files differ diff --git a/TIAS_Imager2/TIAS_Imager2.vcxproj b/TIAS_Imager2/TIAS_Imager2.vcxproj index 037d3b9..975384e 100644 --- a/TIAS_Imager2/TIAS_Imager2.vcxproj +++ b/TIAS_Imager2/TIAS_Imager2.vcxproj @@ -29,14 +29,14 @@ true Unicode Static - v120 + v142 Application true MultiByte Static - v120 + v142 Application @@ -44,7 +44,7 @@ true Unicode Static - v120 + v142 Application @@ -52,7 +52,7 @@ true MultiByte Static - v120 + v142 diff --git a/TIAS_Imager2/TIAS_Imager2View.cpp b/TIAS_Imager2/TIAS_Imager2View.cpp index 3bd2c5d..96fa74a 100644 --- a/TIAS_Imager2/TIAS_Imager2View.cpp +++ b/TIAS_Imager2/TIAS_Imager2View.cpp @@ -116,15 +116,23 @@ GetClientRect(&r); // �摜�`�� + const int dispWmax = r.bottom * 4 / 5; + int dispW = r.bottom * abs(m_Bih.biWidth) / abs(m_Bih.biHeight); + if (dispW > dispWmax) dispW = dispWmax; SetStretchBltMode(dc.GetSafeHdc(), COLORONCOLOR); StretchDIBits(dc.GetSafeHdc(), - 0, 0, r.bottom * abs(m_Bih.biWidth) / abs(m_Bih.biHeight), r.bottom, + 0, 0, dispW, r.bottom, 0, 0, abs(m_Bih.biWidth), abs(m_Bih.biHeight), buf, (BITMAPINFO*)&m_Bih, DIB_RGB_COLORS, SRCCOPY); } // �X�e�[�^�X�o�[�X�V - ((CMainFrame*)AfxGetMainWnd())->SetStatusMsg(CMainFrame::SBAR_MSG, theApp.Imager()->GetStatusText()); + CString str(_T("")); + str.AppendFormat(_T("[ID: %X Res:%dx%d] "), + theApp.Imager()->GetCameraID(), m_Bih.biWidth, m_Bih.biHeight); + str.Append(theApp.Imager()->GetStatusText()); + + ((CMainFrame*)AfxGetMainWnd())->SetStatusMsg(CMainFrame::SBAR_MSG, str); ((CMainFrame*)AfxGetMainWnd())->SetStatusMsg(CMainFrame::SBAR_FPS, theApp.Imager()->GetFpsText()); // �C�x���g���� diff --git a/TIAS_Imager2/lucamapi.h b/TIAS_Imager2/lucamapi.h index 09870f3..7860681 100644 --- a/TIAS_Imager2/lucamapi.h +++ b/TIAS_Imager2/lucamapi.h @@ -1,554 +1,350 @@ -/***************************************************************************** -* -* Copyright (c) 2002-2008 Lumenera Corporation. All rights reserved. -* -*****************************************************************************/ +#pragma once -#ifndef __LUCAMAPI_H -#define __LUCAMAPI_H +#include "ludefines.h" +#include "lucommon.h" +#include "lustructures.h" +#include "lucamerr.h" + +#if !defined(LUMENERA_MAC_API) && !defined(LUMENERA_LINUX_API) + #ifndef LUMENERA_WINDOWS_API + #define LUMENERA_WINDOWS_API + #endif +#endif +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +// COMMON Section +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +#ifdef LUMENERA_WINDOWS_API +LUCAM_API LONG LUCAM_EXPORT LucamNumCameras (VOID); +#else +LUCAM_API LONG LUCAM_EXPORT LucamNumCameras (void); +#endif // LUMENERA_WINDOWS_API + +LUCAM_API LONG LUCAM_EXPORT LucamEnumCameras (LUCAM_VERSION *pVersionsArray, ULONG arrayCount); +LUCAM_API HANDLE LUCAM_EXPORT LucamCameraOpen (ULONG index); +LUCAM_API BOOL LUCAM_EXPORT LucamCameraClose (HANDLE hCamera); +LUCAM_API BOOL LUCAM_EXPORT LucamCameraReset (HANDLE hCamera); + +// Querying error information +#ifdef LUMENERA_WINDOWS_API +LUCAM_API ULONG LUCAM_EXPORT LucamGetLastError (VOID); +#else +LUCAM_API ULONG LUCAM_EXPORT LucamGetLastError (void); +#endif // LUMENERA_WINDOWS_API +LUCAM_API ULONG LUCAM_EXPORT LucamGetLastErrorForCamera (HANDLE hCamera); + +LUCAM_API BOOL LUCAM_EXPORT LucamQueryVersion (HANDLE hCamera, LUCAM_VERSION *pVersion); +LUCAM_API BOOL LUCAM_EXPORT LucamQueryExternInterface (HANDLE hCamera, ULONG *pExternInterface); +LUCAM_API BOOL LUCAM_EXPORT LucamGetCameraId (HANDLE hCamera, ULONG *pId); +LUCAM_API BOOL LUCAM_EXPORT LucamGetHardwareRevision (HANDLE hCamera, ULONG *pRevision); + +LUCAM_API BOOL LUCAM_EXPORT LucamGetProperty (HANDLE hCamera, ULONG propertyId, FLOAT *pValue, LONG *pFlags); +LUCAM_API BOOL LUCAM_EXPORT LucamSetProperty (HANDLE hCamera, ULONG propertyId, FLOAT value, LONG flags); +LUCAM_API BOOL LUCAM_EXPORT LucamPropertyRange (HANDLE hCamera, ULONG propertyId, FLOAT *pMin, FLOAT *pMax, FLOAT *pDefault, LONG *pFlags); + +LUCAM_API BOOL LUCAM_EXPORT LucamSetFormat (HANDLE hCamera, LUCAM_FRAME_FORMAT *pFormat, FLOAT frameRate); +LUCAM_API BOOL LUCAM_EXPORT LucamGetFormat (HANDLE hCamera, LUCAM_FRAME_FORMAT *pFormat, FLOAT *pFrameRate); + +LUCAM_API ULONG LUCAM_EXPORT LucamEnumAvailableFrameRates (HANDLE hCamera, ULONG entryCount, FLOAT *pAvailableFrameRates); + +LUCAM_API BOOL LUCAM_EXPORT LucamStreamVideoControl (HANDLE hCamera, ULONG controlType, HWND hWnd); + +LUCAM_API BOOL LUCAM_EXPORT LucamTakeVideo (HANDLE hCamera, LONG numFrames, BYTE *pData); +LUCAM_API BOOL LUCAM_EXPORT LucamTakeVideoEx (HANDLE hCamera, BYTE *pData, ULONG *pLength, ULONG timeout); +LUCAM_API BOOL LUCAM_EXPORT LucamCancelTakeVideo (HANDLE hCamera); + +// +// TakeSnapshot is a convenience function, wrapping the following sequence: +// BOOL rc = LucamEnableFastFrames(hCamera, pSettings); +// if (FALSE == rc) { return rc; } +// rc = LucamTakeFastFrame(hCamera, pData); +// LucamDisableFastFrames(hCamera); +// return rc; +// +LUCAM_API BOOL LUCAM_EXPORT LucamTakeSnapshot (HANDLE hCamera, LUCAM_SNAPSHOT *pSettings, BYTE *pData); +LUCAM_API LONG LUCAM_EXPORT LucamAddStreamingCallback (HANDLE hCamera, VOID (LUCAM_EXPORT *VideoFilter)(VOID *pContext, BYTE *pData, ULONG dataLength), VOID *pCBContext); +LUCAM_API BOOL LUCAM_EXPORT LucamRemoveStreamingCallback (HANDLE hCamera, LONG callbackId); -#ifdef LUCAMAPI_EXPORTS +LUCAM_API LONG LUCAM_EXPORT LucamAddRgbPreviewCallback (HANDLE hCamera, VOID (LUCAM_EXPORT *RgbVideoFilter)(VOID *pContext, BYTE *pData, ULONG dataLength, ULONG unused), VOID *pContext, ULONG rgbPixelFormat); +LUCAM_API BOOL LUCAM_EXPORT LucamRemoveRgbPreviewCallback (HANDLE hCamera, LONG callbackId); +LUCAM_API BOOL LUCAM_EXPORT LucamQueryRgbPreviewPixelFormat (HANDLE hCamera, ULONG *pRgbPixelFormat); + +LUCAM_API LONG LUCAM_EXPORT LucamAddSnapshotCallback (HANDLE hCamera, VOID (LUCAM_EXPORT *SnapshotCallback)(VOID *pContext, BYTE *pData, ULONG dataLength), VOID *pCBContext); +LUCAM_API BOOL LUCAM_EXPORT LucamRemoveSnapshotCallback (HANDLE hCamera, LONG callbackId); + +LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToGreyscale8Ex (HANDLE hCamera, BYTE *pDest, const BYTE *pSrc, LUCAM_IMAGE_FORMAT *pImageFormat, LUCAM_CONVERSION_PARAMS *pParams); +LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToGreyscale16Ex (HANDLE hCamera, USHORT *pDest, const USHORT *pSrc, LUCAM_IMAGE_FORMAT *pImageFormat, LUCAM_CONVERSION_PARAMS *pParams); + +LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToRgb24 (HANDLE hCamera, BYTE *pDest, BYTE *pSrc, ULONG width, ULONG height, ULONG pixelFormat, LUCAM_CONVERSION *pParams); +LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToRgb32 (HANDLE hCamera, BYTE *pDest, BYTE *pSrc, ULONG width, ULONG height, ULONG pixelFormat, LUCAM_CONVERSION *pParams); +LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToRgb48 (HANDLE hCamera, USHORT *pDest, USHORT *pSrc, ULONG width, ULONG height, ULONG pixelFormat, LUCAM_CONVERSION *pParams); +LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToRgb24Ex (HANDLE hCamera, BYTE *pDest, const BYTE *pSrc, const LUCAM_IMAGE_FORMAT *pImageFormat, const LUCAM_CONVERSION_PARAMS *pParams); +LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToRgb32Ex (HANDLE hCamera, BYTE *pDest, const BYTE *pSrc, const LUCAM_IMAGE_FORMAT *pImageFormat, const LUCAM_CONVERSION_PARAMS *pParams); +LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToRgb48Ex (HANDLE hCamera, USHORT *pDest, const USHORT *pSrc, const LUCAM_IMAGE_FORMAT *pImageFormat, const LUCAM_CONVERSION_PARAMS *pParams); + +LUCAM_API BOOL LUCAM_EXPORT LucamSetupCustomMatrix (HANDLE hCamera, FLOAT *pMatrix); +LUCAM_API BOOL LUCAM_EXPORT LucamGetCurrentMatrix (HANDLE hCamera, FLOAT *pMatrix); + +LUCAM_API BOOL LUCAM_EXPORT LucamEnableFastFrames (HANDLE hCamera, LUCAM_SNAPSHOT *pSettings); +LUCAM_API BOOL LUCAM_EXPORT LucamTakeFastFrame (HANDLE hCamera, BYTE *pData); +LUCAM_API BOOL LUCAM_EXPORT LucamForceTakeFastFrame (HANDLE hCamera, BYTE *pData); +LUCAM_API BOOL LUCAM_EXPORT LucamTakeFastFrameNoTrigger (HANDLE hCamera, BYTE *pData); +LUCAM_API BOOL LUCAM_EXPORT LucamDisableFastFrames (HANDLE hCamera); +LUCAM_API BOOL LUCAM_EXPORT LucamTriggerFastFrame (HANDLE hCamera); + +LUCAM_API BOOL LUCAM_EXPORT LucamSetTriggerMode (HANDLE hCamera, BOOL useHwTrigger); +LUCAM_API BOOL LUCAM_EXPORT LucamCancelTakeFastFrame (HANDLE hCamera); + + +LUCAM_API BOOL LUCAM_EXPORT LucamGetTruePixelDepth (HANDLE hCamera, ULONG *pCount); + +LUCAM_API BOOL LUCAM_EXPORT LucamGpioRead (HANDLE hCamera, BYTE *pGpoValues, BYTE *pGpiValues); +LUCAM_API BOOL LUCAM_EXPORT LucamGpioWrite (HANDLE hCamera, BYTE gpoValues); +LUCAM_API BOOL LUCAM_EXPORT LucamGpoSelect (HANDLE hCamera, BYTE gpoEnable); // Selects between GPO output or alternate function +LUCAM_API BOOL LUCAM_EXPORT LucamGpioConfigure (HANDLE hCamera, BYTE enableOutput); // Enables output drive on a pin. + +LUCAM_API BOOL LUCAM_EXPORT LucamOneShotAutoExposure (HANDLE hCamera, UCHAR target, ULONG startX, ULONG startY, ULONG width, ULONG height); +LUCAM_API BOOL LUCAM_EXPORT LucamOneShotAutoGain (HANDLE hCamera, UCHAR target, ULONG startX, ULONG startY, ULONG width, ULONG height); +LUCAM_API BOOL LUCAM_EXPORT LucamOneShotAutoWhiteBalance (HANDLE hCamera, ULONG startX, ULONG startY, ULONG width, ULONG height); +LUCAM_API BOOL LUCAM_EXPORT LucamDigitalWhiteBalance (HANDLE hCamera, ULONG startX, ULONG startY, ULONG width, ULONG height); +LUCAM_API BOOL LUCAM_EXPORT LucamOneShotAutoWhiteBalanceEx (HANDLE hCamera, FLOAT redOverGreen, FLOAT blueOverGreen, ULONG startX, ULONG startY, ULONG width, ULONG height); + +LUCAM_API BOOL LUCAM_EXPORT LucamGetVideoImageFormat (HANDLE hCamera, LUCAM_IMAGE_FORMAT *pImageFormat); +LUCAM_API BOOL LUCAM_EXPORT LucamGetStillImageFormat (HANDLE hCamera, LUCAM_IMAGE_FORMAT *pImageFormat); + +// On-host Tap Correction +LUCAM_API BOOL LUCAM_EXPORT LucamPerformDualTapCorrection (HANDLE hCamera, BYTE *pFrame, const LUCAM_IMAGE_FORMAT *pImageFormat); +LUCAM_API BOOL LUCAM_EXPORT LucamPerformMultiTapCorrection (HANDLE hCamera, BYTE *pFrame, const LUCAM_IMAGE_FORMAT *pImageFormat); + + +LUCAM_API BOOL LUCAM_EXPORT LucamSaveImageEx (HANDLE hCamera, ULONG width, ULONG height, ULONG pixelFormat, BYTE *pData, const CHAR *pFilename); +LUCAM_API BOOL LUCAM_EXPORT LucamSaveImageWEx (HANDLE hCamera, ULONG width, ULONG height, ULONG pixelFormat, BYTE *pData, const WCHAR *pFilename); +LUCAM_API BOOL LUCAM_EXPORT LucamGetSubsampleBinDescription (HANDLE hCamera, LUCAM_SS_BIN_DESC *pDesc) ; + +//**************************************************************************************************************** +// Deprecated API Function(s) +//**************************************************************************************************************** +LUCAM_API LUCAM_DEPRECATED BOOL LUCAM_EXPORT LucamSaveImage (ULONG width, ULONG height, ULONG pixelFormat, BYTE *pData, const CHAR *pFilename); +LUCAM_API LUCAM_DEPRECATED BOOL LUCAM_EXPORT LucamSaveImageW (ULONG width, ULONG height, ULONG pixelFormat, BYTE *pData, const WCHAR *pFilename); + + +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** + + +#if defined(LUMENERA_WINDOWS_API) +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +// WINDOWS Section +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +LUCAM_API ULONG LUCAM_EXPORT LucamQueryStats (HANDLE hCamera, BOOL stillStream, LUCAM_STREAM_STATS *pStats, ULONG sizeofStats); + +LUCAM_API BOOL LUCAM_EXPORT LucamDisplayPropertyPage (HANDLE hCamera, HWND hParentWnd); +LUCAM_API BOOL LUCAM_EXPORT LucamDisplayVideoFormatPage (HANDLE hCamera, HWND hParentWnd); + +LUCAM_API BOOL LUCAM_EXPORT LucamQueryDisplayFrameRate (HANDLE hCamera, FLOAT *pValue); + #ifdef __cplusplus -#define LUCAM_API extern "C" __declspec(dllexport) +LUCAM_API BOOL LUCAM_EXPORT LucamCreateDisplayWindow (HANDLE hCamera, LPCSTR lpTitle = NULL, DWORD dwStyle = WS_OVERLAPPED|WS_MINIMIZEBOX|WS_CAPTION|WS_SYSMENU|WS_VISIBLE, int x = 0, int y = 0, int width = 0, int height = 0, HWND hParent = NULL, HMENU childId = NULL); +LUCAM_API BOOL LUCAM_EXPORT LucamAdjustDisplayWindow (HANDLE hCamera, LPCSTR lpTitle = NULL, int x = 0, int y = 0, int width = 0, int height = 0); #else -#define LUCAM_API __declspec(dllexport) -#endif +LUCAM_API BOOL LUCAM_EXPORT LucamCreateDisplayWindow (HANDLE hCamera, LPCSTR lpTitle, DWORD dwStyle, int x, int y, int width, int height, HWND hParent, HMENU childId); +LUCAM_API BOOL LUCAM_EXPORT LucamAdjustDisplayWindow (HANDLE hCamera, LPCSTR lpTitle, int x, int y, int width, int height); +#endif // __cplusplus +LUCAM_API BOOL LUCAM_EXPORT LucamDestroyDisplayWindow (HANDLE hCamera); + +LUCAM_API BOOL LUCAM_EXPORT LucamReadRegister (HANDLE hCamera, LONG address, LONG numReg, LONG *pValue); +LUCAM_API BOOL LUCAM_EXPORT LucamWriteRegister (HANDLE hCamera, LONG address, LONG numReg, LONG *pValue); + +LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToGreyscale8 (HANDLE hCamera, BYTE *pDest, BYTE *pSrc, ULONG width, ULONG height, ULONG pixelFormat, LUCAM_CONVERSION *pParams); +LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToGreyscale16 (HANDLE hCamera, USHORT *pDest, USHORT *pSrc, ULONG width, ULONG height, ULONG pixelFormat, LUCAM_CONVERSION *pParams); +LUCAM_API VOID LUCAM_EXPORT LucamConvertBmp24ToRgb24 (UCHAR *pFrame, ULONG width, ULONG height); + +LUCAM_API BOOL LUCAM_EXPORT LucamStreamVideoControlAVI (HANDLE hCamera, ULONG controlType, LPCWSTR pFileName, HWND hWnd); +LUCAM_API BOOL LUCAM_EXPORT LucamConvertRawAVIToStdVideo (HANDLE hCamera, const WCHAR *pOutputFileName, const WCHAR *pInputFileName, ULONG outputType); + +LUCAM_API HANDLE LUCAM_EXPORT LucamPreviewAVIOpen (const WCHAR *pFileName); +LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVIClose (HANDLE hAVI); +LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVIControl (HANDLE hAVI, ULONG previewControlType, HWND previewWindow); +LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVIGetDuration (HANDLE hAVI, LONGLONG *pDurationMinutes, LONGLONG *pDurationSeconds, LONGLONG *pDurationMilliseconds, LONGLONG *pDurationMicroSeconds); +LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVIGetFrameCount (HANDLE hAVI, LONGLONG *pFrameCount); +LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVIGetFrameRate (HANDLE hAVI, FLOAT *pFrameRate); +LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVISetPositionFrame (HANDLE hAVI, LONGLONG pPositionFrame); +LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVIGetPositionFrame (HANDLE hAVI, LONGLONG *pPositionFrame); +LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVISetPositionTime (HANDLE hAVI, LONGLONG positionMinutes, LONGLONG positionSeconds, LONGLONG positionMilliSeconds, LONGLONG positionMicroSeconds); +LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVIGetPositionTime (HANDLE hAVI, LONGLONG *pPositionMinutes, LONGLONG *pPositionSeconds, LONGLONG *pPositionMilliSeconds, LONGLONG *pPositionMicroSeconds); +LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVIGetFormat (HANDLE hAVI, LONG *width, LONG *height, LONG *fileType, LONG *bitDepth); + +LUCAM_API HANDLE LUCAM_EXPORT LucamEnableSynchronousSnapshots (ULONG numberOfCameras, HANDLE *phCameras, LUCAM_SNAPSHOT **ppSettings); +LUCAM_API BOOL LUCAM_EXPORT LucamTakeSynchronousSnapshots (HANDLE syncSnapsHandle, BYTE **ppBuffers); +LUCAM_API BOOL LUCAM_EXPORT LucamDisableSynchronousSnapshots (HANDLE syncSnapsHandle); + +LUCAM_API BOOL LUCAM_EXPORT LucamLedSet (HANDLE hCamera, ULONG led); + +LUCAM_API BOOL LUCAM_EXPORT LucamOneShotAutoExposureEx (HANDLE hCamera, UCHAR target, ULONG startX, ULONG startY, ULONG width, ULONG height, FLOAT lightingPeriod /* ms, should be 8.333 in North America*/); + +LUCAM_API BOOL LUCAM_EXPORT LucamDigitalWhiteBalanceEx (HANDLE hCamera, FLOAT redOverGreen, FLOAT blueOverGreen, ULONG startX, ULONG startY, ULONG width, ULONG height); +LUCAM_API BOOL LUCAM_EXPORT LucamAdjustWhiteBalanceFromSnapshot (HANDLE hCamera, LUCAM_SNAPSHOT *pSettings, BYTE *pData, FLOAT redOverGreen, FLOAT blueOverGreen, ULONG startX, ULONG startY, ULONG width, ULONG height); +LUCAM_API BOOL LUCAM_EXPORT LucamOneShotAutoIris (HANDLE hCamera, UCHAR target, ULONG startX, ULONG startY, ULONG width, ULONG height); +LUCAM_API BOOL LUCAM_EXPORT LucamContinuousAutoExposureEnable (HANDLE hCamera, UCHAR target, ULONG startX, ULONG startY, ULONG width, ULONG height, FLOAT lightingPeriod /* ms, should be 8.333 in North America */); +LUCAM_API BOOL LUCAM_EXPORT LucamContinuousAutoExposureDisable (HANDLE hCamera); + +LUCAM_API BOOL LUCAM_EXPORT LucamAutoFocusStart (HANDLE hCamera, ULONG startX, ULONG startY, ULONG width, ULONG height, FLOAT putZeroThere1, FLOAT putZeroThere2, FLOAT putZeroThere3, BOOL (LUCAM_EXPORT * ProgressCallback)(VOID *context, FLOAT percentageCompleted), VOID *contextForCallback); +LUCAM_API BOOL LUCAM_EXPORT LucamAutoFocusWait (HANDLE hCamera, DWORD timeout); +LUCAM_API BOOL LUCAM_EXPORT LucamAutoFocusStop (HANDLE hCamera); +LUCAM_API BOOL LUCAM_EXPORT LucamAutoFocusQueryProgress (HANDLE hCamera, FLOAT *pPercentageCompleted); +LUCAM_API BOOL LUCAM_EXPORT LucamInitAutoLens (HANDLE hCamera, BOOL force); + +// Lookup table +LUCAM_API BOOL LUCAM_EXPORT LucamSetup8bitsLUT (HANDLE hCamera, UCHAR *pLut, ULONG length); // Length must be 0 or 256 +LUCAM_API BOOL LUCAM_EXPORT LucamSetup8bitsColorLUT (HANDLE hCamera, UCHAR *pLut, ULONG length, BOOL applyOnRed, BOOL applyOnGreen1, BOOL applyOnGreen2 , BOOL applyOnBlue); // Length must be 0 or 256 + +// RS-232 +LUCAM_API int LUCAM_EXPORT LucamRs232Transmit (HANDLE hCamera, CHAR *pData, int length); +LUCAM_API int LUCAM_EXPORT LucamRs232Receive (HANDLE hCamera, CHAR *pData, int maxLength); +LUCAM_API BOOL LUCAM_EXPORT LucamAddRs232Callback (HANDLE hCamera, VOID (LUCAM_EXPORT * callback)(VOID *), VOID *context); +LUCAM_API VOID LUCAM_EXPORT LucamRemoveRs232Callback (HANDLE hCamera); + +// In-camera persistent buffers +LUCAM_API BOOL LUCAM_EXPORT LucamPermanentBufferRead (HANDLE hCamera, UCHAR *pBuf, ULONG offset, ULONG length); +LUCAM_API BOOL LUCAM_EXPORT LucamPermanentBufferWrite (HANDLE hCamera, UCHAR *pBuf, ULONG offset, ULONG length); + +LUCAM_API BOOL LUCAM_EXPORT LucamSetTimeout (HANDLE hCamera, BOOL still, FLOAT timeout); + +LUCAM_API BOOL LUCAM_EXPORT LucamGetTimestampFrequency (HANDLE hCamera, ULONGLONG* pTimestampTickFrequency); +LUCAM_API BOOL LUCAM_EXPORT LucamGetTimestamp (HANDLE hCamera, ULONGLONG* pTimestamp); +LUCAM_API BOOL LUCAM_EXPORT LucamSetTimestamp (HANDLE hCamera, ULONGLONG timestamp); +LUCAM_API BOOL LUCAM_EXPORT LucamEnableTimestamp (HANDLE hCamera, BOOL enable); +LUCAM_API BOOL LUCAM_EXPORT LucamIsTimestampEnabled (HANDLE hCamera, BOOL* pIsEnabled); +LUCAM_API BOOL LUCAM_EXPORT LucamGetMetadata (HANDLE hCamera, BYTE* pImageBuffer, LUCAM_IMAGE_FORMAT* pFormat, ULONG metaDataIndex, ULONGLONG* pMetaData); +LUCAM_API BOOL LUCAM_EXPORT LucamGetDualGainFactor (HANDLE hCamera, BYTE *pValue); +LUCAM_API BOOL LUCAM_EXPORT LucamSetDualGainFactor (HANDLE hCamera, BYTE value); +LUCAM_API BOOL LUCAM_EXPORT LucamGetPiecewiseLinearResponseParameters (HANDLE hCamera, BYTE *pKneepoint, ULONG *pGainDivider); +LUCAM_API BOOL LUCAM_EXPORT LucamSetPiecewiseLinearResponseParameters (HANDLE hCamera, BYTE kneepoint, ULONG gainDivider); +LUCAM_API BOOL LUCAM_EXPORT LucamGetHdrMode (HANDLE hCamera, BYTE *pValue); +LUCAM_API BOOL LUCAM_EXPORT LucamSetHdrMode (HANDLE hCamera, BYTE value); + +LUCAM_API PVOID LUCAM_EXPORT LucamRegisterEventNotification (HANDLE hCamera, DWORD eventId, HANDLE hEvent); +LUCAM_API BOOL LUCAM_EXPORT LucamUnregisterEventNotification (HANDLE hCamera, PVOID pEventInformation); + +// On-host Tap Correction +LUCAM_API BOOL LUCAM_EXPORT LucamPerformMonoGridCorrection (HANDLE hCamera, BYTE *pFrame, const LUCAM_IMAGE_FORMAT *pImageFormat); + +LUCAM_API BOOL LUCAM_EXPORT LucamGetImageIntensity (HANDLE hCamera, BYTE *pFrame, LUCAM_IMAGE_FORMAT *pImageFormat , ULONG startX, ULONG startY, ULONG width, ULONG height, FLOAT *pIntensity, FLOAT *pRedIntensity, FLOAT *pGreen1Intensity, FLOAT *pGreen2Intensity, FLOAT *pBlueIntensity); +LUCAM_API BOOL LUCAM_EXPORT LucamAutoRoiGet (HANDLE hCamera, LONG *pStartX, LONG *pStartY, LONG *pWidth, LONG *pHeight); +LUCAM_API BOOL LUCAM_EXPORT LucamAutoRoiSet (HANDLE hCamera, LONG startX, LONG startY, LONG width, LONG height); +LUCAM_API BOOL LUCAM_EXPORT LucamDataLsbAlign (HANDLE hCamera, LUCAM_IMAGE_FORMAT *pLif, UCHAR *pData); +LUCAM_API BOOL LUCAM_EXPORT LucamEnableInterfacePowerSpecViolation (HANDLE hCamera, BOOL enable); +LUCAM_API BOOL LUCAM_EXPORT LucamIsInterfacePowerSpecViolationEnabled (HANDLE hCamera, BOOL* pIsEnabled); +LUCAM_API BOOL LUCAM_EXPORT LucamSelectExternInterface (ULONG externInterface); // The API defaults to USB + +LUCAM_API BOOL LUCAM_EXPORT LgcamGetIPConfiguration (ULONG index, UCHAR cameraMac[6], LGCAM_IP_CONFIGURATION *pCameraConfiguration, UCHAR hostMac[6], LGCAM_IP_CONFIGURATION *pHostConfiguration); +LUCAM_API BOOL LUCAM_EXPORT LgcamSetIPConfiguration (ULONG index, LGCAM_IP_CONFIGURATION *pCameraConfiguration); + + +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** + + +#elif defined(LUMENERA_MAC_API) +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +// MAC Section +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +LUCAM_API BOOL LUCAM_EXPORT LucamOneShotAutoExposureEx (HANDLE hCamera, UCHAR target, ULONG startX, ULONG startY, ULONG width, ULONG height, FLOAT lightingPeriod /* ms, should be 8.333 in North America*/); + +LUCAM_API LONG LUCAM_EXPORT LucamRegisterCallbackNotification (HANDLE hCamera, DWORD eventId, int (*callback)(void *context, ULONG eventId), void *contextForCallback); +LUCAM_API BOOL LUCAM_EXPORT LucamUnregisterCallbackNotification (HANDLE hCamera, LONG callbackId); + +LUCAM_API BOOL LUCAM_EXPORT LucamGetSubsampleBinDescription (HANDLE hCamera, LUCAM_SS_BIN_DESC *pDesc) ; + +LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToGreyscale8 (HANDLE hCamera, BYTE *pDest, BYTE *pSrc, ULONG width, ULONG height, ULONG pixelFormat, LUCAM_CONVERSION *pParams); +LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToGreyscale16 (HANDLE hCamera, USHORT *pDest, USHORT *pSrc, ULONG width, ULONG height, ULONG pixelFormat, LUCAM_CONVERSION *pParams); + +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** #else -#ifdef __cplusplus -#define LUCAM_API extern "C" __declspec(dllimport) -#else -#define LUCAM_API __declspec(dllimport) +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +// LINUX Section +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +LUCAM_API ULONG LUCAM_EXPORT LucamQueryStats (HANDLE hCamera, BOOL stillStream, LUCAM_STREAM_STATS *pStats, ULONG sizeofStats); + +LUCAM_API BOOL LUCAM_EXPORT LucamAutoFocusStart (HANDLE hCamera, ULONG startX, ULONG startY, ULONG width, ULONG height, FLOAT putZeroThere1, FLOAT putZeroThere2, FLOAT putZeroThere3, BOOL (LUCAM_EXPORT * ProgressCallback)(VOID *context, FLOAT percentageCompleted), VOID *contextForCallback); +LUCAM_API BOOL LUCAM_EXPORT LucamAutoFocusWait (HANDLE hCamera, DWORD timeout); +LUCAM_API BOOL LUCAM_EXPORT LucamAutoFocusStop (HANDLE hCamera); +LUCAM_API BOOL LUCAM_EXPORT LucamAutoFocusQueryProgress (HANDLE hCamera, FLOAT *pPercentageCompleted); +LUCAM_API BOOL LUCAM_EXPORT LucamInitAutoLens (HANDLE hCamera, BOOL force); + +// In-camera persistent buffers +LUCAM_API BOOL LUCAM_EXPORT LucamPermanentBufferRead (HANDLE hCamera, UCHAR *pBuf, ULONG offset, ULONG length); +LUCAM_API BOOL LUCAM_EXPORT LucamPermanentBufferWrite (HANDLE hCamera, UCHAR *pBuf, ULONG offset, ULONG length); + +LUCAM_API BOOL LUCAM_EXPORT LucamAdjustWhiteBalanceFromSnapshot (HANDLE hCamera, LUCAM_SNAPSHOT *pSettings, BYTE *pData, FLOAT redOverGreen, FLOAT blueOverGreen, ULONG startX, ULONG startY, ULONG width, ULONG height); + +LUCAM_API BOOL LUCAM_EXPORT LucamSetTimeout (HANDLE hCamera, BOOL still, FLOAT timeout); + +// Lookup table +LUCAM_API BOOL LUCAM_EXPORT LucamSetup8bitsLUT (HANDLE hCamera, UCHAR *pLut, ULONG length); // Length must be 0 or 256 +LUCAM_API BOOL LUCAM_EXPORT LucamSetup8bitsColorLUT (HANDLE hCamera, UCHAR *pLut, ULONG length, BOOL applyOnRed, BOOL applyOnGreen1, BOOL applyOnGreen2 , BOOL applyOnBlue); // Length must be 0 or 256 + +LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToGreyscale8Ex (HANDLE hCamera, BYTE *pDest, const BYTE *pSrc, LUCAM_IMAGE_FORMAT *pImageFormat, LUCAM_CONVERSION_PARAMS *pParams); +LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToGreyscale16Ex (HANDLE hCamera, USHORT *pDest, const USHORT *pSrc, LUCAM_IMAGE_FORMAT *pImageFormat, LUCAM_CONVERSION_PARAMS *pParams); + +LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToRgb24NC (BYTE *pDest, const BYTE *pSrc, const BYTE *pImageProperties); +LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToRgb32NC (BYTE *pDest, const BYTE *pSrc, const BYTE *pImageProperties); +LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToRgb48NC (USHORT *pDest, const USHORT *pSrc, const BYTE *pImageProperties); +LUCAM_API ULONG LUCAM_EXPORT LucamGetImageProperties (HANDLE hCamera, BYTE *pImgProp, ULONG size, const LUCAM_IMAGE_FORMAT *pImageFormat, const LUCAM_CONVERSION_PARAMS *pParams); + +LUCAM_API BOOL LUCAM_EXPORT LucamGetTimestampFrequency (HANDLE hCamera, ULONGLONG* pTimestampTickFrequency); +LUCAM_API BOOL LUCAM_EXPORT LucamGetTimestamp (HANDLE hCamera, ULONGLONG* pTimestamp); +LUCAM_API BOOL LUCAM_EXPORT LucamSetTimestamp (HANDLE hCamera, ULONGLONG timestamp); +LUCAM_API BOOL LUCAM_EXPORT LucamEnableTimestamp (HANDLE hCamera, BOOL enable); +LUCAM_API BOOL LUCAM_EXPORT LucamIsTimestampEnabled (HANDLE hCamera, BOOL* pIsEnabled); +LUCAM_API BOOL LUCAM_EXPORT LucamGetMetadata (HANDLE hCamera, BYTE* pImageBuffer, LUCAM_IMAGE_FORMAT* pFormat, ULONG metaDataIndex, ULONGLONG* pMetaData); +LUCAM_API BOOL LUCAM_EXPORT LucamLedSet (HANDLE hCamera, ULONG led); +LUCAM_API BOOL LUCAM_EXPORT LucamGetDualGainFactor (HANDLE hCamera, BYTE *pValue); +LUCAM_API BOOL LUCAM_EXPORT LucamSetDualGainFactor (HANDLE hCamera, BYTE value); +LUCAM_API BOOL LUCAM_EXPORT LucamGetHdrMode (HANDLE hCamera, BYTE *pValue); +LUCAM_API BOOL LUCAM_EXPORT LucamSetHdrMode (HANDLE hCamera, BYTE value); + +LUCAM_API BOOL LUCAM_EXPORT LgcamGetIPConfiguration (ULONG index, UCHAR cameraMac[6], LGCAM_IP_CONFIGURATION *pCameraConfiguration, UCHAR hostMac[6], LGCAM_IP_CONFIGURATION *pHostConfiguration); +LUCAM_API BOOL LUCAM_EXPORT LgcamSetIPConfiguration (ULONG index, LGCAM_IP_CONFIGURATION *pCameraConfiguration); + +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** #endif -#endif - -#if (_MSC_VER >= 1300) -#define LUCAM_DEPRECATED __declspec(deprecated) -#else -#define LUCAM_DEPRECATED -#endif - - -#define LUCAM_EXPORT __stdcall - - - - -//----------- Pixel Format IDs ------------------ - -#define LUCAM_PF_8 0 -#define LUCAM_PF_16 1 -#define LUCAM_PF_24 2 -#define LUCAM_PF_YUV422 3 -#define LUCAM_PF_COUNT 4 -#define LUCAM_PF_FILTER 5 -#define LUCAM_PF_32 6 -#define LUCAM_PF_48 7 - - -//----------- Properties ------------------------ - -#define LUCAM_PROP_BRIGHTNESS 0 -#define LUCAM_PROP_CONTRAST 1 -#define LUCAM_PROP_HUE 2 -#define LUCAM_PROP_SATURATION 3 -#define LUCAM_PROP_SHARPNESS 4 -#define LUCAM_PROP_GAMMA 5 - -#define LUCAM_PROP_PAN 16 -#define LUCAM_PROP_TILT 17 -#define LUCAM_PROP_ROLL 18 -#define LUCAM_PROP_ZOOM 19 -#define LUCAM_PROP_EXPOSURE 20 -#define LUCAM_PROP_IRIS 21 -#define LUCAM_PROP_FOCUS 22 - - - -#define LUCAM_PROP_GAIN 40 -#define LUCAM_PROP_GAIN_RED 41 -#define LUCAM_PROP_GAIN_BLUE 42 -#define LUCAM_PROP_GAIN_GREEN1 43 -#define LUCAM_PROP_GAIN_GREEN2 44 -#define LUCAM_PROP_GAIN_MAGENTA 41 -#define LUCAM_PROP_GAIN_CYAN 42 -#define LUCAM_PROP_GAIN_YELLOW1 43 -#define LUCAM_PROP_GAIN_YELLOW2 44 - - -#define LUCAM_PROP_DEMOSAICING_METHOD 64 -#define LUCAM_PROP_CORRECTION_MATRIX 65 -#define LUCAM_PROP_FLIPPING 66 - -#define LUCAM_PROP_DIGITAL_WHITEBALANCE_U 69 // from -100 to 100 -#define LUCAM_PROP_DIGITAL_WHITEBALANCE_V 70 // from -100 to 100 -#define LUCAM_PROP_DIGITAL_GAIN 71 // from 0 to 2, 1 means a gain of 1.0 -#define LUCAM_PROP_DIGITAL_GAIN_RED 72 // from 0 to 2.5, 1 means a gain of 1.0. Relates to GAIN_Y and WHITEBALANCE -#define LUCAM_PROP_DIGITAL_GAIN_GREEN 73 // from 0 to 2.5, 1 means a gain of 1.0. Relates to GAIN_Y and WHITEBALANCE -#define LUCAM_PROP_DIGITAL_GAIN_BLUE 74 // from 0 to 2.5, 1 means a gain of 1.0. Relates to GAIN_Y and WHITEBALANCE - -#define LUCAM_PROP_COLOR_FORMAT 80 // (read only) -#define LUCAM_PROP_MAX_WIDTH 81 // (read only) -#define LUCAM_PROP_MAX_HEIGHT 82 // (read only) - -#define LUCAM_PROP_ABS_FOCUS 85 // requires the auto lens to be initialized -#define LUCAM_PROP_BLACK_LEVEL 86 - -#define LUCAM_PROP_KNEE1_EXPOSURE 96 -#define LUCAM_PROP_STILL_KNEE1_EXPOSURE 96 -#define LUCAM_PROP_KNEE2_EXPOSURE 97 -#define LUCAM_PROP_STILL_KNEE2_EXPOSURE 97 -#define LUCAM_PROP_STILL_KNEE3_EXPOSURE 98 -#define LUCAM_PROP_VIDEO_KNEE 99 -#define LUCAM_PROP_KNEE1_LEVEL 99 -#define LUCAM_PROP_THRESHOLD 101 -#define LUCAM_PROP_AUTO_EXP_TARGET 103 -#define LUCAM_PROP_TIMESTAMPS 105 -#define LUCAM_PROP_SNAPSHOT_CLOCK_SPEED 106 // 0 is the fastest -#define LUCAM_PROP_AUTO_EXP_MAXIMUM 107 -#define LUCAM_PROP_TEMPERATURE 108 -#define LUCAM_PROP_TRIGGER 110 -#define LUCAM_PROP_FRAME_GATE 112 -#define LUCAM_PROP_EXPOSURE_INTERVAL 113 -#define LUCAM_PROP_PWM 114 -#define LUCAM_PROP_MEMORY 115 // value is RO and represent # of frames in memory -#define LUCAM_PROP_STILL_STROBE_DURATION 116 -#define LUCAM_PROP_FAN 118 -#define LUCAM_PROP_SYNC_MODE 119 -#define LUCAM_PROP_SNAPSHOT_COUNT 120 -#define LUCAM_PROP_LSC_X 121 -#define LUCAM_PROP_LSC_Y 122 -#define LUCAM_PROP_AUTO_IRIS_MAX 123 -#define LUCAM_PROP_LENS_STABILIZATION 124 -#define LUCAM_PROP_VIDEO_TRIGGER 125 -#define LUCAM_PROP_KNEE2_LEVEL 163 -#define LUCAM_PROP_THRESHOLD_LOW 165 -#define LUCAM_PROP_THRESHOLD_HIGH 166 -#define LUCAM_PROP_TEMPERATURE2 167 -#define LUCAM_PROP_LIGHT_FREQUENCY 168 -#define LUCAM_PROP_LUMINANCE 169 -#define LUCAM_PROP_AUTO_GAIN_MAXIMUM 170 -#define LUCAM_PROP_AUTO_SHARPNESS_GAIN_THRESHOLD_LOW 171 -#define LUCAM_PROP_AUTO_SHARPNESS_GAIN_THRESHOLD_HIGH 172 -#define LUCAM_PROP_AUTO_SHARPNESS_LOW 173 -#define LUCAM_PROP_AUTO_SHARPNESS_HIGH 174 - -#define LUCAM_PROP_JPEG_QUALITY 256 - - -#define LUCAM_PROP_FLAG_USE 0x80000000 -#define LUCAM_PROP_FLAG_AUTO 0x40000000 -#define LUCAM_PROP_FLAG_MASTER 0x40000000 // for LUCAM_PROP_SYNC_MODE -#define LUCAM_PROP_FLAG_STROBE_FROM_START_OF_EXPOSURE 0x20000000 -#define LUCAM_PROP_FLAG_BACKLASH_COMPENSATION 0x20000000 // LUCAM_PROP_IRIS and LUCAM_PROP_FOCUS -#define LUCAM_PROP_FLAG_USE_FOR_SNAPSHOTS 0x04000000 // For LUCAM_PROP_IRIS -#define LUCAM_PROP_FLAG_POLARITY 0x10000000 -#define LUCAM_PROP_FLAG_MEMORY_READBACK 0x08000000 // for LUCAM_PROP_MEMORY -#define LUCAM_PROP_FLAG_BUSY 0x00040000 -#define LUCAM_PROP_FLAG_UNKNOWN_MAXIMUM 0x00020000 -#define LUCAM_PROP_FLAG_UNKNOWN_MINIMUM 0x00010000 -#define LUCAM_PROP_FLAG_LITTLE_ENDIAN 0x80000000 // for LUCAM_PROP_COLOR_FORMAT -#define LUCAM_PROP_FLAG_ALTERNATE 0x00080000 -#define LUCAM_PROP_FLAG_READONLY 0x00010000 // in caps param of GetPropertyRange - -// Prop flags for VIDEO_TRIGGER (also uses LUCAM_PROP_FLAG_USE) -#define LUCAM_PROP_FLAG_HW_ENABLE 0x40000000 -#define LUCAM_PROP_FLAG_SW_TRIGGER 0x00200000 // self cleared - - -// Those flags can be used with the LUCAM_PROP_GAMMA / LUCAM_PROP_BRIGHTNESS / LUCAM_PROP_CONTRAST -// properties. They are available on specifica cameras only. -#define LUCAM_PROP_FLAG_RED 0x00000001 -#define LUCAM_PROP_FLAG_GREEN1 0x00000002 -#define LUCAM_PROP_FLAG_GREEN2 0x00000004 -#define LUCAM_PROP_FLAG_BLUE 0x00000008 - - -// Do not access these properties unless you know what you are doing. - -#define LUCAM_PROP_STILL_EXPOSURE 50 -#define LUCAM_PROP_STILL_GAIN 51 -#define LUCAM_PROP_STILL_GAIN_RED 52 -#define LUCAM_PROP_STILL_GAIN_GREEN1 53 -#define LUCAM_PROP_STILL_GAIN_GREEN2 54 -#define LUCAM_PROP_STILL_GAIN_BLUE 55 -#define LUCAM_PROP_STILL_GAIN_MAGENTA 52 -#define LUCAM_PROP_STILL_GAIN_YELLOW1 53 -#define LUCAM_PROP_STILL_GAIN_YELLOW2 54 -#define LUCAM_PROP_STILL_GAIN_CYAN 55 - - -// color pattern for the LUCAM_PROP_COLOR_FORMAT property -#define LUCAM_CF_MONO 0 -#define LUCAM_CF_BAYER_RGGB 8 -#define LUCAM_CF_BAYER_GRBG 9 -#define LUCAM_CF_BAYER_GBRG 10 -#define LUCAM_CF_BAYER_BGGR 11 -#define LUCAM_CF_BAYER_CYYM 16 -#define LUCAM_CF_BAYER_YCMY 17 -#define LUCAM_CF_BAYER_YMCY 18 -#define LUCAM_CF_BAYER_MYYC 19 - -// parameter for the LUCAM_PROP_FLIPPING property -#define LUCAM_PROP_FLIPPING_NONE 0 -#define LUCAM_PROP_FLIPPING_X 1 -#define LUCAM_PROP_FLIPPING_Y 2 -#define LUCAM_PROP_FLIPPING_XY 3 - - - -//----------- Version Structure ------------------ - -typedef struct { - ULONG firmware; // Firmware version - ULONG fpga; // FPGA version - ULONG api; // API version - ULONG driver; // Device driver version - ULONG serialnumber; // of the camera - ULONG reserved; // do not use -} LUCAM_VERSION; - - -//------------- Frame format -------------------- - -typedef struct { - ULONG xOffset; // x coordinate on imager of top left corner of subwindow in pixels - ULONG yOffset; // y coordinate on imager of top left corner of subwindow in pixels - ULONG width; // width in pixels of subwindow - ULONG height; // height in pixels of subwindow - ULONG pixelFormat; // pixel format for data - union - { - USHORT subSampleX; // sub-sample ratio in x direction in pixels (x:1) - USHORT binningX; // binning ratio in x direction in pixels (x:1) - }; - USHORT flagsX; // LUCAM_FRAME_FORMAT_FLAGS_* - union - { - USHORT subSampleY; // sub-sample ratio in y direction in pixels (y:1) - USHORT binningY; // binning ratio in y direction in pixels (y:1) - }; - USHORT flagsY; // LUCAM_FRAME_FORMAT_FLAGS_* -} LUCAM_FRAME_FORMAT; - -#define LUCAM_FRAME_FORMAT_FLAGS_BINNING 0x0001 - - -//------------ Snapshot Settings Structure ------- - - -typedef struct { - FLOAT exposure; // Exposure in milliseconds - FLOAT gain; // Overall gain as a multiplicative factor - union { - struct { - FLOAT gainRed; // Gain for Red pixels as multiplicative factor - FLOAT gainBlue; // Gain for Blue pixels as multiplicative factor - FLOAT gainGrn1; // Gain for Green pixels on Red rows as multiplicative factor - FLOAT gainGrn2; // Gain for Green pixels on Blue rows as multiplicative factor - }; - struct { - FLOAT gainMag; // Gain for Magenta pixels as multiplicative factor - FLOAT gainCyan; // Gain for Cyan pixels as multiplicative factor - FLOAT gainYel1; // Gain for Yellow pixels on Magenta rows as multiplicative factor - FLOAT gainYel2; // Gain for Yellow pixels on Cyan rows as multiplicative factor - }; - }; - union - { - BOOL useStrobe; // for backward compatibility - ULONG strobeFlags; // use LUCAM_PROP_FLAG_USE and/or LUCAM_PROP_FLAG_STROBE_FROM_START_OF_EXPOSURE - }; - FLOAT strobeDelay; // time interval from when exposure starts to time the flash is fired in milliseconds - BOOL useHwTrigger; // wait for hardware trigger - FLOAT timeout; // maximum time to wait for hardware trigger prior to returning from function in milliseconds - LUCAM_FRAME_FORMAT format; // frame format for data - ULONG shutterType; - FLOAT exposureDelay; - union - { - BOOL bufferlastframe; // set to TRUE if you want TakeFastFrame to return an already received frame. - ULONG ulReserved1; - }; - ULONG ulReserved2; // must be set to 0 - FLOAT flReserved1; // must be set to 0 - FLOAT flReserved2; // must be set to 0 -} LUCAM_SNAPSHOT; - - -//------------ Streaming Video Modes -------------- - -#define STOP_STREAMING 0 -#define START_STREAMING 1 -#define START_DISPLAY 2 -#define PAUSE_STREAM 3 -#define START_RGBSTREAM 6 - -//------------ Streaming AVI Modes -------------- -#define STOP_AVI 0 -#define START_AVI 1 -#define PAUSE_AVI 2 - -//------------ Parameters for AVI types -------------- -#define AVI_RAW_LUMENERA 0 -#define AVI_STANDARD_24 1 -#define AVI_STANDARD_32 2 -#define AVI_XVID_24 3 -#define AVI_STANDARD_8 4 // for monochrome only - - -//---------- Parameters for LucamConvertFrameToRgb24 -------------- - -typedef struct -{ - ULONG DemosaicMethod; - ULONG CorrectionMatrix; - -}LUCAM_CONVERSION; - -// to use with LUCAM_CONVERSION.DemosaicMethod -#define LUCAM_DM_NONE 0 -#define LUCAM_DM_FAST 1 -#define LUCAM_DM_HIGH_QUALITY 2 -#define LUCAM_DM_HIGHER_QUALITY 3 -#define LUCAM_DM_SIMPLE 8 - - -// to use with LUCAM_CONVERSION.CorrectionMatrix -#define LUCAM_CM_NONE 0 -#define LUCAM_CM_FLUORESCENT 1 -#define LUCAM_CM_DAYLIGHT 2 -#define LUCAM_CM_INCANDESCENT 3 -#define LUCAM_CM_XENON_FLASH 4 -#define LUCAM_CM_HALOGEN 5 - -#define LUCAM_CM_IDENTITY 14 -#define LUCAM_CM_CUSTOM 15 - - -//----------- Shutter types ------------ - -#define LUCAM_SHUTTER_TYPE_GLOBAL 0 -#define LUCAM_SHUTTER_TYPE_ROLLING 1 - - -//----------- Extern interfaces ------- - -#define LUCAM_EXTERN_INTERFACE_USB1 1 -#define LUCAM_EXTERN_INTERFACE_USB2 2 - - - -//---------- Functions ---------------- - -LUCAM_API LONG LUCAM_EXPORT LucamNumCameras(void); -LUCAM_API LONG LUCAM_EXPORT LucamEnumCameras(LUCAM_VERSION *pVersionsArray, ULONG arrayCount); - -LUCAM_API HANDLE LUCAM_EXPORT LucamCameraOpen(ULONG index); -LUCAM_API BOOL LUCAM_EXPORT LucamCameraClose(HANDLE hCamera); -LUCAM_API BOOL LUCAM_EXPORT LucamCameraReset(HANDLE hCamera); - -LUCAM_API BOOL LUCAM_EXPORT LucamQueryVersion(HANDLE hCamera, LUCAM_VERSION *pVersion); -LUCAM_API BOOL LUCAM_EXPORT LucamQueryExternInterface(HANDLE hCamera, ULONG *pExternInterface); -LUCAM_API BOOL LUCAM_EXPORT LucamGetCameraId(HANDLE hCamera, ULONG *pId); - -LUCAM_API BOOL LUCAM_EXPORT LucamGetProperty(HANDLE hCamera, ULONG property, FLOAT *pValue, LONG *pFlags); -LUCAM_API BOOL LUCAM_EXPORT LucamSetProperty(HANDLE hCamera, ULONG property, FLOAT value, LONG flags); -LUCAM_API BOOL LUCAM_EXPORT LucamPropertyRange(HANDLE hCamera, ULONG property, FLOAT *pMin, FLOAT *pMax, FLOAT *pDefault, LONG *pFlags); - -LUCAM_API BOOL LUCAM_EXPORT LucamDisplayPropertyPage(HANDLE hCamera, HWND parentWnd); -LUCAM_API BOOL LUCAM_EXPORT LucamDisplayVideoFormatPage(HANDLE hCamera, HWND parentWnd); - -LUCAM_API BOOL LUCAM_EXPORT LucamQueryDisplayFrameRate(HANDLE hCamera, FLOAT *pValue); - -LUCAM_API BOOL LUCAM_EXPORT LucamCreateDisplayWindow(HANDLE hCamera, LPCTSTR lpTitle = NULL, DWORD dwStyle = WS_OVERLAPPED|WS_MINIMIZEBOX|WS_CAPTION|WS_SYSMENU|WS_VISIBLE, int x = 0, int y = 0, int width = 0, int height = 0, HWND parent = NULL, HMENU childId = NULL); -LUCAM_API BOOL LUCAM_EXPORT LucamDestroyDisplayWindow(HANDLE hCamera); -LUCAM_API BOOL LUCAM_EXPORT LucamAdjustDisplayWindow(HANDLE hCamera, LPCTSTR lpTitle = NULL, int x = 0, int y = 0, int width = 0, int height = 0); - -LUCAM_API BOOL LUCAM_EXPORT LucamReadRegister(HANDLE hCamera, LONG address, LONG numReg, LONG *pValue); -LUCAM_API BOOL LUCAM_EXPORT LucamWriteRegister(HANDLE hCamera, LONG address, LONG numReg, LONG *pValue); - -LUCAM_API BOOL LUCAM_EXPORT LucamSetFormat(HANDLE hCamera, LUCAM_FRAME_FORMAT *pFormat, FLOAT frameRate); -LUCAM_API BOOL LUCAM_EXPORT LucamGetFormat(HANDLE hCamera, LUCAM_FRAME_FORMAT *pFormat, FLOAT *pFrameRate); - -LUCAM_API ULONG LUCAM_EXPORT LucamEnumAvailableFrameRates(HANDLE hCamera, ULONG entryCount, FLOAT *pAvailableFrameRates); - -LUCAM_API BOOL LUCAM_EXPORT LucamStreamVideoControl (HANDLE hCamera, ULONG controlType, HWND hWnd); -LUCAM_API BOOL LUCAM_EXPORT LucamStreamVideoControlAVI (HANDLE hCamera, ULONG controlType, LPCWSTR pFileName, HWND hWnd); - -LUCAM_API BOOL LUCAM_EXPORT LucamTakeVideo(HANDLE hCamera, LONG numFrames, BYTE *pData); -LUCAM_API BOOL LUCAM_EXPORT LucamTakeVideoEx(HANDLE hCamera, BYTE *pData, ULONG *pLength, ULONG timeout); -LUCAM_API BOOL LUCAM_EXPORT LucamCancelTakeVideo(HANDLE hCamera); - -LUCAM_API BOOL LUCAM_EXPORT LucamTakeSnapshot(HANDLE hCamera, LUCAM_SNAPSHOT *pSettings, BYTE *pData); - -LUCAM_API LUCAM_DEPRECATED BOOL LUCAM_EXPORT LucamSaveImage(ULONG width, ULONG height, ULONG pixelFormat, BYTE *pData, const CHAR *pFilename); -LUCAM_API BOOL LUCAM_EXPORT LucamSaveImageEx(HANDLE hCamera, ULONG width, ULONG height, ULONG pixelFormat, BYTE *pData, const CHAR *pFilename); -LUCAM_API LUCAM_DEPRECATED BOOL LUCAM_EXPORT LucamSaveImageW(ULONG width, ULONG height, ULONG pixelFormat, BYTE *pData, const WCHAR *pFilename); -LUCAM_API BOOL LUCAM_EXPORT LucamSaveImageWEx(HANDLE hCamera, ULONG width, ULONG height, ULONG userPixelFormat, BYTE *pData, const WCHAR *pWFilename); - -LUCAM_API LONG LUCAM_EXPORT LucamAddStreamingCallback(HANDLE hCamera, VOID (__stdcall *VideoFilter)(VOID *pContext, BYTE *pData, ULONG dataLength), VOID *pCBContext); -LUCAM_API BOOL LUCAM_EXPORT LucamRemoveStreamingCallback(HANDLE hCamera, LONG callbackId); - -LUCAM_API LONG LUCAM_EXPORT LucamAddRgbPreviewCallback(HANDLE hCamera, VOID (__stdcall *RgbVideoFilter)(VOID *pContext, BYTE *pData, ULONG dataLength, ULONG unused), VOID *pContext, ULONG rgbPixelFormat); -LUCAM_API BOOL LUCAM_EXPORT LucamRemoveRgbPreviewCallback(HANDLE hCamera, LONG callbackId); -LUCAM_API BOOL LUCAM_EXPORT LucamQueryRgbPreviewPixelFormat(HANDLE hCamera, ULONG *pRgbPixelFormat); - -LUCAM_API LONG LUCAM_EXPORT LucamAddSnapshotCallback(HANDLE hCamera, VOID (__stdcall *SnapshotCallback)(VOID *pContext, BYTE *pData, ULONG dataLength), VOID *pCBContext); -LUCAM_API BOOL LUCAM_EXPORT LucamRemoveSnapshotCallback(HANDLE hCamera, LONG callbackId); - -LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToRgb24(HANDLE hCamera, BYTE *pDest, BYTE *pSrc, ULONG width, ULONG height, ULONG pixelFormat, LUCAM_CONVERSION *pParams); -LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToRgb32(HANDLE hCamera, BYTE *pDest, BYTE *pSrc, ULONG width, ULONG height, ULONG pixelFormat, LUCAM_CONVERSION *pParams); -LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToRgb48(HANDLE hCamera, USHORT *pDest, USHORT *pSrc, ULONG width, ULONG height, ULONG userPixelFormat, LUCAM_CONVERSION *pParams); -LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToGreyscale8(HANDLE hCamera, BYTE *pDest, BYTE *pSrc, ULONG width, ULONG height, ULONG userPixelFormat, LUCAM_CONVERSION *pParams); -LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToGreyscale16(HANDLE hCamera, USHORT *pDest, USHORT *pSrc, ULONG width, ULONG height, ULONG userPixelFormat, LUCAM_CONVERSION *pParams); -LUCAM_API VOID LUCAM_EXPORT LucamConvertBmp24ToRgb24(UCHAR *pFrame, ULONG width, ULONG height); - -//This function is used for converting a raw AVI to a standard AVI -LUCAM_API BOOL LUCAM_EXPORT LucamConvertRawAVIToStdVideo(HANDLE hCamera, const WCHAR *pOutputFileName, const WCHAR *pInputFileName, ULONG outputType); - -//The 3 next functions are used for previewing raw AVI files -LUCAM_API HANDLE LUCAM_EXPORT LucamPreviewAVIOpen(const WCHAR *pFileName); -LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVIClose(HANDLE hAVI); -LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVIControl(HANDLE hAVI, ULONG previewControlType, HWND previewWindow); -LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVIGetDuration(HANDLE hAVI, LONGLONG *pDurationMinutes, LONGLONG *pDurationSeconds, LONGLONG *pDurationMilliseconds, LONGLONG *pDurationMicroSeconds); -LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVIGetFrameCount(HANDLE hAVI, LONGLONG *pFrameCount); -LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVIGetFrameRate(HANDLE hAVI, FLOAT *pFrameRate); -LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVIGetPositionTime(HANDLE hAVI, LONGLONG *pPositionMinutes, LONGLONG *pPositionSeconds, LONGLONG *pPositionMilliSeconds, LONGLONG *pPositionMicroSeconds); -LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVIGetPositionFrame(HANDLE hAVI, LONGLONG *pPositionCurrentFrame); -LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVISetPositionTime(HANDLE hAVI, LONGLONG pPositionMinutes, LONGLONG pPositionSeconds, LONGLONG pPositionMilliSeconds, LONGLONG pPositionMicroSeconds); -LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVISetPositionFrame(HANDLE hAVI, LONGLONG pPositionFrame); -LUCAM_API BOOL LUCAM_EXPORT LucamPreviewAVIGetFormat(HANDLE hAVI, LONG *width, LONG *height, LONG *fileType, LONG *bitDepth); - - -LUCAM_API BOOL LUCAM_EXPORT LucamSetupCustomMatrix(HANDLE hCamera, FLOAT *pMatrix); -LUCAM_API BOOL LUCAM_EXPORT LucamGetCurrentMatrix(HANDLE hCamera, FLOAT *pMatrix); - -LUCAM_API BOOL LUCAM_EXPORT LucamEnableFastFrames(HANDLE hCamera, LUCAM_SNAPSHOT *pSettings); -LUCAM_API BOOL LUCAM_EXPORT LucamTakeFastFrame(HANDLE hCamera, BYTE *pData); -LUCAM_API BOOL LUCAM_EXPORT LucamForceTakeFastFrame(HANDLE hCamera, BYTE *pData); -LUCAM_API BOOL LUCAM_EXPORT LucamTakeFastFrameNoTrigger(HANDLE hCamera, BYTE *pData); -LUCAM_API BOOL LUCAM_EXPORT LucamDisableFastFrames(HANDLE hCamera); -LUCAM_API BOOL LUCAM_EXPORT LucamSetTriggerMode(HANDLE hCamera, BOOL useHwTrigger); -LUCAM_API BOOL LUCAM_EXPORT LucamTriggerFastFrame(HANDLE hCamera); -LUCAM_API BOOL LUCAM_EXPORT LucamCancelTakeFastFrame(HANDLE hCamera); - -LUCAM_API HANDLE LUCAM_EXPORT LucamEnableSynchronousSnapshots(ULONG numberOfCameras, HANDLE *phCameras, LUCAM_SNAPSHOT **ppSettings); -LUCAM_API BOOL LUCAM_EXPORT LucamTakeSynchronousSnapshots(HANDLE syncSnapsHandle, BYTE **ppBuffers); -LUCAM_API BOOL LUCAM_EXPORT LucamDisableSynchronousSnapshots(HANDLE syncSnapsHandle); - -LUCAM_API BOOL LUCAM_EXPORT LucamGpioRead(HANDLE hCamera, BYTE *pGpoValues, BYTE *pGpiValues); -LUCAM_API BOOL LUCAM_EXPORT LucamGpioWrite(HANDLE hCamera, BYTE gpoValues); -LUCAM_API BOOL LUCAM_EXPORT LucamGpoSelect(HANDLE hCamera, BYTE gpoEnable); // Selects between GPO output or alternate function -LUCAM_API BOOL LUCAM_EXPORT LucamGpioConfigure(HANDLE hCamera, BYTE enableOutput); // Enables output drive on a pin. - -LUCAM_API BOOL LUCAM_EXPORT LucamOneShotAutoExposure(HANDLE hCamera, UCHAR target, ULONG startX, ULONG startY, ULONG width, ULONG height); -LUCAM_API BOOL LUCAM_EXPORT LucamOneShotAutoWhiteBalance(HANDLE hCamera, ULONG startX, ULONG startY, ULONG width, ULONG height); -LUCAM_API BOOL LUCAM_EXPORT LucamOneShotAutoWhiteBalanceEx(HANDLE hCamera, float redOverGreen, float blueOverGreen, ULONG startX, ULONG startY, ULONG width, ULONG height); -LUCAM_API BOOL LUCAM_EXPORT LucamDigitalWhiteBalance(HANDLE hCamera, ULONG startX, ULONG startY, ULONG width, ULONG height); -LUCAM_API BOOL LUCAM_EXPORT LucamDigitalWhiteBalanceEx(HANDLE hCamera, float redOverGreen, float blueOverGreen, ULONG startX, ULONG startY, ULONG width, ULONG height); -LUCAM_API BOOL LUCAM_EXPORT LucamAdjustWhiteBalanceFromSnapshot(HANDLE hCamera, LUCAM_SNAPSHOT *pSettings, BYTE *pData, float redOverGreen, float blueOverGreen, ULONG startX, ULONG startY, ULONG width, ULONG height); -LUCAM_API BOOL LUCAM_EXPORT LucamOneShotAutoIris(HANDLE hCamera, UCHAR target, ULONG startX, ULONG startY, ULONG width, ULONG height); -LUCAM_API BOOL LUCAM_EXPORT LucamContinuousAutoExposureEnable(HANDLE hCamera, UCHAR target, ULONG startX, ULONG startY, ULONG width, ULONG height, FLOAT lightingPeriod); -LUCAM_API BOOL LUCAM_EXPORT LucamContinuousAutoExposureDisable(HANDLE hCamera); - -LUCAM_API BOOL LUCAM_EXPORT LucamAutoFocusStart(HANDLE hCamera, ULONG startX, ULONG startY, ULONG width, ULONG height, FLOAT putZeroThere1, FLOAT putZeroThere2, FLOAT putZeroThere3, BOOL (__stdcall * ProgressCallback)(void *context, FLOAT percentageCompleted), void *contextForCallback); -LUCAM_API BOOL LUCAM_EXPORT LucamAutoFocusWait(HANDLE hCamera, DWORD timeout); -LUCAM_API BOOL LUCAM_EXPORT LucamAutoFocusStop(HANDLE hCamera); -LUCAM_API BOOL LUCAM_EXPORT LucamAutoFocusQueryProgress(HANDLE hCamera, FLOAT *pPercentageCompleted); -LUCAM_API BOOL LUCAM_EXPORT LucamInitAutoLens(HANDLE hCamera, BOOL force); - -LUCAM_API BOOL LUCAM_EXPORT LucamSetup8bitsLUT(HANDLE hCamera, UCHAR *pLut, ULONG length); // length must be 0 or 256 -LUCAM_API BOOL LUCAM_EXPORT LucamSetup8bitsColorLUT(HANDLE hCamera, UCHAR *pLut, ULONG length, BOOL applyOnRed, BOOL applyOnGreen1, BOOL applyOnGreen2 , BOOL applyOnBlue); // length must be 0 or 256 - -LUCAM_API int LUCAM_EXPORT LucamRs232Transmit(HANDLE hCamera, char *pData, int length); -LUCAM_API int LUCAM_EXPORT LucamRs232Receive(HANDLE hCamera, char *pData, int maxLength); -LUCAM_API BOOL LUCAM_EXPORT LucamAddRs232Callback(HANDLE hCamera, void (__stdcall * callback)(void *), void *context); -LUCAM_API VOID LUCAM_EXPORT LucamRemoveRs232Callback(HANDLE hCamera); - -LUCAM_API BOOL LUCAM_EXPORT LucamPermanentBufferRead(HANDLE hCamera, UCHAR *pBuf, ULONG offset, ULONG length); -LUCAM_API BOOL LUCAM_EXPORT LucamPermanentBufferWrite(HANDLE hCamera, UCHAR *pBuf, ULONG offset, ULONG length); - -LUCAM_API BOOL LUCAM_EXPORT LucamGetTruePixelDepth(HANDLE hCamera, ULONG *pCount); - -LUCAM_API BOOL LUCAM_EXPORT LucamSetTimeout(HANDLE hCamera, BOOL still, FLOAT timeout); - -LUCAM_API ULONG LUCAM_EXPORT LucamGetLastError(void); -LUCAM_API ULONG LUCAM_EXPORT LucamGetLastErrorForCamera(HANDLE hCamera); - -// New Structure used for the new conversion functions - -typedef struct _LUCAM_CONVERSION_PARAMS -{ - ULONG Size; // of this structure - ULONG DemosaicMethod; - ULONG CorrectionMatrix; - BOOL FlipX; - BOOL FlipY; - FLOAT Hue; - FLOAT Saturation; - BOOL UseColorGainsOverWb; - union - { - struct - { - FLOAT DigitalGain; - FLOAT DigitalWhiteBalanceU; - FLOAT DigitalWhiteBalanceV; - }; - struct - { - FLOAT DigitalGainRed; - FLOAT DigitalGainGreen; - FLOAT DigitalGainBlue; - }; - }; -}LUCAM_CONVERSION_PARAMS, *PLUCAM_CONVERSION_PARAMS; - - -typedef struct _LUCAM_IMAGE_FORMAT -{ - ULONG Size; // of this structure - ULONG Width; - ULONG Height; - ULONG PixelFormat; - ULONG ImageSize; - - ULONG LucamReserved[8]; - -}LUCAM_IMAGE_FORMAT, *PLUCAM_IMAGE_FORMAT; - -LUCAM_API BOOL LUCAM_EXPORT LucamGetVideoImageFormat(HANDLE hCamera, LUCAM_IMAGE_FORMAT *pImageFormat); -LUCAM_API BOOL LUCAM_EXPORT LucamGetStillImageFormat(HANDLE hCamera, LUCAM_IMAGE_FORMAT *pImageFormat); - -LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToRgb24Ex(HANDLE hCamera, BYTE *pDest, const BYTE *pSrc, const LUCAM_IMAGE_FORMAT *pImageFormat, const LUCAM_CONVERSION_PARAMS *pParams); -LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToRgb32Ex(HANDLE hCamera, BYTE *pDest, const BYTE *pSrc, const LUCAM_IMAGE_FORMAT *pImageFormat, const LUCAM_CONVERSION_PARAMS *pParams); -LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToRgb48Ex(HANDLE hCamera, USHORT *pDest, const USHORT *pSrc, const LUCAM_IMAGE_FORMAT *pImageFormat, const LUCAM_CONVERSION_PARAMS *pParams); -LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToGreyscale8Ex(HANDLE hCamera, BYTE *pDest, const BYTE *pSrc, LUCAM_IMAGE_FORMAT *pImageFormat, LUCAM_CONVERSION_PARAMS *pParams); -LUCAM_API BOOL LUCAM_EXPORT LucamConvertFrameToGreyscale16Ex(HANDLE hCamera, USHORT *pDest, const USHORT *pSrc, LUCAM_IMAGE_FORMAT *pImageFormat, LUCAM_CONVERSION_PARAMS *pParams); - - -LUCAM_API PVOID LUCAM_EXPORT LucamRegisterEventNotification(HANDLE hCamera, DWORD eventId, HANDLE hEvent); -LUCAM_API BOOL LUCAM_EXPORT LucamUnregisterEventNotification(HANDLE hCamera, PVOID pEventInformation); - -// For use with LucamRegisterEventNotification -#define LUCAM_EVENT_START_OF_READOUT 2 -#define LUCAM_EVENT_GPI1_CHANGED 4 -#define LUCAM_EVENT_GPI2_CHANGED 5 -#define LUCAM_EVENT_GPI3_CHANGED 6 -#define LUCAM_EVENT_GPI4_CHANGED 7 -#define LUCAM_EVENT_DEVICE_SURPRISE_REMOVAL 32 - - -LUCAM_API BOOL LUCAM_EXPORT LucamPerformDualTapCorrection(HANDLE hCamera, BYTE *pFrame, const LUCAM_IMAGE_FORMAT *pImageFormat); -LUCAM_API BOOL LUCAM_EXPORT LucamPerformMonoGridCorrection(HANDLE hCamera, BYTE *pFrame, const LUCAM_IMAGE_FORMAT *pImageFormat); - -LUCAM_API BOOL LUCAM_EXPORT LucamGetImageIntensity(HANDLE hCamera, BYTE *pFrame, LUCAM_IMAGE_FORMAT *pImageFormat , ULONG startX, ULONG startY, ULONG width, ULONG height, FLOAT *pIntensity, FLOAT *pRedIntensity, FLOAT *pGreen1Intensity, FLOAT *pGreen2Intensity, FLOAT *pBlueIntensity); - -LUCAM_API BOOL LUCAM_EXPORT LucamAutoRoiGet(HANDLE hCamera, LONG *pStartX, LONG *pStartY, LONG *pWidth, LONG *pHeight); -LUCAM_API BOOL LUCAM_EXPORT LucamAutoRoiSet(HANDLE hCamera, LONG startX, LONG startY, LONG width, LONG height); - - -#endif // __LUCAMAPI_H - diff --git a/TIAS_Imager2/lucamapi.lib b/TIAS_Imager2/lucamapi.lib new file mode 100644 index 0000000..8d4e18b --- /dev/null +++ b/TIAS_Imager2/lucamapi.lib Binary files differ diff --git a/TIAS_Imager2/lucamapi32.lib b/TIAS_Imager2/lucamapi32.lib deleted file mode 100644 index 85c8538..0000000 --- a/TIAS_Imager2/lucamapi32.lib +++ /dev/null Binary files differ diff --git a/TIAS_Imager2/lucamapi64.lib b/TIAS_Imager2/lucamapi64.lib deleted file mode 100644 index 113cffe..0000000 --- a/TIAS_Imager2/lucamapi64.lib +++ /dev/null Binary files differ diff --git a/TIAS_Imager2/lucamerr.h b/TIAS_Imager2/lucamerr.h index 668424b..9313ee9 100644 --- a/TIAS_Imager2/lucamerr.h +++ b/TIAS_Imager2/lucamerr.h @@ -1,8 +1,3 @@ -/***************************************************************************** -* -* Copyright (c) Lumenera Corporation 2002-2008. All rights reserved. -* -*****************************************************************************/ #ifndef __LUCAMERR_H #define __LUCAMERR_H @@ -98,7 +93,7 @@ // // Meaning: // The API failed to prepare the camera for streaming or snapshot. This can -// due to the camera being disconnected. If START_STREAMING succeeds and +// due to the camera being disconnected. If START_STREAMING succeeds and // START_DISPLAY fails with this error, this can be due to a filter not // being there or registered. // @@ -133,7 +128,7 @@ // Id: LucamNotRunning // // Meaning: -// The function failed because it requires the camera to be running, and it +// The function failed because it requires the camera to be running, and it // is not. // #define LucamNotRunning 14 @@ -187,7 +182,7 @@ // Id: LucamPropertyUnknown // // Meaning: -// The API does not know the property passed to LucamGetProperty, +// The API does not know the property passed to LucamGetProperty, // LucamSetProperty or LucamGetPropertyRange. You may be using an old dll. // #define LucamPropertyUnknown 20 @@ -196,7 +191,7 @@ // Id: LucamPropertyUnsupported // // Meaning: -// The camera does not support that property. +// The camera does not support that property. // #define LucamPropertyUnsupported 21 @@ -245,7 +240,7 @@ // Id: LucamNoMoreCallbacks // // Meaning: -// The function LucamAddStreamingCallback failed because the API cannot +// The function LucamAddStreamingCallback failed because the API cannot // support any more callbacks // #define LucamNoMoreCallbacks 27 @@ -514,7 +509,7 @@ #define LucamNotFound 59 //---------------------------------------------------------------------------- -// Id: LucamEepromTooSmall +// Id: LucamPermanentBufferNotSupported // // Meaning: // The onboard EEPROM is too small. @@ -533,7 +528,7 @@ // Id: LucamUnknownFileType // // Meaning: -// The API failed because it failed to recognize the file type of a +// The API failed because it failed to recognize the file type of a // file name passed to it.. // #define LucamUnknownFileType 62 @@ -574,7 +569,7 @@ // Id: LucamNoCorrectionMatrix // // Meaning: -// The camera is configured to have no correction matrix (LUCAM_PROP_CORRECTION_MATRIX +// The camera is configured to have no correction matrix (LUCAM_PROP_CORRECTION_MATRIX // is LUCAM_CM_NONE). // #define LucamNoCorrectionMatrix 67 @@ -583,7 +578,7 @@ // Id: LucamUnknownCameraModel // // Meaning: -// The API failed because it needs to know the camera model and it is not available. +// The API failed because it needs to know the camera model and it is not available. // #define LucamUnknownCameraModel 68 @@ -723,7 +718,7 @@ // Id: LucamUnknownError // // Meaning: -// The function failed because of an unknoen error. Contact Lumenera. +// The function failed because of an unknown error. Contact Lumenera. // #define LucamUnknownError 85 @@ -787,7 +782,7 @@ // Id: LucamCameraAlreadyOpened // // Meaning: -// An attempt was made to open a camera for streaming-related reasons while +// An attempt was made to open a camera for streaming-related reasons while // it is already opened for such. // #define LucamCameraAlreadyOpened 93 @@ -840,6 +835,330 @@ // #define LucamRetryLimitReached 99 +//----------------------------------------------------------------------------- +// Id: LucamLgDeviceError +// +// Meaning: +// An IO operation to the camera failed. +// +#define LucamLgDeviceError 100 + +//----------------------------------------------------------------------------- +// Id: LucamInvalidIpConfiguration +// +// Meaning: +// The Lg camera has an invalid IP configuration. +#define LucamInvalidIpConfiguration 101 + +//----------------------------------------------------------------------------- +// Id: LucamInvalidLicense +// +// Meaning: +// The license to operate the camera is invalid +#define LucamInvalidLicense 102 + +//----------------------------------------------------------------------------- +// Id: LucamNoSystemEnumerator +// +// Meaning: +// Camera enumeration is impossible due to a software installation error. +#define LucamNoSystemEnumerator 103 + +//----------------------------------------------------------------------------- +// Id: LucamBusEnumeratorNotInstalled +// +// Meaning: +// Camera enumeration is impossible due to a software installation error. +#define LucamBusEnumeratorNotInstalled 104 + +//----------------------------------------------------------------------------- +// Id: LucamUnknownExternInterface +// +// Meaning: +// Unknown external interface. +#define LucamUnknownExternInterface 105 + +//----------------------------------------------------------------------------- +// Id: LucamInterfaceDriverNotInstalled +// +// Meaning: +// Incomplete or incorrect software installation prevents streaming from the +// camera. +#define LucamInterfaceDriverNotInstalled 106 + +//----------------------------------------------------------------------------- +// Id: LucamCameraDriverNotInstalled +// +// Meaning: +// Incomplete or incorrect software installation prevents streaming from the +// camera. +// Opening the device manager and updating the drivers on the relevant device +// may fix the issue. +#define LucamCameraDriverNotInstalled 107 + +//----------------------------------------------------------------------------- +// Id: LucamCameraDriverInstallInProgress +// +// Meaning: +// Incomplete or incorrect software installation prevents streaming from the +// camera. +// Opening the device manager and updating the drivers on the relevant device +// may fix the issue. +#define LucamCameraDriverInstallInProgress 108 + +//----------------------------------------------------------------------------- +// Id: LucamLucamapiDotDllNotFound +// +// Meaning: +// Lucamapi.dll is not found. +// +#define LucamLucamapiDotDllNotFound 109 + +//----------------------------------------------------------------------------- +// Id: LucamLucamapiProcedureNotFound +// +// Meaning: +// A procedure in Lucamapi.dll was not found. +// +#define LucamLucamapiProcedureNotFound 110 + +//----------------------------------------------------------------------------- +// Id: LucamPropertyNotEnumeratable +// +// Meaning: +// The property cannot be accessed via LucamEnumProperty. +#define LucamPropertyNotEnumeratable 111 + +//----------------------------------------------------------------------------- +// Id: LucamPropertyNotBufferable +// +// Meaning: +// The property cannot be accessed via LucamPropertyGetBuffer. +#define LucamPropertyNotBufferable 112 + +//----------------------------------------------------------------------------- +// Id: LucamSingleTapImage +// +// Meaning: +// The API cannot perform multi tap correction on a single tap image. +#define LucamSingleTapImage 113 + +//----------------------------------------------------------------------------- +// Id: LucamUnknownTapConfiguration +// +// Meaning: +// The API is too old and does not know the tap configuration of the image.. +#define LucamUnknownTapConfiguration 114 + +//----------------------------------------------------------------------------- +// Id: LucamBufferTooSmall +// +// Meaning: +// A buffer supplied to the API is too small. +#define LucamBufferTooSmall 115 + +//----------------------------------------------------------------------------- +// Id: LucamInCallbackOnly +// +// Meaning: +// A function that can only be called within a callback was called elsewhere. +#define LucamInCallbackOnly 116 + +//----------------------------------------------------------------------------- +// Id: LucamPropertyUnavailable +// +// Meaning: +// The property is not available at this moment. +// +#define LucamPropertyUnavailable 117 + +//----------------------------------------------------------------------------- +// Id: LucamTimestampNotEnabled +// +// Meaning: +// The API cannot extract timestamp from the image buffer because feature +// was not enabled. +// +#define LucamTimestampNotEnabled 118 + +//----------------------------------------------------------------------------- +// Id: LucamFramecounterNotEnabled +// +// Meaning: +// The API cannot extract frame counter from the image buffer because feature +// was not enabled. +// +#define LucamFramecounterNotEnabled 119 + +//----------------------------------------------------------------------------- +// Id: LucamNoStatsWhenNotStreaming +// +// Meaning: +// LucamQueryStats was called but the camera is not streaming. +#define LucamNoStatsWhenNotStreaming 120 + +//----------------------------------------------------------------------------- +// Id: LucamFrameCapturePending +// +// Meaning: +// LucamTakeVideo or LucamTakeFastFrame or one of its variant was called from +// multiple threads. This is bad practice. +#define LucamFrameCapturePending 121 + +//----------------------------------------------------------------------------- +// Id: LucamSequencingNotEnabled +// +// Meaning: +// An API failed because sequencing was not enabled. +// +#define LucamSequencingNotEnabled 122 + +//----------------------------------------------------------------------------- +// Id: LucamFeatureNotSequencable +// +// Meaning: +// Sequencing was attempted on a non-sequencable feature/property. +// +#define LucamFeatureNotSequencable 123 + +//----------------------------------------------------------------------------- +// Id: LucamSequencingUnknownFeatureType +// +// Meaning: +// Only the property feature type is supported for sequencing. +// +#define LucamSequencingUnknownFeatureType 124 + +//----------------------------------------------------------------------------- +// Id: LucamSequencingIndexOutOfSequence +// +// Meaning: +// Sequence capture failed because a received frame is out of sequence +// +#define LucamSequencingIndexOutOfSequence 125 + +//----------------------------------------------------------------------------- +// Id: LucamSequencingBadFrameNumber +// +// Meaning: +// Sequence setup failed because a setting's frame number was invalid. +// +#define LucamSequencingBadFrameNumber 126 + +//----------------------------------------------------------------------------- +// Id: LucamInformationNotAvailable +// +// Meaning: +// Supported binning and subsampling information is not available. +// +#define LucamInformationNotAvailable 127 + +//----------------------------------------------------------------------------- +// Id: LucamSequencingBadSetting +// +// Meaning: +// Sequence setup failed because a setting's size is invalid. +// +#define LucamSequencingBadSetting 128 + +//----------------------------------------------------------------------------- +// Id: LucamAutoFocusNeverStarted +// +// Meaning: +// LucamAutoFocusWait was called but auto focus was never started. +// +#define LucamAutoFocusNeverStarted 129 + +//----------------------------------------------------------------------------- +// Id: LucamAutoFocusNotRunning +// +// Meaning: +// LucamAutoFocusStop was called but auto focus is not running. +// +#define LucamAutoFocusNotRunning 130 + +/*********************************************************************************** +* Codes 1121 - 1131 are linux specific and are returned only by Lucam API for Linux * +************************************************************************************/ + +//----------------------------------------------------------------------------- +// Id: LucamCameraNotOpenable +// +// Meaning: +// The camera cannot be opened. +#define LucamCameraNotOpenable 1121 +//----------------------------------------------------------------------------- +// Id: LucamCameraNotSupported +// +// Meaning: +// The camera is not supported by the lucamapi. +#define LucamCameraNotSupported 1122 + +//----------------------------------------------------------------------------- +// Id: LucamMmapFailed +// +// Meaning: +// An internal operation failed. +#define LucamMmapFailed 1123 + +//----------------------------------------------------------------------------- +// Id: LucamNotWhileStreaming +// +// Meaning: +// The API cannot work while streaming is enabled. +#define LucamNotWhileStreaming 1124 + +//----------------------------------------------------------------------------- +// Id: LucamNoStreamingRights +// +// Meaning: +// The camera was opened without streaming rights enabled. +#define LucamNoStreamingRights 1125 + +//----------------------------------------------------------------------------- +// Id: LucamCameraInitializationError +// +// Meaning: +// Unspecified camera initialization error. +#define LucamCameraInitializationError 1126 + +//----------------------------------------------------------------------------- +// Id: LucamCannotVerifyPixelFormat +// +// Meaning: +// The API cannot verify the pixel format with the camera. +#define LucamCannotVerifyPixelFormat 1127 + +//----------------------------------------------------------------------------- +// Id: LucamCannotVerifyStartPosition +// +// Meaning: +// The API cannot verify the start position with the camera. +#define LucamCannotVerifyStartPosition 1128 + +//----------------------------------------------------------------------------- +// Id: LucamOsError +// +// Meaning: +// An OS service failed, possibly due to an application kill. +#define LucamOsError 1129 + +//----------------------------------------------------------------------------- +// Id: LucamBufferNotAvailable +// +// Meaning: +// The frame buffer is not available for capturing a frame. +#define LucamBufferNotAvailable 1130 + +//----------------------------------------------------------------------------- +// Id: LucamQueuingFailed +// +// Meaning: +// Cannot queue buffer for capturing a frame. +#define LucamQueuingFailed 1131 + + + #endif // __LUCAMERR_H diff --git a/TIAS_Imager2/lucommon.h b/TIAS_Imager2/lucommon.h new file mode 100644 index 0000000..215c590 --- /dev/null +++ b/TIAS_Imager2/lucommon.h @@ -0,0 +1,161 @@ +#pragma once + +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +// COMMON SECTION +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +#ifdef _MSC_VER + #if (_MSC_VER >= 1300) + #define LUCAM_DEPRECATED __declspec(deprecated) + #endif +#else + #define LUCAM_DEPRECATED +#endif + + +#if defined (LUMENERA_MAC_API) || defined (LUMENERA_LINUX_API) +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +// APPLICABLE TO MAC and LINUX +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** + +//**************************************************************************************************************** +// Compilation Configuration Definitions +//**************************************************************************************************************** +#ifndef LUCAM_EXPORT + #define LUCAM_EXPORT +#endif + +#ifdef __cplusplus + #define LUCAM_API extern "C" LUCAM_EXPORT +#else + #define LUCAM_API LUCAM_EXPORT +#endif + + +//**************************************************************************************************************** + +//**************************************************************************************************************** +// System Compatibility Definitions +//**************************************************************************************************************** +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef FALSE +#define FALSE 0 +#endif +//**************************************************************************************************************** + +//**************************************************************************************************************** +// Type Definitions +//**************************************************************************************************************** +#include +#ifdef __cplusplus + #include +#else + #include +#endif // __cplusplus + +typedef uint8_t BYTE; +typedef char CHAR; +typedef unsigned char UCHAR; +typedef wchar_t WCHAR; +typedef int16_t SHORT; +typedef uint16_t USHORT; +typedef uint16_t WORD; +typedef uint32_t DWORD; +typedef int32_t INT; +#ifdef LUMENERA_MAC_API + #if __LP64__ + typedef unsigned int ULONG; + typedef signed int LONG; + typedef signed char BOOL; + #else + #include + typedef unsigned long ULONG; + typedef signed long LONG; + typedef bool BOOL; + #endif // __LP64__ +#else // i.e. LUMENERA_LINUX_API + typedef int BOOL; + typedef uint32_t ULONG; + typedef int32_t LONG; +#endif // ifdef LUMENERA_MAC_API +typedef BOOL BOOLEAN; +typedef int64_t LONGLONG; +typedef uint64_t ULONGLONG; + +typedef float FLOAT; +typedef void VOID, *PVOID; +typedef void* HANDLE; +typedef void* HWND; +typedef void* HMENU; +typedef const char* LPCSTR; +typedef const wchar_t* LPCWSTR; +//**************************************************************************************************************** + +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** + + +#else +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +// WINDOWS SECTION +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** + +// This definition is required for existing applications/api wrappers which will expect the Windows api to be available by default. +#ifndef LUMENERA_WINDOWS_API +#define LUMENERA_WINDOWS_API +#endif + +#include + +#ifdef LUCAMAPI_EXPORTS // Only to be defined by Lumenera + #ifdef _WIN64 + #ifdef __cplusplus + #define LUCAM_API extern "C" __declspec(dllexport) + #else + #define LUCAM_API __declspec(dllexport) + #endif + #else + #ifdef __cplusplus + #define LUCAM_API extern "C" /*__declspec(dllexport)*/ + #else + #define LUCAM_API /*__declspec(dllexport)*/ + #endif + #endif +#else + #ifdef __cplusplus + #define LUCAM_API extern "C" __declspec(dllimport) + #else + #define LUCAM_API __declspec(dllimport) + #endif +#endif + +#define LUCAM_EXPORT __stdcall + +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** + +#endif diff --git a/TIAS_Imager2/ludefines.h b/TIAS_Imager2/ludefines.h new file mode 100644 index 0000000..9f2b528 --- /dev/null +++ b/TIAS_Imager2/ludefines.h @@ -0,0 +1,558 @@ +#pragma once + +#if !defined(LUMENERA_MAC_API) && !defined(LUMENERA_LINUX_API) + #ifndef LUMENERA_WINDOWS_API + #define LUMENERA_WINDOWS_API + #endif +#endif + +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +// COMMON Section: Begin +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** + +//**************************************************************************************************************** +// Properties +//**************************************************************************************************************** +#define LUCAM_PROP_BRIGHTNESS 0 +#define LUCAM_PROP_CONTRAST 1 +#define LUCAM_PROP_HUE 2 +#define LUCAM_PROP_SATURATION 3 +#define LUCAM_PROP_GAMMA 5 +#define LUCAM_PROP_EXPOSURE 20 +#define LUCAM_PROP_IRIS 21 +#define LUCAM_PROP_FOCUS 22 +#define LUCAM_PROP_GAIN 40 +#define LUCAM_PROP_GAIN_RED 41 +#define LUCAM_PROP_GAIN_BLUE 42 +#define LUCAM_PROP_GAIN_GREEN1 43 +#define LUCAM_PROP_GAIN_GREEN2 44 + +// PROP_STILL_* +#define LUCAM_PROP_STILL_EXPOSURE 50 +#define LUCAM_PROP_STILL_GAIN 51 +#define LUCAM_PROP_STILL_GAIN_RED 52 +#define LUCAM_PROP_STILL_GAIN_GREEN1 53 +#define LUCAM_PROP_STILL_GAIN_GREEN2 54 +#define LUCAM_PROP_STILL_GAIN_BLUE 55 +#define LUCAM_PROP_STILL_STROBE_DELAY 56 + +#define LUCAM_PROP_DEMOSAICING_METHOD 64 +#define LUCAM_PROP_CORRECTION_MATRIX 65 +#define LUCAM_PROP_FLIPPING 66 + +// all PROP_DIGITAL_* +#define LUCAM_PROP_DIGITAL_SATURATION 67 // factor of 1.0 +#define LUCAM_PROP_DIGITAL_HUE 68 // from -180 to +180 +#define LUCAM_PROP_DIGITAL_WHITEBALANCE_U 69 // from -100 to 100 +#define LUCAM_PROP_DIGITAL_WHITEBALANCE_V 70 // from -100 to 100 +#define LUCAM_PROP_DIGITAL_GAIN 71 // from 0 to 2, 1 means a gain of 1.0 +#define LUCAM_PROP_DIGITAL_GAIN_RED 72 // from 0 to 2.5, 1 means a gain of 1.0. Relates to GAIN_Y and WHITEBALANCE. SATURATION must not be low. +#define LUCAM_PROP_DIGITAL_GAIN_GREEN 73 // from 0 to 2.5, 1 means a gain of 1.0. Relates to GAIN_Y and WHITEBALANCE. SATURATION must not be low. +#define LUCAM_PROP_DIGITAL_GAIN_BLUE 74 // from 0 to 2.5, 1 means a gain of 1.0. Relates to GAIN_Y and WHITEBALANCE. SATURATION must not be low. +#define LUCAM_PROP_COLOR_FORMAT 80 // Read-only +#define LUCAM_PROP_MAX_WIDTH 81 // Read-only +#define LUCAM_PROP_MAX_HEIGHT 82 // Read-only +#define LUCAM_PROP_UNIT_WIDTH 83 // Read-only +#define LUCAM_PROP_UNIT_HEIGHT 84 // Read-only +#define LUCAM_PROP_ABS_FOCUS 85 // Requires the auto lens to be initialized +#define LUCAM_PROP_BLACK_LEVEL 86 +#define LUCAM_PROP_KNEE1_EXPOSURE 96 +#define LUCAM_PROP_STILL_KNEE1_EXPOSURE LUCAM_PROP_KNEE1_EXPOSURE +#define LUCAM_PROP_KNEE2_EXPOSURE 97 +#define LUCAM_PROP_STILL_KNEE2_EXPOSURE LUCAM_PROP_KNEE2_EXPOSURE +#define LUCAM_PROP_STILL_KNEE3_EXPOSURE 98 +#define LUCAM_PROP_VIDEO_KNEE 99 +#define LUCAM_PROP_KNEE1_LEVEL LUCAM_PROP_VIDEO_KNEE +#define LUCAM_PROP_STILL_EXPOSURE_DELAY 100 +#define LUCAM_PROP_THRESHOLD 101 +#define LUCAM_PROP_AUTO_EXP_TARGET 103 +#define LUCAM_PROP_TIMESTAMPS 105 +#define LUCAM_PROP_SNAPSHOT_CLOCK_SPEED 106 // 0 is the fastest +#define LUCAM_PROP_AUTO_EXP_MAXIMUM 107 +#define LUCAM_PROP_TEMPERATURE 108 +#define LUCAM_PROP_TRIGGER 110 +#define LUCAM_PROP_TRIGGER_PIN LUCAM_PROP_TRIGGER // Alias +#define LUCAM_PROP_EXPOSURE_INTERVAL 113 +#define LUCAM_PROP_STILL_STROBE_DURATION 116 +#define LUCAM_PROP_SNAPSHOT_COUNT 120 +#define LUCAM_PROP_AUTO_IRIS_MAX 123 // N/A for linux +#define LUCAM_PROP_VIDEO_CLOCK_SPEED 126 // 0 is the fastest. Check for read-only flag +#define LUCAM_PROP_KNEE2_LEVEL 163 +#define LUCAM_PROP_STROBE_PIN 172 +#define LUCAM_PROP_TAP_CONFIGURATION 176 +#define LUCAM_PROP_STILL_TAP_CONFIGURATION 177 +#define LUCAM_PROP_JPEG_QUALITY 256 // N/A for linux +//**************************************************************************************************************** + +//**************************************************************************************************************** +// Property Flags +//**************************************************************************************************************** +#define LUCAM_PROP_FLAG_USE 0x80000000 +#define LUCAM_PROP_FLAG_AUTO 0x40000000 +#define LUCAM_PROP_FLAG_STROBE_FROM_START_OF_EXPOSURE 0x20000000 +#define LUCAM_PROP_FLAG_POLARITY 0x10000000 +#define LUCAM_PROP_FLAG_BUSY 0x00100000 +#define LUCAM_PROP_FLAG_ALTERNATE 0x00080000 +#define LUCAM_PROP_FLAG_UNKNOWN_MAXIMUM 0x00020000 +#define LUCAM_PROP_FLAG_UNKNOWN_MINIMUM 0x00010000 +//**************************************************************************************************************** + +//**************************************************************************************************************** +// Property-Specific Flags +//**************************************************************************************************************** +#define LUCAM_PROP_FLAG_LITTLE_ENDIAN 0x80000000 // for LUCAM_PROP_COLOR_FORMAT +#define LUCAM_PROP_FLAG_MASTER 0x40000000 // for LUCAM_PROP_SYNC_MODE +#define LUCAM_PROP_FLAG_BACKLASH_COMPENSATION 0x20000000 // for LUCAM_PROP_IRIS and LUCAM_PROP_FOCUS +#define LUCAM_PROP_FLAG_MEMORY_READBACK 0x08000000 // for LUCAM_PROP_MEMORY +#define LUCAM_PROP_FLAG_USE_FOR_SNAPSHOTS 0x04000000 // for LUCAM_PROP_IRIS +#define LUCAM_PROP_FLAG_READONLY 0x00010000 // for flags param of GetPropertyRange +//**************************************************************************************************************** + +//**************************************************************************************************************** +// Camera-Specific Flags +//**************************************************************************************************************** +// These flags can be used with LUCAM_PROP_GAMMA, LUCAM_PROP_BRIGHTNESS, and LUCAM_PROP_CONTRAST +// They are available on specific cameras only. +#define LUCAM_PROP_FLAG_RED 0x00000001 +#define LUCAM_PROP_FLAG_GREEN1 0x00000002 +#define LUCAM_PROP_FLAG_GREEN2 0x00000004 +#define LUCAM_PROP_FLAG_BLUE 0x00000008 +//**************************************************************************************************************** + +//**************************************************************************************************************** +// Pixel Formats +//**************************************************************************************************************** +#define LUCAM_PF_8 0 +#define LUCAM_PF_16 1 +#define LUCAM_PF_24 2 +#define LUCAM_PF_32 6 +#define LUCAM_PF_48 7 +#define LUCAM_PF_COUNT 4 +#define LUCAM_PF_FILTER 5 +#define LUCAM_PF_12_PACKED 12 +//**************************************************************************************************************** + +//**************************************************************************************************************** +// Color Patterns +//**************************************************************************************************************** +// For the LUCAM_PROP_COLOR_FORMAT property +#define LUCAM_CF_MONO 0 +#define LUCAM_CF_BAYER_RGGB 8 +#define LUCAM_CF_BAYER_GRBG 9 +#define LUCAM_CF_BAYER_GBRG 10 +#define LUCAM_CF_BAYER_BGGR 11 +//**************************************************************************************************************** + +//**************************************************************************************************************** +// Flipping Directions +//**************************************************************************************************************** +// For the LUCAM_PROP_FLIPPING property +#define LUCAM_PROP_FLIPPING_NONE 0 +#define LUCAM_PROP_FLIPPING_X 1 +#define LUCAM_PROP_FLIPPING_Y 2 +#define LUCAM_PROP_FLIPPING_XY 3 +//**************************************************************************************************************** + +//**************************************************************************************************************** +// Tap Configurations +//**************************************************************************************************************** +// For LUCAM_PROP_TAP_CONFIGURATION and LUCAM_PROP_STILL_TAP_CONFIGURATION +#define TAP_CONFIGURATION_1X1 0 +#define TAP_CONFIGURATION_2X1 1 +#define TAP_CONFIGURATION_1X2 2 +#define TAP_CONFIGURATION_2X2 4 +#define TAP_CONFIGURATION_SINGLE TAP_CONFIGURATION_1X1 +#define TAP_CONFIGURATION_DUAL TAP_CONFIGURATION_2X1 +#define TAP_CONFIGURATION_QUAD TAP_CONFIGURATION_2X2 +//**************************************************************************************************************** + +//**************************************************************************************************************** +// Video Streaming Modes +//**************************************************************************************************************** +#define STOP_STREAMING 0 +#define START_STREAMING 1 +#define START_DISPLAY 2 +#define PAUSE_STREAM 3 +#define START_RGBSTREAM 6 +//**************************************************************************************************************** + +//**************************************************************************************************************** +// Demosaicing Methods +//**************************************************************************************************************** +#define LUCAM_DM_NONE 0 +#define LUCAM_DM_FAST 1 +#define LUCAM_DM_HIGH_QUALITY 2 +#define LUCAM_DM_HIGHER_QUALITY 3 +#define LUCAM_DM_SIMPLE 8 +//**************************************************************************************************************** + +//**************************************************************************************************************** +// Color Correction Matrices +//**************************************************************************************************************** +#define LUCAM_CM_NONE 0 +#define LUCAM_CM_FLUORESCENT 1 +#define LUCAM_CM_DAYLIGHT 2 +#define LUCAM_CM_INCANDESCENT 3 +#define LUCAM_CM_XENON_FLASH 4 +#define LUCAM_CM_HALOGEN 5 +#define LUCAM_CM_LED 6 +#define LUCAM_CM_DAYLIGHT_H_AND_E 7 +#define LUCAM_CM_LED_H_AND_E 8 +#define LUCAM_CM_IDENTITY 14 +#define LUCAM_CM_CUSTOM 15 +//**************************************************************************************************************** + +//**************************************************************************************************************** +// Shutter Types +//**************************************************************************************************************** +#define LUCAM_SHUTTER_TYPE_GLOBAL 0 +#define LUCAM_SHUTTER_TYPE_ROLLING 1 +//**************************************************************************************************************** + +//**************************************************************************************************************** +// External Interfaces +//**************************************************************************************************************** +// See QueryExternInterface, and SelectExternInterface +#define LUCAM_EXTERN_INTERFACE_USB1 1 +#define LUCAM_EXTERN_INTERFACE_USB2 2 +#define LUCAM_EXTERN_INTERFACE_USB3 3 +#define LUCAM_EXTERN_INTERFACE_GIGEVISION 4 +//**************************************************************************************************************** + +//**************************************************************************************************************** +// Frame Format Flag(s) +//**************************************************************************************************************** +#define LUCAM_FRAME_FORMAT_FLAGS_BINNING 0x0001 + +//**************************************************************************************************************** +// Device Notifications +//**************************************************************************************************************** +// For use with LucamRegisterEventNotification via callbacks +#define LUCAM_EVENT_START_OF_READOUT 2 +#define LUCAM_EVENT_DEVICE_SURPRISE_REMOVAL 32 +//**************************************************************************************************************** + + +//**************************************************************************************************************** +// Image Formats +//**************************************************************************************************************** +// The RGB format for images produced by functions such as +// AddRgbPreviewCallback and ConvertFrameToRgb24 +#define LUCAM_RGB_FORMAT_RGB 0 // Standard R,G,B +#define LUCAM_RGB_FORMAT_BMP 1 // B,G,R, row-inverted, in the format of a Windows BMP. +//**************************************************************************************************************** + +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +// COMMON Section: End +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** + +#if !defined(LUMENERA_MAC_API) +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +// Applicable to Windows & Linux Only: Begin +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** + + //**************************************************************************************************************** + // Properties + //**************************************************************************************************************** + + #define LUCAM_PROP_LSC_X 121 + #define LUCAM_PROP_LSC_Y 122 + + #define LUCAM_PROP_AUTO_GAIN_MAXIMUM 170 + + #define LUCAM_PROP_TRIGGER_MODE 173 // See TRIGGER_MODE_* below + #define LUCAM_PROP_FOCAL_LENGTH 174 + #define LUCAM_PROP_MAX_FRAME_RATE 184 + #define LUCAM_PROP_AUTO_GAIN_MINIMUM 186 + + #define LUCAM_PROP_IRIS_STEPS_COUNT 188 + #define LUCAM_PROP_GAINHDR 189 + #define LUCAM_PROP_STILL_GAINHDR 190 + //**************************************************************************************************************** + + + //**************************************************************************************************************** + // Property Flags + //**************************************************************************************************************** + #define LUCAM_PROP_FLAG_SEQUENCABLE 0x08000000 + //**************************************************************************************************************** + + + + + + + + //**************************************************************************************************************** + // Trigger Modes + //**************************************************************************************************************** + // For the LUCAM_PROP_TRIGGER_MODE property. + #define TRIGGER_MODE_NORMAL 0 + #define TRIGGER_MODE_BULB 1 + //**************************************************************************************************************** + + + + + //**************************************************************************************************************** + // Metadata Flags + //**************************************************************************************************************** + // For use with LucamGetMetadata + // Metadata that may be embedded within an image. + // Capabilities vary from model to model. + #define LUCAM_METADATA_FRAME_COUNTER 1 + #define LUCAM_METADATA_TIMESTAMP 2 + //**************************************************************************************************************** + + //**************************************************************************************************************** + // HDR Modes + //**************************************************************************************************************** + #define HDR_DISABLED 0 + #define HDR_ENABLED_PRIMARY_IMAGE 1 + #define HDR_ENABLED_SECONDARY_IMAGE 2 + #define HDR_ENABLED_MERGED_IMAGE 3 + #define HDR_ENABLED_AVERAGED_IMAGE 4 // not supported + #define HDR_PIECEWISE_LINEAR_RESPONSE 5 + //**************************************************************************************************************** + +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +// Applicable to Windows & Linux Only: End +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +#endif // !defined(LUMENERA_MAC_API) + + + //**************************************************************************************************************** + // Properties + //**************************************************************************************************************** + #define LUCAM_PROP_SHARPNESS 4 + + #define LUCAM_PROP_PAN 16 + #define LUCAM_PROP_TILT 17 + #define LUCAM_PROP_ROLL 18 + #define LUCAM_PROP_ZOOM 19 + + #define LUCAM_PROP_GAIN_MAGENTA LUCAM_PROP_GAIN_RED + #define LUCAM_PROP_GAIN_CYAN LUCAM_PROP_GAIN_BLUE + #define LUCAM_PROP_GAIN_YELLOW1 LUCAM_PROP_GAIN_GREEN1 + #define LUCAM_PROP_GAIN_YELLOW2 LUCAM_PROP_GAIN_GREEN2 + + #define LUCAM_PROP_STILL_GAIN_MAGENTA LUCAM_PROP_STILL_GAIN_RED + #define LUCAM_PROP_STILL_GAIN_YELLOW1 LUCAM_PROP_STILL_GAIN_GREEN1 + #define LUCAM_PROP_STILL_GAIN_YELLOW2 LUCAM_PROP_STILL_GAIN_GREEN2 + #define LUCAM_PROP_STILL_GAIN_CYAN LUCAM_PROP_STILL_GAIN_BLUE + + + #define LUCAM_PROP_FRAME_GATE 112 + #define LUCAM_PROP_PWM 114 + #define LUCAM_PROP_MEMORY 115 // Read-only. Represents number of frames in memory. + + #define LUCAM_PROP_THRESHOLD 101 + #define LUCAM_PROP_FAN 118 + #define LUCAM_PROP_SYNC_MODE 119 + #define LUCAM_PROP_LENS_STABILIZATION 124 + #define LUCAM_PROP_VIDEO_TRIGGER 125 + + #define LUCAM_PROP_THRESHOLD_LOW 165 + #define LUCAM_PROP_THRESHOLD_HIGH 166 + #define LUCAM_PROP_TEMPERATURE2 167 + #define LUCAM_PROP_LIGHT_FREQUENCY 168 + #define LUCAM_PROP_LUMINANCE 169 + #define LUCAM_PROP_IRIS_LATENCY 175 + + #define LUCAM_PROP_HOST_AUTO_WB_ALGORITHM 258 + #define LUCAM_PROP_HOST_AUTO_EX_ALGORITHM 259 + + //**************************************************************************************************************** + // GigE/GEV Specific Properties + //**************************************************************************************************************** + #define LUCAM_PROP_GEV_IPCONFIG_LLA 512 /* Use LUCAM_PROP_FLAG_USE flag */ + #define LUCAM_PROP_GEV_IPCONFIG_DHCP 513 /* Use LUCAM_PROP_FLAG_USE flag */ + #define LUCAM_PROP_GEV_IPCONFIG_PERSISTENT 514 /* Use LUCAM_PROP_FLAG_USE flag */ + #define LUCAM_PROP_GEV_IPCONFIG_PERSISTENT_IPADDRESS 515 /* Use a non-cast */ + #define LUCAM_PROP_GEV_IPCONFIG_PERSISTENT_SUBNETMASK 516 /* Use a non-cast */ + #define LUCAM_PROP_GEV_IPCONFIG_PERSISTENT_DEFAULTGATEWAY 517 /* Use a non-cast */ + #define LUCAM_PROP_GEV_SCPD 518 + + +#if defined(LUMENERA_WINDOWS_API) +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +// Applicable to Windows Only: Begin +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** + + + #define LUCAM_API_RGB24_FORMAT LUCAM_RGB_FORMAT_BMP + #define LUCAM_API_RGB32_FORMAT LUCAM_RGB_FORMAT_BMP + #define LUCAM_API_RGB48_FORMAT LUCAM_RGB_FORMAT_BMP + //**************************************************************************************************************** + + //**************************************************************************************************************** + + //**************************************************************************************************************** + // Algorithms + //**************************************************************************************************************** + // For LUCAM_PROP_HOST_AUTO_WB_ALGORITHM and LUCAM_PROP_HOST_AUTO_EX_ALGORITHM + #define AUTO_ALGORITHM_SIMPLE_AVERAGING 0 + #define AUTO_ALGORITHM_HISTOGRAM 1 + #define AUTO_ALGORITHM_MACROBLOCKS 2 + //**************************************************************************************************************** + + //**************************************************************************************************************** + // AVI Streaming Modes + //**************************************************************************************************************** + #define STOP_AVI 0 + #define START_AVI 1 + #define PAUSE_AVI 2 + //**************************************************************************************************************** + + //**************************************************************************************************************** + // AVI Types + //**************************************************************************************************************** + #define AVI_RAW_LUMENERA 0 + #define AVI_STANDARD_24 1 + #define AVI_STANDARD_32 2 + #define AVI_XVID_24 3 + #define AVI_STANDARD_8 4 // For monochrome only + //**************************************************************************************************************** + + //**************************************************************************************************************** + // Device Notifications - for Lgcam only + //**************************************************************************************************************** + // For use with LucamRegisterEventNotification via callbacks + #define LUCAM_EVENT_GPI1_CHANGED 4 + #define LUCAM_EVENT_GPI2_CHANGED 5 + #define LUCAM_EVENT_GPI3_CHANGED 6 + #define LUCAM_EVENT_GPI4_CHANGED 7 + //**************************************************************************************************************** + + //**************************************************************************************************************** + // Property-Specific Flags + //**************************************************************************************************************** + #define LUCAM_PROP_FLAG_HW_ENABLE 0x40000000 // for VIDEO_TRIGGER (also uses LUCAM_PROP_FLAG_USE) + #define LUCAM_PROP_FLAG_SW_TRIGGER 0x00200000 // for VIDEO_TRIGGER (also uses LUCAM_PROP_FLAG_USE) // Self-cleared + //**************************************************************************************************************** + + //**************************************************************************************************************** + // Pixel Formats + //**************************************************************************************************************** + #define LUCAM_PF_YUV422 3 + //**************************************************************************************************************** + + //**************************************************************************************************************** + // Color Patterns + //**************************************************************************************************************** + // For the LUCAM_PROP_COLOR_FORMAT property + #define LUCAM_CF_BAYER_CYYM 16 + #define LUCAM_CF_BAYER_YCMY 17 + #define LUCAM_CF_BAYER_YMCY 18 + #define LUCAM_CF_BAYER_MYYC 19 + //**************************************************************************************************************** + + //**************************************************************************************************************** + // Color Correction Matrices + //**************************************************************************************************************** + #define LUCAM_CM_LED 6 + //**************************************************************************************************************** + +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +// Applicable to Windows Only: End +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +#elif defined(LUMENERA_MAC_API) +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +// Applicable to Mac Only: Begin +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** + + //**************************************************************************************************************** + // Properties + //**************************************************************************************************************** + #define LUCAM_PROP_MIN_WIDTH LUCAM_PROP_UNIT_WIDTH // alias + #define LUCAM_PROP_MIN_HEIGHT LUCAM_PROP_UNIT_HEIGHT // alias + + //**************************************************************************************************************** + // Color Patterns + //**************************************************************************************************************** + // For the LUCAM_PROP_COLOR_FORMAT property + // Aliases + #define LUCAM_COLOR_FORMAT_MONO LUCAM_CF_MONO + #define LUCAM_COLOR_FORMAT_BAYER_RGGB LUCAM_CF_BAYER_RGGB + #define LUCAM_COLOR_FORMAT_BAYER_GRBG LUCAM_CF_BAYER_GRBG + #define LUCAM_COLOR_FORMAT_BAYER_GBRG LUCAM_CF_BAYER_GBRG + #define LUCAM_COLOR_FORMAT_BAYER_BGGR LUCAM_CF_BAYER_BGGR + //**************************************************************************************************************** + +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +// Applicable to Mac Only: End +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +#elif defined(LUMENERA_LINUX_API) +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +// Applicable to Linux Only: Begin +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** + + //**************************************************************************************************************** + // Properties + //**************************************************************************************************************** + #define LUCAM_PROP_TIMESTAMP_HW_RESET 187 + //**************************************************************************************************************** + + #define LUCAM_API_RGB24_FORMAT LUCAM_RGB_FORMAT_RGB + #define LUCAM_API_RGB32_FORMAT LUCAM_RGB_FORMAT_RGB + #define LUCAM_API_RGB48_FORMAT LUCAM_RGB_FORMAT_RGB + + //**************************************************************************************************************** + // Flipping Directions + //**************************************************************************************************************** + // For the LUCAM_PROP_FLIPPING property + // Aliases + #define LUCAM_FLIPPING_NONE LUCAM_PROP_FLIPPING_NONE + #define LUCAM_FLIPPING_X LUCAM_PROP_FLIPPING_X + #define LUCAM_FLIPPING_Y LUCAM_PROP_FLIPPING_Y + #define LUCAM_FLIPPING_XY LUCAM_PROP_FLIPPING_XY + //**************************************************************************************************************** + +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +// Applicable to Linux Only: End +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +#endif + + + + diff --git a/TIAS_Imager2/lustructures.h b/TIAS_Imager2/lustructures.h new file mode 100644 index 0000000..f94b4fa --- /dev/null +++ b/TIAS_Imager2/lustructures.h @@ -0,0 +1,262 @@ +#pragma once + +#if !defined(LUMENERA_MAC_API) && !defined(LUMENERA_LINUX_API) + #ifndef LUMENERA_WINDOWS_API + #define LUMENERA_WINDOWS_API + #endif +#endif + +#include "lucommon.h" + +//**************************************************************************************************************** +//**************************************************************************************************************** +// Structures +//**************************************************************************************************************** +//**************************************************************************************************************** + +// Version Information +//---------------------------------------------------------------------------------------------------------------- +// Version Information: Camera and Host +// For use with QueryVersion and EnumCameras +typedef struct LUCAM_VERSION { + ULONG firmware; // Camera firmware version. Not available with LucamEnumCameras + ULONG fpga; // Camera FPGA version. Not available with LucamEnumCameras + ULONG api; // API version (lucamapi.dll, lucamapi.so.*) + ULONG driver; // Device driver version. Not available with LucamEnumCameras + ULONG serialnumber; // Unique serial number of a camera. + ULONG cameraid; // Also known as camera model id. +} LUCAM_VERSION; +//---------------------------------------------------------------------------------------------------------------- + +// Frame Format +//---------------------------------------------------------------------------------------------------------------- +typedef struct LUCAM_FRAME_FORMAT { + ULONG xOffset; // X coordinate on imager of top left corner of subwindow, in pixels + ULONG yOffset; // Y coordinate on imager of top left corner of subwindow, in pixels + ULONG width; // Width of subwindow, in pixels + ULONG height; // Height of subwindow, in pixls + ULONG pixelFormat; // Pixel format LUCAM_PF + union { + USHORT subSampleX; // Sub-sample ratio in x direction, in pixels (x:1) + USHORT binningX; // Binning ratio in x direction, in pixels (x:1 + }; + USHORT flagsX; // LUCAM_FRAME_FORMAT_FLAGS_* + union { + USHORT subSampleY; // Sub-sample ratio in y direction, in pixels (y:1) + USHORT binningY; // Binning ratio in y direction, in pixels (y:1) + }; + USHORT flagsY; // LUCAM_FRAME_FORMAT_FLAGS_* +} LUCAM_FRAME_FORMAT; +//---------------------------------------------------------------------------------------------------------------- + +// Snapshot Settings +//---------------------------------------------------------------------------------------------------------------- +// See TakeSnapshot, EnableFastFrames, and EnableSynchronousSnapshots. +typedef struct LUCAM_SNAPSHOT { + FLOAT exposure; // Exposure in milliseconds + FLOAT gain; // Overall gain as a multiplicative factor + union { + struct { + FLOAT gainRed; // Gain for Red pixels as multiplicative factor + FLOAT gainBlue; // Gain for Blue pixels as multiplicative factor + FLOAT gainGrn1; // Gain for Green pixels on Red rows as multiplicative factor + FLOAT gainGrn2; // Gain for Green pixels on Blue rows as multiplicative factor + }; + struct { + FLOAT gainMag; // Gain for Magenta pixels as multiplicative factor + FLOAT gainCyan; // Gain for Cyan pixels as multiplicative factor + FLOAT gainYel1; // Gain for Yellow pixels on Magenta rows as multiplicative factor + FLOAT gainYel2; // Gain for Yellow pixels on Cyan rows as multiplicative factor + }; + }; + union { + BOOL useStrobe; // For backward compatibility + ULONG strobeFlags; // Use LUCAM_PROP_FLAG_USE and/or LUCAM_PROP_FLAG_STROBE_FROM_START_OF_EXPOSURE + }; + FLOAT strobeDelay; // Time interval from when exposure starts to time the flash is fired in milliseconds + BOOL useHwTrigger; // Wait for hardware trigger + FLOAT timeout; // Maximum time to wait for hardware trigger prior to returning from function in milliseconds + LUCAM_FRAME_FORMAT format; // Frame format for data + ULONG shutterType; + FLOAT exposureDelay; + union { + BOOL bufferlastframe; // Set to TRUE if you want TakeFastFrame to return an already received frame. + ULONG ulReserved1; + }; + ULONG ulReserved2; // Must be set to 0 + FLOAT flReserved1; // Must be set to 0 + FLOAT flReserved2; // Must be set to 0 +} LUCAM_SNAPSHOT; +//---------------------------------------------------------------------------------------------------------------- + +// Conversion Settings +//---------------------------------------------------------------------------------------------------------------- +// For use with LucamConvertFrame* +typedef struct LUCAM_CONVERSION { + ULONG DemosaicMethod; // LUCAM_DM_* + ULONG CorrectionMatrix; // LUCAM_CM_* +} LUCAM_CONVERSION; +//---------------------------------------------------------------------------------------------------------------- + +// Conversion Parameters +//---------------------------------------------------------------------------------------------------------------- +// For the ConvertFrameTo*Ex functions +typedef struct LUCAM_CONVERSION_PARAMS { + ULONG Size; // Must be set to sizeof this struct + ULONG DemosaicMethod; // LUCAM_DM_* + ULONG CorrectionMatrix; // LUCAM_CM_* + BOOL FlipX; + BOOL FlipY; + FLOAT Hue; + FLOAT Saturation; + BOOL UseColorGainsOverWb; + union { + struct { + FLOAT DigitalGain; + FLOAT DigitalWhiteBalanceU; + FLOAT DigitalWhiteBalanceV; + }; + struct { + FLOAT DigitalGainRed; + FLOAT DigitalGainGreen; + FLOAT DigitalGainBlue; + }; + }; +} LUCAM_CONVERSION_PARAMS, *PLUCAM_CONVERSION_PARAMS; +//---------------------------------------------------------------------------------------------------------------- + +// Image Format +//---------------------------------------------------------------------------------------------------------------- +typedef struct LUCAM_IMAGE_FORMAT { + ULONG Size; // Must be set to sizeof this struct + ULONG Width; + ULONG Height; + ULONG PixelFormat; // LUCAM_PF_* + ULONG ImageSize; + + ULONG LucamReserved[8]; + +} LUCAM_IMAGE_FORMAT, *PLUCAM_IMAGE_FORMAT; +//---------------------------------------------------------------------------------------------------------------- + +//****************************************************************************** +// Stream Statistics +//****************************************************************************** +typedef struct _LUCAM_STREAM_STATS +{ + ULONG FramesCompleted; + ULONG FramesDropped; + ULONG ActualFramesDropped; + union + { + struct + { + ULONG ShortErrors; + ULONG XactErrors; + ULONG BabbleErrors; + ULONG OtherErrors; + }USB; + struct + { + ULONG ShortErrors; + ULONG XactErrors; + ULONG BabbleErrors; + ULONG OtherErrors; + + + ULONG TransfersOutOfOrderErrors; + ULONG PendingFrames; + ULONG PendingUsbTransfers; + }USB2; // Version 2 of this. + struct + { + ULONG ExpectedResend; + ULONG LostPacket; + ULONG DataOverrun; + ULONG PartialLineMissing; + ULONG FullLineMissing; + ULONG OtherErrors; + + ULONG ExpectedSingleResend; + ULONG UnexpectedResend; + ULONG ResendGroupRequested; + ULONG ResendPacketRequested; + ULONG IgnoredPacket; + ULONG RedundantPacket; + ULONG PacketOutOfOrder; + ULONG BlocksDropped; + ULONG BlockIDsMissing; + struct + { + ULONG ImageError; + ULONG MissingPackets; + ULONG StateError; + ULONG TooManyResends; + ULONG TooManyConsecutiveResends; + ULONG ResendsFailure; + }Result; + }GEV; + struct + { + ULONG InputBufferAcqSuccess; + ULONG InputBufferAcqFailures; // Same as FramesDropped and ActualFramesDropped + ULONG FramesCompletedSuccess; // Same as FramesCompleted + ULONG FramesCompletedError; + + ULONG PktReceived; + ULONG PktInLastBlockError; + ULONG PktInNextBlockError; + ULONG BlockIdWayAheadError; + ULONG NonSeqJumpAhead; + ULONG NonSeqJumpBack; + ULONG SegmentOverflowError; + ULONG SegmentCreatedOnDesynch; + ULONG PktOnlyPrecedingSegment; + ULONG ResendOnSkip; + ULONG ResendOnCountdown; + ULONG PktAlreadyReceived; + ULONG DesynchFixed; + ULONG PktDroppedForAcqFailureCur; + ULONG PktDroppedForAcqFailureNext; + ULONG PktDiscardedForPreviousFailure; + ULONG InvalidGvspHeader; + ULONG InvalidPayloadSize; + ULONG GvspStatusError; + ULONG GvspStatusWarning; + ULONG GvspLeaderReceived; + ULONG GvspTrailerReceived; + ULONG GvspPayloadReceived; + }LSGEV; + }; +} LUCAM_STREAM_STATS, *PLUCAM_STREAM_STATS; +//---------------------------------------------------------------------------------------------------------------- + +// Subsampling and Binning Description - Used for WINDOWS or MAC +//---------------------------------------------------------------------------------------------------------------- +typedef struct _LUCAM_SS_BIN_DESC +{ + UCHAR flags ; // 0x80: X and Y settings must be the same + UCHAR reserved ; + UCHAR ssNot1Count ; + UCHAR binNot1Count ; + UCHAR ssFormatsNot1[8] ; // + UCHAR binFormatsNot1[8] ;// +}LUCAM_SS_BIN_DESC, *PLUCAM_SS_BIN_DESC ; +//---------------------------------------------------------------------------------------------------------------- + +#if defined(LUMENERA_WINDOWS_API) || defined(LUMENERA_LINUX_API) +// IP Configuration - Used for WINDOWS only +//---------------------------------------------------------------------------------------------------------------- +typedef struct LGCAM_IP_CONFIGURATION { + ULONG IPAddress; + ULONG SubnetMask; + ULONG DefaultGateway; +} LGCAM_IP_CONFIGURATION; +typedef LGCAM_IP_CONFIGURATION *PLGCAM_IP_CONFIGURATION; +//---------------------------------------------------------------------------------------------------------------- +#endif // LUMENERA_WINDOWS_API +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +//**************************************************************************************************************** +