summaryrefslogtreecommitdiffstats
path: root/src/multimedia
diff options
context:
space:
mode:
authorLars Knoll <lars.knoll@qt.io>2021-04-20 11:36:46 +0200
committerLars Knoll <lars.knoll@qt.io>2021-04-27 06:11:46 +0000
commit934cdc9da185d5b7e85f898259ede4dcac9dcc21 (patch)
tree0feccb06492304284f976c96711549d294755c53 /src/multimedia
parentd69631a206982c35c856103f27f5a9e4ed449883 (diff)
Fix tst_qmediaencoder
Fix and re-enable all tests for QMediaEncoderSettings while at it. Change-Id: Ie15cd59a849412e02c6d38c91bf1bea16456cdd5 Reviewed-by: Lars Knoll <lars.knoll@qt.io> Reviewed-by: Doris Verria <doris.verria@qt.io>
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;
};