[PATCH v2 07/13] qedit: Retrieve the Pin media type using a helper function.
Gabriel Ivăncescu
gabrielopcode at gmail.com
Thu Apr 16 10:24:59 CDT 2020
Signed-off-by: Gabriel Ivăncescu <gabrielopcode at gmail.com>
---
dlls/qedit/mediadet.c | 42 +++++++++++++++++++++++-------------------
1 file changed, 23 insertions(+), 19 deletions(-)
diff --git a/dlls/qedit/mediadet.c b/dlls/qedit/mediadet.c
index 556e59e..046994f 100644
--- a/dlls/qedit/mediadet.c
+++ b/dlls/qedit/mediadet.c
@@ -73,6 +73,28 @@ static void MD_cleanup(MediaDetImpl *This)
This->cur_stream = 0;
}
+static HRESULT get_pin_media_type(IPin *pin, AM_MEDIA_TYPE *out)
+{
+ IEnumMediaTypes *types;
+ AM_MEDIA_TYPE *pmt;
+ HRESULT hr;
+
+ hr = IPin_EnumMediaTypes(pin, &types);
+ if (SUCCEEDED(hr))
+ {
+ hr = IEnumMediaTypes_Next(types, 1, &pmt, NULL) == S_OK ? S_OK : E_NOINTERFACE;
+ IEnumMediaTypes_Release(types);
+ }
+
+ if (SUCCEEDED(hr))
+ {
+ *out = *pmt;
+ CoTaskMemFree(pmt);
+ }
+
+ return hr;
+}
+
/* From quartz, 2008/04/07 */
static HRESULT get_filter_info(IMoniker *pMoniker, GUID *pclsid, VARIANT *pvar)
{
@@ -576,9 +598,6 @@ static HRESULT WINAPI MediaDet_get_StreamMediaType(IMediaDet* iface,
AM_MEDIA_TYPE *pVal)
{
MediaDetImpl *This = impl_from_IMediaDet(iface);
- IEnumMediaTypes *types;
- AM_MEDIA_TYPE *pmt;
- HRESULT hr;
TRACE("(%p)\n", This);
@@ -588,22 +607,7 @@ static HRESULT WINAPI MediaDet_get_StreamMediaType(IMediaDet* iface,
if (!This->cur_pin)
return E_INVALIDARG;
- hr = IPin_EnumMediaTypes(This->cur_pin, &types);
- if (SUCCEEDED(hr))
- {
- hr = (IEnumMediaTypes_Next(types, 1, &pmt, NULL) == S_OK
- ? S_OK
- : E_NOINTERFACE);
- IEnumMediaTypes_Release(types);
- }
-
- if (SUCCEEDED(hr))
- {
- *pVal = *pmt;
- CoTaskMemFree(pmt);
- }
-
- return hr;
+ return get_pin_media_type(This->cur_pin, pVal);
}
static HRESULT WINAPI MediaDet_GetSampleGrabber(IMediaDet* iface,
--
2.21.0
More information about the wine-devel
mailing list