|
|
/****************************************************************************/ /* */ /* ivideo32.h */ /* */ /* private structures & prototypes for 32bit videoXXX api's */ /* this header file is specific to WIN32 */ /* */ /****************************************************************************/
// include public stuff about the videoXXX interface
//
#include <vfw.h>
// include private stuff IFF _WIN32 and we have not already done so
//
#if !defined _INC_IVIDEO32 && defined _WIN32
#define _INC_IVIDEO32
#ifdef __cplusplus
extern "C" { /* Assume C declarations for C++ */ #endif /* __cplusplus */
#ifndef _RCINVOKED
/****************************************************************************
Structures
****************************************************************************/ #if 0
/* video data block header */ typedef struct videohdr_tag { LPBYTE lpData; /* pointer to locked data buffer */ DWORD dwBufferLength; /* Length of data buffer */ DWORD dwBytesUsed; /* Bytes actually used */ DWORD dwTimeCaptured; /* Milliseconds from start of stream */ DWORD dwUser; /* for client's use */ DWORD dwFlags; /* assorted flags (see defines) */ DWORD dwReserved[4]; /* reserved for driver */ } VIDEOHDR, NEAR *PVIDEOHDR, FAR * LPVIDEOHDR;
/* dwFlags field of VIDEOHDR */ #define VHDR_DONE 0x00000001 /* Done bit */
#define VHDR_PREPARED 0x00000002 /* Set if this header has been prepared */
#define VHDR_INQUEUE 0x00000004 /* Reserved for driver */
#define VHDR_KEYFRAME 0x00000008 /* Key Frame */
#define VHDR_VALID 0x0000000F /* valid flags */ /* ;Internal */
/* Channel capabilities structure */ typedef struct channel_caps_tag { DWORD dwFlags; /* Capability flags*/ DWORD dwSrcRectXMod; /* Granularity of src rect in x */ DWORD dwSrcRectYMod; /* Granularity of src rect in y */ DWORD dwSrcRectWidthMod; /* Granularity of src rect width */ DWORD dwSrcRectHeightMod; /* Granularity of src rect height */ DWORD dwDstRectXMod; /* Granularity of dst rect in x */ DWORD dwDstRectYMod; /* Granularity of dst rect in y */ DWORD dwDstRectWidthMod; /* Granularity of dst rect width */ DWORD dwDstRectHeightMod; /* Granularity of dst rect height */ } CHANNEL_CAPS, NEAR *PCHANNEL_CAPS, FAR * LPCHANNEL_CAPS;
/* dwFlags of CHANNEL_CAPS */ #define VCAPS_OVERLAY 0x00000001 /* overlay channel */
#define VCAPS_SRC_CAN_CLIP 0x00000002 /* src rect can clip */
#define VCAPS_DST_CAN_CLIP 0x00000004 /* dst rect can clip */
#define VCAPS_CAN_SCALE 0x00000008 /* allows src != dst */
#endif
/****************************************************************************
video APIs
****************************************************************************/
DWORD WINAPI videoGetNumDevs(void);
DWORD WINAPI videoOpen (LPHVIDEO lphVideo, DWORD dwDevice, DWORD dwFlags); DWORD WINAPI videoClose (HVIDEO hVideo); DWORD WINAPI videoDialog(HVIDEO hVideo, HWND hWndParent, DWORD dwFlags); DWORD WINAPI videoGetChannelCaps(HVIDEO hVideo, LPCHANNEL_CAPS lpChannelCaps, DWORD dwSize); DWORD WINAPI videoUpdate (HVIDEO hVideo, HWND hWnd, HDC hDC); DWORD WINAPI videoConfigure (HVIDEO hVideo, UINT msg, DWORD dwFlags, LPDWORD lpdwReturn, LPVOID lpData1, DWORD dwSize1, LPVOID lpData2, DWORD dwSize2);
DWORD WINAPI videoConfigureStorageA(HVIDEO hVideo, LPSTR lpstrIdent, DWORD dwFlags); DWORD WINAPI videoConfigureStorageW(HVIDEO hVideo, LPWSTR lpstrIdent, DWORD dwFlags); #ifdef UNICODE
#define videoConfigureStorage videoConfigureStorageW
#else
#define videoConfigureStorage videoConfigureStorageA
#endif // !UNICODE
DWORD WINAPI videoFrame(HVIDEO hVideo, LPVIDEOHDR lpVHdr); DWORD WINAPI videoMessage(HVIDEO hVideo, UINT msg, LPARAM dwP1, LPARAM dwP2);
/* streaming APIs */ DWORD WINAPI videoStreamAddBuffer(HVIDEO hVideo, LPVIDEOHDR lpVHdr, DWORD dwSize); DWORD WINAPI videoStreamGetError(HVIDEO hVideo, LPDWORD lpdwErrorFirst, LPDWORD lpdwErrorLast);
DWORD WINAPI videoGetErrorTextA(HVIDEO hVideo, UINT wError, LPSTR lpText, UINT wSize); DWORD WINAPI videoGetErrorTextW(HVIDEO hVideo, UINT wError, LPWSTR lpText, UINT wSize);
#ifdef UNICODE
#define videoGetErrorText videoGetErrorTextW
#else
#define videoGetErrorText videoGetErrorTextA
#endif // !UNICODE
DWORD WINAPI videoStreamGetPosition(HVIDEO hVideo, MMTIME FAR* lpInfo, DWORD dwSize); DWORD WINAPI videoStreamInit(HVIDEO hVideo, DWORD dwMicroSecPerFrame, DWORD_PTR dwCallback, DWORD_PTR dwCallbackInst, DWORD dwFlags); DWORD WINAPI videoStreamFini(HVIDEO hVideo); DWORD WINAPI videoStreamPrepareHeader(HVIDEO hVideo, LPVIDEOHDR lpVHdr, DWORD dwSize); DWORD WINAPI videoStreamReset(HVIDEO hVideo); DWORD WINAPI videoStreamStart(HVIDEO hVideo); DWORD WINAPI videoStreamStop(HVIDEO hVideo); DWORD WINAPI videoStreamUnprepareHeader(HVIDEO hVideo, LPVIDEOHDR lpVHdr, DWORD dwSize);
// Added post VFW1.1a
DWORD WINAPI videoStreamAllocHdrAndBuffer(HVIDEO hVideo, LPVIDEOHDR FAR * plpVHdr, DWORD dwSize); DWORD WINAPI videoStreamFreeHdrAndBuffer(HVIDEO hVideo, LPVIDEOHDR lpVHdr);
/****************************************************************************
API Flags
****************************************************************************/
// Types of channels to open with the videoOpen function
#define VIDEO_EXTERNALIN 0x0001
#define VIDEO_EXTERNALOUT 0x0002
#define VIDEO_IN 0x0004
#define VIDEO_OUT 0x0008
// Is a driver dialog available for this channel?
#define VIDEO_DLG_QUERY 0x0010
// videoConfigure (both GET and SET)
#define VIDEO_CONFIGURE_QUERY 0x8000
// videoConfigure (SET only)
#define VIDEO_CONFIGURE_SET 0x1000
// videoConfigure (GET only)
#define VIDEO_CONFIGURE_GET 0x2000
#define VIDEO_CONFIGURE_QUERYSIZE 0x0001
#define VIDEO_CONFIGURE_CURRENT 0x0010
#define VIDEO_CONFIGURE_NOMINAL 0x0020
#define VIDEO_CONFIGURE_MIN 0x0040
#define VIDEO_CONFIGURE_MAX 0x0080
/****************************************************************************
CONFIGURE MESSAGES
****************************************************************************/ #define DVM_USER 0X4000
#define DVM_CONFIGURE_START 0x1000
#define DVM_CONFIGURE_END 0x1FFF
#define DVM_PALETTE (DVM_CONFIGURE_START + 1)
#define DVM_FORMAT (DVM_CONFIGURE_START + 2)
#define DVM_PALETTERGB555 (DVM_CONFIGURE_START + 3)
#define DVM_SRC_RECT (DVM_CONFIGURE_START + 4)
#define DVM_DST_RECT (DVM_CONFIGURE_START + 5)
#endif /* ifndef _RCINVOKED */
#ifdef __cplusplus
} /* End of extern "C" { */ #endif /* __cplusplus */
#endif // _INC_VIDEO32
|