Added some stubs.
Started implementing some interfaces in FilterGraph.

diff --git a/dlls/quartz/fgraph.h b/dlls/quartz/fgraph.h
index d606c11..e06551c 100644
--- a/dlls/quartz/fgraph.h
+++ b/dlls/quartz/fgraph.h
@@ -7,37 +7,69 @@
 	- At least, the following interfaces should be implemented:
 
 	IUnknown
+		+ IPersist
+		+ IDispatch
 		+ IFilterGraph - IGraphBuilder - IFilterGraph2
+		+ IGraphVersion
 		+ IDispatch - IMediaControl
+		+ IPersist - IMediaFilter
 		+ IDispatch - IMediaEvent - IMediaEventEx
+		+ IMediaEventSink
 		+ IDispatch - IMediaPosition
 		+ IMediaSeeking
-		+ IDispatch - IBasicVideo (pass to a renderer)
+		+ IDispatch - IBasicVideo[2] (pass to a renderer)
 		+ IDispatch - IBasicAudio (pass to a renderer)
 		+ IDispatch - IVideoWindow  (pass to a renderer)
 	(following interfaces are not implemented)
-		+ IDispatch
-		+ IMediaEventSink
-		+ IGraphVerson
+		+ IMarshal
+		+ IFilterMapper2 - IFilterMapper3
+		FIXME - Are there any missing interfaces???
  */
 
 #include "iunk.h"
+#include "complist.h"
+
+
+typedef struct FG_IPersistImpl
+{
+	ICOM_VFIELD(IPersist);
+} FG_IPersistImpl;
+
+typedef struct FG_IDispatchImpl
+{
+	ICOM_VFIELD(IDispatch);
+} FG_IDispatchImpl;
 
 typedef struct FG_IFilterGraph2Impl
 {
 	ICOM_VFIELD(IFilterGraph2);
 } FG_IFilterGraph2Impl;
 
+typedef struct FG_IGraphVersionImpl
+{
+	ICOM_VFIELD(IGraphVersion);
+} FG_IGraphVersionImpl;
+
 typedef struct FG_IMediaControlImpl
 {
 	ICOM_VFIELD(IMediaControl);
 } FG_IMediaControlImpl;
 
+typedef struct FG_IMediaFilterImpl
+{
+	ICOM_VFIELD(IMediaFilter);
+} FG_IMediaFilterImpl;
+
 typedef struct FG_IMediaEventImpl
 {
 	ICOM_VFIELD(IMediaEventEx);
 } FG_IMediaEventImpl;
 
