home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / mmstream.idl < prev    next >
Text File  |  1998-04-25  |  5KB  |  182 lines

  1. //      MMSTREAM.IDL
  2. //      Multi media streaming interface IDL file
  3.  
  4. import "unknwn.idl";
  5.  
  6. cpp_quote("#define MS_ERROR_CODE(x) MAKE_HRESULT(1, FACILITY_ITF, (x) + 0x400)")
  7. cpp_quote("#define MS_SUCCESS_CODE(x) MAKE_HRESULT(0, FACILITY_ITF, x)")
  8. cpp_quote("#define MS_S_PENDING                     MS_SUCCESS_CODE(1)")
  9. cpp_quote("#define MS_S_NOUPDATE                     MS_SUCCESS_CODE(2)")
  10. cpp_quote("#define MS_S_ENDOFSTREAM                 MS_SUCCESS_CODE(3)")
  11.  
  12. cpp_quote("#define MS_E_SAMPLEALLOC                  MS_ERROR_CODE(1)")
  13. cpp_quote("#define MS_E_PURPOSEID                 MS_ERROR_CODE(2)")
  14. cpp_quote("#define MS_E_NOSTREAM                 MS_ERROR_CODE(3)")
  15. cpp_quote("#define MS_E_NOSEEKING                 MS_ERROR_CODE(4)")
  16. cpp_quote("#define MS_E_INCOMPATIBLE                 MS_ERROR_CODE(5)")
  17. cpp_quote("#define MS_E_BUSY                     MS_ERROR_CODE(6)")
  18. cpp_quote("#define MS_E_NOTINIT                     MS_ERROR_CODE(7)")
  19. cpp_quote("#define MS_E_SOURCEALREADYDEFINED         MS_ERROR_CODE(8)")
  20. cpp_quote("#define MS_E_INVALIDSTREAMTYPE            MS_ERROR_CODE(9)")
  21. cpp_quote("#define MS_E_NOTRUNNING                   MS_ERROR_CODE(10)")
  22.  
  23. cpp_quote("// {A35FF56A-9FDA-11d0-8FDF-00C04FD9189D}")
  24. cpp_quote("DEFINE_GUID(MSPID_PrimaryVideo, ")
  25. cpp_quote("0xa35ff56a, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")
  26.  
  27. cpp_quote("// {A35FF56B-9FDA-11d0-8FDF-00C04FD9189D}")
  28. cpp_quote("DEFINE_GUID(MSPID_PrimaryAudio,")
  29. cpp_quote("0xa35ff56b, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")
  30.  
  31. typedef void (__stdcall * PAPCFUNC)(DWORD dwParam);
  32.  
  33. typedef LONGLONG STREAM_TIME;
  34.  
  35. typedef GUID MSPID;
  36. typedef REFGUID REFMSPID;
  37.  
  38. typedef enum {
  39.     STREAMTYPE_READ         = 0,
  40.     STREAMTYPE_WRITE        = 1,
  41.     STREAMTYPE_TRANSFORM= 2
  42. } STREAM_TYPE;
  43.  
  44. typedef enum {
  45.     STREAMSTATE_STOP        = 0,
  46.     STREAMSTATE_RUN         = 1
  47. } STREAM_STATE;
  48.  
  49.  
  50. typedef enum {
  51.     COMPSTAT_NOUPDATEOK                     = 0x00000001,
  52.     COMPSTAT_WAIT                                   = 0x00000002,
  53.     COMPSTAT_ABORT                  = 0x00000004
  54. } COMPLETION_STATUS_FLAGS;
  55.  
  56. //  Flags for GetInformation
  57. enum {
  58.     MMSSF_HASCLOCK                                  = 0x00000001,
  59.     MMSSF_SUPPORTSEEK                               = 0x00000002,
  60.     MMSSF_ASYNCHRONOUS                              = 0x00000004
  61. };
  62.  
  63. //  Flags for StreamSample::Update
  64. enum {
  65.         SSUPDATE_ASYNC              = 0x00000001,
  66.         SSUPDATE_CONTINUOUS                     = 0x00000002
  67. };
  68.  
  69. interface IMultiMediaStream;
  70. interface IMediaStream;
  71. interface IStreamSample;
  72.  
  73. // IMultiMediaStream interface
  74. [
  75. object,
  76. local,
  77. uuid(B502D1BC-9A57-11d0-8FDE-00C04FD9189D),
  78. pointer_default(unique)
  79. ]
  80. interface IMultiMediaStream : IUnknown {
  81.  
  82.     HRESULT GetInformation(
  83.         [out] [optional] DWORD *pdwFlags,
  84.         [out] [optional] STREAM_TYPE *pStreamType);
  85.  
  86.     HRESULT GetMediaStream(
  87.         [in] REFMSPID idPurpose,
  88.         [out] IMediaStream **ppMediaStream);
  89.  
  90.     HRESULT EnumMediaStreams(
  91.         [in] long Index,
  92.         [out] IMediaStream **ppMediaStream);
  93.  
  94.     HRESULT GetState(
  95.         [out] STREAM_STATE *pCurrentState);
  96.  
  97.     HRESULT SetState(
  98.         [in] STREAM_STATE NewState);
  99.  
  100.     HRESULT GetTime(
  101.         [out] STREAM_TIME *pCurrentTime);
  102.  
  103.     HRESULT GetDuration(
  104.         [out] STREAM_TIME *pDuration);
  105.  
  106.     HRESULT Seek(
  107.         [in] STREAM_TIME SeekTime);
  108.  
  109.     HRESULT GetEndOfStreamEventHandle(
  110.         [out] HANDLE *phEOS);
  111. };
  112.  
  113.  
  114. // IMediaStream interface
  115. [
  116. object,
  117. uuid(B502D1BD-9A57-11d0-8FDE-00C04FD9189D),
  118. pointer_default(unique)
  119. ]
  120. interface IMediaStream : IUnknown {
  121.     
  122.     HRESULT GetMultiMediaStream(
  123.         [out] IMultiMediaStream **ppMultiMediaStream);
  124.  
  125.     HRESULT GetInformation(
  126.         [out] [optional] MSPID *pPurposeId,
  127.         [out] [optional] STREAM_TYPE *pType);
  128.  
  129.         HRESULT SetSameFormat(
  130.                 [in] IMediaStream *pStreamThatHasDesiredFormat,
  131.                 [in] DWORD dwFlags);
  132.  
  133.     HRESULT AllocateSample(
  134.                 [in]  DWORD dwFlags,
  135.         [out] IStreamSample **ppSample);
  136.                
  137.  
  138.     HRESULT CreateSharedSample(
  139.         [in]  IStreamSample *pExistingSample,
  140.                 [in]  DWORD dwFlags,
  141.         [out] IStreamSample **ppNewSample);
  142.  
  143.         HRESULT SendEndOfStream(DWORD dwFlags);
  144. };
  145.  
  146.  
  147. // IStreamSample interface
  148. [
  149. object,
  150. local,
  151. uuid(B502D1BE-9A57-11d0-8FDE-00C04FD9189D),
  152. pointer_default(unique)
  153. ]
  154. interface IStreamSample : IUnknown {
  155.     
  156.     HRESULT GetMediaStream(
  157.         [in] IMediaStream **ppMediaStream);
  158.  
  159.     HRESULT GetSampleTimes(
  160.         [out] [optional] STREAM_TIME * pStartTime,
  161.         [out] [optional] STREAM_TIME * pEndTime,
  162.         [out] [optional] STREAM_TIME * pCurrentTime);
  163.  
  164.     HRESULT SetSampleTimes(
  165.         [in] [optional] const STREAM_TIME *pStartTime,
  166.         [in] [optional] const STREAM_TIME *pEndTime);
  167.  
  168.     HRESULT Update(
  169.         [in]            DWORD dwFlags,
  170.         [in] [optional] HANDLE hEvent,
  171.         [in] [optional] PAPCFUNC pfnAPC,
  172.         [in] [optional] DWORD dwAPCData);
  173.  
  174.     HRESULT CompletionStatus(
  175.         [in] DWORD dwFlags,
  176.         [in] [optional] DWORD dwMilliseconds);
  177. };
  178.  
  179.  
  180.  
  181.  
  182.