From 960fbf083be4391314e8fe36994a133763dbbe7d Mon Sep 17 00:00:00 2001 From: Christian Stromme Date: Tue, 22 Nov 2016 18:57:30 +0100 Subject: DirectShow: Expose the camera control interface The interface is needed to implement Qt's camera control classes. Change-Id: I468527dd1f5e9e7a0f8868f0b7addc3c069adf54 Reviewed-by: Yoann Lopes --- src/plugins/directshow/camera/dscamerasession.cpp | 20 ++++++++++++++++++++ src/plugins/directshow/camera/dscamerasession.h | 2 ++ 2 files changed, 22 insertions(+) diff --git a/src/plugins/directshow/camera/dscamerasession.cpp b/src/plugins/directshow/camera/dscamerasession.cpp index 40e54a94d..3f1187baa 100644 --- a/src/plugins/directshow/camera/dscamerasession.cpp +++ b/src/plugins/directshow/camera/dscamerasession.cpp @@ -334,6 +334,26 @@ void DSCameraSession::setImageProcessingParameter( } } +bool DSCameraSession::getCameraControlInterface(IAMCameraControl **cameraControl) const +{ + if (!m_sourceFilter) { + qCDebug(qtDirectShowPlugin, "getCameraControlInterface failed: No capture filter!"); + return false; + } + + if (!cameraControl) { + qCDebug(qtDirectShowPlugin, "getCameraControlInterface failed: Invalid out argument!"); + return false; + } + + if (FAILED(m_sourceFilter->QueryInterface(IID_IAMCameraControl, reinterpret_cast(cameraControl)))) { + qCDebug(qtDirectShowPlugin, "getCameraControlInterface failed: Querying camera control failed!"); + return false; + } + + return true; +} + bool DSCameraSession::load() { unload(); diff --git a/src/plugins/directshow/camera/dscamerasession.h b/src/plugins/directshow/camera/dscamerasession.h index 37730736f..6b6cb49b2 100644 --- a/src/plugins/directshow/camera/dscamerasession.h +++ b/src/plugins/directshow/camera/dscamerasession.h @@ -118,6 +118,8 @@ public: QCameraImageProcessingControl::ProcessingParameter, const QVariant &); + bool getCameraControlInterface(IAMCameraControl **cameraControl) const; + Q_SIGNALS: void statusChanged(QCamera::Status); void imageExposed(int id); -- cgit v1.2.3