summaryrefslogtreecommitdiffstats
path: root/src/plugins/directshow/camera
diff options
context:
space:
mode:
authorChristian Strømme <christian.stromme@qt.io>2016-11-09 15:29:39 +0100
committerYoann Lopes <yoann.lopes@qt.io>2017-01-27 13:27:20 +0000
commitade8f281cb1e4f4e03fc3bfdf8a0b7b9ccd819c9 (patch)
treee7bc5a3f04cd143dd0120d1fbafaa57136bef918 /src/plugins/directshow/camera
parent57a4cabd78aba3d6c1dd4802b0e3baf5ed3e4758 (diff)
DirectShow: Add utility class
Centralized place for helper functions etc. Change-Id: Ia4474d0681a37fc95a100a3766800141a8b1d900 Reviewed-by: Yoann Lopes <yoann.lopes@qt.io>
Diffstat (limited to 'src/plugins/directshow/camera')
-rw-r--r--src/plugins/directshow/camera/dscamerasession.cpp35
1 files changed, 3 insertions, 32 deletions
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