Alfred Agrell : winegstreamer: Recalculate alignment and bytes per second, instead of copying from input.
Module: wine Branch: master Commit: 1b702aea3c28a71c92feba5817ab34c61c0ad8e4 URL: https://gitlab.winehq.org/wine/wine/-/commit/1b702aea3c28a71c92feba5817ab34c... Author: Alfred Agrell <floating(a)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))
participants (1)
-
Alexandre Julliard