source: trunk/src/quartz/fgraph.h@ 6710

Last change on this file since 6710 was 6710, checked in by sandervl, 24 years ago

wine update

File size: 5.0 KB
Line 
1#ifndef WINE_DSHOW_FGRAPH_H
2#define WINE_DSHOW_FGRAPH_H
3
4/*
5 implements CLSID_FilterGraph.
6
7 - At least, the following interfaces should be implemented:
8
9 IUnknown
10 + IPersist
11 + IDispatch
12 + IFilterGraph - IGraphBuilder - IFilterGraph2
13 + IGraphVersion
14 + IDispatch - IMediaControl
15 + IPersist - IMediaFilter
16 + IDispatch - IMediaEvent - IMediaEventEx
17 + IMediaEventSink
18 + IDispatch - IMediaPosition
19 + IMediaSeeking
20 + IDispatch - IBasicVideo[2] (pass to a renderer)
21 + IDispatch - IBasicAudio (pass to a renderer)
22 + IDispatch - IVideoWindow (pass to a renderer)
23 (following interfaces are not implemented)
24 + IMarshal
25 + IFilterMapper2 - IFilterMapper3
26 FIXME - Are there any missing interfaces???
27 */
28
29#include "iunk.h"
30#include "complist.h"
31
32
33typedef struct FG_IPersistImpl
34{
35 ICOM_VFIELD(IPersist);
36} FG_IPersistImpl;
37
38typedef struct FG_IDispatchImpl
39{
40 ICOM_VFIELD(IDispatch);
41} FG_IDispatchImpl;
42
43typedef struct FG_IFilterGraph2Impl
44{
45 ICOM_VFIELD(IFilterGraph2);
46} FG_IFilterGraph2Impl;
47
48typedef struct FG_IGraphVersionImpl
49{
50 ICOM_VFIELD(IGraphVersion);
51} FG_IGraphVersionImpl;
52
53typedef struct FG_IMediaControlImpl
54{
55 ICOM_VFIELD(IMediaControl);
56} FG_IMediaControlImpl;
57
58typedef struct FG_IMediaFilterImpl
59{
60 ICOM_VFIELD(IMediaFilter);
61} FG_IMediaFilterImpl;
62
63typedef struct FG_IMediaEventImpl
64{
65 ICOM_VFIELD(IMediaEventEx);
66} FG_IMediaEventImpl;
67
68typedef struct FG_IMediaEventSinkImpl
69{
70 ICOM_VFIELD(IMediaEventSink);
71} FG_IMediaEventSinkImpl;
72
73typedef struct FG_IMediaPositionImpl
74{
75 ICOM_VFIELD(IMediaPosition);
76} FG_IMediaPositionImpl;
77
78typedef struct FG_IMediaSeekingImpl
79{
80 ICOM_VFIELD(IMediaSeeking);
81} FG_IMediaSeekingImpl;
82
83typedef struct FG_IBasicVideoImpl
84{
85 ICOM_VFIELD(IBasicVideo2);
86} FG_IBasicVideoImpl;
87
88typedef struct FG_IBasicAudioImpl
89{
90 ICOM_VFIELD(IBasicAudio);
91} FG_IBasicAudioImpl;
92
93typedef struct FG_IVideoWindowImpl
94{
95 ICOM_VFIELD(IVideoWindow);
96} FG_IVideoWindowImpl;
97
98
99typedef struct CFilterGraph
100{
101 QUARTZ_IUnkImpl unk;
102 FG_IPersistImpl persist;
103 FG_IDispatchImpl disp;
104 FG_IFilterGraph2Impl fgraph;
105 FG_IGraphVersionImpl graphversion;
106 FG_IMediaControlImpl mediacontrol;
107 FG_IMediaFilterImpl mediafilter;
108 FG_IMediaEventImpl mediaevent;
109 FG_IMediaEventSinkImpl mediaeventsink;
110 FG_IMediaPositionImpl mediaposition;
111 FG_IMediaSeekingImpl mediaseeking;
112 FG_IBasicVideoImpl basvid;
113 FG_IBasicAudioImpl basaud;
114 FG_IVideoWindowImpl vidwin;
115
116 /* IDispatch fields. */
117 /* IFilterGraph2 fields. */
118 QUARTZ_CompList* m_pFilterList;
119 /* IGraphVersion fields. */
120 CRITICAL_SECTION m_csGraphVersion;
121 LONG m_lGraphVersion;
122 /* IMediaControl fields. */
123 /* IMediaFilter fields. */
124 CRITICAL_SECTION m_csGraphState;
125 FILTER_STATE m_stateGraph; /* must NOT accessed directly! */
126 /* IMediaEvent fields. */
127 HANDLE m_hMediaEvent;
128 /* IMediaEventSink fields. */
129 /* IMediaPosition fields. */
130 /* IMediaSeeking fields. */
131 /* IBasicVideo2 fields. */
132 /* IBasicAudio fields. */
133 /* IVideoWindow fields. */
134} CFilterGraph;
135
136#define CFilterGraph_THIS(iface,member) CFilterGraph* This = ((CFilterGraph*)(((char*)iface)-offsetof(CFilterGraph,member)))
137#define CFilterGraph_IPersist(th) ((IPersist*)&((th)->persist))
138#define CFilterGraph_IDispatch(th) ((IDispatch*)&((th)->disp))
139#define CFilterGraph_IFilterGraph2(th) ((IFilterGraph2*)&((th)->fgraph))
140#define CFilterGraph_IMediaFilter(th) ((IMediaFilter*)&((th)->mediafilter))
141#define CFilterGraph_IMediaControl(th) ((IMediaControl*)&((th)->mediacontrol))
142
143HRESULT QUARTZ_CreateFilterGraph(IUnknown* punkOuter,void** ppobj);
144
145HRESULT CFilterGraph_InitIPersist( CFilterGraph* pfg );
146void CFilterGraph_UninitIPersist( CFilterGraph* pfg );
147HRESULT CFilterGraph_InitIDispatch( CFilterGraph* pfg );
148void CFilterGraph_UninitIDispatch( CFilterGraph* pfg );
149HRESULT CFilterGraph_InitIFilterGraph2( CFilterGraph* pfg );
150void CFilterGraph_UninitIFilterGraph2( CFilterGraph* pfg );
151HRESULT CFilterGraph_InitIGraphVersion( CFilterGraph* pfg );
152void CFilterGraph_UninitIGraphVersion( CFilterGraph* pfg );
153HRESULT CFilterGraph_InitIMediaControl( CFilterGraph* pfg );
154void CFilterGraph_UninitIMediaControl( CFilterGraph* pfg );
155HRESULT CFilterGraph_InitIMediaFilter( CFilterGraph* pfg );
156void CFilterGraph_UninitIMediaFilter( CFilterGraph* pfg );
157HRESULT CFilterGraph_InitIMediaEventEx( CFilterGraph* pfg );
158void CFilterGraph_UninitIMediaEventEx( CFilterGraph* pfg );
159HRESULT CFilterGraph_InitIMediaEventSink( CFilterGraph* pfg );
160void CFilterGraph_UninitIMediaEventSink( CFilterGraph* pfg );
161HRESULT CFilterGraph_InitIMediaPosition( CFilterGraph* pfg );
162void CFilterGraph_UninitIMediaPosition( CFilterGraph* pfg );
163HRESULT CFilterGraph_InitIMediaSeeking( CFilterGraph* pfg );
164void CFilterGraph_UninitIMediaSeeking( CFilterGraph* pfg );
165HRESULT CFilterGraph_InitIBasicVideo2( CFilterGraph* pfg );
166void CFilterGraph_UninitIBasicVideo2( CFilterGraph* pfg );
167HRESULT CFilterGraph_InitIBasicAudio( CFilterGraph* pfg );
168void CFilterGraph_UninitIBasicAudio( CFilterGraph* pfg );
169HRESULT CFilterGraph_InitIVideoWindow( CFilterGraph* pfg );
170void CFilterGraph_UninitIVideoWindow( CFilterGraph* pfg );
171
172
173#endif /* WINE_DSHOW_FGRAPH_H */
Note: See TracBrowser for help on using the repository browser.