When including 'wine/port.h', include it first.
[wine] / dlls / quartz / audren.h
1 /*
2  * Audio Renderer (CLSID_AudioRender)
3  *
4  * FIXME
5  *  - implements IRefereneceClock.
6  *
7  * hidenori@a2.ctktv.ne.jp
8  */
9
10 #ifndef WINE_DSHOW_AUDREN_H
11 #define WINE_DSHOW_AUDREN_H
12
13 #include "iunk.h"
14 #include "basefilt.h"
15
16 #define WINE_QUARTZ_WAVEOUT_COUNT       4
17
18 typedef struct CAudioRendererImpl       CAudioRendererImpl;
19 typedef struct CAudioRendererPinImpl    CAudioRendererPinImpl;
20
21
22 typedef struct AudRen_IBasicAudioImpl
23 {
24         ICOM_VFIELD(IBasicAudio);
25 } AudRen_IBasicAudioImpl;
26
27 struct CAudioRendererImpl
28 {
29         QUARTZ_IUnkImpl unk;
30         CBaseFilterImpl basefilter;
31         AudRen_IBasicAudioImpl  basaud;
32
33         CAudioRendererPinImpl* pPin;
34
35         BOOL    m_fInFlush;
36
37         /* for waveOut */
38         BOOL            m_fWaveOutInit;
39         HANDLE          m_hEventRender;
40         HWAVEOUT        m_hWaveOut;
41         DWORD           m_dwBlockSize;
42         WAVEHDR*        m_phdrCur;
43         WAVEHDR         m_hdr[WINE_QUARTZ_WAVEOUT_COUNT];
44 };
45
46 struct CAudioRendererPinImpl
47 {
48         QUARTZ_IUnkImpl unk;
49         CPinBaseImpl    pin;
50         CMemInputPinBaseImpl    meminput;
51
52         CAudioRendererImpl* pRender;
53 };
54
55 #define CAudioRendererImpl_THIS(iface,member)   CAudioRendererImpl*     This = ((CAudioRendererImpl*)(((char*)iface)-offsetof(CAudioRendererImpl,member)))
56 #define CAudioRendererPinImpl_THIS(iface,member)        CAudioRendererPinImpl*  This = ((CAudioRendererPinImpl*)(((char*)iface)-offsetof(CAudioRendererPinImpl,member)))
57
58
59 HRESULT CAudioRendererImpl_InitIBasicAudio( CAudioRendererImpl* This );
60 void CAudioRendererImpl_UninitIBasicAudio( CAudioRendererImpl* This );
61
62 HRESULT QUARTZ_CreateAudioRenderer(IUnknown* punkOuter,void** ppobj);
63 HRESULT QUARTZ_CreateAudioRendererPin(
64         CAudioRendererImpl* pFilter,
65         CRITICAL_SECTION* pcsPin,
66         CAudioRendererPinImpl** ppPin);
67
68
69
70 #endif  /* WINE_DSHOW_AUDREN_H */