summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndrew den Exter <andrew.den.exter@jollamobile.com>2013-12-05 16:17:19 +1000
committerThe Qt Project <gerrit-noreply@qt-project.org>2014-01-13 06:05:26 +0100
commit2ec3645b729d4a9ccc3b4bfbf4d64c6def69b68f (patch)
tree0919e87c94abe915cfd6721a40238eb1e880d4c9
parent4d3f740795ece7fb46760d384f21913e02b296d7 (diff)
Fix configuration of camera settings in camerabin backend.
Enable gstphotography interfaces if the compile check passes, and implement missing pieces of whitebalance and focus configuration. Change-Id: Icd24dfd148204f8d8218176593c3120427a13e1e Reviewed-by: John Brooks <john.brooks@dereferenced.net> Reviewed-by: Yoann Lopes <yoann.lopes@digia.com>
-rw-r--r--src/plugins/gstreamer/camerabin/camerabin.pro2
-rw-r--r--src/plugins/gstreamer/camerabin/camerabinfocus.cpp43
-rw-r--r--src/plugins/gstreamer/camerabin/camerabinimageprocessing.cpp4
3 files changed, 44 insertions, 5 deletions
diff --git a/src/plugins/gstreamer/camerabin/camerabin.pro b/src/plugins/gstreamer/camerabin/camerabin.pro
index 27c368e86..e18da8e6e 100644
--- a/src/plugins/gstreamer/camerabin/camerabin.pro
+++ b/src/plugins/gstreamer/camerabin/camerabin.pro
@@ -58,7 +58,7 @@ maemo6 {
CONFIG += have_gst_photography
}
-have_gst_photography {
+config_gstreamer_photography {
DEFINES += HAVE_GST_PHOTOGRAPHY
HEADERS += \
diff --git a/src/plugins/gstreamer/camerabin/camerabinfocus.cpp b/src/plugins/gstreamer/camerabin/camerabinfocus.cpp
index 2f69cad37..ed5b483c2 100644
--- a/src/plugins/gstreamer/camerabin/camerabinfocus.cpp
+++ b/src/plugins/gstreamer/camerabin/camerabinfocus.cpp
@@ -58,6 +58,8 @@ CameraBinFocus::CameraBinFocus(CameraBinSession *session)
m_focusStatus(QCamera::Unlocked),
m_focusZoneStatus(QCameraFocusZone::Selected)
{
+ gst_photography_set_focus_mode(m_session->photography(), GST_PHOTOGRAPHY_FOCUS_MODE_AUTO);
+
connect(m_session, SIGNAL(stateChanged(QCamera::State)),
this, SLOT(_q_handleCameraStateChange(QCamera::State)));
}
@@ -73,14 +75,49 @@ QCameraFocus::FocusModes CameraBinFocus::focusMode() const
void CameraBinFocus::setFocusMode(QCameraFocus::FocusModes mode)
{
- if (isFocusModeSupported(mode)) {
- m_focusMode = mode;
+ GstFocusMode photographyMode;
+
+ switch (mode) {
+ case QCameraFocus::AutoFocus:
+ photographyMode = GST_PHOTOGRAPHY_FOCUS_MODE_AUTO;
+ break;
+ case QCameraFocus::HyperfocalFocus:
+ photographyMode = GST_PHOTOGRAPHY_FOCUS_MODE_HYPERFOCAL;
+ break;
+ case QCameraFocus::InfinityFocus:
+ photographyMode = GST_PHOTOGRAPHY_FOCUS_MODE_INFINITY;
+ break;
+ case QCameraFocus::ContinuousFocus:
+ photographyMode = GST_PHOTOGRAPHY_FOCUS_MODE_CONTINUOUS_NORMAL;
+ break;
+ case QCameraFocus::MacroFocus:
+ photographyMode = GST_PHOTOGRAPHY_FOCUS_MODE_MACRO;
+ break;
+ default:
+ if (mode & QCameraFocus::AutoFocus) {
+ photographyMode = GST_PHOTOGRAPHY_FOCUS_MODE_AUTO;
+ break;
+ } else {
+ return;
+ }
}
+
+ if (gst_photography_set_focus_mode(m_session->photography(), photographyMode))
+ m_focusMode = mode;
}
bool CameraBinFocus::isFocusModeSupported(QCameraFocus::FocusModes mode) const
{
- return mode & QCameraFocus::AutoFocus;
+ switch (mode) {
+ case QCameraFocus::AutoFocus:
+ case QCameraFocus::HyperfocalFocus:
+ case QCameraFocus::InfinityFocus:
+ case QCameraFocus::ContinuousFocus:
+ case QCameraFocus::MacroFocus:
+ return true;
+ default:
+ return mode & QCameraFocus::AutoFocus;
+ }
}
QCameraFocus::FocusPointMode CameraBinFocus::focusPointMode() const
diff --git a/src/plugins/gstreamer/camerabin/camerabinimageprocessing.cpp b/src/plugins/gstreamer/camerabin/camerabinimageprocessing.cpp
index a714b2892..fb980204e 100644
--- a/src/plugins/gstreamer/camerabin/camerabinimageprocessing.cpp
+++ b/src/plugins/gstreamer/camerabin/camerabinimageprocessing.cpp
@@ -188,7 +188,9 @@ bool CameraBinImageProcessing::isParameterValueSupported(QCameraImageProcessingC
QVariant CameraBinImageProcessing::parameter(
QCameraImageProcessingControl::ProcessingParameter parameter) const
{
- if (m_values.contains(parameter))
+ if (parameter == QCameraImageProcessingControl::WhiteBalancePreset)
+ return QVariant::fromValue<QCameraImageProcessing::WhiteBalanceMode>(whiteBalanceMode());
+ else if (m_values.contains(parameter))
return m_values.value(parameter);
else
return QVariant();