RGB.H
上传用户:guoxiu1214
上传日期:2019-02-27
资源大小:876k
文件大小:12k
源码类别:

多显示器编程

开发平台:

Visual C++

  1. /*******************************************************************************
  2. Copyright Datapath Ltd. 2007, 2008.
  3. File:    rgb.h
  4. Purpose: Definitions for a simple RGB interface.
  5. History:
  6.          19 DEC 07    SB   Created.
  7.          08 FEB 08   MJE   Added capture card #defines so they can be 
  8.                            conditionally parsed by the preprocessor.
  9.          28 MAR 08   MJE   Added drawing callback functions.
  10.          03 APR 08   MJE   Added RGBMODEINFO.
  11.          25 JUN 08    SB   Added colour balance to the RGBVALUECHANGEDINFO
  12.                            structure. Changed RGBDRAWNOSIGNALFN and
  13.                            RGBDRAWINVALIDSIGNALFN to bring them in line with
  14.                            the other callback functions.
  15. *******************************************************************************/
  16. #ifndef _RGB_H_
  17. #define _RGB_H_
  18. #include <pshpack1.h>
  19. /******************************************************************************/
  20. /* The calling convention of the RGB SDK callback functions. */
  21. #define RGBCBKAPI __stdcall
  22. /******************************************************************************/
  23. /* The RGB load handle. */
  24. typedef unsigned long HRGBDLL, *PHRGBDLL;
  25. /* The RGB capture handle. */
  26. typedef unsigned long HRGB, *PHRGB;
  27. /******************************************************************************/
  28. #define CAPTURECARD_DGC103    0
  29. #define CAPTURECARD_DGC133    1
  30. /* The CAPTURESTATE enumerated type contains a list of the capture cards
  31.  * returned by RGBGetCaptureCard. */
  32. typedef enum _CAPTURECARD
  33. {
  34.    RGB_CAPTURECARD_DGC103     = CAPTURECARD_DGC103,
  35.    RGB_CAPTURECARD_DGC133     = CAPTURECARD_DGC133,
  36. }  CAPTURECARD, *PCAPTURECARD;
  37. /******************************************************************************/
  38. /* The CAPTURESTATE enumerated type contains a list of the capture states
  39.  * returned by RGBGetCaptureState. */
  40. typedef enum _CAPTURESTATE
  41. {
  42.    RGB_STATE_CAPTURING        = 0,
  43.    RGB_STATE_NOSIGNAL         = 1,
  44.    RGB_STATE_INVALIDSIGNAL    = 2,
  45.    RGB_STATE_PAUSED           = 3,
  46.    RGB_STATE_ERROR            = 4,
  47. }  CAPTURESTATE, *PCAPTURESTATE;
  48. /******************************************************************************/
  49. /* The PIXELFORMAT enumerated type contains a list of possible pixel formats.
  50.  * Please not that a capture card may only support a subset of these pixel
  51.  * formats. */
  52. typedef enum _PIXELFORMAT
  53. {
  54.    RGB_PIXELFORMAT_AUTO = 0,
  55.    RGB_PIXELFORMAT_555  = 1,
  56.    RGB_PIXELFORMAT_565  = 2,
  57.    RGB_PIXELFORMAT_888  = 3,
  58.    RGB_PIXELFORMAT_GREY = 4,
  59. }  PIXELFORMAT, *PPIXELFORMAT;
  60. /******************************************************************************/
  61. /* The RGBFRAMECAPTUREDFN function is an application-defined callback function
  62.  * used with RGBSetFrameCapturedFn. The RGB SDK calls this function when a frame
  63.  * of RGB data has been captured.
  64.  *
  65.  * The pBitmapInfo and pBitmapBits pointers will be NULL when DirectDMA has been
  66.  * enabled. This is because the RGB data is not available as it has been
  67.  * transfered by DMA directly from the RGB capture card to the Display card. */
  68. typedef void (RGBCBKAPI RGBFRAMECAPTUREDFN) (
  69.    HWND                 hWnd,          /* Handle to the RGB Window. */
  70.    HRGB                 hRGB,          /* Handle to the RGB Capture. */
  71.    LPBITMAPINFOHEADER   pBitmapInfo,   /* Pointer to a BITMAPINFOHEADER structure. */
  72.    void                 *pBitmapBits,  /* Pointer to the bitmap bits. */
  73.    unsigned long        userData );    /* Application defined context. */
  74. typedef RGBFRAMECAPTUREDFN *PRGBFRAMECAPTUREDFN;
  75. /******************************************************************************/
  76. /* The RGBMODECHANGEDFN function is an application-defined callback function
  77.  * used with RGBSetModeChangedFn. The RGB SDK calls this function when a new
  78.  * video mode has been detected. */
  79. typedef struct
  80. {
  81.    unsigned long  Size;                /* Size of this structure. */
  82.    unsigned long  RefreshRate;         /* The horizontal refresh rate in Hertz. */
  83.    unsigned long  LineRate;            /* The vertical line rate in Hertz. */
  84.    unsigned long  TotalNumberOfLines;  /* The total number of lines. */
  85.    long           BInterlaced;         /* A boolean indicating an interlaced
  86.                                           mode has been detected. */
  87.    long           BDVI;                /* A boolean indicating a DVI mode has
  88.                                           been detected. */
  89. }  RGBMODECHANGEDINFO, *PRGBMODECHANGEDINFO;
  90. typedef void (RGBCBKAPI RGBMODECHANGEDFN)  (
  91.    HWND                 hWnd,                /* Handle to the RGB Window. */
  92.    HRGB                 hRGB,                /* Handle to the RGB Capture. */
  93.    PRGBMODECHANGEDINFO  pModeChangedInfo,    /* Pointer to a RGBMODECHANGEDINFO
  94.                                                 structure. */
  95.    unsigned long        userData );          /* Application defined context. */
  96. typedef RGBMODECHANGEDFN   *PRGBMODECHANGEDFN;
  97. /******************************************************************************/
  98. /* The RGBMODEINFO structure is filled by RGBGetModeInfo. It describes the 
  99.  * current mode being captured. If State is RGB_STATE_CAPTURING then all the 
  100.  * fields are valid. If State is RGB_STATE_NOSIGNAL then RefreshRate, LineRate,
  101.  * TotalNumberOfLines, BInterlaced and BDVI are all invalid. If State is 
  102.  * RGB_STATE_INVALIDSIGNAL RefreshRate and LineRate contain the out of range
  103.  * frequencies, and BDVI indicates whether the signal is DVI. */
  104. typedef struct
  105. {
  106.    unsigned long  Size;                /* Size of this structure. */
  107.    CAPTURESTATE   State;               /* The state of the capture. */
  108.    unsigned long  RefreshRate;         /* The horizontal refresh rate in Hertz. */
  109.    unsigned long  LineRate;            /* The vertical line rate in Hertz. */
  110.    unsigned long  TotalNumberOfLines;  /* The total number of lines. */
  111.    long           BInterlaced;         /* A boolean indicating an interlaced
  112.                                           mode has been detected. */
  113.    long           BDVI;                /* A boolean indicating a DVI mode has
  114.                                           been detected. */
  115. }  RGBMODEINFO, *PRGBMODEINFO;
  116. /******************************************************************************/
  117. /* The RGBNOSIGNALFN function is an application-defined callback function
  118.  * used with RGBSetNoSignalFn. The RGB SDK calls this function when a video
  119.  * signal cannot be detected. */
  120. typedef void (RGBCBKAPI RGBNOSIGNALFN) (
  121.    HWND           hWnd,                /* Handle to the RGB Window. */
  122.    HRGB           hRGB,                /* Handle to the RGB Capture. */
  123.    unsigned long  userData );          /* Application defined context. */
  124. typedef RGBNOSIGNALFN  *PRGBNOSIGNALFN;
  125. /* The RGBDRAWNOSIGNALFN function is an application defined callback function
  126.  * used with RGBSetDrawNoSignalFn. The RGB SDK calls this function to draw the
  127.  * window when a video signal cannot be detected. */
  128. typedef void (RGBCBKAPI RGBDRAWNOSIGNALFN) (
  129.    HWND           hWnd,
  130.    HRGB           hRGB,
  131.    HDC            hDC,
  132.    unsigned long  userData );
  133. typedef RGBDRAWNOSIGNALFN  *PRGBDRAWNOSIGNALFN;
  134. /******************************************************************************/
  135. /* The RGBINVALIDSIGNALFN function is an application-defined callback function
  136.  * used with RGBSetInvalidSignalFn. The RGB SDK calls this function when a video
  137.  * signal beyond the capabilities of the hardware is detected. */
  138. typedef void (RGBCBKAPI RGBINVALIDSIGNALFN) (
  139.    HWND           hWnd,                /* Handle to the RGB Window. */
  140.    HRGB           hRGB,                /* Handle to the RGB Capture. */
  141.    unsigned long  horClock,
  142.    unsigned long  verClock,
  143.    unsigned long  userData );          /* Application defined context. */
  144. typedef RGBINVALIDSIGNALFN *PRGBINVALIDSIGNALFN;
  145. /* The RGBDRAWINVALIDSIGNALFN function is an application defined callback
  146.  * function used with RGBSetDrawInvalidSignalFn. The RGB SDK calls
  147.  * this function to draw the window when a video signal is invalid. */
  148. typedef void (RGBCBKAPI RGBDRAWINVALIDSIGNALFN) (
  149.    HWND           hWnd,
  150.    HRGB           hRGB,
  151.    HDC            hDC,
  152.    unsigned long  horClock,
  153.    unsigned long  verClock,
  154.    unsigned long  userData );
  155. typedef RGBDRAWINVALIDSIGNALFN   *PRGBDRAWINVALIDSIGNALFN;
  156. /******************************************************************************/
  157. typedef void (RGBCBKAPI RGBERRORFN) (
  158.    HWND           hWnd,                /* Handle to the RGB Window. */
  159.    HRGB           hRGB,                /* Handle to the RGB Capture. */
  160.    unsigned long  error,               /* The error. */
  161.    unsigned long  userData,            /* Application defined context. */
  162.    unsigned long  *pReserved );
  163. typedef RGBERRORFN *PRGBERRORFN;
  164. /******************************************************************************/
  165. /* The RGBVALUECHANGEDFN function is an application-defined callback function
  166.  * used with RGBSetModeValueChangedFn. The RGB SDK calls this function when a
  167.  * value new video mode has been detected. */
  168. typedef struct
  169. {
  170.    long        BChanged;      /* Flag to indicate that value has changed. */
  171.    signed long Value;         /* The new signed value. */
  172. }  SIGNEDVALUE;
  173. typedef struct
  174. {
  175.    long           BChanged;   /* Flag to indicate that value has changed. */
  176.    unsigned long  Value;      /* The new unsigned value. */
  177. }  UNSIGNEDVALUE;
  178. typedef struct
  179. {
  180.    unsigned long  Size;                /* Size of this structure. */
  181.    SIGNEDVALUE    HorPosition;         /* Horizontal Position. */
  182.    UNSIGNEDVALUE  HorScale;            /* Horizontal Scale. */
  183.    UNSIGNEDVALUE  VerPosition;         /* Vertical Position. */
  184.    SIGNEDVALUE    CaptureWidth;        /* Capture Width. */
  185.    UNSIGNEDVALUE  CaptureHeight;       /* Capture Height. */
  186.    SIGNEDVALUE    Brightness;          /* Brightness. */
  187.    SIGNEDVALUE    Contrast;            /* Contrast. */
  188.    SIGNEDVALUE    BlackLevel;          /* Black level. */
  189.    SIGNEDVALUE    Phase;               /* Phase. */
  190.    UNSIGNEDVALUE  RedGain;             /* RedGain. */
  191.    UNSIGNEDVALUE  GreenGain;           /* GreenGain. */
  192.    UNSIGNEDVALUE  BlueGain;            /* BlueGain. */
  193.    UNSIGNEDVALUE  RedOffset;           /* RedOffset. */
  194.    UNSIGNEDVALUE  GreenOffset;         /* GreenOffset. */
  195.    UNSIGNEDVALUE  BlueOffset;          /* BlueOffset. */
  196. }  RGBVALUECHANGEDINFO, *PRGBVALUECHANGEDINFO;
  197. typedef void (RGBCBKAPI RGBVALUECHANGEDFN)  (
  198.    HWND                 hWnd,                /* Handle to the RGB Window. */
  199.    HRGB                 hRGB,                /* Handle to the RGB Capture. */
  200.    PRGBVALUECHANGEDINFO pValueChangedInfo,   /* Pointer to a RGBVALUECHANGEDINFO
  201.                                                 structure. */
  202.    unsigned long        userData );          /* Application defined context. */
  203. typedef RGBVALUECHANGEDFN   *PRGBVALUECHANGEDFN;
  204. /******************************************************************************/
  205. #define RGB_ERROR_BASE                             0x01160000
  206. #define RGB_ERROR_UNKNOWN                          ( RGB_ERROR_BASE + 0x0000 )
  207. #define RGB_ERROR_OUTOFRANGE                       ( RGB_ERROR_BASE + 0x0001 )
  208. #define RGB_ERROR_INVALIDINPUT                     ( RGB_ERROR_BASE + 0x0002 )
  209. #define RGB_ERROR_WINDOWINUSE                      ( RGB_ERROR_BASE + 0x0003 )
  210. #define RGB_ERROR_DETECTVIDEOMODE                  ( RGB_ERROR_BASE + 0x0005 )
  211. #define RGB_ERROR_INVALIDBUFFER                    ( RGB_ERROR_BASE + 0x0006 )
  212. #define RGB_ERROR_INVALIDHANDLE                    ( RGB_ERROR_BASE + 0x0007 )
  213. /******************************************************************************/
  214. #include <poppack.h>
  215. /******************************************************************************/
  216. #endif //_RGB_H_
  217. /******************************************************************************/