import "unknwn.idl"; import "austream.idl"; interface IWaveInStream; interface IWaveSampleCallback; interface IWaveStreamSample; // just a placeholder so MIDL will generate the interface // for IWaveSampleCallback interface WaveSample; cpp_quote("// This is a hack so MIDL will generate the interface of IWaveSampleCallback!") cpp_quote("#ifdef __cplusplus") cpp_quote("class WaveSample;") cpp_quote("#else") cpp_quote("typedef void WaveSample;") cpp_quote("#endif") cpp_quote("") cpp_quote("// IWaveStreamSample property flags") cpp_quote("#define WSS_RECORDING_FLAGS 1") cpp_quote("#define WSS_SIGNAL_STRENGTH 2") cpp_quote("") cpp_quote("// bit properties for WSS_RECORDING_FLAGS") cpp_quote("#define WSS_SILENT 1") cpp_quote("#define WSS_ECHOREDUCTION 2") cpp_quote("") cpp_quote("// SetDuplexControlObject() can take either a handle to an event or mutex") cpp_quote("#define WIS_DUPLEX_EVENT 1") cpp_quote("#define WIS_DUPLEX_MUTEX 2") [ object, local, uuid(17cb3bc0-6fd4-11d1-a95b-00c04fd7ccf1), pointer_default(unique) ] interface IWaveInStream : IAudioMediaStream { HRESULT SetDeviceID([in] UINT uWaveDevID); HRESULT GetDeviceID([out] UINT *puWaveDevID); HRESULT SetDefaultPacketSize([in] int nBytes); HRESULT Start(); HRESULT Stop(); HRESULT SetSilenceThreshold([in] DWORD dwThresh, BOOL bAutomatic); HRESULT SetSilenceTimeout([in] DWORD dwMilliSecs); HRESULT SetDuplex(BOOL bFull); HRESULT SetDuplexControlObject(HANDLE hand, int nType); }; [ object, local, uuid(72b36900-7640-11d1-a95b-00c04fd7ccf1), pointer_default(unique) ] interface IWaveSampleCallback : IUnknown { HRESULT SampleUpdate(WaveSample *pWaveSample, DWORD dwFlags, HANDLE hEvent, PAPCFUNC pfnAPC, DWORD dwAPCData); HRESULT GetCurrentStreamTime(STREAM_TIME *pST); HRESULT SampleCompletionStatus(WaveSample *pWaveSample, DWORD dwFlags, DWORD dwMilli); HRESULT SampleGetMediaStream(IMediaStream **ppMediaStream); }; [ object, local, uuid(8fdc0390-9136-11d1-a95c-00c04fd91a6f), pointer_default(unique) ] interface IWaveStreamSample : IAudioStreamSample { HRESULT SetSampleProperty([in] DWORD dwProp, [in] DWORD dwValue); HRESULT GetSampleProperty([in] DWORD dwProp, [out] DWORD *pdwValue); };