| /* |
| * Audio Renderer (CLSID_AudioRender) |
| * |
| * FIXME |
| * - implements IRefereneceClock. |
| * |
| * hidenori@a2.ctktv.ne.jp |
| */ |
| |
| #ifndef WINE_DSHOW_AUDREN_H |
| #define WINE_DSHOW_AUDREN_H |
| |
| #include "iunk.h" |
| #include "basefilt.h" |
| #include "seekpass.h" |
| |
| #define WINE_QUARTZ_WAVEOUT_COUNT 4 |
| |
| typedef struct CAudioRendererImpl CAudioRendererImpl; |
| typedef struct CAudioRendererPinImpl CAudioRendererPinImpl; |
| |
| |
| typedef struct AudRen_IBasicAudioImpl |
| { |
| ICOM_VFIELD(IBasicAudio); |
| } AudRen_IBasicAudioImpl; |
| |
| struct CAudioRendererImpl |
| { |
| QUARTZ_IUnkImpl unk; |
| CBaseFilterImpl basefilter; |
| AudRen_IBasicAudioImpl basaud; |
| QUARTZ_IFDelegation qiext; |
| |
| CSeekingPassThru* pSeekPass; |
| CAudioRendererPinImpl* pPin; |
| |
| BOOL m_fInFlush; |
| |
| /* for waveOut */ |
| BOOL m_fWaveOutInit; |
| HANDLE m_hEventRender; |
| HWAVEOUT m_hWaveOut; |
| DWORD m_dwBlockSize; |
| WAVEHDR* m_phdrCur; |
| WAVEHDR m_hdr[WINE_QUARTZ_WAVEOUT_COUNT]; |
| }; |
| |
| struct CAudioRendererPinImpl |
| { |
| QUARTZ_IUnkImpl unk; |
| CPinBaseImpl pin; |
| CMemInputPinBaseImpl meminput; |
| |
| CAudioRendererImpl* pRender; |
| }; |
| |
| #define CAudioRendererImpl_THIS(iface,member) CAudioRendererImpl* This = ((CAudioRendererImpl*)(((char*)iface)-offsetof(CAudioRendererImpl,member))) |
| #define CAudioRendererPinImpl_THIS(iface,member) CAudioRendererPinImpl* This = ((CAudioRendererPinImpl*)(((char*)iface)-offsetof(CAudioRendererPinImpl,member))) |
| |
| |
| HRESULT CAudioRendererImpl_InitIBasicAudio( CAudioRendererImpl* This ); |
| void CAudioRendererImpl_UninitIBasicAudio( CAudioRendererImpl* This ); |
| |
| HRESULT QUARTZ_CreateAudioRenderer(IUnknown* punkOuter,void** ppobj); |
| HRESULT QUARTZ_CreateAudioRendererPin( |
| CAudioRendererImpl* pFilter, |
| CRITICAL_SECTION* pcsPin, |
| CAudioRendererPinImpl** ppPin); |
| |
| |
| |
| #endif /* WINE_DSHOW_AUDREN_H */ |