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()));
|
SLOT(reloadLater()));
|
||||||
connect(m_session, SIGNAL(readyChanged(bool)),
|
connect(m_session, SIGNAL(readyChanged(bool)),
|
||||||
SLOT(reloadLater()));
|
SLOT(reloadLater()));
|
||||||
|
|
||||||
|
m_session->setCaptureMode(QGstreamerCaptureSession::Image);
|
||||||
}
|
}
|
||||||
|
|
||||||
QGstreamerCameraControl::~QGstreamerCameraControl()
|
QGstreamerCameraControl::~QGstreamerCameraControl()
|
||||||
@@ -72,16 +74,22 @@ QGstreamerCameraControl::~QGstreamerCameraControl()
|
|||||||
|
|
||||||
void QGstreamerCameraControl::setCaptureMode(QCamera::CaptureModes mode)
|
void QGstreamerCameraControl::setCaptureMode(QCamera::CaptureModes mode)
|
||||||
{
|
{
|
||||||
if (m_captureMode == mode)
|
if (m_captureMode == mode || !isCaptureModeSupported(mode))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
m_captureMode = mode;
|
||||||
|
|
||||||
switch (mode) {
|
switch (mode) {
|
||||||
|
case QCamera::CaptureViewfinder:
|
||||||
case QCamera::CaptureStillImage:
|
case QCamera::CaptureStillImage:
|
||||||
m_session->setCaptureMode(QGstreamerCaptureSession::Image);
|
m_session->setCaptureMode(QGstreamerCaptureSession::Image);
|
||||||
break;
|
break;
|
||||||
case QCamera::CaptureVideo:
|
case QCamera::CaptureVideo:
|
||||||
m_session->setCaptureMode(QGstreamerCaptureSession::AudioAndVideo);
|
m_session->setCaptureMode(QGstreamerCaptureSession::AudioAndVideo);
|
||||||
break;
|
break;
|
||||||
|
case QCamera::CaptureVideo | QCamera::CaptureStillImage:
|
||||||
|
m_session->setCaptureMode(QGstreamerCaptureSession::AudioAndVideoAndImage);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
emit captureModeChanged(mode);
|
emit captureModeChanged(mode);
|
||||||
@@ -89,6 +97,12 @@ void QGstreamerCameraControl::setCaptureMode(QCamera::CaptureModes mode)
|
|||||||
reloadLater();
|
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)
|
void QGstreamerCameraControl::setState(QCamera::State state)
|
||||||
{
|
{
|
||||||
if (m_state == state)
|
if (m_state == state)
|
||||||
|
|||||||
@@ -66,10 +66,7 @@ public:
|
|||||||
QCamera::CaptureModes captureMode() const { return m_captureMode; }
|
QCamera::CaptureModes captureMode() const { return m_captureMode; }
|
||||||
void setCaptureMode(QCamera::CaptureModes mode);
|
void setCaptureMode(QCamera::CaptureModes mode);
|
||||||
|
|
||||||
bool isCaptureModeSupported(QCamera::CaptureModes mode) const
|
bool isCaptureModeSupported(QCamera::CaptureModes mode) const;
|
||||||
{
|
|
||||||
return mode == QCamera::CaptureStillImage || mode == QCamera::CaptureVideo;
|
|
||||||
}
|
|
||||||
|
|
||||||
QCamera::LockTypes supportedLocks() const
|
QCamera::LockTypes supportedLocks() const
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -86,7 +86,12 @@ class QGstreamerCaptureSession : public QObject, public QGstreamerBusMessageFilt
|
|||||||
Q_ENUMS(CaptureMode)
|
Q_ENUMS(CaptureMode)
|
||||||
Q_INTERFACES(QGstreamerBusMessageFilter)
|
Q_INTERFACES(QGstreamerBusMessageFilter)
|
||||||
public:
|
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 };
|
enum State { StoppedState, PreviewState, PausedState, RecordingState };
|
||||||
|
|
||||||
QGstreamerCaptureSession(CaptureMode captureMode, QObject *parent);
|
QGstreamerCaptureSession(CaptureMode captureMode, QObject *parent);
|
||||||
|
|||||||
Reference in New Issue
Block a user