summaryrefslogtreecommitdiffstats
path: root/src/multimedia/recording/qmediarecorder.h
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2021-06-11 12:49:26 +0200
committerLars Knoll <lars.knoll@qt.io>2021-06-16 10:03:03 +0200
commit9c309ede2feb598908b1476062b79d0d23759bf3 (patch)
tree29e68c3ce8698272206b4fdda78d6b3641da2a8e /src/multimedia/recording/qmediarecorder.h
parentfde5d6f7cce6118cac4ce7b92cd056225737917f (diff)
Get rid of QMediaEncoderSettings
As per API review, fold this class into QMediaRecorder as that's the only place where it is being used. This removes one level of indirection from the API and also makes it possible to use from QML. Change-Id: Id9157df04512382cce28e89b082433ec67d36b28 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'src/multimedia/recording/qmediarecorder.h')
-rw-r--r--src/multimedia/recording/qmediarecorder.h65
1 files changed, 60 insertions, 5 deletions
diff --git a/src/multimedia/recording/qmediarecorder.h b/src/multimedia/recording/qmediarecorder.h
index a33988672..d92cd3ec9 100644
--- a/src/multimedia/recording/qmediarecorder.h
+++ b/src/multimedia/recording/qmediarecorder.h
@@ -41,8 +41,8 @@
#define QMediaRecorder_H
#include <QtCore/qobject.h>
+#include <QtCore/qsize.h>
#include <QtMultimedia/qtmultimediaglobal.h>
-#include <QtMultimedia/qmediaencodersettings.h>
#include <QtMultimedia/qmediaenumdebug.h>
#include <QtMultimedia/qmediametadata.h>
@@ -55,6 +55,7 @@ class QSize;
class QAudioFormat;
class QCamera;
class QCameraDevice;
+class QMediaFormat;
class QAudioDevice;
class QMediaCaptureSession;
@@ -70,9 +71,28 @@ class Q_MULTIMEDIA_EXPORT QMediaRecorder : public QObject
Q_PROPERTY(QMediaMetaData metaData READ metaData WRITE setMetaData NOTIFY metaDataChanged)
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)
-
+ Q_PROPERTY(QMediaFormat mediaFormat READ mediaFormat WRITE setMediaFormat)
+ Q_PROPERTY(Quality quality READ quality WRITE setQuality)
public:
+ enum Quality
+ {
+ VeryLowQuality,
+ LowQuality,
+ NormalQuality,
+ HighQuality,
+ VeryHighQuality
+ };
+ Q_ENUM(Quality)
+
+ enum EncodingMode
+ {
+ ConstantQualityEncoding,
+ ConstantBitRateEncoding,
+ AverageBitRateEncoding,
+ TwoPassEncoding
+ };
+ Q_ENUM(EncodingMode)
+
enum RecorderState
{
StoppedState,
@@ -118,8 +138,33 @@ public:
qint64 duration() const;
- void setEncoderSettings(const QMediaEncoderSettings &);
- QMediaEncoderSettings encoderSettings() const;
+ QMediaFormat mediaFormat() const;
+ void setMediaFormat(const QMediaFormat &format);
+
+ EncodingMode encodingMode() const;
+ void setEncodingMode(EncodingMode);
+
+ Quality quality() const;
+ void setQuality(Quality quality);
+
+ QSize videoResolution() const;
+ void setVideoResolution(const QSize &);
+ void setVideoResolution(int width, int height) { setVideoResolution(QSize(width, height)); }
+
+ qreal videoFrameRate() const;
+ void setVideoFrameRate(qreal frameRate);
+
+ int videoBitRate() const;
+ void setVideoBitRate(int bitRate);
+
+ int audioBitRate() const;
+ void setAudioBitRate(int bitRate);
+
+ int audioChannelCount() const;
+ void setAudioChannelCount(int channels);
+
+ int audioSampleRate() const;
+ void setAudioSampleRate(int sampleRate);
QMediaMetaData metaData() const;
void setMetaData(const QMediaMetaData &metaData);
@@ -144,6 +189,16 @@ Q_SIGNALS:
void metaDataChanged();
+ void mediaFormatChanged();
+ void encodingModeChanged();
+ void qualityChanged();
+ void videoResolutionChanged();
+ void videoFrameRateChanged();
+ void videoBitRateChanged();
+ void audioBitRateChanged();
+ void audioChannelCountChanged();
+ void audioSampleRateChanged();
+
private:
QMediaRecorderPrivate *d_ptr;
friend class QMediaCaptureSession;