From 6f0cdc264f58d2c3b7109050d8d5799143bae34d Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Fri, 11 Oct 2013 14:11:53 +0200 Subject: [PATCH] WMF: fixed compilation on Windows Vista. We were using one function which is available only on Windows 7 (and later). Replace it with Vista-compatible calls. Task-number: QTBUG-32864 Change-Id: I77492a407330c3689dfbf8dc1180894cf7ca5f8d Reviewed-by: Christian Stromme --- src/plugins/wmf/player/mfplayersession.cpp | 21 ++++++++++++++++----- 1 file changed, 16 insertions(+), 5 deletions(-) diff --git a/src/plugins/wmf/player/mfplayersession.cpp b/src/plugins/wmf/player/mfplayersession.cpp index 4e4b565..cca42e2 100644 --- a/src/plugins/wmf/player/mfplayersession.cpp +++ b/src/plugins/wmf/player/mfplayersession.cpp @@ -1875,11 +1875,22 @@ void MFPlayerSession::handleSessionEvent(IMFMediaEvent *sessionEvent) emit error(QMediaPlayer::FormatError, tr("Unsupported media, a codec is missing."), true); } else { if (m_audioSampleGrabberNode) { - IMFMediaType *mediaType = 0; - hr = MFGetTopoNodeCurrentType(m_audioSampleGrabberNode, 0, FALSE, &mediaType); - if (SUCCEEDED(hr)) { - m_audioSampleGrabber->setFormat(audioFormatForMFMediaType(mediaType)); - mediaType->Release(); + IUnknown *obj = 0; + if (SUCCEEDED(m_audioSampleGrabberNode->GetObject(&obj))) { + IMFStreamSink *streamSink = 0; + if (SUCCEEDED(obj->QueryInterface(IID_PPV_ARGS(&streamSink)))) { + IMFMediaTypeHandler *typeHandler = 0; + if (SUCCEEDED(streamSink->GetMediaTypeHandler((&typeHandler)))) { + IMFMediaType *mediaType = 0; + if (SUCCEEDED(typeHandler->GetCurrentMediaType(&mediaType))) { + m_audioSampleGrabber->setFormat(audioFormatForMFMediaType(mediaType)); + mediaType->Release(); + } + typeHandler->Release(); + } + streamSink->Release(); + } + obj->Release(); } } -- 2.7.4