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.