Zebediah Figura (@zfigura) commented about dlls/winegstreamer/quartz_parser.c:
+ wave_format->wFormatTag = fmt_tag; + wave_format->nChannels = format->u.audio_wma.channels; + wave_format->nSamplesPerSec = format->u.audio_wma.rate; + wave_format->nAvgBytesPerSec = format->u.audio_wma.bitrate / 8; + wave_format->nBlockAlign = format->u.audio_wma.block_align; + wave_format->wBitsPerSample = format->u.audio_wma.depth; + wave_format->cbSize = size - sizeof(WAVEFORMATEX); + + if (format->u.audio_wma.version == 1 && format->u.audio_wma.codec_data_len == 4) + memcpy(wave_format+1, format->u.audio_wma.codec_data, 4); + if (format->u.audio_wma.version == 2 && format->u.audio_wma.codec_data_len == 10) + memcpy(wave_format+1, format->u.audio_wma.codec_data, 10); + if (format->u.audio_wma.version == 3 && format->u.audio_wma.codec_data_len == 18) + memcpy(wave_format+1, format->u.audio_wma.codec_data, 18); + if (format->u.audio_wma.version == 4 && format->u.audio_wma.codec_data_len == 18) + memcpy(wave_format+1, format->u.audio_wma.codec_data, 18); This seems redundant with the size we already calculated—it should be possible to just check codec_data_len == size.
Also, can we have a FIXME or ERR for the case where the length doesn't match what we expect? -- https://gitlab.winehq.org/wine/wine/-/merge_requests/4450#note_53156