When including 'wine/port.h', include it first.
[wine] / dlls / quartz / vidren.h
1 /*
2  * Implements CLSID_VideoRenderer.
3  *
4  * hidenori@a2.ctktv.ne.jp
5  */
6
7 #ifndef WINE_DSHOW_VIDREN_H
8 #define WINE_DSHOW_VIDREN_H
9
10 #include "iunk.h"
11 #include "basefilt.h"
12
13 typedef struct CVideoRendererImpl CVideoRendererImpl;
14 typedef struct CVideoRendererPinImpl CVideoRendererPinImpl;
15
16
17 typedef struct VidRen_IBasicVideo
18 {
19         ICOM_VFIELD(IBasicVideo2);
20 } VidRen_IBasicVideo;
21
22 typedef struct VidRen_IVideoWindow
23 {
24         ICOM_VFIELD(IVideoWindow);
25 } VidRen_IVideoWindow;
26
27 struct CVideoRendererImpl
28 {
29         QUARTZ_IUnkImpl unk;
30         CBaseFilterImpl basefilter;
31         VidRen_IBasicVideo      basvid;
32         VidRen_IVideoWindow     vidwin;
33
34         CVideoRendererPinImpl*  pPin;
35
36         BOOL    m_fInFlush;
37
38         /* for rendering */
39         HANDLE  m_hEventInit;
40         HANDLE  m_hThread;
41         HWND    m_hwnd;
42         CRITICAL_SECTION        m_csSample;
43         BOOL    m_bSampleIsValid;
44         BYTE*   m_pSampleData;
45         DWORD   m_cbSampleData;
46 };
47
48 struct CVideoRendererPinImpl
49 {
50         QUARTZ_IUnkImpl unk;
51         CPinBaseImpl    pin;
52         CMemInputPinBaseImpl    meminput;
53
54         CVideoRendererImpl* pRender;
55 };
56
57
58
59 #define CVideoRendererImpl_THIS(iface,member)   CVideoRendererImpl*     This = ((CVideoRendererImpl*)(((char*)iface)-offsetof(CVideoRendererImpl,member)))
60 #define CVideoRendererPinImpl_THIS(iface,member)        CVideoRendererPinImpl*  This = ((CVideoRendererPinImpl*)(((char*)iface)-offsetof(CVideoRendererPinImpl,member)))
61
62 HRESULT CVideoRendererImpl_InitIBasicVideo2( CVideoRendererImpl* This );
63 void CVideoRendererImpl_UninitIBasicVideo2( CVideoRendererImpl* This );
64 HRESULT CVideoRendererImpl_InitIVideoWindow( CVideoRendererImpl* This );
65 void CVideoRendererImpl_UninitIVideoWindow( CVideoRendererImpl* This );
66
67 HRESULT QUARTZ_CreateVideoRenderer(IUnknown* punkOuter,void** ppobj);
68 HRESULT QUARTZ_CreateVideoRendererPin(
69         CVideoRendererImpl* pFilter,
70         CRITICAL_SECTION* pcsPin,
71         CVideoRendererPinImpl** ppPin);
72
73
74 #endif  /* WINE_DSHOW_VIDREN_H */