summaryrefslogtreecommitdiffstats
path: root/src
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 /src
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>
Diffstat (limited to 'src')
-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();