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>
This commit is contained in:
Dmytro Poplavskiy
2012-06-29 13:35:41 +10:00
committed by Qt by Nokia
parent 799a33e34d
commit b3e8783334
3 changed files with 22 additions and 6 deletions

View File

@@ -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)

View File

@@ -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
{

View File

@@ -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);