| /* |
| * Copyright 2012 André Hentschel |
| * |
| * This library is free software; you can redistribute it and/or |
| * modify it under the terms of the GNU Lesser General Public |
| * License as published by the Free Software Foundation; either |
| * version 2.1 of the License, or (at your option) any later version. |
| * |
| * This library is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
| * Lesser General Public License for more details. |
| * |
| * You should have received a copy of the GNU Lesser General Public |
| * License along with this library; if not, write to the Free Software |
| * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA |
| */ |
| |
| import "oaidl.idl"; |
| import "wmsbuffer.idl"; |
| /* import "drmexternals.idl"; */ |
| |
| typedef unsigned __int64 QWORD; |
| |
| typedef struct _WMMediaType |
| { |
| GUID majortype; |
| GUID subtype; |
| BOOL bFixedSizeSamples; |
| BOOL bTemporalCompression; |
| ULONG lSampleSize; |
| GUID formattype; |
| IUnknown *pUnk; |
| ULONG cbFormat; |
| [size_is(cbFormat)] BYTE *pbFormat; |
| } WM_MEDIA_TYPE; |
| |
| typedef struct _WMWriterStatistics |
| { |
| QWORD qwSampleCount; |
| QWORD qwByteCount; |
| QWORD qwDroppedSampleCount; |
| QWORD qwDroppedByteCount; |
| DWORD dwCurrentBitrate; |
| DWORD dwAverageBitrate; |
| DWORD dwExpectedBitrate; |
| DWORD dwCurrentSampleRate; |
| DWORD dwAverageSampleRate; |
| DWORD dwExpectedSampleRate; |
| } WM_WRITER_STATISTICS; |
| |
| typedef struct _WMWriterStatisticsEx |
| { |
| DWORD dwBitratePlusOverhead; |
| DWORD dwCurrentSampleDropRateInQueue; |
| DWORD dwCurrentSampleDropRateInCodec; |
| DWORD dwCurrentSampleDropRateInMultiplexer; |
| DWORD dwTotalSampleDropsInQueue; |
| DWORD dwTotalSampleDropsInCodec; |
| DWORD dwTotalSampleDropsInMultiplexer; |
| } WM_WRITER_STATISTICS_EX; |
| |
| typedef enum WMT_ATTR_DATATYPE |
| { |
| WMT_TYPE_DWORD = 0, |
| WMT_TYPE_STRING = 1, |
| WMT_TYPE_BINARY = 2, |
| WMT_TYPE_BOOL = 3, |
| WMT_TYPE_QWORD = 4, |
| WMT_TYPE_WORD = 5, |
| WMT_TYPE_GUID = 6, |
| } WMT_ATTR_DATATYPE; |
| |
| typedef enum WMT_STATUS |
| { |
| WMT_ERROR = 0, |
| WMT_OPENED = 1, |
| WMT_BUFFERING_START = 2, |
| WMT_BUFFERING_STOP = 3, |
| WMT_EOF = 4, |
| WMT_END_OF_FILE = 4, |
| WMT_END_OF_SEGMENT = 5, |
| WMT_END_OF_STREAMING = 6, |
| WMT_LOCATING = 7, |
| WMT_CONNECTING = 8, |
| WMT_NO_RIGHTS = 9, |
| WMT_MISSING_CODEC = 10, |
| WMT_STARTED = 11, |
| WMT_STOPPED = 12, |
| WMT_CLOSED = 13, |
| WMT_STRIDING = 14, |
| WMT_TIMER = 15, |
| WMT_INDEX_PROGRESS = 16, |
| WMT_SAVEAS_START = 17, |
| WMT_SAVEAS_STOP = 18, |
| WMT_NEW_SOURCEFLAGS = 19, |
| WMT_NEW_METADATA = 20, |
| WMT_BACKUPRESTORE_BEGIN = 21, |
| WMT_SOURCE_SWITCH = 22, |
| WMT_ACQUIRE_LICENSE = 23, |
| WMT_INDIVIDUALIZE = 24, |
| WMT_NEEDS_INDIVIDUALIZATION = 25, |
| WMT_NO_RIGHTS_EX = 26, |
| WMT_BACKUPRESTORE_END = 27, |
| WMT_BACKUPRESTORE_CONNECTING = 28, |
| WMT_BACKUPRESTORE_DISCONNECTING = 29, |
| WMT_ERROR_WITHURL = 30, |
| WMT_RESTRICTED_LICENSE = 31, |
| WMT_CLIENT_CONNECT = 32, |
| WMT_CLIENT_DISCONNECT = 33, |
| WMT_NATIVE_OUTPUT_PROPS_CHANGED = 34, |
| WMT_RECONNECT_START = 35, |
| WMT_RECONNECT_END = 36, |
| WMT_CLIENT_CONNECT_EX = 37, |
| WMT_CLIENT_DISCONNECT_EX = 38, |
| WMT_SET_FEC_SPAN = 39, |
| WMT_PREROLL_READY = 40, |
| WMT_PREROLL_COMPLETE = 41, |
| WMT_CLIENT_PROPERTIES = 42, |
| WMT_LICENSEURL_SIGNATURE_STATE = 43, |
| WMT_INIT_PLAYLIST_BURN = 44, |
| WMT_TRANSCRYPTOR_INIT = 45, |
| WMT_TRANSCRYPTOR_SEEKED = 46, |
| WMT_TRANSCRYPTOR_READ = 47, |
| WMT_TRANSCRYPTOR_CLOSED = 48, |
| WMT_PROXIMITY_RESULT = 49, |
| WMT_PROXIMITY_COMPLETED = 50, |
| WMT_CONTENT_ENABLER = 51 |
| } WMT_STATUS; |
| |
| typedef enum WMT_STREAM_SELECTION |
| { |
| WMT_OFF = 0, |
| WMT_CLEANPOINT_ONLY = 1, |
| WMT_ON = 2, |
| } WMT_STREAM_SELECTION; |
| |
| typedef enum WMT_VERSION |
| { |
| WMT_VER_4_0 = 0x00040000, |
| WMT_VER_7_0 = 0x00070000, |
| WMT_VER_8_0 = 0x00080000, |
| WMT_VER_9_0 = 0x00090000 |
| } WMT_VERSION; |
| |
| typedef LPCWSTR LPCWSTR_WMSDK_TYPE_SAFE; |
| |
| [ |
| object, |
| uuid(6d7cdc70-9888-11d3-8edc-00c04f6109cf), |
| pointer_default(unique), |
| local |
| ] |
| interface IWMStatusCallback : IUnknown |
| { |
| HRESULT OnStatus( |
| [in] WMT_STATUS Status, |
| [in] HRESULT hr, |
| [in] WMT_ATTR_DATATYPE dwType, |
| [in] BYTE *pValue, |
| [in] void *pvContext); |
| }; |
| |
| [ |
| object, |
| uuid(96406bd8-2b2b-11d3-b36b-00c04f6108ff), |
| pointer_default(unique), |
| local |
| ] |
| interface IWMReaderCallback : IWMStatusCallback |
| { |
| HRESULT OnSample( |
| [in] DWORD dwOutputNum, |
| [in] QWORD cnsSampleTime, |
| [in] QWORD cnsSampleDuration, |
| [in] DWORD dwFlags, |
| [in] INSSBuffer *pSample, |
| [in] void *pvContext); |
| }; |
| |
| [ |
| object, |
| uuid(96406Bdd-2b2b-11d3-b36b-00c04f6108ff), |
| pointer_default(unique), |
| local |
| ] |
| interface IWMStreamList : IUnknown |
| { |
| HRESULT GetStreams( |
| [out, size_is(*pcStreams)] WORD *pwStreamNumArray, |
| [in, out] WORD *pcStreams); |
| |
| HRESULT AddStream([in] WORD wStreamNum); |
| HRESULT RemoveStream([in] WORD wStreamNum); |
| } |
| |
| [ |
| object, |
| uuid(96406Bde-2b2b-11d3-b36b-00c04f6108ff), |
| pointer_default(unique), |
| local |
| ] |
| interface IWMMutualExclusion : IWMStreamList |
| { |
| HRESULT GetType([out] GUID *pguidType); |
| HRESULT SetType([in] REFGUID guidType); |
| } |
| |
| [ |
| object, |
| uuid(96406Bdc-2b2b-11d3-b36b-00c04f6108ff), |
| pointer_default(unique), |
| local |
| ] |
| interface IWMStreamConfig : IUnknown |
| { |
| HRESULT GetStreamType([out] GUID *pguidStreamType); |
| HRESULT GetStreamNumber([out] WORD *pwStreamNum); |
| HRESULT SetStreamNumber([in] WORD wStreamNum); |
| |
| HRESULT GetStreamName( |
| [out, size_is(*pcchStreamName)] WCHAR *pwszStreamName, |
| [in, out] WORD *pcchStreamName); |
| |
| HRESULT SetStreamName([in] LPCWSTR_WMSDK_TYPE_SAFE pwszStreamName); |
| |
| HRESULT GetConnectionName( |
| [out, size_is(*pcchInputName)] WCHAR *pwszInputName, |
| [in, out] WORD *pcchInputName); |
| |
| HRESULT SetConnectionName([in] LPCWSTR_WMSDK_TYPE_SAFE pwszInputName); |
| HRESULT GetBitrate([out] DWORD *pdwBitrate); |
| HRESULT SetBitrate([in] DWORD pdwBitrate); |
| HRESULT GetBufferWindow([out] DWORD *pmsBufferWindow); |
| HRESULT SetBufferWindow([in] DWORD msBufferWindow); |
| } |
| |
| [ |
| object, |
| uuid(96406bdb-2b2b-11d3-b36b-00c04f6108ff), |
| pointer_default(unique), |
| local |
| ] |
| interface IWMProfile : IUnknown |
| { |
| HRESULT GetVersion( |
| [out] WMT_VERSION *pdwVersion); |
| |
| HRESULT GetName( |
| [out, size_is(*pcchName)] WCHAR *pwszName, |
| [in, out] DWORD *pcchName); |
| |
| HRESULT SetName( |
| [in] const WCHAR *pwszName); |
| |
| HRESULT GetDescription( |
| [out, size_is(*pcchDescription)] WCHAR *pwszDescription, |
| [in, out] DWORD *pcchDescription); |
| |
| HRESULT SetDescription( |
| [in] const WCHAR *pwszDescription); |
| |
| HRESULT GetStreamCount( |
| [out] DWORD *pcStreams); |
| |
| HRESULT GetStream( |
| [in] DWORD dwStreamIndex, |
| [out] IWMStreamConfig **ppConfig); |
| |
| HRESULT GetStreamByNumber( |
| [in] WORD wStreamNum, |
| [out] IWMStreamConfig **ppConfig); |
| |
| HRESULT RemoveStream( |
| [in] IWMStreamConfig *pConfig); |
| |
| HRESULT RemoveStreamByNumber( |
| [in] WORD wStreamNum); |
| |
| HRESULT AddStream( |
| [in] IWMStreamConfig *pConfig); |
| |
| HRESULT ReconfigStream( |
| [in] IWMStreamConfig *pConfig); |
| |
| HRESULT CreateNewStream( |
| [in] REFGUID guidStreamType, |
| [out] IWMStreamConfig **ppConfig); |
| |
| HRESULT GetMutualExclusionCount( |
| [out] DWORD *pcME); |
| |
| HRESULT GetMutualExclusion( |
| [in] DWORD dwMEIndex, |
| [out] IWMMutualExclusion **ppME); |
| |
| HRESULT RemoveMutualExclusion( |
| [in] IWMMutualExclusion *pME); |
| |
| HRESULT AddMutualExclusion( |
| [in] IWMMutualExclusion *pME); |
| |
| HRESULT CreateNewMutualExclusion( |
| [out] IWMMutualExclusion **ppME); |
| } |
| |
| [ |
| object, |
| uuid(d16679f2-6ca0-472d-8d31-2f5d55aee155), |
| pointer_default(unique), |
| local |
| ] |
| interface IWMProfileManager : IUnknown |
| { |
| HRESULT CreateEmptyProfile( |
| [in] WMT_VERSION dwVersion, |
| [out] IWMProfile **ppProfile); |
| |
| HRESULT LoadProfileByID( |
| [in] REFGUID guidProfile, |
| [out] IWMProfile **ppProfile); |
| |
| HRESULT LoadProfileByData( |
| [in] const WCHAR *pwszProfile, |
| [out] IWMProfile **ppProfile); |
| |
| HRESULT SaveProfile( |
| [in] IWMProfile *pIWMProfile, |
| [in] WCHAR *pwszProfile, |
| [in, out] DWORD *pdwLength); |
| |
| HRESULT GetSystemProfileCount( |
| [out] DWORD *pcProfiles); |
| |
| HRESULT LoadSystemProfile( |
| [in] DWORD dwProfileIndex, |
| [out] IWMProfile **ppProfile); |
| } |
| |
| cpp_quote("HRESULT WINAPI WMCreateProfileManager(IWMProfileManager**);") |
| |
| [ |
| object, |
| uuid(96406bce-2b2b-11d3-b36b-00c04f6108ff), |
| pointer_default(unique), |
| local |
| ] |
| interface IWMMediaProps : IUnknown |
| { |
| HRESULT GetType( |
| [out] GUID *pguidType); |
| |
| HRESULT GetMediaType( |
| [out] WM_MEDIA_TYPE *pType, |
| [in, out] DWORD *pcbType); |
| |
| HRESULT SetMediaType( |
| [in] WM_MEDIA_TYPE *pType); |
| }; |
| |
| [ |
| object, |
| uuid(96406bd7-2b2b-11d3-b36b-00c04f6108ff), |
| pointer_default(unique), |
| local |
| ] |
| interface IWMOutputMediaProps : IWMMediaProps |
| { |
| HRESULT GetStreamGroupName( |
| [out, size_is(*pcchName)] WCHAR *pwszName, |
| [in, out] WORD *pcchName); |
| |
| HRESULT GetConnectionName( |
| [out, size_is(*pcchName)] WCHAR *pwszName, |
| [in, out] WORD *pcchName); |
| }; |
| |
| [ |
| object, |
| uuid(96406bd9-2b2b-11d3-b36b-00c04f6108ff), |
| pointer_default(unique), |
| local |
| ] |
| interface IWMMetadataEditor : IUnknown |
| { |
| HRESULT Open( |
| [in] const WCHAR *pwszFilename); |
| |
| HRESULT Close(); |
| |
| HRESULT Flush(); |
| }; |
| |
| [ |
| object, |
| uuid(96406bd6-2b2b-11d3-b36b-00c04f6108ff), |
| pointer_default(unique), |
| local |
| ] |
| interface IWMReader : IUnknown |
| { |
| HRESULT Open( |
| [in] const WCHAR *pwszURL, |
| [in] IWMReaderCallback *pCallback, |
| [in] void *pvContext); |
| |
| HRESULT Close(); |
| |
| HRESULT GetOutputCount( |
| [out] DWORD *pcOutputs); |
| |
| HRESULT GetOutputProps( |
| [in] DWORD dwOutputNum, |
| [out] IWMOutputMediaProps **ppOutput); |
| |
| HRESULT SetOutputProps( |
| [in] DWORD dwOutputNum, |
| [in] IWMOutputMediaProps *pOutput); |
| |
| HRESULT GetOutputFormatCount( |
| [in] DWORD dwOutputNumber, |
| [out] DWORD *pcFormats); |
| |
| HRESULT GetOutputFormat( |
| [in] DWORD dwOutputNumber, |
| [in] DWORD dwFormatNumber, |
| [out] IWMOutputMediaProps** ppProps); |
| |
| HRESULT Start( |
| [in] QWORD cnsStart, |
| [in] QWORD cnsDuration, |
| [in] float fRate, |
| [in] void *pvContext); |
| |
| HRESULT Stop(); |
| |
| HRESULT Pause(); |
| |
| HRESULT Resume(); |
| }; |
| |
| [ |
| object, |
| uuid(9397f121-7705-4dc9-b049-98b698188414), |
| pointer_default( unique ), |
| local |
| ] |
| interface IWMSyncReader : IUnknown |
| { |
| HRESULT Open( |
| [in] const WCHAR *pwszFilename); |
| |
| HRESULT Close(); |
| |
| HRESULT SetRange( |
| [in] QWORD cnsStartTime, |
| [in] LONGLONG cnsDuration); |
| |
| HRESULT SetRangeByFrame( |
| [in] WORD wStreamNum, |
| [in] QWORD qwFrameNumber, |
| [in] LONGLONG cFramesToRead); |
| |
| HRESULT GetNextSample( |
| [in] WORD wStreamNum, |
| [out] INSSBuffer **ppSample, |
| [out] QWORD *pcnsSampleTime, |
| [out] QWORD *pcnsDuration, |
| [out] DWORD *pdwFlags, |
| [out] DWORD *pdwOutputNum, |
| [out] WORD *pwStreamNum); |
| |
| HRESULT SetStreamsSelected( |
| [in] WORD cStreamCount, |
| [in] WORD *pwStreamNumbers, |
| [in] WMT_STREAM_SELECTION *pSelections); |
| |
| HRESULT GetStreamSelected( |
| [in] WORD wStreamNum, |
| [out] WMT_STREAM_SELECTION *pSelection); |
| |
| HRESULT SetReadStreamSamples( |
| [in] WORD wStreamNum, |
| [in] BOOL fCompressed); |
| |
| HRESULT GetReadStreamSamples( |
| [in] WORD wStreamNum, |
| [out] BOOL *pfCompressed); |
| |
| HRESULT GetOutputSetting( |
| [in] DWORD dwOutputNum, |
| [in] LPCWSTR pszName, |
| [out] WMT_ATTR_DATATYPE *pType, |
| [out, size_is(*pcbLength)] BYTE *pValue, |
| [in, out] WORD *pcbLength); |
| |
| HRESULT SetOutputSetting( |
| [in] DWORD dwOutputNum, |
| [in] LPCWSTR pszName, |
| [in] WMT_ATTR_DATATYPE Type, |
| [in, size_is(cbLength)] const BYTE *pValue, |
| [in] WORD cbLength); |
| |
| HRESULT GetOutputCount( |
| [out] DWORD *pcOutputs); |
| |
| HRESULT GetOutputProps( |
| [in] DWORD dwOutputNum, |
| [out] IWMOutputMediaProps **ppOutput); |
| |
| HRESULT SetOutputProps( |
| [in] DWORD dwOutputNum, |
| [in] IWMOutputMediaProps *pOutput); |
| |
| HRESULT GetOutputFormatCount( |
| [in] DWORD dwOutputNum, |
| [out] DWORD *pcFormats); |
| |
| HRESULT GetOutputFormat( |
| [in] DWORD dwOutputNum, |
| [in] DWORD dwFormatNum, |
| [out] IWMOutputMediaProps **ppProps); |
| |
| HRESULT GetOutputNumberForStream( |
| [in] WORD wStreamNum, |
| [out] DWORD *pdwOutputNum); |
| |
| HRESULT GetStreamNumberForOutput( |
| [in] DWORD dwOutputNum, |
| [out] WORD *pwStreamNum); |
| |
| HRESULT GetMaxOutputSampleSize( |
| [in] DWORD dwOutput, |
| [out] DWORD *pcbMax); |
| |
| HRESULT GetMaxStreamSampleSize( |
| [in] WORD wStream, |
| [out] DWORD *pcbMax); |
| |
| HRESULT OpenStream( |
| [in] IStream *pStream); |
| }; |
| |
| [ |
| object, |
| uuid(96406bd5-2b2b-11d3-b36b-00c04f6108ff), |
| pointer_default(unique), |
| local |
| ] |
| interface IWMInputMediaProps : IWMMediaProps |
| { |
| HRESULT GetConnectionName( |
| [out, size_is(*pcchName)] WCHAR *pwszName, |
| [in, out] WORD *pcchName); |
| |
| HRESULT GetGroupName( |
| [out, size_is(*pcchName)] WCHAR *pwszName, |
| [in, out] WORD *pcchName); |
| } |
| |
| [ |
| object, |
| uuid(96406be4-2b2b-11d3-b36b-00c04f6108ff), |
| pointer_default(unique), |
| local |
| ] |
| interface IWMWriterSink : IUnknown |
| { |
| HRESULT OnHeader( |
| [in] INSSBuffer *pHeader); |
| |
| HRESULT IsRealTime( |
| [out] BOOL *pfRealTime); |
| |
| HRESULT AllocateDataUnit( |
| [in] DWORD cbDataUnit, |
| [out] INSSBuffer **ppDataUnit); |
| |
| HRESULT OnDataUnit( |
| [in] INSSBuffer *pDataUnit); |
| |
| HRESULT OnEndWriting(); |
| } |
| |
| [ |
| object, |
| uuid(96406bd4-2b2b-11d3-b36b-00c04f6108ff), |
| pointer_default(unique), |
| local |
| ] |
| interface IWMWriter : IUnknown |
| { |
| HRESULT SetProfileByID( |
| [in] REFGUID guidProfile); |
| |
| HRESULT SetProfile( |
| [in] IWMProfile *pProfile); |
| |
| HRESULT SetOutputFilename( |
| [in] const WCHAR *pwszFilename); |
| |
| HRESULT GetInputCount( |
| [out] DWORD *pcInputs); |
| |
| HRESULT GetInputProps( |
| [in] DWORD dwInputNum, |
| [out] IWMInputMediaProps **ppInput); |
| |
| HRESULT SetInputProps( |
| [in] DWORD dwInputNum, |
| [in] IWMInputMediaProps *pInput); |
| |
| HRESULT GetInputFormatCount( |
| [in] DWORD dwInputNumber, |
| [out] DWORD *pcFormats); |
| |
| HRESULT GetInputFormat( |
| [in] DWORD dwInputNumber, |
| [in] DWORD dwFormatNumber, |
| [out] IWMInputMediaProps **pProps); |
| |
| HRESULT BeginWriting(); |
| |
| HRESULT EndWriting(); |
| |
| HRESULT AllocateSample( |
| [in] DWORD dwSampleSize, |
| [out] INSSBuffer **ppSample); |
| |
| HRESULT WriteSample( |
| [in] DWORD dwInputNum, |
| [in] QWORD cnsSampleTime, |
| [in] DWORD dwFlags, |
| [in] INSSBuffer *pSample); |
| |
| HRESULT Flush(); |
| } |
| |
| [ |
| object, |
| uuid(96406be3-2b2b-11d3-b36b-00C04f6108ff), |
| pointer_default(unique), |
| local |
| ] |
| interface IWMWriterAdvanced : IUnknown |
| { |
| HRESULT GetSinkCount( |
| [out] DWORD *pcSinks); |
| |
| HRESULT GetSink( |
| [in] DWORD dwSinkNum, |
| [out] IWMWriterSink **ppSink); |
| |
| HRESULT AddSink( |
| [in] IWMWriterSink *pSink); |
| |
| HRESULT RemoveSink( |
| [in] IWMWriterSink *pSink); |
| |
| HRESULT WriteStreamSample( |
| [in] WORD wStreamNum, |
| [in] QWORD cnsSampleTime, |
| [in] DWORD msSampleSendTime, |
| [in] QWORD cnsSampleDuration, |
| [in] DWORD dwFlags, |
| [in] INSSBuffer *pSample); |
| |
| HRESULT SetLiveSource( |
| BOOL fIsLiveSource); |
| |
| HRESULT IsRealTime( |
| [out] BOOL *pfRealTime); |
| |
| HRESULT GetWriterTime( |
| [out] QWORD *pCurrentTime); |
| |
| HRESULT GetStatistics( |
| [in] WORD wStreamNum, |
| [out] WM_WRITER_STATISTICS *pStats); |
| |
| HRESULT SetSyncTolerance( |
| [in] DWORD msWindow); |
| |
| HRESULT GetSyncTolerance( |
| [out] DWORD *pmsWindow); |
| } |
| |
| [ |
| object, |
| uuid(962dc1ec-c046-4db8-9cc7-26ceae500817), |
| pointer_default(unique), |
| local |
| ] |
| interface IWMWriterAdvanced2 : IWMWriterAdvanced |
| { |
| HRESULT GetInputSetting( |
| [in] DWORD dwInputNum, |
| [in] LPCWSTR pszName, |
| [out] WMT_ATTR_DATATYPE *pType, |
| [out, size_is(*pcbLength)] BYTE *pValue, |
| [in, out] WORD *pcbLength); |
| |
| HRESULT SetInputSetting( |
| [in] DWORD dwInputNum, |
| [in] LPCWSTR pszName, |
| [in] WMT_ATTR_DATATYPE Type, |
| [in, size_is(cbLength)] const BYTE *pValue, |
| [in] WORD cbLength); |
| } |
| |
| [ |
| object, |
| uuid(2cd6492d-7c37-4e76-9d3b-59261183a22e), |
| pointer_default(unique), |
| local |
| ] |
| interface IWMWriterAdvanced3 : IWMWriterAdvanced2 |
| { |
| HRESULT GetStatisticsEx( |
| [in] WORD wStreamNum, |
| [out] WM_WRITER_STATISTICS_EX *pStats); |
| |
| HRESULT SetNonBlocking(); |
| } |
| |
| cpp_quote("HRESULT WINAPI WMCreateWriter(IUnknown*,IWMWriter**);") |
| |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_Base, 0x00000000,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIATYPE_Video, 0x73646976,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB1, 0xe436eb78,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB4, 0xe436eb79,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB8, 0xe436eb7a,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB565, 0xe436eb7b,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB555, 0xe436eb7c,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB24, 0xe436eb7d,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_RGB32, 0xe436eb7e,0x524f,0x11ce,0x9f,0x53,0x00,0x20,0xaf,0x0b,0xa7,0x70);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_I420, 0x30323449,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_IYUV, 0x56555949,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YV12, 0x32315659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YUY2, 0x32595559,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_P422, 0x32323450,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_UYVY, 0x59565955,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YVYU, 0x55595659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_YVU9, 0x39555659,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_VIDEOIMAGE, 0x1d4a45f2,0xe5f6,0x4b44,0x83,0x88,0xf0,0xae,0x5c,0x0e,0x0c,0x37);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MP43, 0x3334504d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MP4S, 0x5334504d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_M4S2, 0x3253344d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMV1, 0x31564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMV2, 0x32564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MSS1, 0x3153534d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MPEG2_VIDEO, 0xe06d8026,0xdb46,0x11cf,0xb4,0xd1,0x00,0x80,0x5f,0x6c,0xbb,0xea);") |
| cpp_quote("EXTERN_GUID(WMMEDIATYPE_Audio, 0x73647561,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_PCM, 0x00000001,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_DRM, 0x00000009,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMAudioV9, 0x00000162,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMAudio_Lossless, 0x00000163,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_MSS2, 0x3253534d,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMSP1, 0x0000000a,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMSP2, 0x0000000b,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMV3, 0x33564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMVP, 0x50564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WVP2, 0x32505657,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WMVA, 0x41564d57,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |
| cpp_quote("EXTERN_GUID(WMMEDIASUBTYPE_WVC1, 0x31435657,0x0000,0x0010,0x80,0x00,0x00,0xaa,0x00,0x38,0x9b,0x71);") |