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 */
|
---|