Zebediah Figura : winegstreamer: Move the IWMLanguageList implementation to the wm_reader object.
Alexandre Julliard
julliard at winehq.org
Wed Oct 20 15:58:41 CDT 2021
Module: wine
Branch: master
Commit: 4239f2acf77d9eaa8166628d25c1336c1599df33
URL: https://source.winehq.org/git/wine.git/?a=commit;h=4239f2acf77d9eaa8166628d25c1336c1599df33
Author: Zebediah Figura <zfigura at codeweavers.com>
Date: Wed Oct 20 11:09:49 2021 -0500
winegstreamer: Move the IWMLanguageList implementation to the wm_reader object.
Signed-off-by: Zebediah Figura <zfigura at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>
---
dlls/winegstreamer/gst_private.h | 1 +
dlls/winegstreamer/wm_asyncreader.c | 61 -------------------------------------
dlls/winegstreamer/wm_reader.c | 61 +++++++++++++++++++++++++++++++++++++
dlls/wmvcore/tests/wmvcore.c | 2 +-
4 files changed, 63 insertions(+), 62 deletions(-)
diff --git a/dlls/winegstreamer/gst_private.h b/dlls/winegstreamer/gst_private.h
index 71d3bb2b509..6dc0ad3e291 100644
--- a/dlls/winegstreamer/gst_private.h
+++ b/dlls/winegstreamer/gst_private.h
@@ -116,6 +116,7 @@ HRESULT audio_converter_create(REFIID riid, void **ret) DECLSPEC_HIDDEN;
struct wm_reader
{
IWMHeaderInfo3 IWMHeaderInfo3_iface;
+ IWMLanguageList IWMLanguageList_iface;
IWMProfile3 IWMProfile3_iface;
LONG refcount;
diff --git a/dlls/winegstreamer/wm_asyncreader.c b/dlls/winegstreamer/wm_asyncreader.c
index 1361b20932f..a36718ef453 100644
--- a/dlls/winegstreamer/wm_asyncreader.c
+++ b/dlls/winegstreamer/wm_asyncreader.c
@@ -32,7 +32,6 @@ struct async_reader
IWMReaderTypeNegotiation IWMReaderTypeNegotiation_iface;
IWMReaderTimecode IWMReaderTimecode_iface;
IWMReaderPlaylistBurn IWMReaderPlaylistBurn_iface;
- IWMLanguageList IWMLanguageList_iface;
IReferenceClock IReferenceClock_iface;
IWMPacketSize2 IWMPacketSize2_iface;
};
@@ -1257,62 +1256,6 @@ static const IWMReaderPlaylistBurnVtbl WMReaderPlaylistBurnVtbl =
playlist_EndPlaylistBurn
};
-static struct async_reader *impl_from_IWMLanguageList(IWMLanguageList *iface)
-{
- return CONTAINING_RECORD(iface, struct async_reader, IWMLanguageList_iface);
-}
-
-static HRESULT WINAPI langlist_QueryInterface(IWMLanguageList *iface, REFIID riid, void **ppv)
-{
- struct async_reader *This = impl_from_IWMLanguageList(iface);
- return IWMReader_QueryInterface(&This->IWMReader_iface, riid, ppv);
-}
-
-static ULONG WINAPI langlist_AddRef(IWMLanguageList *iface)
-{
- struct async_reader *This = impl_from_IWMLanguageList(iface);
- return IWMReader_AddRef(&This->IWMReader_iface);
-}
-
-static ULONG WINAPI langlist_Release(IWMLanguageList *iface)
-{
- struct async_reader *This = impl_from_IWMLanguageList(iface);
- return IWMReader_Release(&This->IWMReader_iface);
-}
-
-static HRESULT WINAPI langlist_GetLanguageCount(IWMLanguageList *iface, WORD *count)
-{
- struct async_reader *This = impl_from_IWMLanguageList(iface);
- FIXME("%p, %p\n", This, count);
- return E_NOTIMPL;
-}
-
-static HRESULT WINAPI langlist_GetLanguageDetails(IWMLanguageList *iface, WORD index,
- WCHAR *language, WORD *length)
-{
- struct async_reader *This = impl_from_IWMLanguageList(iface);
- FIXME("%p, %d, %p, %p\n", This, index, language, length);
- return E_NOTIMPL;
-}
-
-static HRESULT WINAPI langlist_AddLanguageByRFC1766String(IWMLanguageList *iface, LPCWSTR_WMSDK_TYPE_SAFE language,
- WORD *index)
-{
- struct async_reader *This = impl_from_IWMLanguageList(iface);
- FIXME("%p, %p, %p\n", This, language, index);
- return E_NOTIMPL;
-}
-
-static const IWMLanguageListVtbl WMLanguageListVtbl =
-{
- langlist_QueryInterface,
- langlist_AddRef,
- langlist_Release,
- langlist_GetLanguageCount,
- langlist_GetLanguageDetails,
- langlist_AddLanguageByRFC1766String
-};
-
static struct async_reader *impl_from_IReferenceClock(IReferenceClock *iface)
{
return CONTAINING_RECORD(iface, struct async_reader, IReferenceClock_iface);
@@ -1455,9 +1398,6 @@ static void *async_reader_query_interface(struct wm_reader *iface, REFIID iid)
if (IsEqualIID(iid, &IID_IReferenceClock))
return &reader->IReferenceClock_iface;
- if (IsEqualIID(iid, &IID_IWMLanguageList))
- return &reader->IWMLanguageList_iface;
-
if (IsEqualIID(iid, &IID_IWMPacketSize)
|| IsEqualIID(iid, &IID_IWMPacketSize2))
return &reader->IWMPacketSize2_iface;
@@ -1522,7 +1462,6 @@ HRESULT WINAPI winegstreamer_create_wm_async_reader(IWMReader **reader)
wm_reader_init(&object->reader, &async_reader_ops);
object->IReferenceClock_iface.lpVtbl = &ReferenceClockVtbl;
- object->IWMLanguageList_iface.lpVtbl = &WMLanguageListVtbl;
object->IWMPacketSize2_iface.lpVtbl = &WMPacketSize2Vtbl;
object->IWMReader_iface.lpVtbl = &WMReaderVtbl;
object->IWMReaderAdvanced6_iface.lpVtbl = &WMReaderAdvanced6Vtbl;
diff --git a/dlls/winegstreamer/wm_reader.c b/dlls/winegstreamer/wm_reader.c
index 09d5c3bddcc..b72ff98cd18 100644
--- a/dlls/winegstreamer/wm_reader.c
+++ b/dlls/winegstreamer/wm_reader.c
@@ -37,6 +37,10 @@ static HRESULT WINAPI profile_QueryInterface(IWMProfile3 *iface, REFIID iid, voi
{
*out = &reader->IWMHeaderInfo3_iface;
}
+ else if (IsEqualIID(iid, &IID_IWMLanguageList))
+ {
+ *out = &reader->IWMLanguageList_iface;
+ }
else if (IsEqualIID(iid, &IID_IUnknown)
|| IsEqualIID(iid, &IID_IWMProfile)
|| IsEqualIID(iid, &IID_IWMProfile2)
@@ -512,9 +516,66 @@ static const IWMHeaderInfo3Vtbl header_info_vtbl =
header_info_AddCodecInfo,
};
+static struct wm_reader *impl_from_IWMLanguageList(IWMLanguageList *iface)
+{
+ return CONTAINING_RECORD(iface, struct wm_reader, IWMLanguageList_iface);
+}
+
+static HRESULT WINAPI language_list_QueryInterface(IWMLanguageList *iface, REFIID iid, void **out)
+{
+ struct wm_reader *reader = impl_from_IWMLanguageList(iface);
+
+ return IWMProfile3_QueryInterface(&reader->IWMProfile3_iface, iid, out);
+}
+
+static ULONG WINAPI language_list_AddRef(IWMLanguageList *iface)
+{
+ struct wm_reader *reader = impl_from_IWMLanguageList(iface);
+
+ return IWMProfile3_AddRef(&reader->IWMProfile3_iface);
+}
+
+static ULONG WINAPI language_list_Release(IWMLanguageList *iface)
+{
+ struct wm_reader *reader = impl_from_IWMLanguageList(iface);
+
+ return IWMProfile3_Release(&reader->IWMProfile3_iface);
+}
+
+static HRESULT WINAPI language_list_GetLanguageCount(IWMLanguageList *iface, WORD *count)
+{
+ FIXME("iface %p, count %p, stub!\n", iface, count);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI language_list_GetLanguageDetails(IWMLanguageList *iface,
+ WORD index, WCHAR *lang, WORD *len)
+{
+ FIXME("iface %p, index %u, lang %p, len %p, stub!\n", iface, index, lang, len);
+ return E_NOTIMPL;
+}
+
+static HRESULT WINAPI language_list_AddLanguageByRFC1766String(IWMLanguageList *iface,
+ const WCHAR *lang, WORD *index)
+{
+ FIXME("iface %p, lang %s, index %p, stub!\n", iface, debugstr_w(lang), index);
+ return E_NOTIMPL;
+}
+
+static const IWMLanguageListVtbl language_list_vtbl =
+{
+ language_list_QueryInterface,
+ language_list_AddRef,
+ language_list_Release,
+ language_list_GetLanguageCount,
+ language_list_GetLanguageDetails,
+ language_list_AddLanguageByRFC1766String,
+};
+
void wm_reader_init(struct wm_reader *reader, const struct wm_reader_ops *ops)
{
reader->IWMHeaderInfo3_iface.lpVtbl = &header_info_vtbl;
+ reader->IWMLanguageList_iface.lpVtbl = &language_list_vtbl;
reader->IWMProfile3_iface.lpVtbl = &profile_vtbl;
reader->refcount = 1;
reader->ops = ops;
diff --git a/dlls/wmvcore/tests/wmvcore.c b/dlls/wmvcore/tests/wmvcore.c
index 75d1f9e0c35..9f9c5ed393f 100644
--- a/dlls/wmvcore/tests/wmvcore.c
+++ b/dlls/wmvcore/tests/wmvcore.c
@@ -147,7 +147,7 @@ static void test_wmsyncreader_interfaces(void)
check_interface(reader, &IID_IWMHeaderInfo, TRUE);
check_interface(reader, &IID_IWMHeaderInfo2, TRUE);
check_interface(reader, &IID_IWMHeaderInfo3, TRUE);
- todo_wine check_interface(reader, &IID_IWMLanguageList, TRUE);
+ check_interface(reader, &IID_IWMLanguageList, TRUE);
todo_wine check_interface(reader, &IID_IWMPacketSize, TRUE);
todo_wine check_interface(reader, &IID_IWMPacketSize2, TRUE);
check_interface(reader, &IID_IWMProfile, TRUE);
More information about the wine-cvs
mailing list