[PATCH 2/5] mfreadwrite/reader: Add a passthrough transform.

Nikolay Sivov nsivov at codeweavers.com
Wed Mar 23 00:06:44 CDT 2022


On 3/18/22 16:27, Giovanni Mascellani wrote:
> On Windows media sources typically produce compressed data, so
> the source reader automatically adds a transform to decompress it.
> On Wine media sources already care about decompressing data, so
> there is no need for a transform. However, some applications
> expect it anyway (e.g., to edit transform attributes) and fail
> if it's not present.
>
> Therefore, this patch adds a trivial passthrough transform
> implementation to please such programs.

This is obviously bad, being a hack.

>   static HRESULT source_reader_create_decoder_for_stream(struct source_reader *reader, DWORD index, IMFMediaType *output_type)
>   {
>       MFT_REGISTER_TYPE_INFO in_type, out_type;
> @@ -1862,6 +2347,8 @@ static HRESULT WINAPI src_reader_SetCurrentMediaType(IMFSourceReader *iface, DWO
>       hr = source_reader_set_compatible_media_type(reader, index, type);
>       if (hr == S_FALSE)
>           hr = source_reader_create_decoder_for_stream(reader, index, type);
> +    else if (hr == S_OK)
> +        hr = source_reader_add_passthrough_transform(reader, index, reader->streams[index].current);
>       if (SUCCEEDED(hr))
>           hr = source_reader_setup_sample_allocator(reader, index);
>   

I'd like this to keep working as close to how it should be as possible, 
and being able to use wine's module on Windows too for testing.

What happens on Windows, when you set current media type to compressed 
type that source provides, or if some source provides raw output as 
winegstreamer does?
What should happen to e.g. WAV streams? Why should it get a dummy 
transform in such cases?

I understand why this would be necessary for compatibility, but we 
should narrow down the impact of this hack first, using it only for 
winegstreamer source, and only when appropriate. Dummy transform code 
also should be moved to winegstreamer, because that's where the need for 
such hack comes from.



More information about the wine-devel mailing list