Module: wine Branch: master Commit: 1b702aea3c28a71c92feba5817ab34c61c0ad8e4 URL: https://gitlab.winehq.org/wine/wine/-/commit/1b702aea3c28a71c92feba5817ab34c...
Author: Alfred Agrell floating@muncher.se Date: Wed Jun 19 17:09:42 2024 +0200
winegstreamer: Recalculate alignment and bytes per second, instead of copying from input.
---
dlls/winegstreamer/wma_decoder.c | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/dlls/winegstreamer/wma_decoder.c b/dlls/winegstreamer/wma_decoder.c index 14a48db9ae2..c141b7e26fe 100644 --- a/dlls/winegstreamer/wma_decoder.c +++ b/dlls/winegstreamer/wma_decoder.c @@ -661,8 +661,8 @@ static HRESULT WINAPI media_object_GetOutputType(IMediaObject *iface, DWORD inde DMO_MEDIA_TYPE *type) { struct wma_decoder *decoder = impl_from_IMediaObject(iface); + UINT32 depth, channels, rate; IMFMediaType *media_type; - UINT32 depth; HRESULT hr;
TRACE("iface %p, index %lu, type_index %lu, type %p\n", iface, index, type_index, type); @@ -686,6 +686,16 @@ static HRESULT WINAPI media_object_GetOutputType(IMediaObject *iface, DWORD inde else hr = IMFMediaType_SetGUID(media_type, &MF_MT_SUBTYPE, &MFAudioFormat_PCM);
+ if (SUCCEEDED(hr)) + hr = IMFMediaType_GetUINT32(media_type, &MF_MT_AUDIO_NUM_CHANNELS, &channels); + if (SUCCEEDED(hr)) + hr = IMFMediaType_SetUINT32(media_type, &MF_MT_AUDIO_BLOCK_ALIGNMENT, depth * channels / 8); + + if (SUCCEEDED(hr)) + hr = IMFMediaType_GetUINT32(media_type, &MF_MT_AUDIO_SAMPLES_PER_SECOND, &rate); + if (SUCCEEDED(hr)) + hr = IMFMediaType_SetUINT32(media_type, &MF_MT_AUDIO_AVG_BYTES_PER_SECOND, depth * channels / 8 * rate); + if (SUCCEEDED(hr)) hr = IMFMediaType_DeleteItem(media_type, &MF_MT_USER_DATA); if (SUCCEEDED(hr))