| 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 | + IFilterGraph - IGraphBuilder - IFilterGraph2 | 
|---|
| 11 | + IDispatch - IMediaControl | 
|---|
| 12 | + IDispatch - IMediaEvent - IMediaEventEx | 
|---|
| 13 | + IDispatch - IMediaPosition | 
|---|
| 14 | + IMediaSeeking | 
|---|
| 15 | + IDispatch - IBasicVideo (pass to a renderer) | 
|---|
| 16 | + IDispatch - IBasicAudio (pass to a renderer) | 
|---|
| 17 | + IDispatch - IVideoWindow  (pass to a renderer) | 
|---|
| 18 | */ | 
|---|
| 19 |  | 
|---|
| 20 | #include "iunk.h" | 
|---|
| 21 |  | 
|---|
| 22 | typedef struct FG_IFilterGraph2Impl | 
|---|
| 23 | { | 
|---|
| 24 | ICOM_VFIELD(IFilterGraph2); | 
|---|
| 25 | } FG_IFilterGraph2Impl; | 
|---|
| 26 |  | 
|---|
| 27 | typedef struct FG_IMediaControlImpl | 
|---|
| 28 | { | 
|---|
| 29 | ICOM_VFIELD(IMediaControl); | 
|---|
| 30 | } FG_IMediaControlImpl; | 
|---|
| 31 |  | 
|---|
| 32 | typedef struct FG_IMediaEventImpl | 
|---|
| 33 | { | 
|---|
| 34 | ICOM_VFIELD(IMediaEventEx); | 
|---|
| 35 | } FG_IMediaEventImpl; | 
|---|
| 36 |  | 
|---|
| 37 | typedef struct FG_IMediaPositionImpl | 
|---|
| 38 | { | 
|---|
| 39 | ICOM_VFIELD(IMediaPosition); | 
|---|
| 40 | } FG_IMediaPositionImpl; | 
|---|
| 41 |  | 
|---|
| 42 | typedef struct FG_IMediaSeekingImpl | 
|---|
| 43 | { | 
|---|
| 44 | ICOM_VFIELD(IMediaSeeking); | 
|---|
| 45 | } FG_IMediaSeekingImpl; | 
|---|
| 46 |  | 
|---|
| 47 | typedef struct FG_IBasicVideoImpl | 
|---|
| 48 | { | 
|---|
| 49 | ICOM_VFIELD(IBasicVideo2); | 
|---|
| 50 | } FG_IBasicVideoImpl; | 
|---|
| 51 |  | 
|---|
| 52 | typedef struct FG_IBasicAudioImpl | 
|---|
| 53 | { | 
|---|
| 54 | ICOM_VFIELD(IBasicAudio); | 
|---|
| 55 | } FG_IBasicAudioImpl; | 
|---|
| 56 |  | 
|---|
| 57 | typedef struct FG_IVideoWindowImpl | 
|---|
| 58 | { | 
|---|
| 59 | ICOM_VFIELD(IVideoWindow); | 
|---|
| 60 | } FG_IVideoWindowImpl; | 
|---|
| 61 |  | 
|---|
| 62 |  | 
|---|
| 63 | typedef struct CFilterGraph | 
|---|
| 64 | { | 
|---|
| 65 | QUARTZ_IUnkImpl unk; | 
|---|
| 66 | FG_IFilterGraph2Impl    fgraph; | 
|---|
| 67 | FG_IMediaControlImpl    mediacontrol; | 
|---|
| 68 | FG_IMediaEventImpl      mediaevent; | 
|---|
| 69 | FG_IMediaPositionImpl   mediaposition; | 
|---|
| 70 | FG_IMediaSeekingImpl    mediaseeking; | 
|---|
| 71 | FG_IBasicVideoImpl      basvid; | 
|---|
| 72 | FG_IBasicAudioImpl      basaud; | 
|---|
| 73 | FG_IVideoWindowImpl     vidwin; | 
|---|
| 74 |  | 
|---|
| 75 | /* IFilterGraph2 fields. */ | 
|---|
| 76 | /* IMediaControl fields. */ | 
|---|
| 77 | /* IMediaEvent fields. */ | 
|---|
| 78 | /* IMediaPosition fields. */ | 
|---|
| 79 | /* IMediaSeeking fields. */ | 
|---|
| 80 | /* IBasicVideo fields. */ | 
|---|
| 81 | /* IBasicAudio fields. */ | 
|---|
| 82 | /* IVideoWindow fields. */ | 
|---|
| 83 | } CFilterGraph; | 
|---|
| 84 |  | 
|---|
| 85 | #define CFilterGraph_THIS(iface,member)         CFilterGraph*   This = ((CFilterGraph*)(((char*)iface)-offsetof(CFilterGraph,member))) | 
|---|
| 86 |  | 
|---|
| 87 | HRESULT QUARTZ_CreateFilterGraph(IUnknown* punkOuter,void** ppobj); | 
|---|
| 88 |  | 
|---|
| 89 | void CFilterGraph_InitIFilterGraph2( CFilterGraph* pfg ); | 
|---|
| 90 | void CFilterGraph_InitIMediaControl( CFilterGraph* pfg ); | 
|---|
| 91 | void CFilterGraph_InitIMediaEventEx( CFilterGraph* pfg ); | 
|---|
| 92 | void CFilterGraph_InitIMediaPosition( CFilterGraph* pfg ); | 
|---|
| 93 | void CFilterGraph_InitIMediaSeeking( CFilterGraph* pfg ); | 
|---|
| 94 | void CFilterGraph_InitIBasicVideo2( CFilterGraph* pfg ); | 
|---|
| 95 | void CFilterGraph_InitIBasicAudio( CFilterGraph* pfg ); | 
|---|
| 96 | void CFilterGraph_InitIVideoWindow( CFilterGraph* pfg ); | 
|---|
| 97 |  | 
|---|
| 98 |  | 
|---|
| 99 | #endif  /* WINE_DSHOW_FGRAPH_H */ | 
|---|