2 * Implementation of IFilterMapper for CLSID_FilterMapper.
6 * hidenori@a2.ctktv.ne.jp
17 #include "wine/obj_base.h"
18 #include "wine/obj_oleaut.h"
23 #include "debugtools.h"
24 DEFAULT_DEBUG_CHANNEL(quartz
);
26 #include "quartz_private.h"
32 IFilterMapper_fnQueryInterface(IFilterMapper
* iface
,REFIID riid
,void** ppobj
)
34 CFilterMapper_THIS(iface
,fmap
);
36 TRACE("(%p)->()\n",This
);
38 return IUnknown_QueryInterface(This
->unk
.punkControl
,riid
,ppobj
);
42 IFilterMapper_fnAddRef(IFilterMapper
* iface
)
44 CFilterMapper_THIS(iface
,fmap
);
46 TRACE("(%p)->()\n",This
);
48 return IUnknown_AddRef(This
->unk
.punkControl
);
52 IFilterMapper_fnRelease(IFilterMapper
* iface
)
54 CFilterMapper_THIS(iface
,fmap
);
56 TRACE("(%p)->()\n",This
);
58 return IUnknown_Release(This
->unk
.punkControl
);
63 IFilterMapper_fnRegisterFilter(IFilterMapper
* iface
,CLSID clsid
,LPCWSTR lpwszName
,DWORD dwMerit
)
65 CFilterMapper_THIS(iface
,fmap
);
67 FIXME("(%p)->(%s,%s,%08lx)\n",This
,
68 debugstr_guid(&clsid
),debugstr_w(lpwszName
),dwMerit
);
71 /* FIXME - handle dwMerit! */
72 return QUARTZ_RegisterAMovieFilter(
73 &CLSID_LegacyAmFilterCategory
,
76 lpwszName
, NULL
, TRUE
);
80 IFilterMapper_fnRegisterFilterInstance(IFilterMapper
* iface
,CLSID clsid
,LPCWSTR lpwszName
,CLSID
* pclsidMedia
)
82 CFilterMapper_THIS(iface
,fmap
);
85 FIXME("(%p)->()\n",This
);
87 if ( pclsidMedia
== NULL
)
89 hr
= CoCreateGuid(pclsidMedia
);
94 /* this doesn't work. */
95 /* return IFilterMapper_RegisterFilter(iface,
96 *pclsidMedia,lpwszName,0x60000000); */
101 static HRESULT WINAPI
102 IFilterMapper_fnRegisterPin(IFilterMapper
* iface
,CLSID clsidFilter
,LPCWSTR lpwszName
,BOOL bRendered
,BOOL bOutput
,BOOL bZero
,BOOL bMany
,CLSID clsidReserved
,LPCWSTR lpwszReserved
)
104 CFilterMapper_THIS(iface
,fmap
);
106 FIXME("(%p)->() stub!\n",This
);
111 static HRESULT WINAPI
112 IFilterMapper_fnRegisterPinType(IFilterMapper
* iface
,CLSID clsidFilter
,LPCWSTR lpwszName
,CLSID clsidMajorType
,CLSID clsidSubType
)
114 CFilterMapper_THIS(iface
,fmap
);
116 FIXME("(%p)->() stub!\n",This
);
121 static HRESULT WINAPI
122 IFilterMapper_fnUnregisterFilter(IFilterMapper
* iface
,CLSID clsidFilter
)
124 CFilterMapper_THIS(iface
,fmap
);
126 FIXME("(%p)->(%s)\n",This
,debugstr_guid(&clsidFilter
));
129 return QUARTZ_RegisterAMovieFilter(
130 &CLSID_LegacyAmFilterCategory
,
132 NULL
, 0, NULL
, NULL
, FALSE
);
135 static HRESULT WINAPI
136 IFilterMapper_fnUnregisterFilterInstance(IFilterMapper
* iface
,CLSID clsidMedia
)
138 CFilterMapper_THIS(iface
,fmap
);
140 FIXME("(%p)->(%s)\n",This
,debugstr_guid(&clsidMedia
));
143 /* this doesn't work. */
144 /* return IFilterMapper_UnregisterFilter(iface,clsidMedia); */
149 static HRESULT WINAPI
150 IFilterMapper_fnUnregisterPin(IFilterMapper
* iface
,CLSID clsidPin
,LPCWSTR lpwszName
)
152 CFilterMapper_THIS(iface
,fmap
);
154 FIXME("(%p)->(%s,%s) stub!\n",This
,
155 debugstr_guid(&clsidPin
),debugstr_w(lpwszName
));
160 static HRESULT WINAPI
161 IFilterMapper_fnEnumMatchingFilters(IFilterMapper
* iface
,IEnumRegFilters
** ppobj
,DWORD dwMerit
,BOOL bInputNeeded
,CLSID clsInMajorType
,CLSID clsidSubType
,BOOL bRender
,BOOL bOutputNeeded
,CLSID clsOutMajorType
,CLSID clsOutSubType
)
163 CFilterMapper_THIS(iface
,fmap
);
165 FIXME("(%p)->() stub!\n",This
);
172 static ICOM_VTABLE(IFilterMapper
) ifmap
=
174 ICOM_MSVTABLE_COMPAT_DummyRTTIVALUE
175 /* IUnknown fields */
176 IFilterMapper_fnQueryInterface
,
177 IFilterMapper_fnAddRef
,
178 IFilterMapper_fnRelease
,
179 /* IFilterMapper fields */
180 IFilterMapper_fnRegisterFilter
,
181 IFilterMapper_fnRegisterFilterInstance
,
182 IFilterMapper_fnRegisterPin
,
183 IFilterMapper_fnRegisterPinType
,
184 IFilterMapper_fnUnregisterFilter
,
185 IFilterMapper_fnUnregisterFilterInstance
,
186 IFilterMapper_fnUnregisterPin
,
187 IFilterMapper_fnEnumMatchingFilters
,
191 HRESULT
CFilterMapper_InitIFilterMapper( CFilterMapper
* pfm
)
194 ICOM_VTBL(&pfm
->fmap
) = &ifmap
;
199 void CFilterMapper_UninitIFilterMapper( CFilterMapper
* pfm
)