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>
This commit is contained in:
Andrew den Exter
2013-12-05 16:17:19 +10:00
committed by The Qt Project
parent 4d3f740795
commit 2ec3645b72
3 changed files with 44 additions and 5 deletions

View File

@@ -58,7 +58,7 @@ maemo6 {
CONFIG += have_gst_photography CONFIG += have_gst_photography
} }
have_gst_photography { config_gstreamer_photography {
DEFINES += HAVE_GST_PHOTOGRAPHY DEFINES += HAVE_GST_PHOTOGRAPHY
HEADERS += \ HEADERS += \

View File

@@ -58,6 +58,8 @@ CameraBinFocus::CameraBinFocus(CameraBinSession *session)
m_focusStatus(QCamera::Unlocked), m_focusStatus(QCamera::Unlocked),
m_focusZoneStatus(QCameraFocusZone::Selected) m_focusZoneStatus(QCameraFocusZone::Selected)
{ {
gst_photography_set_focus_mode(m_session->photography(), GST_PHOTOGRAPHY_FOCUS_MODE_AUTO);
connect(m_session, SIGNAL(stateChanged(QCamera::State)), connect(m_session, SIGNAL(stateChanged(QCamera::State)),
this, SLOT(_q_handleCameraStateChange(QCamera::State))); this, SLOT(_q_handleCameraStateChange(QCamera::State)));
} }
@@ -73,14 +75,49 @@ QCameraFocus::FocusModes CameraBinFocus::focusMode() const
void CameraBinFocus::setFocusMode(QCameraFocus::FocusModes mode) void CameraBinFocus::setFocusMode(QCameraFocus::FocusModes mode)
{ {
if (isFocusModeSupported(mode)) { GstFocusMode photographyMode;
m_focusMode = mode;
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 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 QCameraFocus::FocusPointMode CameraBinFocus::focusPointMode() const

View File

@@ -188,7 +188,9 @@ bool CameraBinImageProcessing::isParameterValueSupported(QCameraImageProcessingC
QVariant CameraBinImageProcessing::parameter( QVariant CameraBinImageProcessing::parameter(
QCameraImageProcessingControl::ProcessingParameter parameter) const 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); return m_values.value(parameter);
else else
return QVariant(); return QVariant();