ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

mmstream.idl
Go to the documentation of this file.
00001 /*
00002  * Copyright 2004 Christian Costa
00003  *
00004  * This library is free software; you can redistribute it and/or
00005  * modify it under the terms of the GNU Lesser General Public
00006  * License as published by the Free Software Foundation; either
00007  * version 2.1 of the License, or (at your option) any later version.
00008  *
00009  * This library is distributed in the hope that it will be useful,
00010  * but WITHOUT ANY WARRANTY; without even the implied warranty of
00011  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
00012  * Lesser General Public License for more details.
00013  *
00014  * You should have received a copy of the GNU Lesser General Public
00015  * License along with this library; if not, write to the Free Software
00016  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
00017  */
00018 
00019 import "unknwn.idl";
00020 
00021 cpp_quote("#define MS_ERROR_CODE(x)                  MAKE_HRESULT(1, FACILITY_ITF, (x) + 0x400)")
00022 cpp_quote("#define MS_SUCCESS_CODE(x)                MAKE_HRESULT(0, FACILITY_ITF, x)")
00023 cpp_quote("#define MS_S_PENDING                      MS_SUCCESS_CODE(1)")
00024 cpp_quote("#define MS_S_NOUPDATE                     MS_SUCCESS_CODE(2)")
00025 cpp_quote("#define MS_S_ENDOFSTREAM                  MS_SUCCESS_CODE(3)")
00026 
00027 cpp_quote("#define MS_E_SAMPLEALLOC                  MS_ERROR_CODE(1)")
00028 cpp_quote("#define MS_E_PURPOSEID                    MS_ERROR_CODE(2)")
00029 cpp_quote("#define MS_E_NOSTREAM                     MS_ERROR_CODE(3)")
00030 cpp_quote("#define MS_E_NOSEEKING                    MS_ERROR_CODE(4)")
00031 cpp_quote("#define MS_E_INCOMPATIBLE                 MS_ERROR_CODE(5)")
00032 cpp_quote("#define MS_E_BUSY                         MS_ERROR_CODE(6)")
00033 cpp_quote("#define MS_E_NOTINIT                      MS_ERROR_CODE(7)")
00034 cpp_quote("#define MS_E_SOURCEALREADYDEFINED         MS_ERROR_CODE(8)")
00035 cpp_quote("#define MS_E_INVALIDSTREAMTYPE            MS_ERROR_CODE(9)")
00036 cpp_quote("#define MS_E_NOTRUNNING                   MS_ERROR_CODE(10)")
00037 
00038 cpp_quote("DEFINE_GUID(MSPID_PrimaryVideo,  0xa35ff56a, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")
00039 cpp_quote("DEFINE_GUID(MSPID_PrimaryAudio,  0xa35ff56b, 0x9fda, 0x11d0, 0x8f, 0xdf, 0x0, 0xc0, 0x4f, 0xd9, 0x18, 0x9d);")
00040 
00041 cpp_quote("#if 0")
00042 typedef void* PAPCFUNC;
00043 cpp_quote("#endif")
00044 
00045 typedef LONGLONG STREAM_TIME;
00046 
00047 typedef GUID MSPID;
00048 typedef REFGUID REFMSPID;
00049 
00050 typedef enum {
00051     STREAMTYPE_READ         = 0,
00052     STREAMTYPE_WRITE        = 1,
00053     STREAMTYPE_TRANSFORM    = 2
00054 } STREAM_TYPE;
00055 
00056 typedef enum {
00057     STREAMSTATE_STOP        = 0,
00058     STREAMSTATE_RUN         = 1
00059 } STREAM_STATE;
00060 
00061 
00062 typedef enum {
00063     COMPSTAT_NOUPDATEOK                             = 0x00000001,
00064     COMPSTAT_WAIT                                   = 0x00000002,
00065     COMPSTAT_ABORT                                  = 0x00000004
00066 } COMPLETION_STATUS_FLAGS;
00067 
00068 enum {
00069     MMSSF_HASCLOCK                                  = 0x00000001,
00070     MMSSF_SUPPORTSEEK                               = 0x00000002,
00071     MMSSF_ASYNCHRONOUS                              = 0x00000004
00072 };
00073 
00074 enum {
00075     SSUPDATE_ASYNC                                  = 0x00000001,
00076     SSUPDATE_CONTINUOUS                             = 0x00000002
00077 };
00078 
00079 interface IMultiMediaStream;
00080 interface IMediaStream;
00081 interface IStreamSample;
00082 
00083 
00084 [
00085 object,
00086 local,
00087 uuid(B502D1BC-9A57-11d0-8FDE-00C04FD9189D),
00088 pointer_default(unique)
00089 ]
00090 interface IMultiMediaStream : IUnknown {
00091 
00092     HRESULT GetInformation(
00093         [out, optional] DWORD *pdwFlags,
00094         [out, optional] STREAM_TYPE *pStreamType);
00095 
00096     HRESULT GetMediaStream(
00097         [in] REFMSPID idPurpose,
00098         [out] IMediaStream **ppMediaStream);
00099 
00100     HRESULT EnumMediaStreams(
00101         [in] long Index,
00102         [out] IMediaStream **ppMediaStream);
00103 
00104     HRESULT GetState(
00105         [out] STREAM_STATE *pCurrentState);
00106 
00107     HRESULT SetState(
00108         [in] STREAM_STATE NewState);
00109 
00110     HRESULT GetTime(
00111         [out] STREAM_TIME *pCurrentTime);
00112 
00113     HRESULT GetDuration(
00114         [out] STREAM_TIME *pDuration);
00115 
00116     HRESULT Seek(
00117         [in] STREAM_TIME SeekTime);
00118 
00119     HRESULT GetEndOfStreamEventHandle(
00120         [out] HANDLE *phEOS);
00121 }
00122 
00123 
00124 [
00125 object,
00126 uuid(B502D1BD-9A57-11d0-8FDE-00C04FD9189D),
00127 pointer_default(unique)
00128 ]
00129 interface IMediaStream : IUnknown {
00130     
00131     HRESULT GetMultiMediaStream(
00132         [out] IMultiMediaStream **ppMultiMediaStream);
00133 
00134     HRESULT GetInformation(
00135         [out, optional] MSPID *pPurposeId,
00136         [out, optional] STREAM_TYPE *pType);
00137 
00138     HRESULT SetSameFormat(
00139         [in] IMediaStream *pStreamThatHasDesiredFormat,
00140         [in] DWORD dwFlags);
00141 
00142     HRESULT AllocateSample(
00143         [in]  DWORD dwFlags,
00144         [out] IStreamSample **ppSample);
00145 
00146     HRESULT CreateSharedSample(
00147         [in]  IStreamSample *pExistingSample,
00148         [in]  DWORD dwFlags,
00149         [out] IStreamSample **ppNewSample);
00150 
00151     HRESULT SendEndOfStream(DWORD dwFlags);
00152 }
00153 
00154 
00155 [
00156 object,
00157 local,
00158 uuid(B502D1BE-9A57-11d0-8FDE-00C04FD9189D),
00159 pointer_default(unique)
00160 ]
00161 interface IStreamSample : IUnknown {
00162     
00163     HRESULT GetMediaStream(
00164         [in] IMediaStream **ppMediaStream);
00165 
00166     HRESULT GetSampleTimes(
00167         [out, optional] STREAM_TIME * pStartTime,
00168         [out, optional] STREAM_TIME * pEndTime,
00169         [out, optional] STREAM_TIME * pCurrentTime);
00170 
00171     HRESULT SetSampleTimes(
00172         [in, optional] const STREAM_TIME *pStartTime,
00173         [in, optional] const STREAM_TIME *pEndTime);
00174 
00175     HRESULT Update(
00176         [in] DWORD dwFlags,
00177         [in, optional] HANDLE hEvent,
00178         [in, optional] PAPCFUNC pfnAPC,
00179         [in, optional] DWORD dwAPCData);
00180 
00181     HRESULT CompletionStatus(
00182         [in] DWORD dwFlags,
00183         [in, optional] DWORD dwMilliseconds);
00184 }

Generated on Sun May 27 2012 04:30:43 for ReactOS by doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.