summaryrefslogtreecommitdiffstats
path: root/src/multimedia/recording/qmediarecorder.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia/recording/qmediarecorder.h')
-rw-r--r--src/multimedia/recording/qmediarecorder.h116
1 files changed, 68 insertions, 48 deletions
diff --git a/src/multimedia/recording/qmediarecorder.h b/src/multimedia/recording/qmediarecorder.h
index e887f58c5..a33988672 100644
--- a/src/multimedia/recording/qmediarecorder.h
+++ b/src/multimedia/recording/qmediarecorder.h
@@ -37,61 +37,87 @@
**
****************************************************************************/
-#ifndef QMEDIARECORDER_H
-#define QMEDIARECORDER_H
+#ifndef QMediaRecorder_H
+#define QMediaRecorder_H
-#include <QtMultimedia/qmediaencoder.h>
+#include <QtCore/qobject.h>
+#include <QtMultimedia/qtmultimediaglobal.h>
+#include <QtMultimedia/qmediaencodersettings.h>
+#include <QtMultimedia/qmediaenumdebug.h>
+#include <QtMultimedia/qmediametadata.h>
+
+#include <QtCore/qpair.h>
QT_BEGIN_NAMESPACE
-class QVideoSink;
+class QUrl;
+class QSize;
+class QAudioFormat;
+class QCamera;
+class QCameraDevice;
+class QAudioDevice;
+class QMediaCaptureSession;
class QMediaRecorderPrivate;
-class Q_MULTIMEDIA_EXPORT QMediaRecorder : public QMediaEncoderBase
+class Q_MULTIMEDIA_EXPORT QMediaRecorder : public QObject
{
Q_OBJECT
- Q_PROPERTY(QMediaEncoderBase::State state READ state NOTIFY stateChanged)
- Q_PROPERTY(QMediaEncoderBase::Status status READ status NOTIFY statusChanged)
+ Q_PROPERTY(QMediaRecorder::RecorderState recorderState READ recorderState NOTIFY recorderStateChanged)
+ Q_PROPERTY(QMediaRecorder::Status status READ status NOTIFY statusChanged)
Q_PROPERTY(qint64 duration READ duration NOTIFY durationChanged)
Q_PROPERTY(QUrl outputLocation READ outputLocation WRITE setOutputLocation)
- Q_PROPERTY(bool muted READ isMuted WRITE setMuted NOTIFY mutedChanged)
- Q_PROPERTY(qreal volume READ volume WRITE setVolume NOTIFY volumeChanged)
+ Q_PROPERTY(QUrl actualLocation READ actualLocation NOTIFY actualLocationChanged)
Q_PROPERTY(QMediaMetaData metaData READ metaData WRITE setMetaData NOTIFY metaDataChanged)
- Q_PROPERTY(CaptureMode captureMode READ captureMode WRITE setCaptureMode NOTIFY captureModeChanged)
- Q_PROPERTY(QObject *videoOutput READ videoOutput WRITE setVideoOutput NOTIFY videoOutputChanged)
- Q_PROPERTY(QCamera camera READ camera)
-public:
+ Q_PROPERTY(QMediaRecorder::Error error READ error NOTIFY errorChanged)
+ Q_PROPERTY(QString errorString READ errorString NOTIFY errorChanged)
+ Q_PROPERTY(QMediaEncoderSettings encoderSettings READ encoderSettings WRITE setEncoderSettings NOTIFY encoderSettingsChanged)
- enum CaptureMode {
- AudioOnly,
- AudioAndVideo
+public:
+ enum RecorderState
+ {
+ StoppedState,
+ RecordingState,
+ PausedState
+ };
+ Q_ENUM(RecorderState)
+
+ enum Status {
+ UnavailableStatus,
+ StoppedStatus,
+ StartingStatus,
+ RecordingStatus,
+ PausedStatus,
+ FinalizingStatus
};
+ Q_ENUM(Status)
+
+ enum Error
+ {
+ NoError,
+ ResourceError,
+ FormatError,
+ OutOfSpaceError
+ };
+ Q_ENUM(Error)
- QMediaRecorder(QObject *parent = nullptr, CaptureMode mode = AudioOnly);
+ QMediaRecorder(QObject *parent = nullptr);
~QMediaRecorder();
bool isAvailable() const;
- CaptureMode captureMode() const;
- void setCaptureMode(CaptureMode mode);
-
- // ### Should we expose this, or restrict it to cameraFormat?
- QCamera *camera() const;
-
QUrl outputLocation() const;
bool setOutputLocation(const QUrl &location);
- QMediaEncoderBase::State state() const;
- QMediaEncoderBase::Status status() const;
+ QUrl actualLocation() const;
- QMediaEncoderBase::Error error() const;
+ RecorderState recorderState() const;
+ Status status() const;
+
+ Error error() const;
QString errorString() const;
qint64 duration() const;
- bool isMuted() const;
- qreal volume() const;
-
void setEncoderSettings(const QMediaEncoderSettings &);
QMediaEncoderSettings encoderSettings() const;
@@ -101,42 +127,36 @@ public:
QMediaCaptureSession *captureSession() const;
- void setVideoOutput(QObject *output);
- QObject *videoOutput() const;
-
- void setVideoSink(QVideoSink *output);
- QVideoSink *videoSink() const;
-
public Q_SLOTS:
void record();
void pause();
void stop();
- void setMuted(bool muted);
- void setVolume(qreal volume);
Q_SIGNALS:
- void stateChanged(QMediaRecorder::State state);
- void statusChanged(QMediaRecorder::Status status);
+ void recorderStateChanged(RecorderState state);
+ void statusChanged(Status status);
void durationChanged(qint64 duration);
- void mutedChanged(bool muted);
- void volumeChanged(qreal volume);
- void captureModeChanged();
- void videoOutputChanged();
+ void actualLocationChanged(const QUrl &location);
+ void encoderSettingsChanged();
- void error(QMediaRecorder::Error error);
+ void errorOccurred(Error error, const QString &errorString);
+ void errorChanged();
void metaDataChanged();
private:
- // This is here to flag an incompatibilities with Qt 5
- QMediaRecorder(QCamera *) = delete;
-
QMediaRecorderPrivate *d_ptr;
friend class QMediaCaptureSession;
+ void setCaptureSession(QMediaCaptureSession *session);
Q_DISABLE_COPY(QMediaRecorder)
Q_DECLARE_PRIVATE(QMediaRecorder)
+ Q_PRIVATE_SLOT(d_func(), void _q_applySettings())
};
QT_END_NAMESPACE
-#endif // QMEDIARECORDER_H
+Q_MEDIA_ENUM_DEBUG(QMediaRecorder, RecorderState)
+Q_MEDIA_ENUM_DEBUG(QMediaRecorder, Status)
+Q_MEDIA_ENUM_DEBUG(QMediaRecorder, Error)
+
+#endif // QMediaRecorder_H