From a6164acd2f35daca98e6b79b97b8fb55d1d4359a Mon Sep 17 00:00:00 2001 From: Yoann Lopes Date: Sat, 7 Nov 2015 15:53:18 +0100 Subject: WMF: fix type negotiation in video probe transform. - report supported types (same as the video sink) - handle type changes coming from upstream Change-Id: I922fc4869ecac3999e055c39adf1b847127a0012 Reviewed-by: Christian Stromme --- src/plugins/wmf/player/mfplayersession.cpp | 19 +++---------------- 1 file changed, 3 insertions(+), 16 deletions(-) (limited to 'src/plugins/wmf/player/mfplayersession.cpp') diff --git a/src/plugins/wmf/player/mfplayersession.cpp b/src/plugins/wmf/player/mfplayersession.cpp index e4c498b76..9fb1762ef 100644 --- a/src/plugins/wmf/player/mfplayersession.cpp +++ b/src/plugins/wmf/player/mfplayersession.cpp @@ -692,7 +692,6 @@ IMFTopology *MFPlayerSession::insertMFT(IMFTopology *topology, TOPOID outputNode IUnknown *element = 0; IMFTopologyNode *node = 0; IUnknown *outputObject = 0; - IMFMediaTypeHandler *videoSink = 0; IMFTopologyNode *inputNode = 0; IMFTopologyNode *mftNode = 0; bool mftAdded = false; @@ -711,22 +710,10 @@ IMFTopology *MFPlayerSession::insertMFT(IMFTopology *topology, TOPOID outputNode if (id != outputNodeId) break; - // Use output supported media types for the MFT if (FAILED(node->GetObject(&outputObject))) break; - if (FAILED(outputObject->QueryInterface(IID_IMFMediaTypeHandler, (void**)&videoSink))) - break; - - DWORD mtCount; - if (FAILED(videoSink->GetMediaTypeCount(&mtCount))) - break; - - for (DWORD i = 0; i < mtCount; ++i) { - IMFMediaType *type = 0; - if (SUCCEEDED(videoSink->GetMediaTypeByIndex(i, &type))) - m_videoProbeMFT->addSupportedMediaType(type); - } + m_videoProbeMFT->setVideoSink(outputObject); // Insert MFT between the output node and the node connected to it. DWORD outputIndex = 0; @@ -760,13 +747,13 @@ IMFTopology *MFPlayerSession::insertMFT(IMFTopology *topology, TOPOID outputNode node->Release(); if (element) element->Release(); - if (videoSink) - videoSink->Release(); if (outputObject) outputObject->Release(); if (mftAdded) break; + else + m_videoProbeMFT->setVideoSink(NULL); } } while (false); -- cgit v1.2.3