Added some stubs.
Started implementing some interfaces in FilterGraph.

diff --git a/dlls/quartz/imfilter.c b/dlls/quartz/imfilter.c
new file mode 100644
index 0000000..2c7e94a
--- /dev/null
+++ b/dlls/quartz/imfilter.c
@@ -0,0 +1,162 @@
+/*
+ * Implementation of IMediaFilter for FilterGraph.
+ *
+ * FIXME - stub.
+ *
+ * hidenori@a2.ctktv.ne.jp
+ */
+
+#include "config.h"
+
+#include "windef.h"
+#include "winbase.h"
+#include "wingdi.h"
+#include "winerror.h"
+#include "wine/obj_base.h"
+#include "wine/obj_oleaut.h"
+#include "strmif.h"
+#include "control.h"
+#include "uuids.h"
+
+#include "debugtools.h"
+DEFAULT_DEBUG_CHANNEL(quartz);
+
+#include "quartz_private.h"
+#include "fgraph.h"
+
+
+
+static HRESULT WINAPI
+IMediaFilter_fnQueryInterface(IMediaFilter* iface,REFIID riid,void** ppobj)
+{
+	CFilterGraph_THIS(iface,mediafilter);
+
+	TRACE("(%p)->()\n",This);
+
+	return IUnknown_QueryInterface(This->unk.punkControl,riid,ppobj);
+}
+
+static ULONG WINAPI
+IMediaFilter_fnAddRef(IMediaFilter* iface)
+{
+	CFilterGraph_THIS(iface,mediafilter);
+
+	TRACE("(%p)->()\n",This);
+
+	return IUnknown_AddRef(This->unk.punkControl);
+}
+
+static ULONG WINAPI
+IMediaFilter_fnRelease(IMediaFilter* iface)
+{
+	CFilterGraph_THIS(iface,mediafilter);
+
+	TRACE("(%p)->()\n",This);
+
+	return IUnknown_Release(This->unk.punkControl);
+}
+
+
+static HRESULT WINAPI
+IMediaFilter_fnGetClassID(IMediaFilter* iface,CLSID* pclsid)
+{
+	CFilterGraph_THIS(iface,mediafilter);
+
+	TRACE("(%p)->()\n",This);
+
+	return IPersist_GetClassID(
+		CFilterGraph_IPersist(This),pclsid);
+}
+
+static HRESULT WINAPI
+IMediaFilter_fnStop(IMediaFilter* iface)
+{
+	CFilterGraph_THIS(iface,mediafilter);
+
+	FIXME("(%p)->() stub!\n",This);
+
+	return E_NOTIMPL;
+}
+
+static HRESULT WINAPI
+IMediaFilter_fnPause(IMediaFilter* iface)
+{
+	CFilterGraph_THIS(iface,mediafilter);
+
+	FIXME("(%p)->() stub!\n",This);
+
+	return E_NOTIMPL;
+}
+
+static HRESULT WINAPI
+IMediaFilter_fnRun(IMediaFilter* iface,REFERENCE_TIME rtStart)
+{
+	CFilterGraph_THIS(iface,mediafilter);
+
+	FIXME("(%p)->() stub!\n",This);
+
+	return E_NOTIMPL;
+}
+
+static HRESULT WINAPI
+IMediaFilter_fnGetState(IMediaFilter* iface,DWORD dw,FILTER_STATE* pState)
+{
+	CFilterGraph_THIS(iface,mediafilter);
+
+	FIXME("(%p)->() stub!\n",This);
+
+	return E_NOTIMPL;
+}
+
+static HRESULT WINAPI
+IMediaFilter_fnSetSyncSource(IMediaFilter* iface,IReferenceClock* pobjClock)
+{
+	CFilterGraph_THIS(iface,mediafilter);
+
+	FIXME("(%p)->() stub!\n",This);
+
+	return E_NOTIMPL;
+}
+
+static HRESULT WINAPI
+IMediaFilter_fnGetSyncSource(IMediaFilter* iface,IReferenceClock** ppobjClock)
+{
+	CFilterGraph_THIS(iface,mediafilter);
+
+	FIXME("(%p)->() stub!\n",This);
+
+	return E_NOTIMPL;
+}
+
+
+
+static ICOM_VTABLE(IMediaFilter) imediafilter =
+{
+	ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
+	/* IUnknown fields */
+	IMediaFilter_fnQueryInterface,
+	IMediaFilter_fnAddRef,
+	IMediaFilter_fnRelease,
+	/* IPersist fields */
+	IMediaFilter_fnGetClassID,
+	/* IMediaFilter fields */
+	IMediaFilter_fnStop,
+	IMediaFilter_fnPause,
+	IMediaFilter_fnRun,
+	IMediaFilter_fnGetState,
+	IMediaFilter_fnSetSyncSource,
+	IMediaFilter_fnGetSyncSource,
+};
+
+HRESULT CFilterGraph_InitIMediaFilter( CFilterGraph* pfg )
+{
+	TRACE("(%p)\n",pfg);
+	ICOM_VTBL(&pfg->mediafilter) = &imediafilter;
+
+	return NOERROR;
+}
+
+void CFilterGraph_UninitIMediaFilter( CFilterGraph* pfg )
+{
+	TRACE("(%p)\n",pfg);
+}