Various cosmetic changes.
[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 #include "seekpass.h"
16
17 #define WINE_QUARTZ_WAVEOUT_COUNT       4
18
19 typedef struct CAudioRendererImpl       CAudioRendererImpl;
20 typedef struct CAudioRendererPinImpl    CAudioRendererPinImpl;
21
22
23 typedef struct AudRen_IBasicAudioImpl
24 {
25         ICOM_VFIELD(IBasicAudio);
26 } AudRen_IBasicAudioImpl;
27
28 struct CAudioRendererImpl
29 {
30         QUARTZ_IUnkImpl unk;
31         CBaseFilterImpl basefilter;
32         AudRen_IBasicAudioImpl  basaud;
33         QUARTZ_IFDelegation     qiext;
34
35         CSeekingPassThru*       pSeekPass;
36         CAudioRendererPinImpl* pPin;
37
38         CRITICAL_SECTION        m_csReceive;
39         BOOL    m_fInFlush;
40
41         /* for waveOut */
42         BOOL            m_fWaveOutInit;
43         HANDLE          m_hEventRender;
44         HWAVEOUT        m_hWaveOut;
45         DWORD           m_dwBlockSize;
46         WAVEHDR*        m_phdrCur;
47         WAVEHDR         m_hdr[WINE_QUARTZ_WAVEOUT_COUNT];
48 };
49
50 struct CAudioRendererPinImpl
51 {
52         QUARTZ_IUnkImpl unk;
53         CPinBaseImpl    pin;
54         CMemInputPinBaseImpl    meminput;
55
56         CAudioRendererImpl* pRender;
57 };
58
59 #define CAudioRendererImpl_THIS(iface,member)   CAudioRendererImpl*     This = ((CAudioRendererImpl*)(((char*)iface)-offsetof(CAudioRendererImpl,member)))
60 #define CAudioRendererPinImpl_THIS(iface,member)        CAudioRendererPinImpl*  This = ((CAudioRendererPinImpl*)(((char*)iface)-offsetof(CAudioRendererPinImpl,member)))
61
62
63 HRESULT CAudioRendererImpl_InitIBasicAudio( CAudioRendererImpl* This );
64 void CAudioRendererImpl_UninitIBasicAudio( CAudioRendererImpl* This );
65
66 HRESULT QUARTZ_CreateAudioRenderer(IUnknown* punkOuter,void** ppobj);
67 HRESULT QUARTZ_CreateAudioRendererPin(
68         CAudioRendererImpl* pFilter,
69         CRITICAL_SECTION* pcsPin,
70         CRITICAL_SECTION* pcsPinReceive,
71         CAudioRendererPinImpl** ppPin);
72
73
74
75 #endif  /* WINE_DSHOW_AUDREN_H */