// DCAP.H // // Created 31-Jul-96 [JonT] #ifndef _DCAP_H #define _DCAP_H #pragma pack(1) /* Assume byte packing throughout */ #ifdef __cplusplus extern "C" { /* Assume C declarations for C++ */ #endif /* __cplusplus */ // API defines. These allow optimized DLL import code generation #ifdef __DCAP_BUILD__ #define DCAPI WINAPI #else #define DCAPI __declspec(dllimport) __stdcall #endif // Equates #define MAX_CAPDEV_NAME MAX_PATH #define MAX_CAPDEV_DESCRIPTION MAX_PATH #define MAX_CAPDEV_VERSION 80 #define MIN_STREAMING_CAPTURE_BUFFERS 2 // Equates for "InitializeStreaming" flags #define STREAMING_PREFER_STREAMING 0x0 #define STREAMING_PREFER_FRAME_GRAB 0x1 // CaptureDeviceDialog flags #define CAPDEV_DIALOG_QUERY 1 // Queries if the dialog exists #define CAPDEV_DIALOG_IMAGE 0 // (default and mutually exclusive with #define CAPDEV_DIALOG_SOURCE 2 // CAPDEV_DIALOG_SOURCE) // Errors #define DCAP_ERRORBIT 0x20000000 #define ERROR_DCAP_DEVICE_IN_USE (DCAP_ERRORBIT | 0x0001) #define ERROR_DCAP_BAD_INSTALL (DCAP_ERRORBIT | 0x0002) #define ERROR_DCAP_NONSPECIFIC (DCAP_ERRORBIT | 0x0003) #define ERROR_DCAP_NO_DRIVER_SUPPORT (DCAP_ERRORBIT | 0x0004) #define ERROR_DCAP_NOT_WHILE_STREAMING (DCAP_ERRORBIT | 0x0005) #define ERROR_DCAP_FORMAT_NOT_SUPPORTED (DCAP_ERRORBIT | 0x0006) #define ERROR_DCAP_BAD_FRAMERATE (DCAP_ERRORBIT | 0x0007) #define ERROR_DCAP_BAD_PARAM (DCAP_ERRORBIT | 0x0008) #define ERROR_DCAP_DIALOG_FORMAT (DCAP_ERRORBIT | 0x0009) // can't reset format changes caused by dialog #define ERROR_DCAP_DIALOG_STREAM (DCAP_ERRORBIT | 0x000A) // can't re-establish stream after dialog // Structures #ifndef __DCAP_BUILD__ typedef HANDLE HCAPDEV; typedef HANDLE HFRAMEBUF; #endif typedef struct _FINDCAPTUREDEVICE { DWORD dwSize; int nDeviceIndex; char szDeviceName[MAX_CAPDEV_NAME]; char szDeviceDescription[MAX_CAPDEV_DESCRIPTION]; char szDeviceVersion[MAX_CAPDEV_VERSION]; } FINDCAPTUREDEVICE; typedef struct _CAPSTREAM { DWORD dwSize; int nFPSx100; int ncCapBuffers; HANDLE hevWait; } CAPSTREAM; typedef struct _CAPTUREPALETTE { WORD wVersion; WORD wcEntries; PALETTEENTRY pe[256]; } CAPTUREPALETTE, FAR* LPCAPTUREPALETTE; typedef struct _CAPFRAMEINFO { LPSTR lpData; DWORD dwcbData; DWORD dwTimestamp; DWORD dwFlags; } CAPFRAMEINFO; // Prototypes int DCAPI GetNumCaptureDevices(); BOOL DCAPI FindFirstCaptureDevice(IN OUT FINDCAPTUREDEVICE* lpfcd, char* szDeviceDescription); BOOL DCAPI FindFirstCaptureDeviceByIndex(IN OUT FINDCAPTUREDEVICE* lpfcd, int nDeviceIndex); BOOL DCAPI FindNextCaptureDevice(IN OUT FINDCAPTUREDEVICE* lpfcd); HCAPDEV DCAPI OpenCaptureDevice(int nDeviceIndex); BOOL DCAPI CloseCaptureDevice(HCAPDEV hcd); DWORD DCAPI GetCaptureDeviceFormatHeaderSize(HCAPDEV hcd); BOOL DCAPI GetCaptureDeviceFormat(HCAPDEV hcd, OUT LPBITMAPINFOHEADER lpbmih); BOOL DCAPI SetCaptureDeviceFormat(HCAPDEV hcd, IN LPBITMAPINFOHEADER lpbmih, IN LONG srcwidth, IN LONG srcheight); BOOL DCAPI GetCaptureDevicePalette(HCAPDEV hcd, OUT CAPTUREPALETTE* lpcp); BOOL DCAPI InitializeStreaming(HCAPDEV hcd, IN OUT CAPSTREAM* lpcs, IN DWORD flags); BOOL DCAPI SetStreamFrameRate(HCAPDEV hcd, IN int nFPSx100); BOOL DCAPI UninitializeStreaming(HCAPDEV hcd); BOOL DCAPI StartStreaming(HCAPDEV hcd); BOOL DCAPI StopStreaming(HCAPDEV hcd); LPSTR DCAPI GetNextReadyBuffer(HCAPDEV hcd, OUT CAPFRAMEINFO* lpcfi); BOOL DCAPI PutBufferIntoStream(HCAPDEV hcd, IN BYTE* lpBits); BOOL DCAPI CaptureDeviceDialog(HCAPDEV hcd, HWND hwndParent, DWORD dwFlags, IN LPBITMAPINFOHEADER lpbmih); LPBYTE DCAPI CaptureFrame(HCAPDEV hcd, IN HFRAMEBUF hbuf); HFRAMEBUF DCAPI AllocFrameBuffer(HCAPDEV hcd); VOID DCAPI FreeFrameBuffer(HCAPDEV hcd, IN HFRAMEBUF hbuf); LPBYTE DCAPI GetFrameBufferPtr(HCAPDEV hcd, IN HFRAMEBUF hbuf); DWORD DCAPI DCAPGetThreadExecutionTimeService(HANDLE R0ThreadID ); HANDLE DCAPI DCAPGetR0ThreadHandle(void); #ifdef __cplusplus } /* End of extern "C" { */ #endif /* __cplusplus */ #pragma pack() /* Revert to default packing */ #endif // #ifndef _DCAP_H