Anton Baskanov (@baskanov) commented about dlls/amstream/ddrawstream.c:
if (stream->peer && !is_format_compatible(stream, old_format.width, old_format.height, &old_format.pf)) { - hr = CopyMediaType(&old_media_type, &stream->mt); - if (FAILED(hr)) + memset(&new_media_type, 0, sizeof(new_media_type)); + new_media_type.pbFormat = (BYTE*)&new_media_type_video; + new_media_type.cbFormat = sizeof(VIDEOINFO); + create_mt_from_desc(&new_media_type, format); + if (!using_private_allocator(stream) || + (IPin_QueryAccept(stream->peer, &new_media_type) != S_OK) || + FAILED(hr = IMediaSample_SetMediaType(stream->next_sample, &new_media_type)))
The media type should be set on all subsequent samples, not just one. -- https://gitlab.winehq.org/wine/wine/-/merge_requests/7715#note_99684