Zebediah Figura : dsdmo: Stub IMediaObjectInPlace.
Alexandre Julliard
julliard at winehq.org
Mon Jul 27 16:35:14 CDT 2020
Module: wine
Branch: master
Commit: 2b9cbfd6269078e92691e2eb0f53a684b8dbbbbf
URL: https://source.winehq.org/git/wine.git/?a=commit;h=2b9cbfd6269078e92691e2eb0f53a684b8dbbbbf
Author: Zebediah Figura <zfigura at codeweavers.com>
Date: Fri Jul 24 19:20:21 2020 -0500
dsdmo: Stub IMediaObjectInPlace.
Signed-off-by: Zebediah Figura <z.figura12 at gmail.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/dsdmo/main.c | 57 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 57 insertions(+)
diff --git a/dlls/dsdmo/main.c b/dlls/dsdmo/main.c
index 44915ca856..f3be97177a 100644
--- a/dlls/dsdmo/main.c
+++ b/dlls/dsdmo/main.c
@@ -33,6 +33,7 @@ static HINSTANCE dsdmo_instance;
struct effect
{
IMediaObject IMediaObject_iface;
+ IMediaObjectInPlace IMediaObjectInPlace_iface;
IUnknown IUnknown_inner;
IUnknown *outer_unk;
LONG refcount;
@@ -61,6 +62,8 @@ static HRESULT WINAPI effect_inner_QueryInterface(IUnknown *iface, REFIID iid, v
*out = iface;
else if (IsEqualGUID(iid, &IID_IMediaObject))
*out = &effect->IMediaObject_iface;
+ else if (IsEqualGUID(iid, &IID_IMediaObjectInPlace))
+ *out = &effect->IMediaObjectInPlace_iface;
else if (!(*out = effect->ops->query_interface(effect, iid)))
{
WARN("%s not implemented; returning E_NOINTERFACE.\n", debugstr_guid(iid));
@@ -282,12 +285,66 @@ static const IMediaObjectVtbl effect_vtbl =
effect_Lock,
};
+static struct effect *impl_from_IMediaObjectInPlace(IMediaObjectInPlace *iface)
+{
+ return CONTAINING_RECORD(iface, struct effect, IMediaObjectInPlace_iface);
+}
+
+static HRESULT WINAPI effect_inplace_QueryInterface(IMediaObjectInPlace *iface, REFIID iid, void **out)
+{
+ struct effect *effect = impl_from_IMediaObjectInPlace(iface);
+ return IUnknown_QueryInterface(effect->outer_unk, iid, out);
+}
+
+static ULONG WINAPI effect_inplace_AddRef(IMediaObjectInPlace *iface)
+{
+ struct effect *effect = impl_from_IMediaObjectInPlace(iface);
+ return IUnknown_AddRef(effect->outer_unk);
+}
+
+static ULONG WINAPI effect_inplace_Release(IMediaObjectInPlace *iface)
+{
+ struct effect *effect = impl_from_IMediaObjectInPlace(iface);
+ return IUnknown_Release(effect->outer_unk);
+}
+
+static HRESULT WINAPI effect_inplace_Process(IMediaObjectInPlace *iface, ULONG size,
+ BYTE *data, REFERENCE_TIME start, DWORD flags)
+{
+ FIXME("iface %p, size %u, data %p, start %s, flags %#x, stub!\n",
+ iface, size, data, wine_dbgstr_longlong(start), flags);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI effect_inplace_Clone(IMediaObjectInPlace *iface, IMediaObjectInPlace **out)
+{
+ FIXME("iface %p, out %p, stub!\n", iface, out);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI effect_inplace_GetLatency(IMediaObjectInPlace *iface, REFERENCE_TIME *latency)
+{
+ FIXME("iface %p, latency %p, stub!\n", iface, latency);
+ return E_NOTIMPL;
+}
+
+static const IMediaObjectInPlaceVtbl effect_inplace_vtbl =
+{
+ effect_inplace_QueryInterface,
+ effect_inplace_AddRef,
+ effect_inplace_Release,
+ effect_inplace_Process,
+ effect_inplace_Clone,
+ effect_inplace_GetLatency,
+};
+
static void effect_init(struct effect *effect, IUnknown *outer, const struct effect_ops *ops)
{
effect->outer_unk = outer ? outer : &effect->IUnknown_inner;
effect->refcount = 1;
effect->IUnknown_inner.lpVtbl = &effect_inner_vtbl;
effect->IMediaObject_iface.lpVtbl = &effect_vtbl;
+ effect->IMediaObjectInPlace_iface.lpVtbl = &effect_inplace_vtbl;
effect->ops = ops;
}
More information about the wine-cvs
mailing list