Nikolay Sivov (@nsivov) commented about dlls/mfreadwrite/reader.c:
hr = MF_E_INVALIDSTREAMNUMBER; else { - obj = (IUnknown *)reader->streams[index].decoder.transform; + struct list *ptr; + + if ((ptr = list_tail(&stream->transforms))) + { + struct transform_entry *entry = LIST_ENTRY(ptr, struct transform_entry, entry); + obj = (IUnknown *)entry->transform; + } + if (!obj) hr = E_NOINTERFACE; } break;
GetServiceForStream() is supposed to use decoder transform, according to its description, and not the last one added. Is that not the case? To access the whole chain they added GetTransformForStream(). -- https://gitlab.winehq.org/wine/wine/-/merge_requests/5120#note_62811