home *** CD-ROM | disk | FTP | other *** search
/ POINT Software Programming / PPROG1.ISO / misc / vfwdk / inc / msvideo.h < prev   
C/C++ Source or Header  |  1993-01-28  |  11KB  |  247 lines

  1. /****************************************************************************/
  2. /*                                                                          */
  3. /*        MSVIDEO.H - Include file for Video APIs                           */
  4. /*                                                                          */
  5. /*        Note: You must include WINDOWS.H before including this file.      */
  6. /*                                                                          */
  7. /*        Copyright (c) 1990-1993, Microsoft Corp.  All rights reserved.    */
  8. /*                                                                          */
  9. /****************************************************************************/
  10.  
  11. #ifndef _INC_MSVIDEO
  12. #define _INC_MSVIDEO    50    /* version number */
  13.  
  14. #ifdef __cplusplus
  15. extern "C" {            /* Assume C declarations for C++ */
  16. #endif    /* __cplusplus */
  17.  
  18. #ifndef _RCINVOKED
  19.  
  20. #ifdef BUILDDLL                         /* ;Internal */
  21. #undef WINAPI                           /* ;Internal */
  22. #define WINAPI FAR PASCAL _loadds       /* ;Internal */
  23. #endif                                  /* ;Internal */
  24.  
  25. /* video data types */
  26. DECLARE_HANDLE(HVIDEO);                 // generic handle
  27. typedef HVIDEO FAR * LPHVIDEO;
  28. #endif                                  // ifndef RCINVOKED
  29.  
  30. /****************************************************************************
  31.  
  32.                         version api
  33.  
  34. ****************************************************************************/
  35.  
  36. DWORD FAR PASCAL VideoForWindowsVersion(void);
  37.  
  38. /****************************************************************************
  39.  
  40.                             Error Return Values
  41.  
  42. ****************************************************************************/
  43. #define DV_ERR_OK               (0)                  /* No error */
  44. #define DV_ERR_BASE             (1)                  /* Error Base */
  45. #define DV_ERR_NONSPECIFIC      (DV_ERR_BASE)
  46. #define DV_ERR_BADFORMAT        (DV_ERR_BASE + 1)    
  47.                 /* unsupported video format */
  48. #define DV_ERR_STILLPLAYING     (DV_ERR_BASE + 2)    
  49.                 /* still something playing */
  50. #define DV_ERR_UNPREPARED       (DV_ERR_BASE + 3)    
  51.                 /* header not prepared */
  52. #define DV_ERR_SYNC             (DV_ERR_BASE + 4)    
  53.                 /* device is synchronous */
  54. #define DV_ERR_TOOMANYCHANNELS  (DV_ERR_BASE + 5)    
  55.                 /* number of channels exceeded */
  56. #define DV_ERR_NOTDETECTED    (DV_ERR_BASE + 6)    /* HW not detected */
  57. #define DV_ERR_BADINSTALL    (DV_ERR_BASE + 7)    /* Can not get Profile */
  58. #define DV_ERR_CREATEPALETTE    (DV_ERR_BASE + 8)
  59. #define DV_ERR_SIZEFIELD    (DV_ERR_BASE + 9)
  60. #define DV_ERR_PARAM1        (DV_ERR_BASE + 10)
  61. #define DV_ERR_PARAM2        (DV_ERR_BASE + 11)
  62. #define DV_ERR_CONFIG1        (DV_ERR_BASE + 12)
  63. #define DV_ERR_CONFIG2        (DV_ERR_BASE + 13)
  64. #define DV_ERR_FLAGS        (DV_ERR_BASE + 14)
  65. #define DV_ERR_13        (DV_ERR_BASE + 15)
  66.  
  67. #define DV_ERR_NOTSUPPORTED     (DV_ERR_BASE + 16)   /* function not suported */
  68. #define DV_ERR_NOMEM            (DV_ERR_BASE + 17)   /* out of memory */
  69. #define DV_ERR_ALLOCATED        (DV_ERR_BASE + 18)   /* device is allocated */
  70. #define DV_ERR_BADDEVICEID      (DV_ERR_BASE + 19)
  71. #define DV_ERR_INVALHANDLE      (DV_ERR_BASE + 20)
  72. #define DV_ERR_BADERRNUM        (DV_ERR_BASE + 21)
  73. #define DV_ERR_NO_BUFFERS       (DV_ERR_BASE + 22)   /* out of buffers */
  74.  
  75. #define DV_ERR_MEM_CONFLICT     (DV_ERR_BASE + 23)   /* Mem conflict detected */
  76. #define DV_ERR_IO_CONFLICT      (DV_ERR_BASE + 24)   /* I/O conflict detected */
  77. #define DV_ERR_DMA_CONFLICT     (DV_ERR_BASE + 25)   /* DMA conflict detected */
  78. #define DV_ERR_INT_CONFLICT     (DV_ERR_BASE + 26)   /* Interrupt conflict detected */
  79. #define DV_ERR_PROTECT_ONLY     (DV_ERR_BASE + 27)   /* Can not run in standard mode */
  80. #define DV_ERR_LASTERROR        (DV_ERR_BASE + 27)
  81.  
  82. #define DV_ERR_USER_MSG         (DV_ERR_BASE + 1000) /* Hardware specific errors */
  83.  
  84. /****************************************************************************
  85.  
  86.                          Callback Messages
  87.  
  88. Note that the values for all installable driver callback messages are
  89. identical, (ie. MM_DRVM_DATA has the same value for capture drivers,
  90. installable video codecs, and the audio compression manager).  
  91. ****************************************************************************/
  92. #ifndef _RCINVOKED
  93.  
  94. #ifndef MM_DRVM_OPEN
  95. #define MM_DRVM_OPEN       0x3D0
  96. #define MM_DRVM_CLOSE      0x3D1
  97. #define MM_DRVM_DATA       0x3D2
  98. #define MM_DRVM_ERROR      0x3D3
  99. #endif
  100.  
  101. #define DV_VM_OPEN         MM_DRVM_OPEN         // Obsolete messages
  102. #define DV_VM_CLOSE        MM_DRVM_CLOSE
  103. #define DV_VM_DATA         MM_DRVM_DATA 
  104. #define DV_VM_ERROR        MM_DRVM_ERROR
  105.  
  106. /****************************************************************************
  107.  
  108.                          Structures                        
  109.  
  110. ****************************************************************************/
  111. /* video data block header */
  112. typedef struct videohdr_tag {
  113.     LPSTR       lpData;                 /* pointer to locked data buffer */
  114.     DWORD       dwBufferLength;         /* Length of data buffer */
  115.     DWORD       dwBytesUsed;            /* Bytes actually used */
  116.     DWORD       dwTimeCaptured;         /* Milliseconds from start of stream */
  117.     DWORD       dwUser;                 /* for client's use */
  118.     DWORD       dwFlags;                /* assorted flags (see defines) */
  119.     DWORD       dwReserved[4];          /* reserved for driver */
  120. } VIDEOHDR, NEAR *PVIDEOHDR, FAR * LPVIDEOHDR;
  121.  
  122. /* dwFlags field of VIDEOHDR */
  123. #define VHDR_DONE       0x00000001  /* Done bit */
  124. #define VHDR_PREPARED   0x00000002  /* Set if this header has been prepared */
  125. #define VHDR_INQUEUE    0x00000004  /* Reserved for driver */
  126. #define VHDR_KEYFRAME   0x00000008  /* Key Frame */
  127. #define VHDR_VALID      0x0000000F  /* valid flags */     /* ;Internal */
  128.  
  129. /* Channel capabilities structure */
  130. typedef struct channel_caps_tag {
  131.     DWORD       dwFlags;                /* Capability flags*/
  132.     DWORD       dwSrcRectXMod;          /* Granularity of src rect in x */
  133.     DWORD       dwSrcRectYMod;          /* Granularity of src rect in y */
  134.     DWORD       dwSrcRectWidthMod;      /* Granularity of src rect width */
  135.     DWORD       dwSrcRectHeightMod;     /* Granularity of src rect height */
  136.     DWORD       dwDstRectXMod;          /* Granularity of dst rect in x */
  137.     DWORD       dwDstRectYMod;          /* Granularity of dst rect in y */
  138.     DWORD       dwDstRectWidthMod;      /* Granularity of dst rect width */
  139.     DWORD       dwDstRectHeightMod;     /* Granularity of dst rect height */
  140. } CHANNEL_CAPS, NEAR *PCHANNEL_CAPS, FAR * LPCHANNEL_CAPS;
  141.  
  142. /* dwFlags of CHANNEL_CAPS */
  143. #define VCAPS_OVERLAY       0x00000001      /* overlay channel */
  144. #define VCAPS_SRC_CAN_CLIP  0x00000002      /* src rect can clip */
  145. #define VCAPS_DST_CAN_CLIP  0x00000004      /* dst rect can clip */
  146. #define VCAPS_CAN_SCALE     0x00000008      /* allows src != dst */
  147.  
  148. /****************************************************************************
  149.  
  150.                         video APIs
  151.  
  152. ****************************************************************************/
  153.  
  154. DWORD WINAPI videoGetNumDevs(void);
  155.  
  156. DWORD WINAPI videoOpen  (LPHVIDEO lphVideo, 
  157.               DWORD dwDevice, DWORD dwFlags);
  158. DWORD WINAPI videoClose (HVIDEO hVideo);
  159. DWORD WINAPI videoDialog(HVIDEO hVideo, HWND hWndParent, DWORD dwFlags);
  160. DWORD WINAPI videoGetChannelCaps(HVIDEO hVideo, LPCHANNEL_CAPS lpChannelCaps,
  161.                 DWORD dwSize);
  162. DWORD WINAPI videoUpdate (HVIDEO hVideo, HWND hWnd, HDC hDC);
  163. DWORD WINAPI videoConfigure (HVIDEO hVideo, UINT msg, DWORD dwFlags,
  164.         LPDWORD lpdwReturn, LPVOID lpData1, DWORD dwSize1,
  165.                 LPVOID lpData2, DWORD dwSize2);
  166. DWORD WINAPI videoConfigureStorage (HVIDEO hVideo, 
  167.             LPSTR lpstrIdent, DWORD dwFlags);
  168. DWORD WINAPI videoFrame(HVIDEO hVideo, LPVIDEOHDR lpVHdr);
  169. DWORD WINAPI videoMessage(HVIDEO hVideo, UINT msg, DWORD dwP1, DWORD dwP2);
  170.  
  171. /* streaming APIs */
  172. DWORD WINAPI videoStreamAddBuffer(HVIDEO hVideo,
  173.               LPVIDEOHDR lpVHdr, DWORD dwSize);
  174. DWORD WINAPI videoStreamGetError(HVIDEO hVideo, LPDWORD lpdwErrorFirst, 
  175.         LPDWORD lpdwErrorLast);
  176. DWORD WINAPI videoGetErrorText(HVIDEO hVideo, UINT wError, 
  177.             LPSTR lpText, UINT wSize);
  178. DWORD WINAPI videoStreamGetPosition(HVIDEO hVideo, MMTIME FAR* lpInfo,
  179.               DWORD dwSize);
  180. DWORD WINAPI videoStreamInit(HVIDEO hVideo,
  181.               DWORD dwMicroSecPerFrame, DWORD dwCallback, 
  182.               DWORD dwCallbackInst, DWORD dwFlags);
  183. DWORD WINAPI videoStreamFini(HVIDEO hVideo);
  184. DWORD WINAPI videoStreamPrepareHeader(HVIDEO hVideo,
  185.               LPVIDEOHDR lpVHdr, DWORD dwSize);
  186. DWORD WINAPI videoStreamReset(HVIDEO hVideo);
  187. DWORD WINAPI videoStreamStart(HVIDEO hVideo);
  188. DWORD WINAPI videoStreamStop(HVIDEO hVideo);
  189. DWORD WINAPI videoStreamUnprepareHeader(HVIDEO hVideo,
  190.               LPVIDEOHDR lpVHdr, DWORD dwSize);
  191.  
  192.       
  193. /****************************************************************************
  194.  
  195.             API Flags
  196.  
  197. ****************************************************************************/
  198.  
  199. // Types of channels to open with the videoOpen function
  200. #define VIDEO_EXTERNALIN        0x0001
  201. #define VIDEO_EXTERNALOUT        0x0002
  202. #define VIDEO_IN            0x0004
  203. #define VIDEO_OUT            0x0008
  204.  
  205. // Is a driver dialog available for this channel?
  206. #define VIDEO_DLG_QUERY            0x0010
  207.  
  208. // videoConfigure (both GET and SET)
  209. #define VIDEO_CONFIGURE_QUERY       0x8000
  210.  
  211. // videoConfigure (SET only)
  212. #define VIDEO_CONFIGURE_SET        0x1000
  213.  
  214. // videoConfigure (GET only)
  215. #define VIDEO_CONFIGURE_GET        0x2000
  216. #define VIDEO_CONFIGURE_QUERYSIZE    0x0001
  217.  
  218. #define VIDEO_CONFIGURE_CURRENT        0x0010
  219. #define VIDEO_CONFIGURE_NOMINAL        0x0020
  220. #define VIDEO_CONFIGURE_MIN        0x0040
  221. #define VIDEO_CONFIGURE_MAX        0x0080
  222.       
  223.  
  224. /****************************************************************************
  225.  
  226.             CONFIGURE MESSAGES
  227.  
  228. ****************************************************************************/
  229. #define DVM_USER                        0X4000
  230.  
  231. #define DVM_CONFIGURE_START        0x1000
  232. #define DVM_CONFIGURE_END        0x1FFF
  233.  
  234. #define DVM_PALETTE            (DVM_CONFIGURE_START + 1)
  235. #define DVM_FORMAT            (DVM_CONFIGURE_START + 2) 
  236. #define DVM_PALETTERGB555        (DVM_CONFIGURE_START + 3) 
  237. #define DVM_SRC_RECT            (DVM_CONFIGURE_START + 4) 
  238. #define DVM_DST_RECT            (DVM_CONFIGURE_START + 5) 
  239.  
  240. #endif  /* ifndef _RCINVOKED */
  241.  
  242. #ifdef __cplusplus
  243. }                       /* End of extern "C" { */
  244. #endif    /* __cplusplus */
  245.  
  246. #endif  /* _INC_MSVIDEO */
  247.