Add stubbed IGraphConfig interface to the filtergraph.
This commit is contained in:
parent
19f9da8044
commit
7f3c43b5c9
|
@ -150,13 +150,13 @@ typedef struct _IFilterGraphImpl {
|
||||||
const IMediaEventExVtbl *IMediaEventEx_vtbl;
|
const IMediaEventExVtbl *IMediaEventEx_vtbl;
|
||||||
const IMediaFilterVtbl *IMediaFilter_vtbl;
|
const IMediaFilterVtbl *IMediaFilter_vtbl;
|
||||||
const IMediaEventSinkVtbl *IMediaEventSink_vtbl;
|
const IMediaEventSinkVtbl *IMediaEventSink_vtbl;
|
||||||
|
const IGraphConfigVtbl *IGraphConfig_vtbl;
|
||||||
/* IAMGraphStreams */
|
/* IAMGraphStreams */
|
||||||
/* IAMStats */
|
/* IAMStats */
|
||||||
/* IBasicVideo2 */
|
/* IBasicVideo2 */
|
||||||
/* IFilterChain */
|
/* IFilterChain */
|
||||||
/* IFilterGraph2 */
|
/* IFilterGraph2 */
|
||||||
/* IFilterMapper2 */
|
/* IFilterMapper2 */
|
||||||
/* IGraphConfig */
|
|
||||||
/* IGraphVersion */
|
/* IGraphVersion */
|
||||||
/* IMediaPosition */
|
/* IMediaPosition */
|
||||||
/* IQueueCommand */
|
/* IQueueCommand */
|
||||||
|
@ -221,6 +221,9 @@ static HRESULT Filtergraph_QueryInterface(IFilterGraphImpl *This,
|
||||||
} else if (IsEqualGUID(&IID_IMediaEventSink, riid)) {
|
} else if (IsEqualGUID(&IID_IMediaEventSink, riid)) {
|
||||||
*ppvObj = &(This->IMediaEventSink_vtbl);
|
*ppvObj = &(This->IMediaEventSink_vtbl);
|
||||||
TRACE(" returning IMediaEventSink interface (%p)\n", *ppvObj);
|
TRACE(" returning IMediaEventSink interface (%p)\n", *ppvObj);
|
||||||
|
} else if (IsEqualGUID(&IID_IGraphConfig, riid)) {
|
||||||
|
*ppvObj = &(This->IGraphConfig_vtbl);
|
||||||
|
TRACE(" returning IGraphConfig interface (%p)\n", *ppvObj);
|
||||||
} else {
|
} else {
|
||||||
*ppvObj = NULL;
|
*ppvObj = NULL;
|
||||||
FIXME("unknown interface %s\n", debugstr_guid(riid));
|
FIXME("unknown interface %s\n", debugstr_guid(riid));
|
||||||
|
@ -3091,6 +3094,157 @@ static const IMediaEventSinkVtbl IMediaEventSink_VTable =
|
||||||
MediaEventSink_Notify
|
MediaEventSink_Notify
|
||||||
};
|
};
|
||||||
|
|
||||||
|
static HRESULT WINAPI GraphConfig_QueryInterface(IGraphConfig *iface, REFIID riid, LPVOID *ppv)
|
||||||
|
{
|
||||||
|
ICOM_THIS_MULTI(IFilterGraphImpl, IGraphConfig_vtbl, iface);
|
||||||
|
|
||||||
|
return Filtergraph_QueryInterface(This, riid, ppv);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI GraphConfig_AddRef(IGraphConfig *iface)
|
||||||
|
{
|
||||||
|
ICOM_THIS_MULTI(IFilterGraphImpl, IMediaEventSink_vtbl, iface);
|
||||||
|
|
||||||
|
return Filtergraph_AddRef(This);
|
||||||
|
}
|
||||||
|
|
||||||
|
static ULONG WINAPI GraphConfig_Release(IGraphConfig *iface)
|
||||||
|
{
|
||||||
|
ICOM_THIS_MULTI(IFilterGraphImpl, IGraphConfig_vtbl, iface);
|
||||||
|
|
||||||
|
return Filtergraph_Release(This);
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI GraphConfig_Reconnect(IGraphConfig *iface,
|
||||||
|
IPin* pOutputPin,
|
||||||
|
IPin* pInputPin,
|
||||||
|
const AM_MEDIA_TYPE* pmtFirstConnection,
|
||||||
|
IBaseFilter* pUsingFilter,
|
||||||
|
HANDLE hAbortEvent,
|
||||||
|
DWORD dwFlags)
|
||||||
|
{
|
||||||
|
ICOM_THIS_MULTI(IFilterGraphImpl, IGraphConfig_vtbl, iface);
|
||||||
|
|
||||||
|
FIXME("(%p)->(%p, %p, %p, %p, %p, %lx): stub!\n", This, pOutputPin, pInputPin, pmtFirstConnection, pUsingFilter, hAbortEvent, dwFlags);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI GraphConfig_Reconfigure(IGraphConfig *iface,
|
||||||
|
IGraphConfigCallback* pCallback,
|
||||||
|
PVOID pvContext,
|
||||||
|
DWORD dwFlags,
|
||||||
|
HANDLE hAbortEvent)
|
||||||
|
{
|
||||||
|
ICOM_THIS_MULTI(IFilterGraphImpl, IGraphConfig_vtbl, iface);
|
||||||
|
|
||||||
|
FIXME("(%p)->(%p, %p, %lx, %p): stub!\n", This, pCallback, pvContext, dwFlags, hAbortEvent);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI GraphConfig_AddFilterToCache(IGraphConfig *iface,
|
||||||
|
IBaseFilter* pFilter)
|
||||||
|
{
|
||||||
|
ICOM_THIS_MULTI(IFilterGraphImpl, IGraphConfig_vtbl, iface);
|
||||||
|
|
||||||
|
FIXME("(%p)->(%p): stub!\n", This, pFilter);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI GraphConfig_EnumCacheFilter(IGraphConfig *iface,
|
||||||
|
IEnumFilters** pEnum)
|
||||||
|
{
|
||||||
|
ICOM_THIS_MULTI(IFilterGraphImpl, IGraphConfig_vtbl, iface);
|
||||||
|
|
||||||
|
FIXME("(%p)->(%p): stub!\n", This, pEnum);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI GraphConfig_RemoveFilterFromCache(IGraphConfig *iface,
|
||||||
|
IBaseFilter* pFilter)
|
||||||
|
{
|
||||||
|
ICOM_THIS_MULTI(IFilterGraphImpl, IGraphConfig_vtbl, iface);
|
||||||
|
|
||||||
|
FIXME("(%p)->(%p): stub!\n", This, pFilter);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI GraphConfig_GetStartTime(IGraphConfig *iface,
|
||||||
|
REFERENCE_TIME* prtStart)
|
||||||
|
{
|
||||||
|
ICOM_THIS_MULTI(IFilterGraphImpl, IGraphConfig_vtbl, iface);
|
||||||
|
|
||||||
|
FIXME("(%p)->(%p): stub!\n", This, prtStart);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI GraphConfig_PushThroughData(IGraphConfig *iface,
|
||||||
|
IPin* pOutputPin,
|
||||||
|
IPinConnection* pConnection,
|
||||||
|
HANDLE hEventAbort)
|
||||||
|
{
|
||||||
|
ICOM_THIS_MULTI(IFilterGraphImpl, IGraphConfig_vtbl, iface);
|
||||||
|
|
||||||
|
FIXME("(%p)->(%p, %p, %p): stub!\n", This, pOutputPin, pConnection, hEventAbort);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI GraphConfig_SetFilterFlags(IGraphConfig *iface,
|
||||||
|
IBaseFilter* pFilter,
|
||||||
|
DWORD dwFlags)
|
||||||
|
{
|
||||||
|
ICOM_THIS_MULTI(IFilterGraphImpl, IGraphConfig_vtbl, iface);
|
||||||
|
|
||||||
|
FIXME("(%p)->(%p, %lx): stub!\n", This, pFilter, dwFlags);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI GraphConfig_GetFilterFlags(IGraphConfig *iface,
|
||||||
|
IBaseFilter* pFilter,
|
||||||
|
DWORD* dwFlags)
|
||||||
|
{
|
||||||
|
ICOM_THIS_MULTI(IFilterGraphImpl, IGraphConfig_vtbl, iface);
|
||||||
|
|
||||||
|
FIXME("(%p)->(%p, %p): stub!\n", This, pFilter, dwFlags);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static HRESULT WINAPI GraphConfig_RemoveFilterEx(IGraphConfig *iface,
|
||||||
|
IBaseFilter* pFilter,
|
||||||
|
DWORD dwFlags)
|
||||||
|
{
|
||||||
|
ICOM_THIS_MULTI(IFilterGraphImpl, IGraphConfig_vtbl, iface);
|
||||||
|
|
||||||
|
FIXME("(%p)->(%p, %lx): stub!\n", This, pFilter, dwFlags);
|
||||||
|
|
||||||
|
return E_NOTIMPL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static const IGraphConfigVtbl IGraphConfig_VTable =
|
||||||
|
{
|
||||||
|
GraphConfig_QueryInterface,
|
||||||
|
GraphConfig_AddRef,
|
||||||
|
GraphConfig_Release,
|
||||||
|
GraphConfig_Reconnect,
|
||||||
|
GraphConfig_Reconfigure,
|
||||||
|
GraphConfig_AddFilterToCache,
|
||||||
|
GraphConfig_EnumCacheFilter,
|
||||||
|
GraphConfig_RemoveFilterFromCache,
|
||||||
|
GraphConfig_GetStartTime,
|
||||||
|
GraphConfig_PushThroughData,
|
||||||
|
GraphConfig_SetFilterFlags,
|
||||||
|
GraphConfig_GetFilterFlags,
|
||||||
|
GraphConfig_RemoveFilterEx
|
||||||
|
};
|
||||||
|
|
||||||
/* This is the only function that actually creates a FilterGraph class... */
|
/* This is the only function that actually creates a FilterGraph class... */
|
||||||
HRESULT FilterGraph_create(IUnknown *pUnkOuter, LPVOID *ppObj)
|
HRESULT FilterGraph_create(IUnknown *pUnkOuter, LPVOID *ppObj)
|
||||||
{
|
{
|
||||||
|
@ -3112,6 +3266,7 @@ HRESULT FilterGraph_create(IUnknown *pUnkOuter, LPVOID *ppObj)
|
||||||
fimpl->IMediaEventEx_vtbl = &IMediaEventEx_VTable;
|
fimpl->IMediaEventEx_vtbl = &IMediaEventEx_VTable;
|
||||||
fimpl->IMediaFilter_vtbl = &IMediaFilter_VTable;
|
fimpl->IMediaFilter_vtbl = &IMediaFilter_VTable;
|
||||||
fimpl->IMediaEventSink_vtbl = &IMediaEventSink_VTable;
|
fimpl->IMediaEventSink_vtbl = &IMediaEventSink_VTable;
|
||||||
|
fimpl->IGraphConfig_vtbl = &IGraphConfig_VTable;
|
||||||
fimpl->ref = 1;
|
fimpl->ref = 1;
|
||||||
fimpl->ppFiltersInGraph = NULL;
|
fimpl->ppFiltersInGraph = NULL;
|
||||||
fimpl->pFilterNames = NULL;
|
fimpl->pFilterNames = NULL;
|
||||||
|
|
Loading…
Reference in New Issue