Zhiyi Zhang : dsdmo: Add IMediaParams stub interface.
Alexandre Julliard
julliard at winehq.org
Wed Aug 10 14:53:20 CDT 2022
Module: wine
Branch: master
Commit: 88f1d681c15578ad77edd460c45b0df24234baad
URL: https://gitlab.winehq.org/wine/wine/-/commit/88f1d681c15578ad77edd460c45b0df24234baad
Author: Zhiyi Zhang <zzhang at codeweavers.com>
Date: Tue Jul 26 15:01:39 2022 +0800
dsdmo: Add IMediaParams stub interface.
Zuma's Revenge queries this interface.
Signed-off-by: Zhiyi Zhang <zzhang at codeweavers.com>
---
dlls/dsdmo/main.c | 73 ++++++++++++++++++++++++++++++++++++++++++++++++
dlls/dsdmo/tests/dsdmo.c | 1 +
2 files changed, 74 insertions(+)
diff --git a/dlls/dsdmo/main.c b/dlls/dsdmo/main.c
index 720d37350fe..3b106a8f633 100644
--- a/dlls/dsdmo/main.c
+++ b/dlls/dsdmo/main.c
@@ -34,6 +34,7 @@ struct effect
{
IMediaObject IMediaObject_iface;
IMediaObjectInPlace IMediaObjectInPlace_iface;
+ IMediaParams IMediaParams_iface;
IMediaParamInfo IMediaParamInfo_iface;
IUnknown IUnknown_inner;
IUnknown *outer_unk;
@@ -68,6 +69,8 @@ static HRESULT WINAPI effect_inner_QueryInterface(IUnknown *iface, REFIID iid, v
*out = &effect->IMediaObject_iface;
else if (IsEqualGUID(iid, &IID_IMediaObjectInPlace))
*out = &effect->IMediaObjectInPlace_iface;
+ else if (IsEqualGUID(iid, &IID_IMediaParams))
+ *out = &effect->IMediaParams_iface;
else if (IsEqualGUID(iid, &IID_IMediaParamInfo))
*out = &effect->IMediaParamInfo_iface;
else if (!(*out = effect->ops->query_interface(effect, iid)))
@@ -422,6 +425,75 @@ static const IMediaObjectInPlaceVtbl effect_inplace_vtbl =
effect_inplace_GetLatency,
};
+static struct effect *impl_from_IMediaParams(IMediaParams *iface)
+{
+ return CONTAINING_RECORD(iface, struct effect, IMediaParams_iface);
+}
+
+static HRESULT WINAPI effect_media_params_QueryInterface(IMediaParams *iface, REFIID iid, void **out)
+{
+ struct effect *effect = impl_from_IMediaParams(iface);
+ return IUnknown_QueryInterface(effect->outer_unk, iid, out);
+}
+
+static ULONG WINAPI effect_media_params_AddRef(IMediaParams *iface)
+{
+ struct effect *effect = impl_from_IMediaParams(iface);
+ return IUnknown_AddRef(effect->outer_unk);
+}
+
+static ULONG WINAPI effect_media_params_Release(IMediaParams *iface)
+{
+ struct effect *effect = impl_from_IMediaParams(iface);
+ return IUnknown_Release(effect->outer_unk);
+}
+
+static HRESULT WINAPI effect_media_params_GetParam(IMediaParams *iface, DWORD index, MP_DATA *data)
+{
+ FIXME("iface %p, index %lu, data %p, stub!\n", iface, index, data);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI effect_media_params_SetParam(IMediaParams *iface, DWORD index, MP_DATA data)
+{
+ FIXME("iface %p, index %lu, data %f, stub!\n", iface, index, data);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI effect_media_params_AddEnvelope(IMediaParams *iface, DWORD index, DWORD count,
+ MP_ENVELOPE_SEGMENT *segments)
+{
+ FIXME("iface %p, index %lu, count %lu, segments %p, stub!\n", iface, index, count, segments);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI effect_media_params_FlushEnvelope(IMediaParams *iface, DWORD index,
+ REFERENCE_TIME start, REFERENCE_TIME end)
+{
+ FIXME("iface %p, index %lu, start %s, end %s, stub!\n", iface, index,
+ wine_dbgstr_longlong(start), wine_dbgstr_longlong(end));
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI effect_media_params_SetTimeFormat(IMediaParams *iface, GUID guid,
+ MP_TIMEDATA time_data)
+{
+ FIXME("iface %p, guid %s, time_data %lx, stub!\n", iface, wine_dbgstr_guid(&guid), time_data);
+ return E_NOTIMPL;
+}
+
+static const IMediaParamsVtbl effect_media_params_vtbl =
+{
+ effect_media_params_QueryInterface,
+ effect_media_params_AddRef,
+ effect_media_params_Release,
+ effect_media_params_GetParam,
+ effect_media_params_SetParam,
+ effect_media_params_AddEnvelope,
+ effect_media_params_FlushEnvelope,
+ effect_media_params_SetTimeFormat,
+};
+
static struct effect *impl_from_IMediaParamInfo(IMediaParamInfo *iface)
{
return CONTAINING_RECORD(iface, struct effect, IMediaParamInfo_iface);
@@ -501,6 +573,7 @@ static void effect_init(struct effect *effect, IUnknown *outer, const struct eff
effect->IUnknown_inner.lpVtbl = &effect_inner_vtbl;
effect->IMediaObject_iface.lpVtbl = &effect_vtbl;
effect->IMediaObjectInPlace_iface.lpVtbl = &effect_inplace_vtbl;
+ effect->IMediaParams_iface.lpVtbl = &effect_media_params_vtbl;
effect->IMediaParamInfo_iface.lpVtbl = &effect_media_param_info_vtbl;
InitializeCriticalSection(&effect->cs);
diff --git a/dlls/dsdmo/tests/dsdmo.c b/dlls/dsdmo/tests/dsdmo.c
index 90b8e61f5e7..31f4dc6a473 100644
--- a/dlls/dsdmo/tests/dsdmo.c
+++ b/dlls/dsdmo/tests/dsdmo.c
@@ -136,6 +136,7 @@ static void test_interfaces(const GUID *clsid, const GUID *iid)
{
&IID_IMediaObject,
&IID_IMediaObjectInPlace,
+ &IID_IMediaParams,
&IID_IMediaParamInfo,
};
IUnknown *unk, *unk2, *unk3;
More information about the wine-cvs
mailing list