Nikolay Sivov (@nsivov) commented about dlls/mfreadwrite/writer.c:
+ IMFMediaType_Release(output_current_type); + return hr; +} + +static HRESULT stream_create_transforms(struct stream *stream, + IMFMediaType *input_type, IMFMediaType *output_type, BOOL use_encoder) +{ + IMFMediaType *encoder_input_type; + IMFActivate **activates; + IMFTransform *transform; + UINT32 count = 0, i; + HRESULT hr; + + /* Enumerate available transforms. */ + if (FAILED(hr = stream_enumerate_transforms(stream, input_type, output_type, use_encoder, &activates, &count))) + return hr; I don't remember details at this point. Was it decided that both encoder and converter can't be used at the same time? GetTransformForStream() suggests otherwise. If you potentially need both encoder and converter, like in a case of "input -> converter -> encoder -> output", then you'll need start negotiation from output side. Find appropriate encoders and then converter that works for {input type, supported encoder input type} pair, trying each pair.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/9633#note_124870