[PATCH] wmvcore: Support IWMReaderAccelerator in IWMReader
Alistair Leslie-Hughes
leslie_alistair at hotmail.com
Thu Jun 22 23:12:11 CDT 2017
Signed-off-by: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
---
dlls/wmvcore/tests/wmvcore.c | 2 +-
dlls/wmvcore/wmvcore_main.c | 54 ++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 55 insertions(+), 1 deletion(-)
diff --git a/dlls/wmvcore/tests/wmvcore.c b/dlls/wmvcore/tests/wmvcore.c
index a1900130b3..4d3a6d7699 100644
--- a/dlls/wmvcore/tests/wmvcore.c
+++ b/dlls/wmvcore/tests/wmvcore.c
@@ -121,7 +121,7 @@ static void test_wmreader_interfaces(void)
todo_wine ok(hr == S_OK, "Failed 0x%08x\n", hr);
hr = IWMReader_QueryInterface(reader, &IID_IWMReaderAccelerator, (void **)&accel);
- todo_wine ok(hr == S_OK, "Failed 0x%08x\n", hr);
+ ok(hr == S_OK, "Failed 0x%08x\n", hr);
hr = IWMReader_QueryInterface(reader, &IID_IWMReaderTimecode, (void **)&timecode);
todo_wine ok(hr == S_OK, "Failed 0x%08x\n", hr);
diff --git a/dlls/wmvcore/wmvcore_main.c b/dlls/wmvcore/wmvcore_main.c
index d196079698..e1a9eb39e5 100644
--- a/dlls/wmvcore/wmvcore_main.c
+++ b/dlls/wmvcore/wmvcore_main.c
@@ -59,6 +59,7 @@ HRESULT WINAPI WMCreateEditor(IWMMetadataEditor **editor)
typedef struct {
IWMReader IWMReader_iface;
IWMReaderAdvanced6 IWMReaderAdvanced6_iface;
+ IWMReaderAccelerator IWMReaderAccelerator_iface;
LONG ref;
} WMReader;
@@ -95,6 +96,9 @@ static HRESULT WINAPI WMReader_QueryInterface(IWMReader *iface, REFIID riid, voi
}else if(IsEqualGUID(riid, &IID_IWMReaderAdvanced6)) {
TRACE("(%p)->(IID_IWMReaderAdvanced6 %p)\n", This, ppv);
*ppv = &This->IWMReaderAdvanced6_iface;
+ }else if(IsEqualGUID(riid, &IID_IWMReaderAccelerator)) {
+ TRACE("(%p)->(IID_IWMReaderAccelerator %p)\n", This, ppv);
+ *ppv = &This->IWMReaderAccelerator_iface;
}else {
*ppv = NULL;
FIXME("(%p)->(%s %p)\n", This, debugstr_guid(riid), ppv);
@@ -649,6 +653,55 @@ static const IWMReaderAdvanced6Vtbl WMReaderAdvanced6Vtbl = {
WMReaderAdvanced6_SetProtextStreamSamples
};
+static inline WMReader *impl_from_IWMReaderAccelerator(IWMReaderAccelerator *iface)
+{
+ return CONTAINING_RECORD(iface, WMReader, IWMReaderAccelerator_iface);
+}
+
+static HRESULT WINAPI reader_accl_QueryInterface(IWMReaderAccelerator *iface, REFIID riid, void **object)
+{
+ WMReader *This = impl_from_IWMReaderAccelerator(iface);
+ return IWMReader_QueryInterface(&This->IWMReader_iface, riid, object);
+}
+
+static ULONG WINAPI reader_accl_AddRef(IWMReaderAccelerator *iface)
+{
+ WMReader *This = impl_from_IWMReaderAccelerator(iface);
+ return IWMReader_AddRef(&This->IWMReader_iface);
+}
+
+static ULONG WINAPI reader_accl_Release(IWMReaderAccelerator *iface)
+{
+ WMReader *This = impl_from_IWMReaderAccelerator(iface);
+ return IWMReader_Release(&This->IWMReader_iface);
+}
+
+static HRESULT WINAPI reader_accl_GetCodecInterface(IWMReaderAccelerator *iface, DWORD output, REFIID riid, void **codec)
+{
+ WMReader *This = impl_from_IWMReaderAccelerator(iface);
+
+ FIXME("%p, %d, %s, %p\n", This, output, debugstr_guid(riid), codec);
+
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI reader_accl_Notify(IWMReaderAccelerator *iface, DWORD output, WM_MEDIA_TYPE *subtype)
+{
+ WMReader *This = impl_from_IWMReaderAccelerator(iface);
+
+ FIXME("%p, %d, %p\n", This, output, subtype);
+
+ return E_NOTIMPL;
+}
+
+static const IWMReaderAcceleratorVtbl WMReaderAcceleratorVtbl = {
+ reader_accl_QueryInterface,
+ reader_accl_AddRef,
+ reader_accl_Release,
+ reader_accl_GetCodecInterface,
+ reader_accl_Notify
+};
+
HRESULT WINAPI WMCreateReader(IUnknown *reserved, DWORD rights, IWMReader **ret_reader)
{
WMReader *reader;
@@ -661,6 +714,7 @@ HRESULT WINAPI WMCreateReader(IUnknown *reserved, DWORD rights, IWMReader **ret_
reader->IWMReader_iface.lpVtbl = &WMReaderVtbl;
reader->IWMReaderAdvanced6_iface.lpVtbl = &WMReaderAdvanced6Vtbl;
+ reader->IWMReaderAccelerator_iface.lpVtbl = &WMReaderAcceleratorVtbl;
reader->ref = 1;
*ret_reader = &reader->IWMReader_iface;
--
2.11.0
More information about the wine-patches
mailing list