[PATCH v2 3/4] qasf: Implement ASF Reader filter pin_query_accept.
Rémi Bernon
wine at gitlab.winehq.org
Fri May 27 07:57:35 CDT 2022
From: Rémi Bernon <rbernon at codeweavers.com>
Signed-off-by: Rémi Bernon <rbernon at codeweavers.com>
---
dlls/qasf/asfreader.c | 22 ++++++++++++++++++++++
1 file changed, 22 insertions(+)
diff --git a/dlls/qasf/asfreader.c b/dlls/qasf/asfreader.c
index 5781cbde6af..56a30e71c78 100644
--- a/dlls/qasf/asfreader.c
+++ b/dlls/qasf/asfreader.c
@@ -93,6 +93,27 @@ static HRESULT asf_stream_get_media_type(struct strmbase_pin *iface, unsigned in
return hr;
}
+static HRESULT asf_stream_query_accept(struct strmbase_pin *iface, const AM_MEDIA_TYPE *media_type)
+{
+ struct asf_stream *stream = impl_from_strmbase_pin(iface);
+ struct asf_reader *filter = asf_reader_from_asf_stream(stream);
+ IWMOutputMediaProps *props;
+ HRESULT hr;
+
+ TRACE("iface %p, media_type %p.\n", iface, media_type);
+ strmbase_dump_media_type(media_type);
+
+ if (FAILED(IWMReader_GetOutputFormat(filter->reader, stream->index, 0, &props)))
+ return VFW_S_NO_MORE_ITEMS;
+
+ hr = IWMOutputMediaProps_SetMediaType(props, (WM_MEDIA_TYPE *)media_type);
+ if (SUCCEEDED(hr))
+ hr = IWMReader_SetOutputProps(filter->reader, stream->index, props);
+
+ IWMOutputMediaProps_Release(props);
+ return hr;
+}
+
static inline struct asf_reader *impl_from_strmbase_filter(struct strmbase_filter *iface)
{
return CONTAINING_RECORD(iface, struct asf_reader, filter);
@@ -166,6 +187,7 @@ static HRESULT WINAPI asf_reader_DecideBufferSize(struct strmbase_source *iface,
static const struct strmbase_source_ops source_ops =
{
.base.pin_get_media_type = asf_stream_get_media_type,
+ .base.pin_query_accept = asf_stream_query_accept,
.pfnDecideAllocator = BaseOutputPinImpl_DecideAllocator,
.pfnAttemptConnection = BaseOutputPinImpl_AttemptConnection,
.pfnDecideBufferSize = asf_reader_DecideBufferSize,
--
GitLab
https://gitlab.winehq.org/wine/wine/-/merge_requests/140
More information about the wine-devel
mailing list