[PATCH 0/2] MR9755: mfmediaengine fixes
Fixes for regression bug 59047 -- https://gitlab.winehq.org/wine/wine/-/merge_requests/9755
From: Matteo Bruni <mbruni@codeweavers.com> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=59047 --- dlls/mfmediaengine/main.c | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/dlls/mfmediaengine/main.c b/dlls/mfmediaengine/main.c index 23acc7331b3..081b6dfe735 100644 --- a/dlls/mfmediaengine/main.c +++ b/dlls/mfmediaengine/main.c @@ -867,19 +867,26 @@ static void media_engine_get_frame_size(struct media_engine *engine, IMFTopology static void media_engine_apply_volume(const struct media_engine *engine) { - IMFSimpleAudioVolume *sa_volume; + IMFAudioStreamVolume *as_volume; + unsigned int i; + UINT32 count; HRESULT hr; if (!engine->session) return; - if (FAILED(MFGetService((IUnknown *)engine->session, &MR_POLICY_VOLUME_SERVICE, &IID_IMFSimpleAudioVolume, (void **)&sa_volume))) + if (FAILED(MFGetService((IUnknown *)engine->session, &MR_STREAM_VOLUME_SERVICE, &IID_IMFAudioStreamVolume, (void **)&as_volume))) return; - if (FAILED(hr = IMFSimpleAudioVolume_SetMasterVolume(sa_volume, engine->volume))) - WARN("Failed to set master volume, hr %#lx.\n", hr); + if (FAILED(hr = IMFAudioStreamVolume_GetChannelCount(as_volume, &count))) + WARN("Failed to get channel count, hr %#lx.\n", hr); + for (i = 0; i < count; i++) + { + if (FAILED(hr = IMFAudioStreamVolume_SetChannelVolume(as_volume, i, engine->volume))) + WARN("Failed to set volume, hr %#lx.\n", hr); + } - IMFSimpleAudioVolume_Release(sa_volume); + IMFAudioStreamVolume_Release(as_volume); } static HRESULT WINAPI media_engine_callback_QueryInterface(IMFAsyncCallback *iface, REFIID riid, void **obj) -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9755
From: Matteo Bruni <mbruni@codeweavers.com> Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=59047 --- dlls/mfmediaengine/main.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dlls/mfmediaengine/main.c b/dlls/mfmediaengine/main.c index 081b6dfe735..6e82a59053f 100644 --- a/dlls/mfmediaengine/main.c +++ b/dlls/mfmediaengine/main.c @@ -1159,12 +1159,15 @@ static HRESULT media_engine_create_audio_renderer(struct media_engine *engine, I unsigned int category, role; IMFActivate *sar_activate; HRESULT hr; + GUID guid; *node = NULL; if (FAILED(hr = MFCreateAudioRendererActivate(&sar_activate))) return hr; + CoCreateGuid(&guid); + IMFActivate_SetGUID(sar_activate, &MF_AUDIO_RENDERER_ATTRIBUTE_SESSION_ID, &guid); /* Configuration attributes keys differ between Engine and SAR. */ if (SUCCEEDED(IMFAttributes_GetUINT32(engine->attributes, &MF_MEDIA_ENGINE_AUDIO_CATEGORY, &category))) IMFActivate_SetUINT32(sar_activate, &MF_AUDIO_RENDERER_ATTRIBUTE_STREAM_CATEGORY, category); -- GitLab https://gitlab.winehq.org/wine/wine/-/merge_requests/9755
participants (2)
-
Matteo Bruni -
Matteo Bruni (@Mystral)