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:
committed by
Qt by Nokia
parent
799a33e34d
commit
b3e8783334
@@ -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)
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user