From: Dmytro Poplavskiy Date: Fri, 29 Jun 2012 03:35:41 +0000 (+1000) Subject: Gst capture service: capture mode fixes X-Git-Tag: upstream/5.2.95+rc1~306 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=b3e8783334f339e0a1f64670b8fb0e74699f735c;p=platform%2Fupstream%2Fqtmultimedia.git 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 Reviewed-by: Lev Zelenskiy --- diff --git a/src/plugins/gstreamer/mediacapture/qgstreamercameracontrol.cpp b/src/plugins/gstreamer/mediacapture/qgstreamercameracontrol.cpp index 2d9283f..2dd7814 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 f7de4b4..ffbf08c 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 e8fe27c..c72d2f2 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);