From ade8f281cb1e4f4e03fc3bfdf8a0b7b9ccd819c9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Christian=20Str=C3=B8mme?= Date: Wed, 9 Nov 2016 15:29:39 +0100 Subject: DirectShow: Add utility class Centralized place for helper functions etc. Change-Id: Ia4474d0681a37fc95a100a3766800141a8b1d900 Reviewed-by: Yoann Lopes --- src/plugins/directshow/camera/dscamerasession.cpp | 35 ++--------------------- 1 file changed, 3 insertions(+), 32 deletions(-) (limited to 'src/plugins/directshow/camera') diff --git a/src/plugins/directshow/camera/dscamerasession.cpp b/src/plugins/directshow/camera/dscamerasession.cpp index 83abd983e..2b0795b44 100644 --- a/src/plugins/directshow/camera/dscamerasession.cpp +++ b/src/plugins/directshow/camera/dscamerasession.cpp @@ -49,11 +49,10 @@ #include "dsvideorenderer.h" #include "directshowcameraglobal.h" #include "directshowmediatype.h" +#include "directshowutils.h" QT_BEGIN_NAMESPACE -static HRESULT getPin(IBaseFilter *filter, PIN_DIRECTION pinDir, IPin **pin); - class SampleGrabberCallbackPrivate : public ISampleGrabberCB { public: @@ -1036,8 +1035,7 @@ void DSCameraSession::updateSourceCapabilities() qWarning() << "Failed to get the video control"; } else { IPin *pPin = 0; - hr = getPin(m_sourceFilter, PINDIR_OUTPUT, &pPin); - if (FAILED(hr)) { + if (!DirectShowUtils::getPin(m_sourceFilter, PINDIR_OUTPUT, &pPin, &hr)) { qWarning() << "Failed to get the pin for the video control"; } else { long supportedModes; @@ -1089,8 +1087,7 @@ void DSCameraSession::updateSourceCapabilities() if (pVideoControl) { IPin *pPin = 0; - hr = getPin(m_sourceFilter, PINDIR_OUTPUT, &pPin); - if (FAILED(hr)) { + if (!DirectShowUtils::getPin(m_sourceFilter, PINDIR_OUTPUT, &pPin, &hr)) { qWarning() << "Failed to get the pin for the video control"; } else { long listSize = 0; @@ -1137,30 +1134,4 @@ void DSCameraSession::updateSourceCapabilities() updateImageProcessingParametersInfos(); } -HRESULT getPin(IBaseFilter *pFilter, PIN_DIRECTION PinDir, IPin **ppPin) -{ - *ppPin = 0; - IEnumPins *pEnum = 0; - IPin *pPin = 0; - - HRESULT hr = pFilter->EnumPins(&pEnum); - if (FAILED(hr)) { - return hr; - } - - pEnum->Reset(); - while (pEnum->Next(1, &pPin, NULL) == S_OK) { - PIN_DIRECTION ThisPinDir; - pPin->QueryDirection(&ThisPinDir); - if (ThisPinDir == PinDir) { - pEnum->Release(); - *ppPin = pPin; - return S_OK; - } - pPin->Release(); - } - pEnum->Release(); - return E_FAIL; -} - QT_END_NAMESPACE -- cgit v1.2.3