SLOT(reloadLater()));
connect(m_session, SIGNAL(readyChanged(bool)),
SLOT(reloadLater()));
+
+ m_session->setCaptureMode(QGstreamerCaptureSession::Image);
}
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);
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)
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
{
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);