Skip to content

Commit

Permalink
dsdmo: Add IMediaParams stub interface.
Browse files Browse the repository at this point in the history
Zuma's Revenge queries this interface.

Signed-off-by: Zhiyi Zhang <[email protected]>
  • Loading branch information
zzhiyi authored and julliard committed Aug 10, 2022
1 parent bc71217 commit 88f1d68
Show file tree
Hide file tree
Showing 2 changed files with 74 additions and 0 deletions.
73 changes: 73 additions & 0 deletions dlls/dsdmo/main.c
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ struct effect
{
IMediaObject IMediaObject_iface;
IMediaObjectInPlace IMediaObjectInPlace_iface;
IMediaParams IMediaParams_iface;
IMediaParamInfo IMediaParamInfo_iface;
IUnknown IUnknown_inner;
IUnknown *outer_unk;
Expand Down Expand Up @@ -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)))
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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);
Expand Down
1 change: 1 addition & 0 deletions dlls/dsdmo/tests/dsdmo.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit 88f1d68

Please sign in to comment.