summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/plugins/directshow/camera/dscamerasession.cpp20
-rw-r--r--src/plugins/directshow/camera/dscamerasession.h2
2 files changed, 22 insertions, 0 deletions
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<void **>(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);