summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDmytro Poplavskiy <dmytro.poplavskiy@nokia.com>2012-06-29 13:35:41 +1000
committerQt by Nokia <qt-info@nokia.com>2012-06-29 07:28:22 +0200
commitb3e8783334f339e0a1f64670b8fb0e74699f735c (patch)
treef9aa7f4e1098ae6269a5e50104bb65864a65103a
parent799a33e34d981067d12b34a541391bc54a0d0807 (diff)
Gst capture service: capture mode fixes
Fixed reporting the current capture mode Set the correct default capture mode Allow viewfinder only and Video+Image capture modes Change-Id: Ib12504304bca22fe664631ff5ffbc0a392ba34a8 Reviewed-by: Ling Hu <ling.hu@nokia.com> Reviewed-by: Lev Zelenskiy <lev.zelenskiy@nokia.com>
-rw-r--r--src/plugins/gstreamer/mediacapture/qgstreamercameracontrol.cpp16
-rw-r--r--src/plugins/gstreamer/mediacapture/qgstreamercameracontrol.h5
-rw-r--r--src/plugins/gstreamer/mediacapture/qgstreamercapturesession.h7
3 files changed, 22 insertions, 6 deletions
diff --git a/src/plugins/gstreamer/mediacapture/qgstreamercameracontrol.cpp b/src/plugins/gstreamer/mediacapture/qgstreamercameracontrol.cpp
index 2d9283fbd..2dd7814ea 100644
--- a/src/plugins/gstreamer/mediacapture/qgstreamercameracontrol.cpp
+++ b/src/plugins/gstreamer/mediacapture/qgstreamercameracontrol.cpp
@@ -64,6 +64,8 @@ QGstreamerCameraControl::QGstreamerCameraControl(QGstreamerCaptureSession *sessi
SLOT(reloadLater()));
connect(m_session, SIGNAL(readyChanged(bool)),
SLOT(reloadLater()));
+
+ m_session->setCaptureMode(QGstreamerCaptureSession::Image);
}
QGstreamerCameraControl::~QGstreamerCameraControl()
@@ -72,16 +74,22 @@ QGstreamerCameraControl::~QGstreamerCameraControl()
void QGstreamerCameraControl::setCaptureMode(QCamera::CaptureModes mode)
{
- if (m_captureMode == mode)
+ if (m_captureMode == mode || !isCaptureModeSupported(mode))
return;
+ m_captureMode = mode;
+
switch (mode) {
+ case QCamera::CaptureViewfinder:
case QCamera::CaptureStillImage:
m_session->setCaptureMode(QGstreamerCaptureSession::Image);
break;
case QCamera::CaptureVideo:
m_session->setCaptureMode(QGstreamerCaptureSession::AudioAndVideo);
break;
+ case QCamera::CaptureVideo | QCamera::CaptureStillImage:
+ m_session->setCaptureMode(QGstreamerCaptureSession::AudioAndVideoAndImage);
+ break;
}
emit captureModeChanged(mode);
@@ -89,6 +97,12 @@ void QGstreamerCameraControl::setCaptureMode(QCamera::CaptureModes mode)
reloadLater();
}
+bool QGstreamerCameraControl::isCaptureModeSupported(QCamera::CaptureModes mode) const
+{
+ //only CaptureStillImage and CaptureVideo bits are allowed
+ return (mode & (QCamera::CaptureStillImage | QCamera::CaptureVideo)) == mode;
+}
+
void QGstreamerCameraControl::setState(QCamera::State state)
{
if (m_state == state)
diff --git a/src/plugins/gstreamer/mediacapture/qgstreamercameracontrol.h b/src/plugins/gstreamer/mediacapture/qgstreamercameracontrol.h
index f7de4b4ca..ffbf08c01 100644
--- a/src/plugins/gstreamer/mediacapture/qgstreamercameracontrol.h
+++ b/src/plugins/gstreamer/mediacapture/qgstreamercameracontrol.h
@@ -66,10 +66,7 @@ public:
QCamera::CaptureModes captureMode() const { return m_captureMode; }
void setCaptureMode(QCamera::CaptureModes mode);
- bool isCaptureModeSupported(QCamera::CaptureModes mode) const
- {
- return mode == QCamera::CaptureStillImage || mode == QCamera::CaptureVideo;
- }
+ bool isCaptureModeSupported(QCamera::CaptureModes mode) const;
QCamera::LockTypes supportedLocks() const
{
diff --git a/src/plugins/gstreamer/mediacapture/qgstreamercapturesession.h b/src/plugins/gstreamer/mediacapture/qgstreamercapturesession.h
index e8fe27cb1..c72d2f290 100644
--- a/src/plugins/gstreamer/mediacapture/qgstreamercapturesession.h
+++ b/src/plugins/gstreamer/mediacapture/qgstreamercapturesession.h
@@ -86,7 +86,12 @@ class QGstreamerCaptureSession : public QObject, public QGstreamerBusMessageFilt
Q_ENUMS(CaptureMode)
Q_INTERFACES(QGstreamerBusMessageFilter)
public:
- enum CaptureMode { Audio = 1, Video = 2, Image=4, AudioAndVideo = Audio | Video };
+ enum CaptureMode { Audio = 1,
+ Video = 2,
+ Image = 4,
+ AudioAndVideo = Audio | Video,
+ AudioAndVideoAndImage = Audio | Video | Image
+ };
enum State { StoppedState, PreviewState, PausedState, RecordingState };
QGstreamerCaptureSession(CaptureMode captureMode, QObject *parent);