mirror of
git://source.winehq.org/git/wine.git
synced 2024-10-15 09:41:13 +00:00
winegstreamer: Implement a stub IMFGetService for the media source.
Signed-off-by: Giovanni Mascellani <gmascellani@codeweavers.com> Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
49886f0312
commit
0a0bf3cf21
|
@ -757,8 +757,8 @@ static void test_source_resolver(void)
|
|||
ok(mediasource != NULL, "got %p\n", mediasource);
|
||||
ok(obj_type == MF_OBJECT_MEDIASOURCE, "got %d\n", obj_type);
|
||||
|
||||
todo_wine {
|
||||
check_interface(mediasource, &IID_IMFGetService, TRUE);
|
||||
todo_wine {
|
||||
check_service_interface(mediasource, &MF_RATE_CONTROL_SERVICE, &IID_IMFRateSupport, TRUE);
|
||||
check_service_interface(mediasource, &MF_RATE_CONTROL_SERVICE, &IID_IMFRateControl, TRUE);
|
||||
}
|
||||
|
|
|
@ -78,6 +78,7 @@ struct source_async_command
|
|||
struct media_source
|
||||
{
|
||||
IMFMediaSource IMFMediaSource_iface;
|
||||
IMFGetService IMFGetService_iface;
|
||||
IMFAsyncCallback async_commands_callback;
|
||||
LONG ref;
|
||||
DWORD async_commands_queue;
|
||||
|
@ -113,6 +114,11 @@ static inline struct media_source *impl_from_IMFMediaSource(IMFMediaSource *ifac
|
|||
return CONTAINING_RECORD(iface, struct media_source, IMFMediaSource_iface);
|
||||
}
|
||||
|
||||
static inline struct media_source *impl_from_IMFGetService(IMFGetService *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, struct media_source, IMFGetService_iface);
|
||||
}
|
||||
|
||||
static inline struct media_source *impl_from_async_commands_callback_IMFAsyncCallback(IMFAsyncCallback *iface)
|
||||
{
|
||||
return CONTAINING_RECORD(iface, struct media_source, async_commands_callback);
|
||||
|
@ -823,6 +829,39 @@ done:
|
|||
return hr;
|
||||
}
|
||||
|
||||
static HRESULT WINAPI media_source_get_service_QueryInterface(IMFGetService *iface, REFIID riid, void **obj)
|
||||
{
|
||||
struct media_source *source = impl_from_IMFGetService(iface);
|
||||
return IMFMediaSource_QueryInterface(&source->IMFMediaSource_iface, riid, obj);
|
||||
}
|
||||
|
||||
static ULONG WINAPI media_source_get_service_AddRef(IMFGetService *iface)
|
||||
{
|
||||
struct media_source *source = impl_from_IMFGetService(iface);
|
||||
return IMFMediaSource_AddRef(&source->IMFMediaSource_iface);
|
||||
}
|
||||
|
||||
static ULONG WINAPI media_source_get_service_Release(IMFGetService *iface)
|
||||
{
|
||||
struct media_source *source = impl_from_IMFGetService(iface);
|
||||
return IMFMediaSource_Release(&source->IMFMediaSource_iface);
|
||||
}
|
||||
|
||||
static HRESULT WINAPI media_source_get_service_GetService(IMFGetService *iface, REFGUID service, REFIID riid, void **obj)
|
||||
{
|
||||
FIXME("stub %p, %s, %s, %p.\n", iface, debugstr_guid(service), debugstr_guid(riid), obj);
|
||||
|
||||
return E_NOINTERFACE;
|
||||
}
|
||||
|
||||
static const IMFGetServiceVtbl media_source_get_service_vtbl =
|
||||
{
|
||||
media_source_get_service_QueryInterface,
|
||||
media_source_get_service_AddRef,
|
||||
media_source_get_service_Release,
|
||||
media_source_get_service_GetService,
|
||||
};
|
||||
|
||||
static HRESULT WINAPI media_source_QueryInterface(IMFMediaSource *iface, REFIID riid, void **out)
|
||||
{
|
||||
struct media_source *source = impl_from_IMFMediaSource(iface);
|
||||
|
@ -835,6 +874,10 @@ static HRESULT WINAPI media_source_QueryInterface(IMFMediaSource *iface, REFIID
|
|||
{
|
||||
*out = &source->IMFMediaSource_iface;
|
||||
}
|
||||
else if (IsEqualIID(riid, &IID_IMFGetService))
|
||||
{
|
||||
*out = &source->IMFGetService_iface;
|
||||
}
|
||||
else
|
||||
{
|
||||
FIXME("(%s, %p)\n", debugstr_guid(riid), out);
|
||||
|
@ -1094,6 +1137,7 @@ static HRESULT media_source_constructor(IMFByteStream *bytestream, struct media_
|
|||
return E_OUTOFMEMORY;
|
||||
|
||||
object->IMFMediaSource_iface.lpVtbl = &IMFMediaSource_vtbl;
|
||||
object->IMFGetService_iface.lpVtbl = &media_source_get_service_vtbl;
|
||||
object->async_commands_callback.lpVtbl = &source_async_commands_callback_vtbl;
|
||||
object->ref = 1;
|
||||
object->byte_stream = bytestream;
|
||||
|
|
Loading…
Reference in a new issue