summaryrefslogtreecommitdiffstats
path: root/src/multimedia
diff options
context:
space:
mode:
Diffstat (limited to 'src/multimedia')
-rw-r--r--src/multimedia/qmediaformat.cpp9
-rw-r--r--src/multimedia/qmediaformat.h4
-rw-r--r--src/multimedia/recording/qmediacapturesession.cpp6
-rw-r--r--src/multimedia/recording/qmediaencoder.cpp6
-rw-r--r--src/multimedia/recording/qmediaencodersettings.cpp16
-rw-r--r--src/multimedia/recording/qmediaencodersettings.h4
6 files changed, 39 insertions, 6 deletions
diff --git a/src/multimedia/qmediaformat.cpp b/src/multimedia/qmediaformat.cpp
index 3c2841bfa..77cb4bbbe 100644
--- a/src/multimedia/qmediaformat.cpp
+++ b/src/multimedia/qmediaformat.cpp
@@ -335,4 +335,13 @@ QString QMediaFormat::videoCodecDescription(QMediaFormat::VideoCodec c)
return QString::fromUtf8(descriptions[int(c) + 1]);
}
+bool QMediaFormat::operator==(const QMediaFormat &other) const
+{
+ Q_ASSERT(!d);
+ return fmtMode == other.fmtMode &&
+ fmt == other.fmt &&
+ audio == other.audio &&
+ video == other.video;
+}
+
QT_END_NAMESPACE
diff --git a/src/multimedia/qmediaformat.h b/src/multimedia/qmediaformat.h
index 3b8b9d9ce..4bd070135 100644
--- a/src/multimedia/qmediaformat.h
+++ b/src/multimedia/qmediaformat.h
@@ -147,6 +147,10 @@ public:
static QString audioCodecDescription(QMediaFormat::AudioCodec c);
static QString videoCodecDescription(QMediaFormat::VideoCodec c);
+ bool operator==(const QMediaFormat &other) const;
+ bool operator!=(const QMediaFormat &other) const
+ { return !operator==(other); }
+
protected:
friend class QMediaFormatPrivate;
Mode fmtMode;
diff --git a/src/multimedia/recording/qmediacapturesession.cpp b/src/multimedia/recording/qmediacapturesession.cpp
index 7580a4a8e..d45ae84db 100644
--- a/src/multimedia/recording/qmediacapturesession.cpp
+++ b/src/multimedia/recording/qmediacapturesession.cpp
@@ -203,14 +203,14 @@ QMediaEncoder *QMediaCaptureSession::encoder()
return d_ptr->encoder;
}
-void QMediaCaptureSession::setEncoder(QMediaEncoder *recorder)
+void QMediaCaptureSession::setEncoder(QMediaEncoder *encoder)
{
- if (d_ptr->encoder == recorder)
+ if (d_ptr->encoder == encoder)
return;
if (d_ptr->encoder)
d_ptr->encoder->setCaptureSession(nullptr);
- d_ptr->encoder = recorder;
+ d_ptr->encoder = encoder;
if (d_ptr->encoder)
d_ptr->encoder->setCaptureSession(this);
emit encoderChanged();
diff --git a/src/multimedia/recording/qmediaencoder.cpp b/src/multimedia/recording/qmediaencoder.cpp
index 127304c26..ad050aaa8 100644
--- a/src/multimedia/recording/qmediaencoder.cpp
+++ b/src/multimedia/recording/qmediaencoder.cpp
@@ -165,7 +165,8 @@ void QMediaEncoder::setCaptureSession(QMediaCaptureSession *session)
}
d->control = d->captureSession->platformSession()->mediaEncoder();
- Q_ASSERT(d->control);
+ if (!d->control)
+ return;
connect(d->control, SIGNAL(stateChanged(QMediaEncoder::State)),
this, SLOT(_q_stateChanged(QMediaEncoder::State)));
@@ -303,7 +304,8 @@ void QMediaEncoder::setEncoderSettings(const QMediaEncoderSettings &settings)
Q_D(QMediaEncoder);
d->encoderSettings = settings;
- d->control->setEncoderSettings(settings);
+ if (d->control)
+ d->control->setEncoderSettings(settings);
d->applySettingsLater();
}
diff --git a/src/multimedia/recording/qmediaencodersettings.cpp b/src/multimedia/recording/qmediaencodersettings.cpp
index 1a4657578..da70caa6b 100644
--- a/src/multimedia/recording/qmediaencodersettings.cpp
+++ b/src/multimedia/recording/qmediaencodersettings.cpp
@@ -122,7 +122,6 @@ constexpr QMediaFormat::VideoCodec videoPriorityList[] =
class QMediaEncoderSettingsPrivate : public QSharedData
{
public:
- bool isNull = true;
QMediaEncoderSettings::EncodingMode encodingMode = QMediaEncoderSettings::ConstantQualityEncoding;
QMediaEncoderSettings::Quality quality = QMediaEncoderSettings::NormalQuality;
@@ -437,6 +436,21 @@ void QMediaEncoderSettings::setAudioSampleRate(int rate)
d->audioSampleRate = rate;
}
+bool QMediaEncoderSettings::operator==(const QMediaEncoderSettings &other) const
+{
+ if (d == other.d)
+ return true;
+ return QMediaFormat::operator==(other) &&
+ d->encodingMode == other.d->encodingMode &&
+ d->quality == other.d->quality &&
+ d->audioBitrate == other.d->audioBitrate &&
+ d->audioSampleRate == other.d->audioSampleRate &&
+ d->audioChannels == other.d->audioChannels &&
+ d->videoResolution == other.d->videoResolution &&
+ d->videoFrameRate == other.d->videoFrameRate &&
+ d->videoBitRate == other.d->videoBitRate;
+}
+
class QImageEncoderSettingsPrivate : public QSharedData
{
diff --git a/src/multimedia/recording/qmediaencodersettings.h b/src/multimedia/recording/qmediaencodersettings.h
index 2b7532543..0e490f47e 100644
--- a/src/multimedia/recording/qmediaencodersettings.h
+++ b/src/multimedia/recording/qmediaencodersettings.h
@@ -112,6 +112,10 @@ public:
int audioSampleRate() const;
void setAudioSampleRate(int rate);
+ bool operator==(const QMediaEncoderSettings &other) const;
+ bool operator!=(const QMediaEncoderSettings &other) const
+ { return !operator==(other); }
+
private:
QSharedDataPointer<QMediaEncoderSettingsPrivate> d;
};