[PATCH v3 3/4] qasf: Implement ASF Reader filter pin_query_accept.

Zebediah Figura zfigura at codeweavers.com
Wed Jun 1 18:22:54 CDT 2022


On 5/27/22 09:46, Rémi Bernon wrote:
> +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;
> +}

This seems wrong; QueryAccept() isn't supposed to modify any state, and 
it can be called at any time.

Given that there's apparently no WM interface for this functionality I 
suspect that we'll have to implement it manually (after writing tests to 
find out what the correct functionality even is), if it's worth 
implementing. Which it may not be—calling QueryAccept() on the source 
pin isn't part of the usual connection process, and our fallback 
implementation returns S_OK anyway.



More information about the wine-devel mailing list