winegstreamer: Don't force codec data length for WMA.

This makes us be able to pass custom data in codec data buffer.
This commit is contained in:
Ziqing Hui 2024-11-07 15:42:39 +08:00
parent 6db2812411
commit 750fffbce4

View file

@ -320,7 +320,7 @@ static bool amt_from_wg_format_audio_wma(AM_MEDIA_TYPE *mt, const struct wg_form
return false; return false;
} }
size = sizeof(WAVEFORMATEX) + codec_data_len; size = sizeof(WAVEFORMATEX) + format->u.audio.codec_data_len;
if (!(wave_format = CoTaskMemAlloc(size))) if (!(wave_format = CoTaskMemAlloc(size)))
return false; return false;
memset(wave_format, 0, size); memset(wave_format, 0, size);
@ -336,12 +336,13 @@ static bool amt_from_wg_format_audio_wma(AM_MEDIA_TYPE *mt, const struct wg_form
wave_format->nAvgBytesPerSec = format->u.audio.bitrate / 8; wave_format->nAvgBytesPerSec = format->u.audio.bitrate / 8;
wave_format->nBlockAlign = format->u.audio.block_align; wave_format->nBlockAlign = format->u.audio.block_align;
wave_format->wBitsPerSample = format->u.audio.depth; wave_format->wBitsPerSample = format->u.audio.depth;
wave_format->cbSize = codec_data_len; wave_format->cbSize = format->u.audio.codec_data_len;
if (format->u.audio.codec_data_len == codec_data_len) memcpy(wave_format + 1, format->u.audio.codec_data, format->u.audio.codec_data_len);
memcpy(wave_format+1, format->u.audio.codec_data, format->u.audio.codec_data_len);
else if (format->u.audio.codec_data_len != codec_data_len)
FIXME("Unexpected codec_data length; got %u, expected %lu\n", format->u.audio.codec_data_len, codec_data_len); FIXME("Unexpected codec_data length; got %u, expected %lu\n", format->u.audio.codec_data_len, codec_data_len);
return true; return true;
} }