Nikolay Sivov (@nsivov) commented about dlls/mfreadwrite/reader.c:
+ UINT32 count; + HRESULT hr; + GUID key; + + hr = IMFMediaType_GetCount(decoded_type, &count); + while (SUCCEEDED(hr) && count--) + { + PropVariantInit(&value); + hr = IMFMediaType_GetItemByIndex(decoded_type, count, &key, &value); + if (SUCCEEDED(hr) && FAILED(IMFMediaType_GetItem(output_type, &key, NULL))) + hr = IMFMediaType_SetItem(output_type, &key, &value); + PropVariantClear(&value); + } + + return hr; +} Is that exactly what we need, to preserve existing attributes? If not, another option is to copy everything based on Compare() result.
-- https://gitlab.winehq.org/wine/wine/-/merge_requests/5120#note_62809