VFWImageProcessor.h
上传用户:sdsuchuang
上传日期:2013-01-12
资源大小:2228k
文件大小:3k
源码类别:

图形图像处理

开发平台:

Visual C++

  1. // VFWImageProcessor.h: interface for the CVFWImageProcessor class.
  2. //
  3. //////////////////////////////////////////////////////////////////////
  4. #if !defined(AFX_VFWIMAGEPROCESSOR_H__635099B7_63C1_11D4_9EF0_000083A26E84__INCLUDED_)
  5. #define AFX_VFWIMAGEPROCESSOR_H__635099B7_63C1_11D4_9EF0_000083A26E84__INCLUDED_
  6. #if _MSC_VER > 1000
  7. #pragma once
  8. #endif // _MSC_VER > 1000
  9. #include <afxmt.h>
  10. #include <vfw.h>
  11. #include <afxole.h>
  12. #define MAX_VFW_DEVICES    10
  13. //class AFX_EXT_CLASS CVFWImageProcessor
  14. class CVFWImageProcessor
  15. {
  16. public:
  17.    CVFWImageProcessor();
  18.    virtual ~CVFWImageProcessor();
  19.    CVFWImageProcessor(const CVFWImageProcessor &CopyFrom);
  20.    CVFWImageProcessor &operator =(const CVFWImageProcessor &CopyFrom);
  21.    BOOL Initialize(SHORT DriverIndex = 0);
  22.    VOID Destroy();
  23.    BOOL SetDriver(SHORT DriverIndex);
  24.    HWND GetCapWindow();
  25.    BOOL CaptureDIB(PBITMAPINFO *Bitmap, ULONG BitmapLength, ULONG *RetBitmapLength);
  26.    BOOL CaptureAVI(LPCTSTR Filename, FLOAT FramesPerSec, ULONG Duration, UINT Quality);                            
  27.    BOOL EnablePreviewVideo(HWND Parent, INT x, INT y, INT PreviewRate = 30);
  28.    BOOL EnablePreviewVideo(HWND Parent, INT x, INT y, INT Width, INT Height, INT PreviewRate = 30);
  29.    BOOL DisablePreviewVideo();
  30.    BOOL DriverGetCaps(CAPDRIVERCAPS *Caps);
  31.    BOOL DlgVideoSource();
  32.    BOOL DlgVideoFormat();
  33.    BOOL DlgVideoDisplay();
  34.    VOID CancelCapture();
  35.    BOOL AllocDIBImage(PBITMAPINFO *ppImageData, ULONG *AllocatedSize);
  36.    BITMAPINFOHEADER GetBitmapInfoHeader();
  37.    VOID GetPreviousError(INT *ErrorID, CString *ErrorString, BOOL ResetError = FALSE);
  38.    static ULONG CalcBitmapSize(const BITMAPINFOHEADER &bmiHeader);
  39.    static ULONG CalcBitmapInfoSize(const BITMAPINFOHEADER &bmiHeader);
  40.    friend LRESULT CALLBACK ErrorCallbackProc(HWND hWnd, int nErrID, LPSTR lpErrorText);
  41.    friend LRESULT CALLBACK ControlCallbackProc(HWND hWnd, int nState);
  42.    friend LRESULT CALLBACK StatusCallbackProc(HWND hWnd, int nID, LPCSTR lpsz);
  43.    friend LRESULT CALLBACK FrameCallbackProc(HWND hWnd, LPVIDEOHDR lpVHdr);
  44.    friend LRESULT CALLBACK StreamCallbackProc(HWND hWnd, LPVIDEOHDR lpVHdr);
  45.  
  46.    friend UINT CaptureThreadFunc(VOID *pCVFWImageProcessor);
  47. private:    // Data
  48.    HWND m_hWndVideo;
  49.    CMutex m_ImageProtect;
  50.    CEvent m_ImageReady;
  51.    CEvent m_CancelCapture;
  52.    CEvent m_CaptureEnded;
  53.    BITMAPINFOHEADER m_BitmapInfoHeader;      // Used to store image dimensions.
  54.    PBITMAPINFO m_TransferBitmapInfo;
  55.    ULONG m_TransferBitmapInfoSize;
  56.    CWinThread *m_CaptureThread;
  57.    INT m_DriverIndex;
  58.    INT m_ErrorID;
  59.    CString m_ErrorText;
  60.    static UINT m_ValidDriverIndex[MAX_VFW_DEVICES];
  61.    static USHORT m_TotalVideoDrivers;
  62. private:    // Functions
  63.    CVFWImageProcessor &Copy(const CVFWImageProcessor &CopyFrom);
  64. };
  65. #endif // !defined(AFX_VFWIMAGEPROCESSOR_H__635099B7_63C1_11D4_9EF0_000083A26E84__INCLUDED_)