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?