From 934cdc9da185d5b7e85f898259ede4dcac9dcc21 Mon Sep 17 00:00:00 2001 From: Lars Knoll Date: Tue, 20 Apr 2021 11:36:46 +0200 Subject: Fix tst_qmediaencoder Fix and re-enable all tests for QMediaEncoderSettings while at it. Change-Id: Ie15cd59a849412e02c6d38c91bf1bea16456cdd5 Reviewed-by: Lars Knoll Reviewed-by: Doris Verria --- src/multimedia/qmediaformat.cpp | 9 + src/multimedia/qmediaformat.h | 4 + src/multimedia/recording/qmediacapturesession.cpp | 6 +- src/multimedia/recording/qmediaencoder.cpp | 6 +- src/multimedia/recording/qmediaencodersettings.cpp | 16 +- src/multimedia/recording/qmediaencodersettings.h | 4 + tests/auto/unit/mockbackend/qmockmediaencoder.h | 3 +- .../unit/multimedia/qmediaencoder/CMakeLists.txt | 2 +- .../multimedia/qmediaencoder/tst_qmediaencoder.cpp | 1389 +++++++++----------- 9 files changed, 652 insertions(+), 787 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 d; }; diff --git a/tests/auto/unit/mockbackend/qmockmediaencoder.h b/tests/auto/unit/mockbackend/qmockmediaencoder.h index 4f9b58a7b..2a8b0727c 100644 --- a/tests/auto/unit/mockbackend/qmockmediaencoder.h +++ b/tests/auto/unit/mockbackend/qmockmediaencoder.h @@ -79,7 +79,7 @@ public: m_settingAppliedCount++; } - void setEncoderSettings(const QMediaEncoderSettings &) {} + void setEncoderSettings(const QMediaEncoderSettings &settings) { m_settings = settings; } virtual void setMetaData(const QMediaMetaData &m) { @@ -141,6 +141,7 @@ public: QUrl m_sink; QMediaEncoder::State m_state; QMediaEncoder::Status m_status; + QMediaEncoderSettings m_settings; qint64 m_position; int m_settingAppliedCount; }; diff --git a/tests/auto/unit/multimedia/qmediaencoder/CMakeLists.txt b/tests/auto/unit/multimedia/qmediaencoder/CMakeLists.txt index e83985709..76b206a64 100644 --- a/tests/auto/unit/multimedia/qmediaencoder/CMakeLists.txt +++ b/tests/auto/unit/multimedia/qmediaencoder/CMakeLists.txt @@ -4,7 +4,7 @@ ## tst_qmediarecorder Test: ##################################################################### -qt_add_test(tst_qmediarecorder +qt_add_test(tst_qmediaencoder SOURCES tst_qmediaencoder.cpp INCLUDE_DIRECTORIES diff --git a/tests/auto/unit/multimedia/qmediaencoder/tst_qmediaencoder.cpp b/tests/auto/unit/multimedia/qmediaencoder/tst_qmediaencoder.cpp index 107a74dc4..da4947476 100644 --- a/tests/auto/unit/multimedia/qmediaencoder/tst_qmediaencoder.cpp +++ b/tests/auto/unit/multimedia/qmediaencoder/tst_qmediaencoder.cpp @@ -51,7 +51,7 @@ public slots: void cleanupTestCase(); private slots: - void testNullService(); + void testBasicSession(); void testNullControls(); void testDeleteMediaSource(); void testError(); @@ -68,10 +68,8 @@ private slots: void testAudioSettingsOperatorNotEqual(); void testAudioSettingsOperatorEqual(); void testAudioSettingsOperatorAssign(); - void testAudioSettingsDestructor(); void testIsAvailable(); - void testMediaSource(); void testEnum(); void testVideoSettingsQuality(); @@ -80,7 +78,6 @@ private slots: void testVideoSettingsOperatorAssignment(); void testVideoSettingsOperatorNotEqual(); void testVideoSettingsOperatorComparison(); - void testVideoSettingsDestructor(); private: QMockIntegration *mockIntegration = nullptr; @@ -88,7 +85,7 @@ private: QCamera *object = nullptr; QMockMediaCaptureSession *service = nullptr; QMockMediaEncoder *mock; - QMediaEncoder *capture; + QMediaEncoder *encoder; }; void tst_QMediaEncoder::initTestCase() @@ -96,25 +93,24 @@ void tst_QMediaEncoder::initTestCase() mockIntegration = new QMockIntegration; captureSession = new QMediaCaptureSession; object = new QCamera; - capture = new QMediaEncoder; + encoder = new QMediaEncoder; captureSession->setCamera(object); - captureSession->setEncoder(capture); + captureSession->setEncoder(encoder); service = mockIntegration->lastCaptureService(); mock = service->mockControl; } void tst_QMediaEncoder::cleanupTestCase() { - delete capture; + delete encoder; delete object; delete mock; + delete captureSession; delete mockIntegration; } -void tst_QMediaEncoder::testNullService() +void tst_QMediaEncoder::testBasicSession() { - const QString id(QLatin1String("application/x-format")); - QMediaCaptureSession session; QCamera camera; QMediaEncoder recorder; @@ -129,8 +125,8 @@ void tst_QMediaEncoder::testNullService() void tst_QMediaEncoder::testNullControls() { - service->hasControls = false; QMediaCaptureSession session; + mockIntegration->lastCaptureService()->hasControls = false; QCamera camera; QMediaEncoder recorder; session.setCamera(&camera); @@ -200,14 +196,14 @@ void tst_QMediaEncoder::testError() { const QString errorString(QLatin1String("format error")); - QSignalSpy spy(capture, SIGNAL(error(QMediaEncoder::Error))); + QSignalSpy spy(encoder, SIGNAL(error(QMediaEncoder::Error))); - QCOMPARE(capture->error(), QMediaEncoder::NoError); - QCOMPARE(capture->errorString(), QString()); + QCOMPARE(encoder->error(), QMediaEncoder::NoError); + QCOMPARE(encoder->errorString(), QString()); mock->error(QMediaEncoder::FormatError, errorString); - QCOMPARE(capture->error(), QMediaEncoder::FormatError); - QCOMPARE(capture->errorString(), errorString); + QCOMPARE(encoder->error(), QMediaEncoder::FormatError); + QCOMPARE(encoder->errorString(), errorString); QCOMPARE(spy.count(), 1); QCOMPARE(spy.last()[0].value(), QMediaEncoder::FormatError); @@ -215,68 +211,68 @@ void tst_QMediaEncoder::testError() void tst_QMediaEncoder::testSink() { - capture->setOutputLocation(QUrl("test.tmp")); - QUrl s = capture->outputLocation(); + encoder->setOutputLocation(QUrl("test.tmp")); + QUrl s = encoder->outputLocation(); QCOMPARE(s.toString(), QString("test.tmp")); - QCOMPARE(capture->actualLocation(), QUrl()); + QCOMPARE(encoder->actualLocation(), QUrl()); //the actual location is available after record - capture->record(); - QCOMPARE(capture->actualLocation().toString(), QString("test.tmp")); - capture->stop(); - QCOMPARE(capture->actualLocation().toString(), QString("test.tmp")); + encoder->record(); + QCOMPARE(encoder->actualLocation().toString(), QString("test.tmp")); + encoder->stop(); + QCOMPARE(encoder->actualLocation().toString(), QString("test.tmp")); //setOutputLocation resets the actual location - capture->setOutputLocation(QUrl()); - QCOMPARE(capture->actualLocation(), QUrl()); + encoder->setOutputLocation(QUrl()); + QCOMPARE(encoder->actualLocation(), QUrl()); - capture->record(); - QCOMPARE(capture->actualLocation(), QUrl::fromLocalFile("default_name.mp4")); - capture->stop(); - QCOMPARE(capture->actualLocation(), QUrl::fromLocalFile("default_name.mp4")); + encoder->record(); + QCOMPARE(encoder->actualLocation(), QUrl::fromLocalFile("default_name.mp4")); + encoder->stop(); + QCOMPARE(encoder->actualLocation(), QUrl::fromLocalFile("default_name.mp4")); } void tst_QMediaEncoder::testRecord() { - QSignalSpy stateSignal(capture,SIGNAL(stateChanged(QMediaEncoder::State))); - QSignalSpy statusSignal(capture,SIGNAL(statusChanged(QMediaEncoder::Status))); - QSignalSpy progressSignal(capture, SIGNAL(durationChanged(qint64))); - capture->record(); - QCOMPARE(capture->state(), QMediaEncoder::RecordingState); - QCOMPARE(capture->error(), QMediaEncoder::NoError); - QCOMPARE(capture->errorString(), QString()); + QSignalSpy stateSignal(encoder,SIGNAL(stateChanged(QMediaEncoder::State))); + QSignalSpy statusSignal(encoder,SIGNAL(statusChanged(QMediaEncoder::Status))); + QSignalSpy progressSignal(encoder, SIGNAL(durationChanged(qint64))); + encoder->record(); + QCOMPARE(encoder->state(), QMediaEncoder::RecordingState); + QCOMPARE(encoder->error(), QMediaEncoder::NoError); + QCOMPARE(encoder->errorString(), QString()); QCOMPARE(stateSignal.count(), 1); QCOMPARE(stateSignal.last()[0].value(), QMediaEncoder::RecordingState); QTestEventLoop::instance().enterLoop(1); - QCOMPARE(capture->status(), QMediaEncoder::RecordingStatus); + QCOMPARE(encoder->status(), QMediaEncoder::RecordingStatus); QVERIFY(!statusSignal.isEmpty()); QCOMPARE(statusSignal.last()[0].value(), QMediaEncoder::RecordingStatus); statusSignal.clear(); QVERIFY(progressSignal.count() > 0); - capture->pause(); + encoder->pause(); - QCOMPARE(capture->state(), QMediaEncoder::PausedState); + QCOMPARE(encoder->state(), QMediaEncoder::PausedState); QCOMPARE(stateSignal.count(), 2); QTestEventLoop::instance().enterLoop(1); - QCOMPARE(capture->status(), QMediaEncoder::PausedStatus); + QCOMPARE(encoder->status(), QMediaEncoder::PausedStatus); QVERIFY(!statusSignal.isEmpty()); QCOMPARE(statusSignal.last()[0].value(), QMediaEncoder::PausedStatus); statusSignal.clear(); - capture->stop(); + encoder->stop(); - QCOMPARE(capture->state(), QMediaEncoder::StoppedState); + QCOMPARE(encoder->state(), QMediaEncoder::StoppedState); QCOMPARE(stateSignal.count(), 3); QTestEventLoop::instance().enterLoop(1); - QCOMPARE(capture->status(), QMediaEncoder::StoppedStatus); + QCOMPARE(encoder->status(), QMediaEncoder::StoppedStatus); QVERIFY(!statusSignal.isEmpty()); QCOMPARE(statusSignal.last()[0].value(), QMediaEncoder::StoppedStatus); statusSignal.clear(); @@ -287,394 +283,290 @@ void tst_QMediaEncoder::testRecord() void tst_QMediaEncoder::testEncodingSettings() { -// QAudioEncoderSettings audioSettings = capture->audioSettings(); -// QCOMPARE(audioSettings.codec(), QString("audio/x-raw")); -// QCOMPARE(audioSettings.bitRate(), 128*1024); -// QCOMPARE(audioSettings.sampleRate(), 8000); -// QCOMPARE(audioSettings.quality(), QMediaEncoderSettings:NormalQuality); -// QCOMPARE(audioSettings.channelCount(), -1); - -// QCOMPARE(audioSettings.encodingMode(), QMediaEncoderSettings:ConstantQualityEncoding); - -// QVideoEncoderSettings videoSettings = capture->videoSettings(); -// QCOMPARE(videoSettings.codec(), QString()); -// QCOMPARE(videoSettings.bitRate(), -1); -// QCOMPARE(videoSettings.resolution(), QSize()); -// QCOMPARE(videoSettings.frameRate(), 0.0); -// QCOMPARE(videoSettings.quality(), QMediaEncoderSettings:NormalQuality); -// QCOMPARE(videoSettings.encodingMode(), QMediaEncoderSettings:ConstantQualityEncoding); - -// QString format = capture->containerFormat(); -// QCOMPARE(format, QString()); - -// audioSettings.setCodec("audio/mpeg"); -// audioSettings.setSampleRate(44100); -// audioSettings.setBitRate(256*1024); -// audioSettings.setQuality(QMediaEncoderSettings:HighQuality); -// audioSettings.setEncodingMode(QMediaEncoderSettings:AverageBitRateEncoding); - -// videoSettings.setCodec("video/3gpp"); -// videoSettings.setBitRate(800); -// videoSettings.setFrameRate(24*1024); -// videoSettings.setResolution(QSize(800,600)); -// videoSettings.setQuality(QMediaEncoderSettings:HighQuality); -// audioSettings.setEncodingMode(QMediaEncoderSettings:TwoPassEncoding); - -// format = QString("mov"); - -// capture->setAudioSettings(audioSettings); -// capture->setVideoSettings(videoSettings); -// capture->setContainerFormat(format); - -// QCOMPARE(capture->audioSettings(), audioSettings); -// QCOMPARE(capture->videoSettings(), videoSettings); -// QCOMPARE(capture->containerFormat(), format); + QMediaEncoderSettings settings = encoder->encoderSettings(); + QCOMPARE(settings.format(), QMediaEncoderSettings::UnspecifiedFormat); + QCOMPARE(settings.audioCodec(), QMediaEncoderSettings::AudioCodec::Unspecified); + QCOMPARE(settings.videoCodec(), QMediaEncoderSettings::VideoCodec::Unspecified); + QCOMPARE(settings.quality(), QMediaEncoderSettings::NormalQuality); + QCOMPARE(settings.encodingMode(), QMediaEncoderSettings::ConstantQualityEncoding); + + settings.setAudioCodec(QMediaEncoderSettings::AudioCodec::MP3); + settings.setAudioSampleRate(44100); + settings.setAudioBitRate(256*1024); + settings.setQuality(QMediaEncoderSettings::HighQuality); + settings.setEncodingMode(QMediaEncoderSettings::AverageBitRateEncoding); + + settings.setVideoCodec(QMediaEncoderSettings::VideoCodec::H264); + settings.setVideoBitRate(800); + settings.setVideoFrameRate(24*1024); + settings.setVideoResolution(QSize(800,600)); + + encoder->setEncoderSettings(settings); + + QCOMPARE(encoder->encoderSettings(), settings); } void tst_QMediaEncoder::testAudioSettings() { -// QAudioEncoderSettings settings; -// QVERIFY(settings.isNull()); -// QVERIFY(settings == QAudioEncoderSettings()); - -// QCOMPARE(settings.codec(), QString()); -// settings.setCodec(QLatin1String("codecName")); -// QCOMPARE(settings.codec(), QLatin1String("codecName")); -// QVERIFY(!settings.isNull()); -// QVERIFY(settings != QAudioEncoderSettings()); - -// settings = QAudioEncoderSettings(); -// QCOMPARE(settings.bitRate(), -1); -// settings.setBitRate(128000); -// QCOMPARE(settings.bitRate(), 128000); -// QVERIFY(!settings.isNull()); - -// settings = QAudioEncoderSettings(); -// QCOMPARE(settings.quality(), QMediaEncoderSettings:NormalQuality); -// settings.setQuality(QMediaEncoderSettings:HighQuality); -// QCOMPARE(settings.quality(), QMediaEncoderSettings:HighQuality); -// QVERIFY(!settings.isNull()); - -// settings = QAudioEncoderSettings(); -// QCOMPARE(settings.sampleRate(), -1); -// settings.setSampleRate(44100); -// QCOMPARE(settings.sampleRate(), 44100); -// QVERIFY(!settings.isNull()); - -// settings = QAudioEncoderSettings(); -// QCOMPARE(settings.channelCount(), -1); -// settings.setChannelCount(2); -// QCOMPARE(settings.channelCount(), 2); -// QVERIFY(!settings.isNull()); - -// settings = QAudioEncoderSettings(); -// settings.setEncodingOption(QLatin1String("encoderOption"), QVariant(1)); -// QCOMPARE(settings.encodingOption(QLatin1String("encoderOption")), QVariant(1)); -// QVariantMap options; -// options.insert(QLatin1String("encoderOption"), QVariant(1)); -// QCOMPARE(settings.encodingOptions(), options); -// options.insert(QLatin1String("encoderOption2"), QVariant(2)); -// options.remove(QLatin1String("encoderOption")); -// settings.setEncodingOptions(options); -// QCOMPARE(settings.encodingOption(QLatin1String("encoderOption")), QVariant()); -// QCOMPARE(settings.encodingOption(QLatin1String("encoderOption2")), QVariant(2)); -// QVERIFY(!settings.isNull()); -// QVERIFY(settings != QAudioEncoderSettings()); - -// settings = QAudioEncoderSettings(); -// QVERIFY(settings.isNull()); -// QCOMPARE(settings.codec(), QString()); -// QCOMPARE(settings.bitRate(), -1); -// QCOMPARE(settings.quality(), QMediaEncoderSettings:NormalQuality); -// QCOMPARE(settings.sampleRate(), -1); -// QVERIFY(settings.encodingOptions().isEmpty()); - -// { -// QAudioEncoderSettings settings1; -// QAudioEncoderSettings settings2; -// QCOMPARE(settings2, settings1); - -// settings2 = settings1; -// QCOMPARE(settings2, settings1); -// QVERIFY(settings2.isNull()); - -// settings1.setQuality(QMediaEncoderSettings:HighQuality); - -// QVERIFY(settings2.isNull()); -// QVERIFY(!settings1.isNull()); -// QVERIFY(settings1 != settings2); -// } - -// { -// QAudioEncoderSettings settings1; -// QAudioEncoderSettings settings2(settings1); -// QCOMPARE(settings2, settings1); - -// settings2 = settings1; -// QCOMPARE(settings2, settings1); -// QVERIFY(settings2.isNull()); - -// settings1.setQuality(QMediaEncoderSettings:HighQuality); - -// QVERIFY(settings2.isNull()); -// QVERIFY(!settings1.isNull()); -// QVERIFY(settings1 != settings2); -// } - -// QAudioEncoderSettings settings1; -// settings1.setBitRate(1); -// QAudioEncoderSettings settings2; -// settings2.setBitRate(1); -// QVERIFY(settings1 == settings2); -// settings2.setBitRate(2); -// QVERIFY(settings1 != settings2); - -// settings1 = QAudioEncoderSettings(); -// settings1.setChannelCount(1); -// settings2 = QAudioEncoderSettings(); -// settings2.setChannelCount(1); -// QVERIFY(settings1 == settings2); -// settings2.setChannelCount(2); -// QVERIFY(settings1 != settings2); - -// settings1 = QAudioEncoderSettings(); -// settings1.setCodec("codec1"); -// settings2 = QAudioEncoderSettings(); -// settings2.setCodec("codec1"); -// QVERIFY(settings1 == settings2); -// settings2.setCodec("codec2"); -// QVERIFY(settings1 != settings2); - -// settings1 = QAudioEncoderSettings(); -// settings1.setEncodingMode(QMediaEncoderSettings:ConstantBitRateEncoding); -// settings2 = QAudioEncoderSettings(); -// settings2.setEncodingMode(QMediaEncoderSettings:ConstantBitRateEncoding); -// QVERIFY(settings1 == settings2); -// settings2.setEncodingMode(QMediaEncoderSettings:TwoPassEncoding); -// QVERIFY(settings1 != settings2); - -// settings1 = QAudioEncoderSettings(); -// settings1.setQuality(QMediaEncoderSettings:NormalQuality); -// settings2 = QAudioEncoderSettings(); -// settings2.setQuality(QMediaEncoderSettings:NormalQuality); -// QVERIFY(settings1 == settings2); -// settings2.setQuality(QMediaEncoderSettings:LowQuality); -// QVERIFY(settings1 != settings2); - -// settings1 = QAudioEncoderSettings(); -// settings1.setSampleRate(1); -// settings2 = QAudioEncoderSettings(); -// settings2.setSampleRate(1); -// QVERIFY(settings1 == settings2); -// settings2.setSampleRate(2); -// QVERIFY(settings1 != settings2); - -// settings1 = QAudioEncoderSettings(); -// settings1.setEncodingOption(QLatin1String("encoderOption"), QVariant(1)); -// settings2 = QAudioEncoderSettings(); -// settings2.setEncodingOption(QLatin1String("encoderOption"), QVariant(1)); -// QVERIFY(settings1 == settings2); -// settings2.setEncodingOption(QLatin1String("encoderOption"), QVariant(2)); -// QVERIFY(settings1 != settings2); + QMediaEncoderSettings settings; + QVERIFY(settings == QMediaEncoderSettings()); + + QCOMPARE(settings.format(), QMediaEncoderSettings::UnspecifiedFormat); + QCOMPARE(settings.audioBitRate(), -1); + QCOMPARE(settings.quality(), QMediaEncoderSettings::NormalQuality); + QCOMPARE(settings.audioSampleRate(), -1); + + settings.setFormat(QMediaEncoderSettings::AAC); + QCOMPARE(settings.format(), QMediaEncoderSettings::AAC); + QVERIFY(settings != QMediaEncoderSettings()); + + settings = QMediaEncoderSettings(); + QCOMPARE(settings.audioBitRate(), -1); + settings.setAudioBitRate(128000); + QCOMPARE(settings.audioBitRate(), 128000); + + settings = QMediaEncoderSettings(); + QCOMPARE(settings.quality(), QMediaEncoderSettings::NormalQuality); + settings.setQuality(QMediaEncoderSettings::HighQuality); + QCOMPARE(settings.quality(), QMediaEncoderSettings::HighQuality); + + settings = QMediaEncoderSettings(); + QCOMPARE(settings.audioSampleRate(), -1); + settings.setAudioSampleRate(44100); + QCOMPARE(settings.audioSampleRate(), 44100); + + settings = QMediaEncoderSettings(); + QCOMPARE(settings.audioChannelCount(), -1); + settings.setAudioChannelCount(2); + QCOMPARE(settings.audioChannelCount(), 2); + + settings = QMediaEncoderSettings(); + + { + QMediaEncoderSettings settings1; + QMediaEncoderSettings settings2; + QCOMPARE(settings2, settings1); + + settings2 = settings1; + QCOMPARE(settings2, settings1); + + settings1.setQuality(QMediaEncoderSettings::HighQuality); + + QVERIFY(settings1 != settings2); + } + + { + QMediaEncoderSettings settings1; + QMediaEncoderSettings settings2(settings1); + QCOMPARE(settings2, settings1); + + settings2 = settings1; + QCOMPARE(settings2, settings1); + + settings1.setQuality(QMediaEncoderSettings::HighQuality); + + QVERIFY(settings1 != settings2); + } + + QMediaEncoderSettings settings1; + settings1.setAudioBitRate(1); + QMediaEncoderSettings settings2; + settings2.setAudioBitRate(1); + QVERIFY(settings1 == settings2); + settings2.setAudioBitRate(2); + QVERIFY(settings1 != settings2); + + settings1 = QMediaEncoderSettings(); + settings1.setAudioChannelCount(1); + settings2 = QMediaEncoderSettings(); + settings2.setAudioChannelCount(1); + QVERIFY(settings1 == settings2); + settings2.setAudioChannelCount(2); + QVERIFY(settings1 != settings2); + + settings1 = QMediaEncoderSettings(); + settings1.setAudioCodec(QMediaEncoderSettings::AudioCodec::MP3); + settings2 = QMediaEncoderSettings(); + settings2.setAudioCodec(QMediaEncoderSettings::AudioCodec::MP3); + QVERIFY(settings1 == settings2); + settings2.setAudioCodec(QMediaEncoderSettings::AudioCodec::FLAC); + QVERIFY(settings1 != settings2); + + settings1 = QMediaEncoderSettings(); + settings1.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding); + settings2 = QMediaEncoderSettings(); + settings2.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding); + QVERIFY(settings1 == settings2); + settings2.setEncodingMode(QMediaEncoderSettings::AverageBitRateEncoding); + QVERIFY(settings1 != settings2); + + settings1 = QMediaEncoderSettings(); + settings1.setQuality(QMediaEncoderSettings::NormalQuality); + settings2 = QMediaEncoderSettings(); + settings2.setQuality(QMediaEncoderSettings::NormalQuality); + QVERIFY(settings1 == settings2); + settings2.setQuality(QMediaEncoderSettings::LowQuality); + QVERIFY(settings1 != settings2); + + settings1 = QMediaEncoderSettings(); + settings1.setAudioSampleRate(1); + settings2 = QMediaEncoderSettings(); + settings2.setAudioSampleRate(1); + QVERIFY(settings1 == settings2); + settings2.setAudioSampleRate(2); + QVERIFY(settings1 != settings2); } void tst_QMediaEncoder::testVideoSettings() { -// QVideoEncoderSettings settings; -// QVERIFY(settings.isNull()); -// QVERIFY(settings == QVideoEncoderSettings()); - -// QCOMPARE(settings.codec(), QString()); -// settings.setCodec(QLatin1String("codecName")); -// QCOMPARE(settings.codec(), QLatin1String("codecName")); -// QVERIFY(!settings.isNull()); -// QVERIFY(settings != QVideoEncoderSettings()); - -// settings = QVideoEncoderSettings(); -// QCOMPARE(settings.bitRate(), -1); -// settings.setBitRate(128000); -// QCOMPARE(settings.bitRate(), 128000); -// QVERIFY(!settings.isNull()); - -// settings = QVideoEncoderSettings(); -// QCOMPARE(settings.quality(), QMediaEncoderSettings:NormalQuality); -// settings.setQuality(QMediaEncoderSettings:HighQuality); -// QCOMPARE(settings.quality(), QMediaEncoderSettings:HighQuality); -// QVERIFY(!settings.isNull()); - -// settings = QVideoEncoderSettings(); -// QCOMPARE(settings.frameRate(), qreal()); -// settings.setFrameRate(30000.0/10001); -// QVERIFY(qFuzzyCompare(settings.frameRate(), qreal(30000.0/10001))); -// settings.setFrameRate(24.0); -// QVERIFY(qFuzzyCompare(settings.frameRate(), qreal(24.0))); -// QVERIFY(!settings.isNull()); - -// settings = QVideoEncoderSettings(); -// QCOMPARE(settings.resolution(), QSize()); -// settings.setResolution(QSize(320,240)); -// QCOMPARE(settings.resolution(), QSize(320,240)); -// settings.setResolution(800,600); -// QCOMPARE(settings.resolution(), QSize(800,600)); -// QVERIFY(!settings.isNull()); - -// settings = QVideoEncoderSettings(); -// settings.setEncodingOption(QLatin1String("encoderOption"), QVariant(1)); -// QCOMPARE(settings.encodingOption(QLatin1String("encoderOption")), QVariant(1)); -// QVariantMap options; -// options.insert(QLatin1String("encoderOption"), QVariant(1)); -// QCOMPARE(settings.encodingOptions(), options); -// options.insert(QLatin1String("encoderOption2"), QVariant(2)); -// options.remove(QLatin1String("encoderOption")); -// settings.setEncodingOptions(options); -// QCOMPARE(settings.encodingOption(QLatin1String("encoderOption")), QVariant()); -// QCOMPARE(settings.encodingOption(QLatin1String("encoderOption2")), QVariant(2)); -// QVERIFY(!settings.isNull()); -// QVERIFY(settings != QVideoEncoderSettings()); - -// settings = QVideoEncoderSettings(); -// QVERIFY(settings.isNull()); -// QCOMPARE(settings.codec(), QString()); -// QCOMPARE(settings.bitRate(), -1); -// QCOMPARE(settings.quality(), QMediaEncoderSettings:NormalQuality); -// QCOMPARE(settings.frameRate(), qreal()); -// QCOMPARE(settings.resolution(), QSize()); -// QVERIFY(settings.encodingOptions().isEmpty()); - -// { -// QVideoEncoderSettings settings1; -// QVideoEncoderSettings settings2; -// QCOMPARE(settings2, settings1); - -// settings2 = settings1; -// QCOMPARE(settings2, settings1); -// QVERIFY(settings2.isNull()); - -// settings1.setQuality(QMediaEncoderSettings:HighQuality); - -// QVERIFY(settings2.isNull()); -// QVERIFY(!settings1.isNull()); -// QVERIFY(settings1 != settings2); -// } - -// { -// QVideoEncoderSettings settings1; -// QVideoEncoderSettings settings2(settings1); -// QCOMPARE(settings2, settings1); - -// settings2 = settings1; -// QCOMPARE(settings2, settings1); -// QVERIFY(settings2.isNull()); - -// settings1.setQuality(QMediaEncoderSettings:HighQuality); - -// QVERIFY(settings2.isNull()); -// QVERIFY(!settings1.isNull()); -// QVERIFY(settings1 != settings2); -// } - -// QVideoEncoderSettings settings1; -// settings1.setBitRate(1); -// QVideoEncoderSettings settings2; -// settings2.setBitRate(1); -// QVERIFY(settings1 == settings2); -// settings2.setBitRate(2); -// QVERIFY(settings1 != settings2); - -// settings1 = QVideoEncoderSettings(); -// settings1.setResolution(800,600); -// settings2 = QVideoEncoderSettings(); -// settings2.setResolution(QSize(800,600)); -// QVERIFY(settings1 == settings2); -// settings2.setResolution(QSize(400,300)); -// QVERIFY(settings1 != settings2); - -// settings1 = QVideoEncoderSettings(); -// settings1.setCodec("codec1"); -// settings2 = QVideoEncoderSettings(); -// settings2.setCodec("codec1"); -// QVERIFY(settings1 == settings2); -// settings2.setCodec("codec2"); -// QVERIFY(settings1 != settings2); - -// settings1 = QVideoEncoderSettings(); -// settings1.setEncodingMode(QMediaEncoderSettings:ConstantBitRateEncoding); -// settings2 = QVideoEncoderSettings(); -// settings2.setEncodingMode(QMediaEncoderSettings:ConstantBitRateEncoding); -// QVERIFY(settings1 == settings2); -// settings2.setEncodingMode(QMediaEncoderSettings:TwoPassEncoding); -// QVERIFY(settings1 != settings2); - -// settings1 = QVideoEncoderSettings(); -// settings1.setQuality(QMediaEncoderSettings:NormalQuality); -// settings2 = QVideoEncoderSettings(); -// settings2.setQuality(QMediaEncoderSettings:NormalQuality); -// QVERIFY(settings1 == settings2); -// settings2.setQuality(QMediaEncoderSettings:LowQuality); -// QVERIFY(settings1 != settings2); - -// settings1 = QVideoEncoderSettings(); -// settings1.setFrameRate(1); -// settings2 = QVideoEncoderSettings(); -// settings2.setFrameRate(1); -// QVERIFY(settings1 == settings2); -// settings2.setFrameRate(2); -// QVERIFY(settings1 != settings2); - -// settings1 = QVideoEncoderSettings(); -// settings1.setEncodingOption(QLatin1String("encoderOption"), QVariant(1)); -// settings2 = QVideoEncoderSettings(); -// settings2.setEncodingOption(QLatin1String("encoderOption"), QVariant(1)); -// QVERIFY(settings1 == settings2); -// settings2.setEncodingOption(QLatin1String("encoderOption"), QVariant(2)); -// QVERIFY(settings1 != settings2); + QMediaEncoderSettings settings; + QVERIFY(settings == QMediaEncoderSettings()); + + QCOMPARE(settings.videoCodec(), QMediaEncoderSettings::VideoCodec::Unspecified); + settings.setVideoCodec(QMediaEncoderSettings::VideoCodec::H265); + QCOMPARE(settings.videoCodec(), QMediaEncoderSettings::VideoCodec::H265); + QVERIFY(settings != QMediaEncoderSettings()); + + settings = QMediaEncoderSettings(); + QCOMPARE(settings.videoBitRate(), -1); + settings.setVideoBitRate(128000); + QCOMPARE(settings.videoBitRate(), 128000); + + settings = QMediaEncoderSettings(); + QCOMPARE(settings.quality(), QMediaEncoderSettings::NormalQuality); + settings.setQuality(QMediaEncoderSettings::HighQuality); + QCOMPARE(settings.quality(), QMediaEncoderSettings::HighQuality); + + settings = QMediaEncoderSettings(); + QCOMPARE(settings.videoFrameRate(), -1); + settings.setVideoFrameRate(60); + QVERIFY(qFuzzyCompare(settings.videoFrameRate(), qreal(60))); + settings.setVideoFrameRate(24.0); + QVERIFY(qFuzzyCompare(settings.videoFrameRate(), qreal(24.0))); + + settings = QMediaEncoderSettings(); + QCOMPARE(settings.videoResolution(), QSize()); + settings.setVideoResolution(QSize(320,240)); + QCOMPARE(settings.videoResolution(), QSize(320,240)); + settings.setVideoResolution(800,600); + QCOMPARE(settings.videoResolution(), QSize(800,600)); + + settings = QMediaEncoderSettings(); + QCOMPARE(settings.videoCodec(), QMediaEncoderSettings::VideoCodec::Unspecified); + QCOMPARE(settings.videoBitRate(), -1); + QCOMPARE(settings.quality(), QMediaEncoderSettings::NormalQuality); + QCOMPARE(settings.videoFrameRate(), -1); + QCOMPARE(settings.videoResolution(), QSize()); + + { + QMediaEncoderSettings settings1; + QMediaEncoderSettings settings2; + QCOMPARE(settings2, settings1); + + settings2 = settings1; + QCOMPARE(settings2, settings1); + + settings1.setQuality(QMediaEncoderSettings::HighQuality); + QVERIFY(settings1 != settings2); + } + + { + QMediaEncoderSettings settings1; + QMediaEncoderSettings settings2(settings1); + QCOMPARE(settings2, settings1); + + settings2 = settings1; + QCOMPARE(settings2, settings1); + + settings1.setQuality(QMediaEncoderSettings::HighQuality); + QVERIFY(settings1 != settings2); + } + + QMediaEncoderSettings settings1; + settings1.setVideoBitRate(1); + QMediaEncoderSettings settings2; + settings2.setVideoBitRate(1); + QVERIFY(settings1 == settings2); + settings2.setVideoBitRate(2); + QVERIFY(settings1 != settings2); + + settings1 = QMediaEncoderSettings(); + settings1.setVideoResolution(800,600); + settings2 = QMediaEncoderSettings(); + settings2.setVideoResolution(QSize(800,600)); + QVERIFY(settings1 == settings2); + settings2.setVideoResolution(QSize(400,300)); + QVERIFY(settings1 != settings2); + + settings1 = QMediaEncoderSettings(); + settings1.setVideoCodec(QMediaEncoderSettings::VideoCodec::H265); + settings2 = QMediaEncoderSettings(); + settings2.setVideoCodec(QMediaEncoderSettings::VideoCodec::H265); + QVERIFY(settings1 == settings2); + settings2.setVideoCodec(QMediaEncoderSettings::VideoCodec::AV1); + QVERIFY(settings1 != settings2); + + settings1 = QMediaEncoderSettings(); + settings1.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding); + settings2 = QMediaEncoderSettings(); + settings2.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding); + QVERIFY(settings1 == settings2); + settings2.setEncodingMode(QMediaEncoderSettings::AverageBitRateEncoding); + QVERIFY(settings1 != settings2); + + settings1 = QMediaEncoderSettings(); + settings1.setQuality(QMediaEncoderSettings::NormalQuality); + settings2 = QMediaEncoderSettings(); + settings2.setQuality(QMediaEncoderSettings::NormalQuality); + QVERIFY(settings1 == settings2); + settings2.setQuality(QMediaEncoderSettings::LowQuality); + QVERIFY(settings1 != settings2); + + settings1 = QMediaEncoderSettings(); + settings1.setVideoFrameRate(1); + settings2 = QMediaEncoderSettings(); + settings2.setVideoFrameRate(1); + QVERIFY(settings1 == settings2); + settings2.setVideoFrameRate(2); + QVERIFY(settings1 != settings2); } void tst_QMediaEncoder::testSettingsApplied() { -// MockMediaSource object(nullptr, service); - -// //if the media recorder is not configured after construction -// //the settings are applied in the next event loop -// QMediaEncoder recorder(&object); -// QCOMPARE(mock->m_settingAppliedCount, 0); -// QTRY_COMPARE(mock->m_settingAppliedCount, 1); - -// QVideoEncoderSettings videoSettings; -// videoSettings.setResolution(640,480); -// recorder.setVideoSettings(videoSettings); + QMediaCaptureSession session; + QMediaEncoder encoder; + session.setEncoder(&encoder); + auto *mock = mockIntegration->lastCaptureService()->mockControl; -// QAudioEncoderSettings audioSettings; -// audioSettings.setQuality(QMediaEncoderSettings:HighQuality); -// recorder.setAudioSettings(audioSettings); + //if the media recorder is not configured after construction + //the settings are applied in the next event loop + QCOMPARE(mock->m_settingAppliedCount, 0); + QTRY_COMPARE(mock->m_settingAppliedCount, 1); -// recorder.setContainerFormat("mkv"); + QMediaEncoderSettings settings; + settings.setVideoResolution(640,480); + encoder.setEncoderSettings(settings); -// QCOMPARE(mock->m_settingAppliedCount, 1); -// QTRY_COMPARE(mock->m_settingAppliedCount, 2); + QCOMPARE(mock->m_settingAppliedCount, 1); + QTRY_COMPARE(mock->m_settingAppliedCount, 2); -// //encoder settings are applied before recording if changed -// audioSettings.setQuality(QMediaEncoderSettings:VeryHighQuality); -// recorder.setAudioSettings(audioSettings); + //encoder settings are applied before recording if changed + settings.setQuality(QMediaEncoderSettings::VeryHighQuality); + encoder.setEncoderSettings(settings); -// QCOMPARE(mock->m_settingAppliedCount, 2); -// recorder.record(); -// QCOMPARE(mock->m_settingAppliedCount, 3); + QCOMPARE(mock->m_settingAppliedCount, 2); + encoder.record(); + QCOMPARE(mock->m_settingAppliedCount, 3); -// recorder.stop(); + encoder.stop(); -// //applySettings is not called if setting has not changes -// recorder.record(); -// QCOMPARE(mock->m_settingAppliedCount, 3); + //applySettings is not called if setting has not changes + encoder.record(); + QCOMPARE(mock->m_settingAppliedCount, 3); } void tst_QMediaEncoder::metaData() { - QFETCH(QString, artist); - QFETCH(QString, title); - QFETCH(QString, genre); - QFETCH(QString, custom); - QMediaCaptureSession session; QCamera camera; QMediaEncoder recorder; @@ -693,135 +585,117 @@ void tst_QMediaEncoder::metaData() void tst_QMediaEncoder::testAudioSettingsCopyConstructor() { /* create an object for AudioEncodersettings */ -// QAudioEncoderSettings audiosettings; -// QVERIFY(audiosettings.isNull()); - -// /* setting the desired properties for the AudioEncoder */ -// audiosettings.setBitRate(128*1000); -// audiosettings.setChannelCount(4); -// audiosettings.setCodec("audio/x-raw"); -// audiosettings.setEncodingMode(QMediaEncoderSettings:ConstantBitRateEncoding); -// audiosettings.setQuality(QMediaEncoderSettings:LowQuality); -// audiosettings.setSampleRate(44100); - -// /* Copy constructor */ -// QAudioEncoderSettings other(audiosettings); -// QVERIFY(!(other.isNull())); - -// /* Verifying whether data is copied properly or not */ -// QVERIFY(other.bitRate() == audiosettings.bitRate()); -// QVERIFY(other.sampleRate() == audiosettings.sampleRate()); -// QVERIFY(other.channelCount() == audiosettings.channelCount()); -// QCOMPARE(other.codec(), audiosettings.codec()); -// QVERIFY(other.encodingMode() == audiosettings.encodingMode()); -// QVERIFY(other.quality() == audiosettings.quality()); + QMediaEncoderSettings audiosettings; + + /* setting the desired properties for the AudioEncoder */ + audiosettings.setAudioBitRate(128*1000); + audiosettings.setAudioChannelCount(4); + audiosettings.setAudioCodec(QMediaEncoderSettings::AudioCodec::ALAC); + audiosettings.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding); + audiosettings.setQuality(QMediaEncoderSettings::LowQuality); + audiosettings.setAudioSampleRate(44100); + + /* Copy constructor */ + QMediaEncoderSettings other(audiosettings); + + /* Verifying whether data is copied properly or not */ + QVERIFY(other.audioBitRate() == audiosettings.audioBitRate()); + QVERIFY(other.audioSampleRate() == audiosettings.audioSampleRate()); + QVERIFY(other.audioChannelCount() == audiosettings.audioChannelCount()); + QCOMPARE(other.audioCodec(), audiosettings.audioCodec()); + QVERIFY(other.encodingMode() == audiosettings.encodingMode()); + QVERIFY(other.quality() == audiosettings.quality()); } void tst_QMediaEncoder::testAudioSettingsOperatorNotEqual() { /* create an object for AudioEncodersettings */ -// QAudioEncoderSettings audiosettings1; -// QVERIFY(audiosettings1.isNull()); - -// QAudioEncoderSettings audiosettings2; -// QVERIFY(audiosettings2.isNull()); - -// /* setting the desired properties to for the AudioEncoder */ -// audiosettings1.setBitRate(128*1000); -// audiosettings1.setChannelCount(4); -// audiosettings1.setCodec("audio/x-raw"); -// audiosettings1.setEncodingMode(QMediaEncoderSettings:ConstantBitRateEncoding); -// audiosettings1.setQuality(QMediaEncoderSettings:LowQuality); -// audiosettings1.setSampleRate(44100); - -// /* setting the desired properties for the AudioEncoder */ -// audiosettings2.setBitRate(128*1000); -// audiosettings2.setChannelCount(4); -// audiosettings2.setCodec("audio/x-raw"); -// audiosettings2.setEncodingMode(QMediaEncoderSettings:ConstantBitRateEncoding); -// audiosettings2.setQuality(QMediaEncoderSettings:LowQuality); -// audiosettings2.setSampleRate(44100); - -// /* verify the both are equal or not */ -// QVERIFY(!(audiosettings1 != audiosettings2)); - -// /* Modify the settings value for one object */ -// audiosettings2.setBitRate(64*1000); -// audiosettings2.setEncodingMode(QMediaEncoderSettings:ConstantQualityEncoding); - -// /* verify the not equal opertor */ -// QVERIFY(audiosettings1 != audiosettings2); - -// QVERIFY(audiosettings2.bitRate() != audiosettings1.bitRate()); -// QVERIFY(audiosettings2.encodingMode() != audiosettings1.encodingMode()); + QMediaEncoderSettings audiosettings1; + QMediaEncoderSettings audiosettings2; + + /* setting the desired properties to for the AudioEncoder */ + audiosettings1.setAudioBitRate(128*1000); + audiosettings1.setAudioChannelCount(4); + audiosettings1.setAudioCodec(QMediaEncoderSettings::AudioCodec::FLAC); + audiosettings1.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding); + audiosettings1.setQuality(QMediaEncoderSettings::LowQuality); + audiosettings1.setAudioSampleRate(44100); + + /* setting the desired properties for the AudioEncoder */ + audiosettings2.setAudioBitRate(128*1000); + audiosettings2.setAudioChannelCount(4); + audiosettings2.setAudioCodec(QMediaEncoderSettings::AudioCodec::FLAC); + audiosettings2.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding); + audiosettings2.setQuality(QMediaEncoderSettings::LowQuality); + audiosettings2.setAudioSampleRate(44100); + + /* verify the both are equal or not */ + QVERIFY(audiosettings1 == audiosettings2); + QVERIFY(!(audiosettings1 != audiosettings2)); + + /* Modify the settings value for one object */ + audiosettings2.setAudioBitRate(64*1000); + audiosettings2.setEncodingMode(QMediaEncoderSettings::ConstantQualityEncoding); + + /* verify the not equal opertor */ + QVERIFY(audiosettings1 != audiosettings2); + + QVERIFY(audiosettings2.audioBitRate() != audiosettings1.audioBitRate()); + QVERIFY(audiosettings2.encodingMode() != audiosettings1.encodingMode()); } void tst_QMediaEncoder::testAudioSettingsOperatorEqual() { /* create an object for AudioEncodersettings */ -// QAudioEncoderSettings audiosettings1; -// QVERIFY(audiosettings1.isNull()); - -// /* setting the desired properties to for the AudioEncoder */ -// audiosettings1.setBitRate(128*1000); -// audiosettings1.setChannelCount(4); -// audiosettings1.setCodec("audio/x-raw"); -// audiosettings1.setEncodingMode(QMediaEncoderSettings:ConstantBitRateEncoding); -// audiosettings1.setQuality(QMediaEncoderSettings:LowQuality); -// audiosettings1.setSampleRate(44100); - -// QAudioEncoderSettings audiosettings2; -// QVERIFY(audiosettings2.isNull()); - -// /* setting the desired properties for the AudioEncoder */ -// audiosettings2.setBitRate(128*1000); -// audiosettings2.setChannelCount(4); -// audiosettings2.setCodec("audio/x-raw"); -// audiosettings2.setEncodingMode(QMediaEncoderSettings:ConstantBitRateEncoding); -// audiosettings2.setQuality(QMediaEncoderSettings:LowQuality); -// audiosettings2.setSampleRate(44100); - -// /* verify both the values are same or not */ -// QVERIFY(audiosettings1 == audiosettings2); -// audiosettings2.setChannelCount(2); -// QVERIFY(audiosettings1 != audiosettings2); + QMediaEncoderSettings audiosettings1; + + /* setting the desired properties to for the AudioEncoder */ + audiosettings1.setAudioBitRate(128*1000); + audiosettings1.setAudioChannelCount(4); + audiosettings1.setAudioCodec(QMediaEncoderSettings::AudioCodec::FLAC); + audiosettings1.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding); + audiosettings1.setQuality(QMediaEncoderSettings::LowQuality); + audiosettings1.setAudioSampleRate(44100); + + QMediaEncoderSettings audiosettings2; + + /* setting the desired properties for the AudioEncoder */ + audiosettings2.setAudioBitRate(128*1000); + audiosettings2.setAudioChannelCount(4); + audiosettings2.setAudioCodec(QMediaEncoderSettings::AudioCodec::FLAC); + audiosettings2.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding); + audiosettings2.setQuality(QMediaEncoderSettings::LowQuality); + audiosettings2.setAudioSampleRate(44100); + + /* verify both the values are same or not */ + QVERIFY(audiosettings1 == audiosettings2); + audiosettings2.setAudioChannelCount(2); + QVERIFY(audiosettings1 != audiosettings2); } void tst_QMediaEncoder::testAudioSettingsOperatorAssign() { /* create an object for AudioEncodersettings */ -// QAudioEncoderSettings audiosettings1; -// QVERIFY(audiosettings1.isNull()); - -// /* setting the desired properties for the AudioEncoder */ -// audiosettings1.setBitRate(128*1000); -// audiosettings1.setChannelCount(4); -// audiosettings1.setCodec("audio/x-raw"); -// audiosettings1.setEncodingMode(QMediaEncoderSettings:ConstantBitRateEncoding); -// audiosettings1.setQuality(QMediaEncoderSettings:LowQuality); -// audiosettings1.setSampleRate(44100); - -// QAudioEncoderSettings audiosettings2; -// audiosettings2 = audiosettings1; -// /* Verifying whether data is copied properly or not */ -// QVERIFY(audiosettings2.bitRate() == audiosettings1.bitRate()); -// QVERIFY(audiosettings2.sampleRate() == audiosettings1.sampleRate()); -// QVERIFY(audiosettings2.channelCount() == audiosettings1.channelCount()); -// QCOMPARE(audiosettings2.codec(), audiosettings1.codec()); -// QVERIFY(audiosettings2.encodingMode() == audiosettings1.encodingMode()); -// QVERIFY(audiosettings2.quality() == audiosettings1.quality()); -} - -void tst_QMediaEncoder::testAudioSettingsDestructor() -{ - /* Creating null object for the audioencodersettings */ -// QAudioEncoderSettings * audiosettings = new QAudioEncoderSettings; - -// /* Verifying the object is null or not */ -// QVERIFY(audiosettings->isNull()); -// /* delete the allocated memory */ -// delete audiosettings; + QMediaEncoderSettings audiosettings1; + + /* setting the desired properties for the AudioEncoder */ + audiosettings1.setAudioBitRate(128*1000); + audiosettings1.setAudioChannelCount(4); + audiosettings1.setAudioCodec(QMediaEncoderSettings::AudioCodec::FLAC); + audiosettings1.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding); + audiosettings1.setQuality(QMediaEncoderSettings::LowQuality); + audiosettings1.setAudioSampleRate(44100); + + QMediaEncoderSettings audiosettings2; + audiosettings2 = audiosettings1; + /* Verifying whether data is copied properly or not */ + QVERIFY(audiosettings2.audioBitRate() == audiosettings1.audioBitRate()); + QVERIFY(audiosettings2.audioSampleRate() == audiosettings1.audioSampleRate()); + QVERIFY(audiosettings2.audioChannelCount() == audiosettings1.audioChannelCount()); + QCOMPARE(audiosettings2.audioCodec(), audiosettings1.audioCodec()); + QVERIFY(audiosettings2.encodingMode() == audiosettings1.encodingMode()); + QVERIFY(audiosettings2.quality() == audiosettings1.quality()); } void tst_QMediaEncoder::testIsAvailable() @@ -840,305 +714,262 @@ void tst_QMediaEncoder::testIsAvailable() } } -/* mediaSource() API test. */ -void tst_QMediaEncoder::testMediaSource() -{ - service->hasControls = false; - QMediaCaptureSession session; - QCamera camera; - QMediaEncoder recorder; - session.setCamera(&camera); - session.setEncoder(&recorder); - - QCamera *medobj = session.camera(); - QVERIFY(medobj != nullptr); - QVERIFY(!camera.isAvailable()); -} - /* enum QMediaEncoder::ResourceError property test. */ void tst_QMediaEncoder::testEnum() { const QString errorString(QLatin1String("resource error")); - QSignalSpy spy(capture, SIGNAL(error(QMediaEncoder::Error))); + QSignalSpy spy(encoder, SIGNAL(error(QMediaEncoder::Error))); - QCOMPARE(capture->error(), QMediaEncoder::NoError); - QCOMPARE(capture->errorString(), QString()); + QCOMPARE(encoder->error(), QMediaEncoder::NoError); + QCOMPARE(encoder->errorString(), QString()); - mock->error(QMediaEncoder::ResourceError, errorString); - QCOMPARE(capture->error(), QMediaEncoder::ResourceError); - QCOMPARE(capture->errorString(), errorString); + emit mock->error(QMediaEncoder::ResourceError, errorString); + QCOMPARE(encoder->error(), QMediaEncoder::ResourceError); + QCOMPARE(encoder->errorString(), errorString); QCOMPARE(spy.count(), 1); QCOMPARE(spy.last()[0].value(), QMediaEncoder::ResourceError); } -/* Test the QVideoEncoderSettings quality API*/ +/* Test the QMediaEncoderSettings quality API*/ void tst_QMediaEncoder::testVideoSettingsQuality() { -// /* Create the instance*/ -// QVideoEncoderSettings settings; -// QVERIFY(settings.isNull()); -// QVERIFY(settings == QVideoEncoderSettings()); + /* Create the instance*/ + QMediaEncoderSettings settings; + QVERIFY(settings == QMediaEncoderSettings()); -// /* Verify the default value is intialised correctly*/ -// QCOMPARE(settings.quality(), QMediaEncoderSettings:NormalQuality); + /* Verify the default value is intialised correctly*/ + QCOMPARE(settings.quality(), QMediaEncoderSettings::NormalQuality); -// /* Set all types of Quality parameter and Verify if it is set correctly*/ -// settings.setQuality(QMediaEncoderSettings:HighQuality); -// QCOMPARE(settings.quality(), QMediaEncoderSettings:HighQuality); -// QVERIFY(!settings.isNull()); + /* Set all types of Quality parameter and Verify if it is set correctly*/ + settings.setQuality(QMediaEncoderSettings::HighQuality); + QCOMPARE(settings.quality(), QMediaEncoderSettings::HighQuality); -// settings.setQuality(QMediaEncoderSettings:VeryLowQuality); -// QCOMPARE(settings.quality(), QMediaEncoderSettings:VeryLowQuality); + settings.setQuality(QMediaEncoderSettings::VeryLowQuality); + QCOMPARE(settings.quality(), QMediaEncoderSettings::VeryLowQuality); -// settings.setQuality(QMediaEncoderSettings:LowQuality); -// QCOMPARE(settings.quality(), QMediaEncoderSettings:LowQuality); + settings.setQuality(QMediaEncoderSettings::LowQuality); + QCOMPARE(settings.quality(), QMediaEncoderSettings::LowQuality); -// settings.setQuality(QMediaEncoderSettings:VeryHighQuality); -// QCOMPARE(settings.quality(), QMediaEncoderSettings:VeryHighQuality); + settings.setQuality(QMediaEncoderSettings::VeryHighQuality); + QCOMPARE(settings.quality(), QMediaEncoderSettings::VeryHighQuality); } -/* Test QVideoEncoderSettings encodingMode */ +/* Test QMediaEncoderSettings encodingMode */ void tst_QMediaEncoder::testVideoSettingsEncodingMode() { -// /* Create the instance*/ -// QVideoEncoderSettings settings; -// QVERIFY(settings.isNull()); -// QVERIFY(settings == QVideoEncoderSettings()); - -// /* Verify the default values are initialised correctly*/ -// QCOMPARE(settings.encodingMode(), QMediaEncoderSettings:ConstantQualityEncoding); -// QVERIFY(settings.isNull()); + /* Create the instance*/ + QMediaEncoderSettings settings; + QVERIFY(settings == QMediaEncoderSettings()); -// /* Set each type of encoding mode and Verify if it is set correctly*/ -// settings.setEncodingMode(QMediaEncoderSettings:ConstantBitRateEncoding); -// QCOMPARE(settings.encodingMode(),QMediaEncoderSettings:ConstantBitRateEncoding); -// QVERIFY(!settings.isNull()); + /* Verify the default values are initialised correctly*/ + QCOMPARE(settings.encodingMode(), QMediaEncoderSettings::ConstantQualityEncoding); -// settings.setEncodingMode(QMediaEncoderSettings:AverageBitRateEncoding); -// QCOMPARE(settings.encodingMode(), QMediaEncoderSettings:AverageBitRateEncoding); + /* Set each type of encoding mode and Verify if it is set correctly*/ + settings.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding); + QCOMPARE(settings.encodingMode(),QMediaEncoderSettings::ConstantBitRateEncoding); -// settings.setEncodingMode(QMediaEncoderSettings:TwoPassEncoding); -// QCOMPARE(settings.encodingMode(), QMediaEncoderSettings:TwoPassEncoding); + settings.setEncodingMode(QMediaEncoderSettings::AverageBitRateEncoding); + QCOMPARE(settings.encodingMode(), QMediaEncoderSettings::AverageBitRateEncoding); } -/* Test QVideoEncoderSettings copy constructor */ +/* Test QMediaEncoderSettings copy constructor */ void tst_QMediaEncoder::testVideoSettingsCopyConstructor() { -// /* Create the instance and initialise it*/ -// QVideoEncoderSettings settings1; -// settings1.setCodec(QLatin1String("codecName")); -// settings1.setBitRate(128000); -// settings1.setQuality(QMediaEncoderSettings:HighQuality); -// settings1.setEncodingMode(QMediaEncoderSettings:ConstantBitRateEncoding); -// settings1.setFrameRate(30000.0/10001); -// settings1.setResolution(QSize(320,240)); - -// /* Create another instance with instance1 as argument*/ -// QVideoEncoderSettings settings2(settings1); - -// /* Verify if all the parameters are copied correctly*/ -// QCOMPARE(settings2 != settings1, false); -// QCOMPARE(settings2.codec(), QLatin1String("codecName")); -// QCOMPARE(settings2.bitRate(), 128000); -// QCOMPARE(settings2.encodingMode(), QMediaEncoderSettings:ConstantBitRateEncoding); -// QVERIFY(qFuzzyCompare(settings2.frameRate(), qreal(30000.0/10001))); -// QCOMPARE(settings2.resolution(), QSize(320,240)); -// QCOMPARE(settings2.quality(), QMediaEncoderSettings:HighQuality); - -// /* Verify both the instances are equal*/ -// QCOMPARE(settings2, settings1); -// QVERIFY(!settings2.isNull()); + /* Create the instance and initialise it*/ + QMediaEncoderSettings settings1; + settings1.setVideoCodec(QMediaEncoderSettings::VideoCodec::Theora); + settings1.setVideoBitRate(128000); + settings1.setQuality(QMediaEncoderSettings::HighQuality); + settings1.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding); + settings1.setVideoFrameRate(60.); + settings1.setVideoResolution(QSize(320,240)); + + /* Create another instance with instance1 as argument*/ + QMediaEncoderSettings settings2(settings1); + + /* Verify if all the parameters are copied correctly*/ + QCOMPARE(settings2 != settings1, false); + QCOMPARE(settings2.videoCodec(), QMediaEncoderSettings::VideoCodec::Theora); + QCOMPARE(settings2.videoBitRate(), 128000); + QCOMPARE(settings2.encodingMode(), QMediaEncoderSettings::ConstantBitRateEncoding); + QVERIFY(qFuzzyCompare(settings2.videoFrameRate(), qreal(60.))); + QCOMPARE(settings2.videoResolution(), QSize(320,240)); + QCOMPARE(settings2.quality(), QMediaEncoderSettings::HighQuality); + + /* Verify both the instances are equal*/ + QCOMPARE(settings2, settings1); } -/* Test QVideoEncoderSettings Overloaded Operator assignment*/ +/* Test QMediaEncoderSettings Overloaded Operator assignment*/ void tst_QMediaEncoder::testVideoSettingsOperatorAssignment() { -// /* Create two instances.*/ -// QVideoEncoderSettings settings1; -// QVideoEncoderSettings settings2; -// QCOMPARE(settings2, settings1); -// QVERIFY(settings2.isNull()); - -// /* Initialize all the parameters */ -// settings1.setCodec(QLatin1String("codecName")); -// settings1.setBitRate(128000); -// settings1.setEncodingMode(QMediaEncoderSettings:ConstantBitRateEncoding); -// settings1.setFrameRate(30000.0/10001); -// settings1.setResolution(QSize(320,240)); -// settings1.setQuality(QMediaEncoderSettings:HighQuality); -// /* Assign one object to other*/ -// settings2 = settings1; - -// /* Verify all the parameters are copied correctly*/ -// QCOMPARE(settings2, settings1); -// QCOMPARE(settings2.codec(), QLatin1String("codecName")); -// QCOMPARE(settings2.bitRate(), 128000); -// QCOMPARE(settings2.encodingMode(), QMediaEncoderSettings:ConstantBitRateEncoding); -// QVERIFY(qFuzzyCompare(settings2.frameRate(), qreal(30000.0/10001))); -// QCOMPARE(settings2.resolution(), QSize(320,240)); -// QCOMPARE(settings2.quality(), QMediaEncoderSettings:HighQuality); -// QCOMPARE(settings2, settings1); -// QVERIFY(!settings2.isNull()); + /* Create two instances.*/ + QMediaEncoderSettings settings1; + QMediaEncoderSettings settings2; + QCOMPARE(settings2, settings1); + + /* Initialize all the parameters */ + settings1.setVideoCodec(QMediaEncoderSettings::VideoCodec::Theora); + settings1.setVideoBitRate(128000); + settings1.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding); + settings1.setVideoFrameRate(60.); + settings1.setVideoResolution(QSize(320,240)); + settings1.setQuality(QMediaEncoderSettings::HighQuality); + /* Assign one object to other*/ + settings2 = settings1; + + /* Verify all the parameters are copied correctly*/ + QCOMPARE(settings2, settings1); + QCOMPARE(settings2.videoCodec(), QMediaEncoderSettings::VideoCodec::Theora); + QCOMPARE(settings2.videoBitRate(), 128000); + QCOMPARE(settings2.encodingMode(), QMediaEncoderSettings::ConstantBitRateEncoding); + QVERIFY(qFuzzyCompare(settings2.videoFrameRate(), qreal(60.))); + QCOMPARE(settings2.videoResolution(), QSize(320,240)); + QCOMPARE(settings2.quality(), QMediaEncoderSettings::HighQuality); + QCOMPARE(settings2, settings1); } -/* Test QVideoEncoderSettings Overloaded OperatorNotEqual*/ +/* Test QMediaEncoderSettings Overloaded OperatorNotEqual*/ void tst_QMediaEncoder::testVideoSettingsOperatorNotEqual() { -// /* Create the instance and set the bit rate and Verify objects with OperatorNotEqual*/ -// QVideoEncoderSettings settings1; -// settings1.setBitRate(1); -// QVideoEncoderSettings settings2; -// settings2.setBitRate(1); -// /* OperatorNotEqual returns false when both objects are equal*/ -// QCOMPARE(settings1 != settings2, false); -// settings2.setBitRate(2); -// /* OperatorNotEqual returns true when both objects are not equal*/ -// QVERIFY(settings1 != settings2); - -// /* Verify Resolution with not equal operator*/ -// settings1 = QVideoEncoderSettings(); -// settings1.setResolution(800,600); -// settings2 = QVideoEncoderSettings(); -// settings2.setResolution(QSize(800,600)); -// /* OperatorNotEqual returns false when both objects are equal*/ -// QCOMPARE(settings1 != settings2, false); -// settings2.setResolution(QSize(400,300)); -// /* OperatorNotEqual returns true when both objects are not equal*/ -// QVERIFY(settings1 != settings2); - -// /* Verify Codec with not equal operator*/ -// settings1 = QVideoEncoderSettings(); -// settings1.setCodec("codec1"); -// settings2 = QVideoEncoderSettings(); -// settings2.setCodec("codec1"); -// /* OperatorNotEqual returns false when both objects are equal*/ -// QCOMPARE(settings1 != settings2, false); -// settings2.setCodec("codec2"); -// /* OperatorNotEqual returns true when both objects are not equal*/ -// QVERIFY(settings1 != settings2); - -// /* Verify EncodingMode with not equal operator*/ -// settings1 = QVideoEncoderSettings(); -// settings1.setEncodingMode(QMediaEncoderSettings:ConstantBitRateEncoding); -// settings2 = QVideoEncoderSettings(); -// settings2.setEncodingMode(QMediaEncoderSettings:ConstantBitRateEncoding); -// /* OperatorNotEqual returns false when both objects are equal*/ -// QCOMPARE(settings1 != settings2, false); -// settings2.setEncodingMode(QMediaEncoderSettings:TwoPassEncoding); -// /* OperatorNotEqual returns true when both objects are not equal*/ -// QVERIFY(settings1 != settings2); - -// /* Verify Quality with not equal operator*/ -// settings1 = QVideoEncoderSettings(); -// settings1.setQuality(QMediaEncoderSettings:NormalQuality); -// settings2 = QVideoEncoderSettings(); -// settings2.setQuality(QMediaEncoderSettings:NormalQuality); -// /* OperatorNotEqual returns false when both objects are equal*/ -// QCOMPARE(settings1 != settings2, false); -// settings2.setQuality(QMediaEncoderSettings:LowQuality); -// /* OperatorNotEqual returns true when both objects are not equal*/ -// QVERIFY(settings1 != settings2); - -// /* Verify FrameRate with not equal operator*/ -// settings1 = QVideoEncoderSettings(); -// settings1.setFrameRate(1); -// settings2 = QVideoEncoderSettings(); -// settings2.setFrameRate(1); -// /* OperatorNotEqual returns false when both objects are equal*/ -// QCOMPARE(settings1 != settings2, false); -// settings2.setFrameRate(2); -// /* OperatorNotEqual returns true when both objects are not equal*/ -// QVERIFY(settings1 != settings2); + /* Create the instance and set the bit rate and Verify objects with OperatorNotEqual*/ + QMediaEncoderSettings settings1; + settings1.setVideoBitRate(1); + QMediaEncoderSettings settings2; + settings2.setVideoBitRate(1); + /* OperatorNotEqual returns false when both objects are equal*/ + QCOMPARE(settings1 != settings2, false); + settings2.setVideoBitRate(2); + /* OperatorNotEqual returns true when both objects are not equal*/ + QVERIFY(settings1 != settings2); + + /* Verify Resolution with not equal operator*/ + settings1 = QMediaEncoderSettings(); + settings1.setVideoResolution(800,600); + settings2 = QMediaEncoderSettings(); + settings2.setVideoResolution(QSize(800,600)); + /* OperatorNotEqual returns false when both objects are equal*/ + QCOMPARE(settings1 != settings2, false); + settings2.setVideoResolution(QSize(400,300)); + /* OperatorNotEqual returns true when both objects are not equal*/ + QVERIFY(settings1 != settings2); + + /* Verify Codec with not equal operator*/ + settings1 = QMediaEncoderSettings(); + settings1.setVideoCodec(QMediaEncoderSettings::VideoCodec::Theora); + settings2 = QMediaEncoderSettings(); + settings2.setVideoCodec(QMediaEncoderSettings::VideoCodec::Theora); + /* OperatorNotEqual returns false when both objects are equal*/ + QCOMPARE(settings1 != settings2, false); + settings2.setVideoCodec(QMediaEncoderSettings::VideoCodec::AV1); + /* OperatorNotEqual returns true when both objects are not equal*/ + QVERIFY(settings1 != settings2); + + /* Verify EncodingMode with not equal operator*/ + settings1 = QMediaEncoderSettings(); + settings1.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding); + settings2 = QMediaEncoderSettings(); + settings2.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding); + /* OperatorNotEqual returns false when both objects are equal*/ + QCOMPARE(settings1 != settings2, false); + settings2.setEncodingMode(QMediaEncoderSettings::AverageBitRateEncoding); + /* OperatorNotEqual returns true when both objects are not equal*/ + QVERIFY(settings1 != settings2); + + /* Verify Quality with not equal operator*/ + settings1 = QMediaEncoderSettings(); + settings1.setQuality(QMediaEncoderSettings::NormalQuality); + settings2 = QMediaEncoderSettings(); + settings2.setQuality(QMediaEncoderSettings::NormalQuality); + /* OperatorNotEqual returns false when both objects are equal*/ + QCOMPARE(settings1 != settings2, false); + settings2.setQuality(QMediaEncoderSettings::LowQuality); + /* OperatorNotEqual returns true when both objects are not equal*/ + QVERIFY(settings1 != settings2); + + /* Verify FrameRate with not equal operator*/ + settings1 = QMediaEncoderSettings(); + settings1.setVideoFrameRate(1); + settings2 = QMediaEncoderSettings(); + settings2.setVideoFrameRate(1); + /* OperatorNotEqual returns false when both objects are equal*/ + QCOMPARE(settings1 != settings2, false); + settings2.setVideoFrameRate(2); + /* OperatorNotEqual returns true when both objects are not equal*/ + QVERIFY(settings1 != settings2); } -/* Test QVideoEncoderSettings Overloaded comparison operator*/ +/* Test QMediaEncoderSettings Overloaded comparison operator*/ void tst_QMediaEncoder::testVideoSettingsOperatorComparison() { -// /* Create the instance and set the bit rate and Verify objects with comparison operator*/ -// QVideoEncoderSettings settings1; -// settings1.setBitRate(1); -// QVideoEncoderSettings settings2; -// settings2.setBitRate(1); - -// /* Comparison operator returns true when both objects are equal*/ -// QVERIFY(settings1 == settings2); -// settings2.setBitRate(2); -// /* Comparison operator returns false when both objects are not equal*/ -// QCOMPARE(settings1 == settings2, false); - -// /* Verify resolution with comparison operator*/ -// settings1 = QVideoEncoderSettings(); -// settings1.setResolution(800,600); -// settings2 = QVideoEncoderSettings(); -// settings2.setResolution(QSize(800,600)); -// /* Comparison operator returns true when both objects are equal*/ -// QVERIFY(settings1 == settings2); -// settings2.setResolution(QSize(400,300)); -// /* Comparison operator returns false when both objects are not equal*/ -// QCOMPARE(settings1 == settings2, false); - -// /* Verify Codec with comparison operator*/ -// settings1 = QVideoEncoderSettings(); -// settings1.setCodec("codec1"); -// settings2 = QVideoEncoderSettings(); -// settings2.setCodec("codec1"); -// /* Comparison operator returns true when both objects are equal*/ -// QVERIFY(settings1 == settings2); -// settings2.setCodec("codec2"); -// /* Comparison operator returns false when both objects are not equal*/ -// QCOMPARE(settings1 == settings2, false); - -// /* Verify EncodingMode with comparison operator*/ -// settings1 = QVideoEncoderSettings(); -// settings1.setEncodingMode(QMediaEncoderSettings:ConstantBitRateEncoding); -// settings2 = QVideoEncoderSettings(); -// settings2.setEncodingMode(QMediaEncoderSettings:ConstantBitRateEncoding); -// /* Comparison operator returns true when both objects are equal*/ -// QVERIFY(settings1 == settings2); -// settings2.setEncodingMode(QMediaEncoderSettings:TwoPassEncoding); -// /* Comparison operator returns false when both objects are not equal*/ -// QCOMPARE(settings1 == settings2, false); - -// /* Verify Quality with comparison operator*/ -// settings1 = QVideoEncoderSettings(); -// settings1.setQuality(QMediaEncoderSettings:NormalQuality); -// settings2 = QVideoEncoderSettings(); -// settings2.setQuality(QMediaEncoderSettings:NormalQuality); -// /* Comparison operator returns true when both objects are equal*/ -// QVERIFY(settings1 == settings2); -// settings2.setQuality(QMediaEncoderSettings:LowQuality); -// /* Comparison operator returns false when both objects are not equal*/ -// QCOMPARE(settings1 == settings2, false); - -// /* Verify FrameRate with comparison operator*/ -// settings1 = QVideoEncoderSettings(); -// settings1.setFrameRate(1); -// settings2 = QVideoEncoderSettings(); -// settings2.setFrameRate(1); -// /* Comparison operator returns true when both objects are equal*/ -// QVERIFY(settings1 == settings2); -// settings2.setFrameRate(2); -// /* Comparison operator returns false when both objects are not equal*/ -// QCOMPARE(settings1 == settings2, false); -} - -/* Test the destuctor of the QVideoEncoderSettings*/ -void tst_QMediaEncoder::testVideoSettingsDestructor() -{ -// /* Create the instance on heap and verify if object deleted correctly*/ -// QVideoEncoderSettings *settings1 = new QVideoEncoderSettings(); -// QVERIFY(settings1 != nullptr); -// QVERIFY(settings1->isNull()); -// delete settings1; - -// /* Create the instance on heap and initialise it and verify if object deleted correctly.*/ -// QVideoEncoderSettings *settings2 = new QVideoEncoderSettings(); -// QVERIFY(settings2 != nullptr); -// settings2->setCodec(QString("codec")); -// QVERIFY(!settings2->isNull()); -// delete settings2; + /* Create the instance and set the bit rate and Verify objects with comparison operator*/ + QMediaEncoderSettings settings1; + settings1.setVideoBitRate(1); + QMediaEncoderSettings settings2; + settings2.setVideoBitRate(1); + + /* Comparison operator returns true when both objects are equal*/ + QVERIFY(settings1 == settings2); + settings2.setVideoBitRate(2); + /* Comparison operator returns false when both objects are not equal*/ + QCOMPARE(settings1 == settings2, false); + + /* Verify resolution with comparison operator*/ + settings1 = QMediaEncoderSettings(); + settings1.setVideoResolution(800,600); + settings2 = QMediaEncoderSettings(); + settings2.setVideoResolution(QSize(800,600)); + /* Comparison operator returns true when both objects are equal*/ + QVERIFY(settings1 == settings2); + settings2.setVideoResolution(QSize(400,300)); + /* Comparison operator returns false when both objects are not equal*/ + QCOMPARE(settings1 == settings2, false); + + /* Verify Codec with comparison operator*/ + settings1 = QMediaEncoderSettings(); + settings1.setVideoCodec(QMediaEncoderSettings::VideoCodec::Theora); + settings2 = QMediaEncoderSettings(); + settings2.setVideoCodec(QMediaEncoderSettings::VideoCodec::Theora); + /* Comparison operator returns true when both objects are equal*/ + QVERIFY(settings1 == settings2); + settings2.setVideoCodec(QMediaEncoderSettings::VideoCodec::AV1); + /* Comparison operator returns false when both objects are not equal*/ + QCOMPARE(settings1 == settings2, false); + + /* Verify EncodingMode with comparison operator*/ + settings1 = QMediaEncoderSettings(); + settings1.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding); + settings2 = QMediaEncoderSettings(); + settings2.setEncodingMode(QMediaEncoderSettings::ConstantBitRateEncoding); + /* Comparison operator returns true when both objects are equal*/ + QVERIFY(settings1 == settings2); + settings2.setEncodingMode(QMediaEncoderSettings::AverageBitRateEncoding); + /* Comparison operator returns false when both objects are not equal*/ + QCOMPARE(settings1 == settings2, false); + + /* Verify Quality with comparison operator*/ + settings1 = QMediaEncoderSettings(); + settings1.setQuality(QMediaEncoderSettings::NormalQuality); + settings2 = QMediaEncoderSettings(); + settings2.setQuality(QMediaEncoderSettings::NormalQuality); + /* Comparison operator returns true when both objects are equal*/ + QVERIFY(settings1 == settings2); + settings2.setQuality(QMediaEncoderSettings::LowQuality); + /* Comparison operator returns false when both objects are not equal*/ + QCOMPARE(settings1 == settings2, false); + + /* Verify FrameRate with comparison operator*/ + settings1 = QMediaEncoderSettings(); + settings1.setVideoFrameRate(1); + settings2 = QMediaEncoderSettings(); + settings2.setVideoFrameRate(1); + /* Comparison operator returns true when both objects are equal*/ + QVERIFY(settings1 == settings2); + settings2.setVideoFrameRate(2); + /* Comparison operator returns false when both objects are not equal*/ + QCOMPARE(settings1 == settings2, false); } QTEST_GUILESS_MAIN(tst_QMediaEncoder) -- cgit v1.2.3