windows-nt/Source/XPSP1/NT/enduser/netmeeting/h/dcap.h
2020-09-26 16:20:57 +08:00

128 lines
4.3 KiB
C

// 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