📄 cevfw.h
字号:
//// (c) 2002 Yuri Kiryanov, openh323@kiryanov.com// // Windows CE port of OpenH323 Open Source Project, www.openh323.org// Video For Windows Definitions#ifndef _CEVFW_H#define _CEVFW_H#define VFWAPI WINAPI#ifdef __cplusplus/* SendMessage in C++*/#define AVICapSM(hwnd,m,w,l) ( (IsWindow(hwnd)) ? ::SendMessage(hwnd,m,w,l) : 0)#else/* SendMessage in C */#define AVICapSM(hwnd,m,w,l) ( (IsWindow(hwnd)) ? SendMessage(hwnd,m,w,l) : 0)#endif /* __cplusplus */// video data block headertypedef 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 */typedef struct tagCapStatus { UINT uiImageWidth; // Width of the image UINT uiImageHeight; // Height of the image BOOL fLiveWindow; // Now Previewing video? BOOL fOverlayWindow; // Now Overlaying video? BOOL fScale; // Scale image to client? POINT ptScroll; // Scroll position BOOL fUsingDefaultPalette; // Using default driver palette? BOOL fAudioHardware; // Audio hardware present? BOOL fCapFileExists; // Does capture file exist? DWORD dwCurrentVideoFrame; // # of video frames cap'td DWORD dwCurrentVideoFramesDropped;// # of video frames dropped DWORD dwCurrentWaveSamples; // # of wave samples cap'td DWORD dwCurrentTimeElapsedMS; // Elapsed capture duration HPALETTE hPalCurrent; // Current palette in use BOOL fCapturingNow; // Capture in progress? DWORD dwReturn; // Error value after any operation UINT wNumVideoAllocated; // Actual number of video buffers UINT wNumAudioAllocated; // Actual number of audio buffers} CAPSTATUS, *PCAPSTATUS, FAR *LPCAPSTATUS;typedef struct tagCaptureParms { DWORD dwRequestMicroSecPerFrame; // Requested capture rate BOOL fMakeUserHitOKToCapture; // Show "Hit OK to cap" dlg? UINT wPercentDropForError; // Give error msg if > (10%) BOOL fYield; // Capture via background task? DWORD dwIndexSize; // Max index size in frames (32K) UINT wChunkGranularity; // Junk chunk granularity (2K) BOOL fUsingDOSMemory; // Use DOS buffers? UINT wNumVideoRequested; // # video buffers, If 0, autocalc BOOL fCaptureAudio; // Capture audio? UINT wNumAudioRequested; // # audio buffers, If 0, autocalc UINT vKeyAbort; // Virtual key causing abort BOOL fAbortLeftMouse; // Abort on left mouse? BOOL fAbortRightMouse; // Abort on right mouse? BOOL fLimitEnabled; // Use wTimeLimit? UINT wTimeLimit; // Seconds to capture BOOL fMCIControl; // Use MCI video source? BOOL fStepMCIDevice; // Step MCI device? DWORD dwMCIStartTime; // Time to start in MS DWORD dwMCIStopTime; // Time to stop in MS BOOL fStepCaptureAt2x; // Perform spatial averaging 2x UINT wStepCaptureAverageFrames; // Temporal average n Frames DWORD dwAudioBufferSize; // Size of audio bufs (0 = default) BOOL fDisableWriteCache; // Attempt to disable write cache UINT AVStreamMaster; // Which stream controls length?} CAPTUREPARMS, *PCAPTUREPARMS, FAR *LPCAPTUREPARMS;typedef struct tagCapDriverCaps { UINT wDeviceIndex; // Driver index in system.ini BOOL fHasOverlay; // Can device overlay? BOOL fHasDlgVideoSource; // Has Video source dlg? BOOL fHasDlgVideoFormat; // Has Format dlg? BOOL fHasDlgVideoDisplay; // Has External out dlg? BOOL fCaptureInitialized; // Driver ready to capture? BOOL fDriverSuppliesPalettes; // Can driver make palettes?// following always NULL on Win32. HANDLE hVideoIn; // Driver In channel HANDLE hVideoOut; // Driver Out channel HANDLE hVideoExtIn; // Driver Ext In channel HANDLE hVideoExtOut; // Driver Ext Out channel} CAPDRIVERCAPS, *PCAPDRIVERCAPS, FAR *LPCAPDRIVERCAPS;typedef LRESULT (CALLBACK* CAPERRORCALLBACK) (HWND hWnd, int nID, LPCSTR lpsz);typedef LRESULT (CALLBACK* CAPVIDEOCALLBACK) (HWND hWnd, LPVIDEOHDR lpVHdr);#define WM_CAP_START WM_USER#define WM_CAP_SET_CALLBACK_ERRORA (WM_CAP_START+ 2)#define WM_CAP_SET_CALLBACK_ERROR WM_CAP_SET_CALLBACK_ERRORA#define WM_CAP_SET_CALLBACK_FRAME (WM_CAP_START+ 5)#define WM_CAP_SET_CALLBACK_VIDEOSTREAM (WM_CAP_START+ 6)#define WM_CAP_GET_USER_DATA (WM_CAP_START+ 8)#define WM_CAP_SET_USER_DATA (WM_CAP_START+ 9)#define WM_CAP_DRIVER_CONNECT (WM_CAP_START+ 10)#define WM_CAP_DRIVER_DISCONNECT (WM_CAP_START+ 11)#define WM_CAP_DRIVER_GET_CAPS (WM_CAP_START+ 14)#define WM_CAP_SET_AUDIOFORMAT (WM_CAP_START+ 35)#define WM_CAP_GET_AUDIOFORMAT (WM_CAP_START+ 36)#define WM_CAP_GET_VIDEOFORMAT (WM_CAP_START+ 44)#define WM_CAP_SET_VIDEOFORMAT (WM_CAP_START+ 45)#define WM_CAP_SET_PREVIEW (WM_CAP_START+ 50)#define WM_CAP_GET_STATUS (WM_CAP_START+ 54)#define WM_CAP_GRAB_FRAME_NOSTOP (WM_CAP_START+ 61)#define WM_CAP_SET_SEQUENCE_SETUP (WM_CAP_START+ 64)#define WM_CAP_GET_SEQUENCE_SETUP (WM_CAP_START+ 65)#define WM_CAP_GET_USER_DATA (WM_CAP_START+ 8)// Functions#define capGetVideoFormat(hwnd, s, wSize) ((DWORD)AVICapSM(hwnd, WM_CAP_GET_VIDEOFORMAT, (WPARAM)(wSize), (LPARAM)(LPVOID)(s)))#define capGetVideoFormatSize(hwnd) ((DWORD)AVICapSM(hwnd, WM_CAP_GET_VIDEOFORMAT, 0, 0L))#define capSetVideoFormat(hwnd, s, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_VIDEOFORMAT, (WPARAM)(wSize), (LPARAM)(LPVOID)(s)))#define capGetStatus(hwnd, s, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_GET_STATUS, (WPARAM)(wSize), (LPARAM)(LPVOID)(LPCAPSTATUS)(s)))#define capGrabFrameNoStop(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_GRAB_FRAME_NOSTOP, (WPARAM)0, (LPARAM)0L))#define capSetCallbackOnError(hwnd, fpProc) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_CALLBACK_ERROR, 0, (LPARAM)(LPVOID)(fpProc)))#define capSetCallbackOnFrame(hwnd, fpProc) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_CALLBACK_FRAME, 0, (LPARAM)(LPVOID)(fpProc)))#define capSetCallbackOnVideoStream(hwnd, fpProc) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_CALLBACK_VIDEOSTREAM, 0, (LPARAM)(LPVOID)(fpProc)))#define capDriverConnect(hwnd, i) ((BOOL)AVICapSM(hwnd, WM_CAP_DRIVER_CONNECT, (WPARAM)(i), 0L))#define capDriverDisconnect(hwnd) ((BOOL)AVICapSM(hwnd, WM_CAP_DRIVER_DISCONNECT, (WPARAM)0, 0L))#define capSetUserData(hwnd, lUser) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_USER_DATA, 0, (LPARAM)lUser))#define capGetUserData(hwnd) (AVICapSM(hwnd, WM_CAP_GET_USER_DATA, 0, 0))#define capCaptureGetSetup(hwnd, s, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_GET_SEQUENCE_SETUP, (WPARAM)(wSize), (LPARAM)(LPVOID)(LPCAPTUREPARMS)(s)))#define capCaptureSetSetup(hwnd, s, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_SEQUENCE_SETUP, (WPARAM)(wSize), (LPARAM)(LPVOID)(LPCAPTUREPARMS)(s)))#define capDriverGetCaps(hwnd, s, wSize) ((BOOL)AVICapSM(hwnd, WM_CAP_DRIVER_GET_CAPS, (WPARAM)(wSize), (LPARAM)(LPVOID)(LPCAPDRIVERCAPS)(s)))#define capPreview(hwnd, f) ((BOOL)AVICapSM(hwnd, WM_CAP_SET_PREVIEW, (WPARAM)(BOOL)(f), 0L))BOOL VFWAPI capGetDriverDescription(UINT wDriverIndex, LPSTR lpszName, int cbName, LPSTR lpszVer, int cbVer);HWND VFWAPI capCreateCaptureWindow( LPCSTR lpszWindowName, DWORD dwStyle, int x, int y, int nWidth, int nHeight, HWND hwndParent, int nID);// Making types of these functions to define static stubstypedef BOOL (VFWAPI *CAPGETDRIVERDESCRIPTIONPROC)(UINT,LPSTR, int, LPSTR, int);// FAR * LPCAPGETDRIVERDESCRIPTIONPROC;typedef HWND (VFWAPI *CAPCREATECAPTUREWINDOWPROC)(LPCSTR,DWORD,int,int,int,int,HWND,int);// FAR * LPCAPCREATECAPTUREWINDOWPROC;#endif // _CEVFW_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -