Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

223 lines
7.5 KiB

  1. /****************************************************************************
  2. *
  3. * AVIIFACE.H
  4. *
  5. * Interface definitions for AVIFile
  6. *
  7. * Copyright (c) 1992, 1993 Microsoft Corporation. All Rights Reserved.
  8. *
  9. * You have a royalty-free right to use, modify, reproduce and
  10. * distribute the Sample Files (and/or any modified version) in
  11. * any way you find useful, provided that you agree that
  12. * Microsoft has no warranty obligations or liability for any
  13. * Sample Application Files which are modified.
  14. *
  15. ***************************************************************************/
  16. #include <compobj.h>
  17. #ifndef RIID
  18. #if defined(__cplusplus)
  19. #define RIID IID FAR&
  20. #define RCLSID CLSID FAR&
  21. #else
  22. #define RIID IID FAR*
  23. #define RCLSID CLSID FAR*
  24. #endif
  25. #endif
  26. /* - - - - - - - - */
  27. /****** AVI Stream Interface *******************************************/
  28. #undef INTERFACE
  29. #define INTERFACE IAVIStream
  30. DECLARE_INTERFACE_(IAVIStream, IUnknown)
  31. {
  32. // *** IUnknown methods ***
  33. STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  34. STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  35. STDMETHOD_(ULONG,Release) (THIS) PURE;
  36. // *** IAVIStream methods ***
  37. STDMETHOD(Create) (THIS_ LPARAM lParam1, LPARAM lParam2) PURE ;
  38. STDMETHOD(Info) (THIS_ AVISTREAMINFO FAR * psi, LONG lSize) PURE ;
  39. STDMETHOD_(LONG, FindSample)(THIS_ LONG lPos, LONG lFlags) PURE ;
  40. STDMETHOD(ReadFormat) (THIS_ LONG lPos,
  41. LPVOID lpFormat, LONG FAR *lpcbFormat) PURE ;
  42. STDMETHOD(SetFormat) (THIS_ LONG lPos,
  43. LPVOID lpFormat, LONG cbFormat) PURE ;
  44. STDMETHOD(Read) (THIS_ LONG lStart, LONG lSamples,
  45. LPVOID lpBuffer, LONG cbBuffer,
  46. LONG FAR * plBytes, LONG FAR * plSamples) PURE ;
  47. STDMETHOD(Write) (THIS_ LONG lStart, LONG lSamples,
  48. LPVOID lpBuffer, LONG cbBuffer,
  49. DWORD dwFlags,
  50. LONG FAR *plSampWritten,
  51. LONG FAR *plBytesWritten) PURE ;
  52. STDMETHOD(Delete) (THIS_ LONG lStart, LONG lSamples) PURE;
  53. STDMETHOD(ReadData) (THIS_ DWORD fcc, LPVOID lp, LONG FAR *lpcb) PURE ;
  54. STDMETHOD(WriteData) (THIS_ DWORD fcc, LPVOID lp, LONG cb) PURE ;
  55. STDMETHOD(Reserved1) (THIS) PURE;
  56. STDMETHOD(Reserved2) (THIS) PURE;
  57. STDMETHOD(Reserved3) (THIS) PURE;
  58. STDMETHOD(Reserved4) (THIS) PURE;
  59. STDMETHOD(Reserved5) (THIS) PURE;
  60. };
  61. typedef IAVIStream FAR* PAVISTREAM;
  62. #undef INTERFACE
  63. #define INTERFACE IAVIStreaming
  64. DECLARE_INTERFACE_(IAVIStreaming, IUnknown)
  65. {
  66. // *** IUnknown methods ***
  67. STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  68. STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  69. STDMETHOD_(ULONG,Release) (THIS) PURE;
  70. // *** IAVIStreaming methods ***
  71. STDMETHOD(Begin) (THIS_
  72. LONG lStart, // start of what we expect
  73. // to play
  74. LONG lEnd, // expected end, or -1
  75. LONG lRate) PURE; // Should this be a float?
  76. STDMETHOD(End) (THIS) PURE;
  77. };
  78. typedef IAVIStreaming FAR* PAVISTREAMING;
  79. #undef INTERFACE
  80. #define INTERFACE IAVIEditStream
  81. DECLARE_INTERFACE_(IAVIEditStream, IUnknown)
  82. {
  83. // *** IUnknown methods ***
  84. STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  85. STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  86. STDMETHOD_(ULONG,Release) (THIS) PURE;
  87. // *** IAVIEditStream methods ***
  88. STDMETHOD(Cut) (THIS_ LONG FAR *plStart,
  89. LONG FAR *plLength,
  90. PAVISTREAM FAR * ppResult) PURE;
  91. STDMETHOD(Copy) (THIS_ LONG FAR *plStart,
  92. LONG FAR *plLength,
  93. PAVISTREAM FAR * ppResult) PURE;
  94. STDMETHOD(Paste) (THIS_ LONG FAR *plPos,
  95. LONG FAR *plLength,
  96. PAVISTREAM pstream,
  97. LONG lStart,
  98. LONG lEnd) PURE;
  99. STDMETHOD(Clone) (THIS_ PAVISTREAM FAR *ppResult) PURE;
  100. STDMETHOD(SetInfo) (THIS_ AVISTREAMINFO FAR * lpInfo,
  101. LONG cbInfo) PURE;
  102. };
  103. typedef IAVIEditStream FAR* PAVIEDITSTREAM;
  104. /****** AVI File Interface *******************************************/
  105. #undef INTERFACE
  106. #define INTERFACE IAVIFile
  107. #define PAVIFILE IAVIFile FAR*
  108. DECLARE_INTERFACE_(IAVIFile, IUnknown)
  109. {
  110. // *** IUnknown methods ***
  111. STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  112. STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  113. STDMETHOD_(ULONG,Release) (THIS) PURE;
  114. // *** IAVIFile methods ***
  115. STDMETHOD(Open) (THIS_
  116. LPCTSTR szFile,
  117. UINT mode) PURE;
  118. STDMETHOD(Info) (THIS_
  119. AVIFILEINFO FAR * pfi,
  120. LONG lSize) PURE;
  121. STDMETHOD(GetStream) (THIS_
  122. PAVISTREAM FAR * ppStream,
  123. DWORD fccType,
  124. LONG lParam) PURE;
  125. STDMETHOD(CreateStream) (THIS_
  126. PAVISTREAM FAR * ppStream,
  127. AVISTREAMINFO FAR * psi) PURE;
  128. STDMETHOD(Save) (THIS_
  129. LPCTSTR szFile,
  130. AVICOMPRESSOPTIONS FAR *lpOptions,
  131. AVISAVECALLBACK lpfnCallback) PURE;
  132. STDMETHOD(WriteData) (THIS_
  133. DWORD ckid,
  134. LPVOID lpData,
  135. LONG cbData) PURE;
  136. STDMETHOD(ReadData) (THIS_
  137. DWORD ckid,
  138. LPVOID lpData,
  139. LONG FAR *lpcbData) PURE;
  140. STDMETHOD(EndRecord) (THIS) PURE;
  141. STDMETHOD(Reserved1) (THIS) PURE;
  142. STDMETHOD(Reserved2) (THIS) PURE;
  143. STDMETHOD(Reserved3) (THIS) PURE;
  144. STDMETHOD(Reserved4) (THIS) PURE;
  145. STDMETHOD(Reserved5) (THIS) PURE;
  146. };
  147. #undef PAVIFILE
  148. typedef IAVIFile FAR* PAVIFILE;
  149. /****** GetFrame Interface *******************************************/
  150. #undef INTERFACE
  151. #define INTERFACE IGetFrame
  152. #define PGETFRAME IGetFrame FAR*
  153. DECLARE_INTERFACE_(IGetFrame, IUnknown)
  154. {
  155. // *** IUnknown methods ***
  156. STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID FAR* ppvObj) PURE;
  157. STDMETHOD_(ULONG,AddRef) (THIS) PURE;
  158. STDMETHOD_(ULONG,Release) (THIS) PURE;
  159. // *** IGetFrame methods ***
  160. STDMETHOD_(LPVOID,GetFrame) (THIS_ LONG lPos) PURE;
  161. // STDMETHOD_(LPVOID,GetFrameData) (THIS_ LONG lPos) PURE;
  162. STDMETHOD(Begin) (THIS_ LONG lStart, LONG lEnd, LONG lRate) PURE;
  163. STDMETHOD(End) (THIS) PURE;
  164. STDMETHOD(SetFormat) (THIS_ LPBITMAPINFOHEADER lpbi, LPVOID lpBits, int x, int y, int dx, int dy) PURE;
  165. // STDMETHOD(DrawFrameStart) (THIS) PURE;
  166. // STDMETHOD(DrawFrame) (THIS_ LONG lPos, HDC hdc, int x, int y, int dx, int dy) PURE;
  167. // STDMETHOD(DrawFrameEnd) (THIS) PURE;
  168. };
  169. #undef PGETFRAME
  170. typedef IGetFrame FAR* PGETFRAME;
  171. /****** GUIDs *******************************************/
  172. #define DEFINE_AVIGUID(name, l, w1, w2) \
  173. DEFINE_GUID(name, l, w1, w2, 0xC0,0,0,0,0,0,0,0x46)
  174. DEFINE_AVIGUID(IID_IAVIFile, 0x00020020, 0, 0);
  175. DEFINE_AVIGUID(IID_IAVIStream, 0x00020021, 0, 0);
  176. DEFINE_AVIGUID(IID_IAVIStreaming, 0x00020022, 0, 0);
  177. DEFINE_AVIGUID(IID_IGetFrame, 0x00020023, 0, 0);
  178. DEFINE_AVIGUID(IID_IAVIEditStream, 0x00020024, 0, 0);
  179. DEFINE_AVIGUID(CLSID_AVISimpleUnMarshal, 0x00020009, 0, 0);
  180. #define AVIFILEHANDLER_CANREAD 0x0001
  181. #define AVIFILEHANDLER_CANWRITE 0x0002
  182. #define AVIFILEHANDLER_CANACCEPTNONRGB 0x0004