diff options
author | Andrew den Exter <andrew.den.exter@jollamobile.com> | 2013-12-05 16:17:19 +1000 |
---|---|---|
committer | The Qt Project <gerrit-noreply@qt-project.org> | 2014-01-13 06:05:26 +0100 |
commit | 2ec3645b729d4a9ccc3b4bfbf4d64c6def69b68f (patch) | |
tree | 0919e87c94abe915cfd6721a40238eb1e880d4c9 /src/plugins/gstreamer/camerabin | |
parent | 4d3f740795ece7fb46760d384f21913e02b296d7 (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/plugins/gstreamer/camerabin')
-rw-r--r-- | src/plugins/gstreamer/camerabin/camerabin.pro | 2 | ||||
-rw-r--r-- | src/plugins/gstreamer/camerabin/camerabinfocus.cpp | 43 | ||||
-rw-r--r-- | src/plugins/gstreamer/camerabin/camerabinimageprocessing.cpp | 4 |
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(); |