+typedef struct FG_IMediaEventSinkImpl
+{
+	ICOM_VFIELD(IMediaEventSink);
+} FG_IMediaEventSinkImpl;
+
 typedef struct FG_IMediaPositionImpl
 {
 	ICOM_VFIELD(IMediaPosition);
@@ -67,18 +99,30 @@
 typedef struct CFilterGraph
 {
 	QUARTZ_IUnkImpl	unk;
+	FG_IPersistImpl	persist;
+	FG_IDispatchImpl	disp;
 	FG_IFilterGraph2Impl	fgraph;
+	FG_IGraphVersionImpl	graphversion;
 	FG_IMediaControlImpl	mediacontrol;
+	FG_IMediaFilterImpl	mediafilter;
 	FG_IMediaEventImpl	mediaevent;
+	FG_IMediaEventSinkImpl	mediaeventsink;
 	FG_IMediaPositionImpl	mediaposition;
 	FG_IMediaSeekingImpl	mediaseeking;
 	FG_IBasicVideoImpl	basvid;
 	FG_IBasicAudioImpl	basaud;
 	FG_IVideoWindowImpl	vidwin;
 
+	/* IDispatch fields. */
 	/* IFilterGraph2 fields. */
+	QUARTZ_CompList*	m_pFilterList;
+	/* IGraphVersion fields. */
+	CRITICAL_SECTION	m_csGraphVersion;
+	LONG	m_lGraphVersion;
 	/* IMediaControl fields. */
 	/* IMediaEvent fields. */
+	HANDLE	m_hMediaEvent;
+	/* IMediaEventSink fields. */
 	/* IMediaPosition fields. */
 	/* IMediaSeeking fields. */
 	/* IBasicVideo2 fields. */
@@ -87,24 +131,36 @@
 } CFilterGraph;
 
 #define	CFilterGraph_THIS(iface,member)		CFilterGraph*	This = ((CFilterGraph*)(((char*)iface)-offsetof(CFilterGraph,member)))
+#define	CFilterGraph_IPersist(th)		((IPersist*)&((th)->persist))
+#define	CFilterGraph_IDispatch(th)		((IDispatch*)&((th)->disp))
 
 HRESULT QUARTZ_CreateFilterGraph(IUnknown* punkOuter,void** ppobj);
 
-void CFilterGraph_InitIFilterGraph2( CFilterGraph* pfg );
+HRESULT CFilterGraph_InitIPersist( CFilterGraph* pfg );
+void CFilterGraph_UninitIPersist( CFilterGraph* pfg );
+HRESULT CFilterGraph_InitIDispatch( CFilterGraph* pfg );
+void CFilterGraph_UninitIDispatch( CFilterGraph* pfg );
+HRESULT CFilterGraph_InitIFilterGraph2( CFilterGraph* pfg );
 void CFilterGraph_UninitIFilterGraph2( CFilterGraph* pfg );
-void CFilterGraph_InitIMediaControl( CFilterGraph* pfg );
+HRESULT CFilterGraph_InitIGraphVersion( CFilterGraph* pfg );
+void CFilterGraph_UninitIGraphVersion( CFilterGraph* pfg );
+HRESULT CFilterGraph_InitIMediaControl( CFilterGraph* pfg );
 void CFilterGraph_UninitIMediaControl( CFilterGraph* pfg );
-void CFilterGraph_InitIMediaEventEx( CFilterGraph* pfg );
+HRESULT CFilterGraph_InitIMediaFilter( CFilterGraph* pfg );
+void CFilterGraph_UninitIMediaFilter( CFilterGraph* pfg );
+HRESULT CFilterGraph_InitIMediaEventEx( CFilterGraph* pfg );
 void CFilterGraph_UninitIMediaEventEx( CFilterGraph* pfg );
-void CFilterGraph_InitIMediaPosition( CFilterGraph* pfg );
+HRESULT CFilterGraph_InitIMediaEventSink( CFilterGraph* pfg );
+void CFilterGraph_UninitIMediaEventSink( CFilterGraph* pfg );
+HRESULT CFilterGraph_InitIMediaPosition( CFilterGraph* pfg );
 void CFilterGraph_UninitIMediaPosition( CFilterGraph* pfg );
-void CFilterGraph_InitIMediaSeeking( CFilterGraph* pfg );
+HRESULT CFilterGraph_InitIMediaSeeking( CFilterGraph* pfg );
 void CFilterGraph_UninitIMediaSeeking( CFilterGraph* pfg );
-void CFilterGraph_InitIBasicVideo2( CFilterGraph* pfg );
+HRESULT CFilterGraph_InitIBasicVideo2( CFilterGraph* pfg );
 void CFilterGraph_UninitIBasicVideo2( CFilterGraph* pfg );
-void CFilterGraph_InitIBasicAudio( CFilterGraph* pfg );
+HRESULT CFilterGraph_InitIBasicAudio( CFilterGraph* pfg );
 void CFilterGraph_UninitIBasicAudio( CFilterGraph* pfg );
-void CFilterGraph_InitIVideoWindow( CFilterGraph* pfg );
+HRESULT CFilterGraph_InitIVideoWindow( CFilterGraph* pfg );
 void CFilterGraph_UninitIVideoWindow( CFilterGraph* pfg );