diff options
Diffstat (limited to 'tests/auto/integration/qmediacapturesession/tst_qmediacapturesession.cpp')
-rw-r--r-- | tests/auto/integration/qmediacapturesession/tst_qmediacapturesession.cpp | 644 |
1 files changed, 449 insertions, 195 deletions
diff --git a/tests/auto/integration/qmediacapturesession/tst_qmediacapturesession.cpp b/tests/auto/integration/qmediacapturesession/tst_qmediacapturesession.cpp index a5a3741b2..fdf5b8207 100644 --- a/tests/auto/integration/qmediacapturesession/tst_qmediacapturesession.cpp +++ b/tests/auto/integration/qmediacapturesession/tst_qmediacapturesession.cpp @@ -1,32 +1,5 @@ -/**************************************************************************** -** -** Copyright (C) 2021 The Qt Company Ltd. -** Contact: https://www.qt.io/licensing/ -** -** This file is part of the Qt Toolkit. -** -** $QT_BEGIN_LICENSE:GPL-EXCEPT$ -** Commercial License Usage -** Licensees holding valid commercial Qt licenses may use this file in -** accordance with the commercial license agreement provided with the -** Software or, alternatively, in accordance with the terms contained in -** a written agreement between you and The Qt Company. For licensing terms -** and conditions see https://www.qt.io/terms-conditions. For further -** information use the contact form at https://www.qt.io/contact-us. -** -** GNU General Public License Usage -** Alternatively, this file may be used under the terms of the GNU -** General Public License version 3 as published by the Free Software -** Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT -** included in the packaging of this file. Please review the following -** information to ensure the GNU General Public License requirements will -** be met: https://www.gnu.org/licenses/gpl-3.0.html. -** -** $QT_END_LICENSE$ -** -****************************************************************************/ - -//TESTED_COMPONENT=src/multimedia +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only #include <QtTest/QtTest> #include <QtGui/QImageReader> @@ -34,6 +7,7 @@ #include <QDebug> #include <QVideoSink> #include <QVideoWidget> +#include <QSysInfo> #include <qcamera.h> #include <qcameradevice.h> @@ -47,11 +21,17 @@ #include <qaudiodevice.h> #include <qaudiodecoder.h> #include <qaudiobuffer.h> +#include <qscreencapture.h> +#include <qwindowcapture.h> +#include <qaudiobufferinput.h> +#include <qvideoframeinput.h> #include <qcamera.h> #include <QMediaFormat> #include <QtMultimediaWidgets/QVideoWidget> +#include <mediabackendutils.h> + QT_USE_NAMESPACE /* @@ -67,8 +47,23 @@ class tst_QMediaCaptureSession: public QObject private slots: + void initTestCase() + { + if (qEnvironmentVariable("QTEST_ENVIRONMENT").toLower() == "ci") { +#ifdef Q_OS_ANDROID + QSKIP("SKIP initTestCase on CI, because of QTBUG-118571"); +#endif + } + } + void testAudioMute(); void stress_test_setup_and_teardown(); + void stress_test_setup_and_teardown_keep_session(); + void stress_test_setup_and_teardown_keep_recorder(); + void stress_test_setup_and_teardown_keep_camera(); + void stress_test_setup_and_teardown_keep_audioinput(); + void stress_test_setup_and_teardown_keep_audiooutput(); + void stress_test_setup_and_teardown_keep_video(); void record_video_without_preview(); @@ -77,9 +72,16 @@ private slots: void can_change_AudioInput_during_recording(); void disconnects_deleted_AudioInput(); void can_move_AudioInput_between_sessions(); + void disconnects_deleted_AudioOutput(); void can_move_AudioOutput_between_sessions_and_player(); + void disconnects_deleted_AudioBufferInput(); + void can_move_AudioBufferInput_between_sessions(); + + void disconnects_deleted_VideoFrameInput(); + void can_move_VideoFrameInput_between_sessions(); + void can_add_and_remove_Camera(); void can_move_Camera_between_sessions(); void can_disconnect_Camera_when_recording(); @@ -101,6 +103,8 @@ private slots: void capture_is_not_available_when_Camera_is_null(); void can_add_ImageCapture_and_capture_during_recording(); + void can_reset_audio_input_output(); + private: void recordOk(QMediaCaptureSession &session); void recordFail(QMediaCaptureSession &session); @@ -112,8 +116,8 @@ void tst_QMediaCaptureSession::recordOk(QMediaCaptureSession &session) QMediaRecorder recorder; session.setRecorder(&recorder); - QSignalSpy recorderErrorSignal(&recorder, SIGNAL(errorOccurred(Error, const QString &))); - QSignalSpy durationChanged(&recorder, SIGNAL(durationChanged(qint64))); + QSignalSpy recorderErrorSignal(&recorder, &QMediaRecorder::errorOccurred); + QSignalSpy durationChanged(&recorder, &QMediaRecorder::durationChanged); recorder.record(); QTRY_VERIFY_WITH_TIMEOUT(recorder.recorderState() == QMediaRecorder::RecordingState, 2000); @@ -132,12 +136,12 @@ void tst_QMediaCaptureSession::recordOk(QMediaCaptureSession &session) void tst_QMediaCaptureSession::recordFail(QMediaCaptureSession &session) { QMediaRecorder recorder; - QSignalSpy recorderErrorSignal(&recorder, SIGNAL(errorOccurred(Error, const QString &))); + QSignalSpy recorderErrorSignal(&recorder, &QMediaRecorder::errorOccurred); session.setRecorder(&recorder); recorder.record(); - QTRY_VERIFY_WITH_TIMEOUT(recorderErrorSignal.count() == 1, 2000); + QTRY_VERIFY_WITH_TIMEOUT(recorderErrorSignal.size() == 1, 2000); QTRY_VERIFY_WITH_TIMEOUT(recorder.recorderState() == QMediaRecorder::StoppedState, 2000); } @@ -162,6 +166,132 @@ void tst_QMediaCaptureSession::stress_test_setup_and_teardown() } } +void tst_QMediaCaptureSession::stress_test_setup_and_teardown_keep_session() +{ + QMediaCaptureSession session; + for (int i = 0; i < 50; i++) { + QMediaRecorder recorder; + QCamera camera; + QAudioInput input; + QAudioOutput output; + QVideoWidget video; + + session.setAudioInput(&input); + session.setAudioOutput(&output); + session.setRecorder(&recorder); + session.setCamera(&camera); + session.setVideoOutput(&video); + + QRandomGenerator rng; + QTest::qWait(rng.bounded(200)); + } +} + +void tst_QMediaCaptureSession::stress_test_setup_and_teardown_keep_recorder() +{ + QMediaCaptureSession session; + QMediaRecorder recorder; + for (int i = 0; i < 50; i++) { + QCamera camera; + QAudioInput input; + QAudioOutput output; + QVideoWidget video; + + session.setAudioInput(&input); + session.setAudioOutput(&output); + session.setRecorder(&recorder); + session.setCamera(&camera); + session.setVideoOutput(&video); + + QRandomGenerator rng; + QTest::qWait(rng.bounded(200)); + } +} + +void tst_QMediaCaptureSession::stress_test_setup_and_teardown_keep_camera() +{ + QCamera camera; + for (int i = 0; i < 50; i++) { + QMediaCaptureSession session; + QMediaRecorder recorder; + QAudioInput input; + QAudioOutput output; + QVideoWidget video; + + session.setAudioInput(&input); + session.setAudioOutput(&output); + session.setRecorder(&recorder); + session.setCamera(&camera); + session.setVideoOutput(&video); + + QRandomGenerator rng; + QTest::qWait(rng.bounded(200)); + } +} + +void tst_QMediaCaptureSession::stress_test_setup_and_teardown_keep_audioinput() +{ + QAudioInput input; + for (int i = 0; i < 50; i++) { + QMediaCaptureSession session; + QMediaRecorder recorder; + QCamera camera; + QAudioOutput output; + QVideoWidget video; + + session.setAudioInput(&input); + session.setAudioOutput(&output); + session.setRecorder(&recorder); + session.setCamera(&camera); + session.setVideoOutput(&video); + + QRandomGenerator rng; + QTest::qWait(rng.bounded(200)); + } +} + +void tst_QMediaCaptureSession::stress_test_setup_and_teardown_keep_audiooutput() +{ + QAudioOutput output; + for (int i = 0; i < 50; i++) { + QMediaCaptureSession session; + QMediaRecorder recorder; + QCamera camera; + QAudioInput input; + QVideoWidget video; + + session.setAudioInput(&input); + session.setAudioOutput(&output); + session.setRecorder(&recorder); + session.setCamera(&camera); + session.setVideoOutput(&video); + + QRandomGenerator rng; + QTest::qWait(rng.bounded(200)); + } +} + +void tst_QMediaCaptureSession::stress_test_setup_and_teardown_keep_video() +{ + QVideoWidget video; + for (int i = 0; i < 50; i++) { + QMediaCaptureSession session; + QMediaRecorder recorder; + QCamera camera; + QAudioInput input; + QAudioOutput output; + + session.setAudioInput(&input); + session.setAudioOutput(&output); + session.setRecorder(&recorder); + session.setCamera(&camera); + session.setVideoOutput(&video); + + QRandomGenerator rng; + QTest::qWait(rng.bounded(200)); + } +} + void tst_QMediaCaptureSession::record_video_without_preview() { QCamera camera; @@ -174,17 +304,18 @@ void tst_QMediaCaptureSession::record_video_without_preview() session.setRecorder(&recorder); - QSignalSpy cameraChanged(&session, SIGNAL(cameraChanged())); + QSignalSpy cameraChanged(&session, &QMediaCaptureSession::cameraChanged); session.setCamera(&camera); camera.setActive(true); - QTRY_COMPARE(cameraChanged.count(), 1); + QTRY_COMPARE(cameraChanged.size(), 1); + QTRY_COMPARE(camera.isActive(), true); recordOk(session); QVERIFY(!QTest::currentTestFailed()); session.setCamera(nullptr); - QTRY_COMPARE(cameraChanged.count(), 2); + QTRY_COMPARE(cameraChanged.size(), 2); // can't record without audio and video recordFail(session); @@ -198,29 +329,29 @@ void tst_QMediaCaptureSession::can_add_and_remove_AudioInput_with_and_without_Au QSKIP("No audio input available"); QMediaCaptureSession session; - QSignalSpy audioInputChanged(&session, SIGNAL(audioInputChanged())); - QSignalSpy audioOutputChanged(&session, SIGNAL(audioOutputChanged())); + QSignalSpy audioInputChanged(&session, &QMediaCaptureSession::audioInputChanged); + QSignalSpy audioOutputChanged(&session, &QMediaCaptureSession::audioOutputChanged); session.setAudioInput(&input); - QTRY_COMPARE(audioInputChanged.count(), 1); + QTRY_COMPARE(audioInputChanged.size(), 1); session.setAudioInput(nullptr); - QTRY_COMPARE(audioInputChanged.count(), 2); + QTRY_COMPARE(audioInputChanged.size(), 2); QAudioOutput output; if (output.device().isNull()) return; session.setAudioOutput(&output); - QTRY_COMPARE(audioOutputChanged.count(), 1); + QTRY_COMPARE(audioOutputChanged.size(), 1); session.setAudioInput(&input); - QTRY_COMPARE(audioInputChanged.count(), 3); + QTRY_COMPARE(audioInputChanged.size(), 3); session.setAudioOutput(nullptr); - QTRY_COMPARE(audioOutputChanged.count(), 2); + QTRY_COMPARE(audioOutputChanged.size(), 2); session.setAudioInput(nullptr); - QTRY_COMPARE(audioInputChanged.count(), 4); + QTRY_COMPARE(audioInputChanged.size(), 4); } void tst_QMediaCaptureSession::can_change_AudioDevices_on_attached_AudioInput() @@ -230,25 +361,25 @@ void tst_QMediaCaptureSession::can_change_AudioDevices_on_attached_AudioInput() QSKIP("Two audio inputs are not available"); QAudioInput input(audioInputs[0]); - QSignalSpy deviceChanged(&input, SIGNAL(deviceChanged())); + QSignalSpy deviceChanged(&input, &QAudioInput::deviceChanged); QMediaCaptureSession session; - QSignalSpy audioInputChanged(&session, SIGNAL(audioInputChanged())); + QSignalSpy audioInputChanged(&session, &QMediaCaptureSession::audioInputChanged); session.setAudioInput(&input); - QTRY_COMPARE(audioInputChanged.count(), 1); + QTRY_COMPARE(audioInputChanged.size(), 1); recordOk(session); QVERIFY(!QTest::currentTestFailed()); input.setDevice(audioInputs[1]); - QTRY_COMPARE(deviceChanged.count(), 1); + QTRY_COMPARE(deviceChanged.size(), 1); recordOk(session); QVERIFY(!QTest::currentTestFailed()); input.setDevice(audioInputs[0]); - QTRY_COMPARE(deviceChanged.count(), 2); + QTRY_COMPARE(deviceChanged.size(), 2); recordOk(session); QVERIFY(!QTest::currentTestFailed()); @@ -265,27 +396,27 @@ void tst_QMediaCaptureSession::can_change_AudioInput_during_recording() session.setRecorder(&recorder); - QSignalSpy audioInputChanged(&session, SIGNAL(audioInputChanged())); - QSignalSpy recorderErrorSignal(&recorder, SIGNAL(errorOccurred(Error, const QString &))); - QSignalSpy durationChanged(&recorder, SIGNAL(durationChanged(qint64))); + QSignalSpy audioInputChanged(&session, &QMediaCaptureSession::audioInputChanged); + QSignalSpy recorderErrorSignal(&recorder, &QMediaRecorder::errorOccurred); + QSignalSpy durationChanged(&recorder, &QMediaRecorder::durationChanged); session.setAudioInput(&input); - QTRY_COMPARE(audioInputChanged.count(), 1); + QTRY_COMPARE(audioInputChanged.size(), 1); recorder.record(); QTRY_VERIFY(recorder.recorderState() == QMediaRecorder::RecordingState); QVERIFY(durationChanged.wait(2000)); session.setAudioInput(nullptr); - QTRY_COMPARE(audioInputChanged.count(), 2); + QTRY_COMPARE(audioInputChanged.size(), 2); session.setAudioInput(&input); - QTRY_COMPARE(audioInputChanged.count(), 3); + QTRY_COMPARE(audioInputChanged.size(), 3); recorder.stop(); QTRY_VERIFY(recorder.recorderState() == QMediaRecorder::StoppedState); QVERIFY(recorderErrorSignal.isEmpty()); session.setAudioInput(nullptr); - QTRY_COMPARE(audioInputChanged.count(), 4); + QTRY_COMPARE(audioInputChanged.size(), 4); QString fileName = recorder.actualLocation().toLocalFile(); QVERIFY(!fileName.isEmpty()); @@ -299,14 +430,14 @@ void tst_QMediaCaptureSession::disconnects_deleted_AudioInput() QSKIP("No audio input available"); QMediaCaptureSession session; - QSignalSpy audioInputChanged(&session, SIGNAL(audioInputChanged())); + QSignalSpy audioInputChanged(&session, &QMediaCaptureSession::audioInputChanged); { QAudioInput input; session.setAudioInput(&input); - QTRY_COMPARE(audioInputChanged.count(), 1); + QTRY_COMPARE(audioInputChanged.size(), 1); } QVERIFY(session.audioInput() == nullptr); - QTRY_COMPARE(audioInputChanged.count(), 2); + QTRY_COMPARE(audioInputChanged.size(), 2); } void tst_QMediaCaptureSession::can_move_AudioInput_between_sessions() @@ -316,24 +447,24 @@ void tst_QMediaCaptureSession::can_move_AudioInput_between_sessions() QMediaCaptureSession session0; QMediaCaptureSession session1; - QSignalSpy audioInputChanged0(&session0, SIGNAL(audioInputChanged())); - QSignalSpy audioInputChanged1(&session1, SIGNAL(audioInputChanged())); + QSignalSpy audioInputChanged0(&session0, &QMediaCaptureSession::audioInputChanged); + QSignalSpy audioInputChanged1(&session1, &QMediaCaptureSession::audioInputChanged); QAudioInput input; { QMediaCaptureSession session2; - QSignalSpy audioInputChanged2(&session2, SIGNAL(audioInputChanged())); + QSignalSpy audioInputChanged2(&session2, &QMediaCaptureSession::audioInputChanged); session2.setAudioInput(&input); - QTRY_COMPARE(audioInputChanged2.count(), 1); + QTRY_COMPARE(audioInputChanged2.size(), 1); } session0.setAudioInput(&input); - QTRY_COMPARE(audioInputChanged0.count(), 1); + QTRY_COMPARE(audioInputChanged0.size(), 1); QVERIFY(session0.audioInput() != nullptr); session1.setAudioInput(&input); - QTRY_COMPARE(audioInputChanged0.count(), 2); + QTRY_COMPARE(audioInputChanged0.size(), 2); QVERIFY(session0.audioInput() == nullptr); - QTRY_COMPARE(audioInputChanged1.count(), 1); + QTRY_COMPARE(audioInputChanged1.size(), 1); QVERIFY(session1.audioInput() != nullptr); } @@ -343,14 +474,14 @@ void tst_QMediaCaptureSession::disconnects_deleted_AudioOutput() QSKIP("No audio output available"); QMediaCaptureSession session; - QSignalSpy audioOutputChanged(&session, SIGNAL(audioOutputChanged())); + QSignalSpy audioOutputChanged(&session, &QMediaCaptureSession::audioOutputChanged); { QAudioOutput output; session.setAudioOutput(&output); - QTRY_COMPARE(audioOutputChanged.count(), 1); + QTRY_COMPARE(audioOutputChanged.size(), 1); } QVERIFY(session.audioOutput() == nullptr); - QTRY_COMPARE(audioOutputChanged.count(), 2); + QTRY_COMPARE(audioOutputChanged.size(), 2); } void tst_QMediaCaptureSession::can_move_AudioOutput_between_sessions_and_player() @@ -358,46 +489,130 @@ void tst_QMediaCaptureSession::can_move_AudioOutput_between_sessions_and_player( if (QMediaDevices::audioOutputs().isEmpty()) QSKIP("No audio output available"); + QAudioOutput output; + QMediaCaptureSession session0; QMediaCaptureSession session1; QMediaPlayer player; - QSignalSpy audioOutputChanged0(&session0, SIGNAL(audioOutputChanged())); - QSignalSpy audioOutputChanged1(&session1, SIGNAL(audioOutputChanged())); - QSignalSpy audioOutputChangedPlayer(&player, SIGNAL(audioOutputChanged())); + QSignalSpy audioOutputChanged0(&session0, &QMediaCaptureSession::audioOutputChanged); + QSignalSpy audioOutputChanged1(&session1, &QMediaCaptureSession::audioOutputChanged); + QSignalSpy audioOutputChangedPlayer(&player, &QMediaPlayer::audioOutputChanged); - QAudioOutput output; { QMediaCaptureSession session2; - QSignalSpy audioOutputChanged2(&session2, SIGNAL(audioOutputChanged())); + QSignalSpy audioOutputChanged2(&session2, &QMediaCaptureSession::audioOutputChanged); session2.setAudioOutput(&output); - QTRY_COMPARE(audioOutputChanged2.count(), 1); + QTRY_COMPARE(audioOutputChanged2.size(), 1); } session0.setAudioOutput(&output); - QTRY_COMPARE(audioOutputChanged0.count(), 1); + QTRY_COMPARE(audioOutputChanged0.size(), 1); QVERIFY(session0.audioOutput() != nullptr); session1.setAudioOutput(&output); - QTRY_COMPARE(audioOutputChanged0.count(), 2); + QTRY_COMPARE(audioOutputChanged0.size(), 2); QVERIFY(session0.audioOutput() == nullptr); - QTRY_COMPARE(audioOutputChanged1.count(), 1); + QTRY_COMPARE(audioOutputChanged1.size(), 1); QVERIFY(session1.audioOutput() != nullptr); player.setAudioOutput(&output); - QTRY_COMPARE(audioOutputChanged0.count(), 2); + QTRY_COMPARE(audioOutputChanged0.size(), 2); QVERIFY(session0.audioOutput() == nullptr); - QTRY_COMPARE(audioOutputChanged1.count(), 2); + QTRY_COMPARE(audioOutputChanged1.size(), 2); QVERIFY(session1.audioOutput() == nullptr); - QTRY_COMPARE(audioOutputChangedPlayer.count(), 1); + QTRY_COMPARE(audioOutputChangedPlayer.size(), 1); QVERIFY(player.audioOutput() != nullptr); session0.setAudioOutput(&output); - QTRY_COMPARE(audioOutputChanged0.count(), 3); + QTRY_COMPARE(audioOutputChanged0.size(), 3); QVERIFY(session0.audioOutput() != nullptr); - QTRY_COMPARE(audioOutputChangedPlayer.count(), 2); + QTRY_COMPARE(audioOutputChangedPlayer.size(), 2); QVERIFY(player.audioOutput() == nullptr); } +void tst_QMediaCaptureSession::disconnects_deleted_AudioBufferInput() +{ + QMediaCaptureSession session; + QSignalSpy audioBufferInputChanged(&session, &QMediaCaptureSession::audioBufferInputChanged); + { + QAudioBufferInput input; + session.setAudioBufferInput(&input); + QTRY_COMPARE(audioBufferInputChanged.size(), 1); + } + QCOMPARE(session.audioBufferInput(), nullptr); + QCOMPARE(audioBufferInputChanged.size(), 2); +} + +void tst_QMediaCaptureSession::can_move_AudioBufferInput_between_sessions() +{ + QMediaCaptureSession session0; + QMediaCaptureSession session1; + QSignalSpy audioBufferInputChanged0(&session0, &QMediaCaptureSession::audioBufferInputChanged); + QSignalSpy audioBufferInputChanged1(&session1, &QMediaCaptureSession::audioBufferInputChanged); + + QAudioBufferInput input; + { + QMediaCaptureSession session2; + QSignalSpy audioBufferInputChanged2(&session2, + &QMediaCaptureSession::audioBufferInputChanged); + session2.setAudioBufferInput(&input); + QCOMPARE(audioBufferInputChanged2.size(), 1); + } + session0.setAudioBufferInput(&input); + QCOMPARE(audioBufferInputChanged0.size(), 1); + QCOMPARE(session0.audioBufferInput(), &input); + QCOMPARE(input.captureSession(), &session0); + + session1.setAudioBufferInput(&input); + + QCOMPARE(audioBufferInputChanged0.size(), 2); + QCOMPARE(session0.audioBufferInput(), nullptr); + QCOMPARE(audioBufferInputChanged1.size(), 1); + QCOMPARE(session1.audioBufferInput(), &input); + QCOMPARE(input.captureSession(), &session1); +} + +void tst_QMediaCaptureSession::disconnects_deleted_VideoFrameInput() +{ + QMediaCaptureSession session; + QSignalSpy videoFrameInputChanged(&session, &QMediaCaptureSession::videoFrameInputChanged); + { + QVideoFrameInput input; + session.setVideoFrameInput(&input); + QTRY_COMPARE(videoFrameInputChanged.size(), 1); + } + QCOMPARE(session.videoFrameInput(), nullptr); + QCOMPARE(videoFrameInputChanged.size(), 2); +} + +void tst_QMediaCaptureSession::can_move_VideoFrameInput_between_sessions() +{ + QMediaCaptureSession session0; + QMediaCaptureSession session1; + QSignalSpy videoFrameInputChanged0(&session0, &QMediaCaptureSession::videoFrameInputChanged); + QSignalSpy videoFrameInputChanged1(&session1, &QMediaCaptureSession::videoFrameInputChanged); + + QVideoFrameInput input; + { + QMediaCaptureSession session2; + QSignalSpy videoFrameInputChanged2(&session2, + &QMediaCaptureSession::videoFrameInputChanged); + session2.setVideoFrameInput(&input); + QCOMPARE(videoFrameInputChanged2.size(), 1); + } + session0.setVideoFrameInput(&input); + QCOMPARE(videoFrameInputChanged0.size(), 1); + QCOMPARE(session0.videoFrameInput(), &input); + QCOMPARE(input.captureSession(), &session0); + + session1.setVideoFrameInput(&input); + + QCOMPARE(videoFrameInputChanged0.size(), 2); + QCOMPARE(session0.videoFrameInput(), nullptr); + QCOMPARE(videoFrameInputChanged1.size(), 1); + QCOMPARE(session1.videoFrameInput(), &input); + QCOMPARE(input.captureSession(), &session1); +} void tst_QMediaCaptureSession::can_add_and_remove_Camera() { @@ -411,17 +626,18 @@ void tst_QMediaCaptureSession::can_add_and_remove_Camera() session.setRecorder(&recorder); - QSignalSpy cameraChanged(&session, SIGNAL(cameraChanged())); + QSignalSpy cameraChanged(&session, &QMediaCaptureSession::cameraChanged); session.setCamera(&camera); camera.setActive(true); - QTRY_COMPARE(cameraChanged.count(), 1); + QTRY_COMPARE(cameraChanged.size(), 1); + QTRY_COMPARE(camera.isActive(), true); session.setCamera(nullptr); - QTRY_COMPARE(cameraChanged.count(), 2); + QTRY_COMPARE(cameraChanged.size(), 2); session.setCamera(&camera); - QTRY_COMPARE(cameraChanged.count(), 3); + QTRY_COMPARE(cameraChanged.size(), 3); recordOk(session); QVERIFY(!QTest::currentTestFailed()); @@ -431,31 +647,31 @@ void tst_QMediaCaptureSession::can_move_Camera_between_sessions() { QMediaCaptureSession session0; QMediaCaptureSession session1; - QSignalSpy cameraChanged0(&session0, SIGNAL(cameraChanged())); - QSignalSpy cameraChanged1(&session1, SIGNAL(cameraChanged())); + QSignalSpy cameraChanged0(&session0, &QMediaCaptureSession::cameraChanged); + QSignalSpy cameraChanged1(&session1, &QMediaCaptureSession::cameraChanged); { QCamera camera; { QMediaCaptureSession session2; - QSignalSpy cameraChanged2(&session2, SIGNAL(cameraChanged())); + QSignalSpy cameraChanged2(&session2, &QMediaCaptureSession::cameraChanged); session2.setCamera(&camera); - QTRY_COMPARE(cameraChanged2.count(), 1); + QTRY_COMPARE(cameraChanged2.size(), 1); } QVERIFY(camera.captureSession() == nullptr); session0.setCamera(&camera); - QTRY_COMPARE(cameraChanged0.count(), 1); + QTRY_COMPARE(cameraChanged0.size(), 1); QVERIFY(session0.camera() == &camera); QVERIFY(camera.captureSession() == &session0); session1.setCamera(&camera); - QTRY_COMPARE(cameraChanged0.count(), 2); + QTRY_COMPARE(cameraChanged0.size(), 2); QVERIFY(session0.camera() == nullptr); - QTRY_COMPARE(cameraChanged1.count(), 1); + QTRY_COMPARE(cameraChanged1.size(), 1); QVERIFY(session1.camera() == &camera); QVERIFY(camera.captureSession() == &session1); } - QTRY_COMPARE(cameraChanged1.count(), 2); + QTRY_COMPARE(cameraChanged1.size(), 2); QVERIFY(session1.camera() == nullptr); } @@ -471,21 +687,22 @@ void tst_QMediaCaptureSession::can_disconnect_Camera_when_recording() session.setRecorder(&recorder); - QSignalSpy cameraChanged(&session, SIGNAL(cameraChanged())); - QSignalSpy recorderErrorSignal(&recorder, SIGNAL(errorOccurred(Error, const QString &))); - QSignalSpy durationChanged(&recorder, SIGNAL(durationChanged(qint64))); + QSignalSpy cameraChanged(&session, &QMediaCaptureSession::cameraChanged); + QSignalSpy recorderErrorSignal(&recorder, &QMediaRecorder::errorOccurred); + QSignalSpy durationChanged(&recorder, &QMediaRecorder::durationChanged); camera.setActive(true); session.setCamera(&camera); - QTRY_COMPARE(cameraChanged.count(), 1); + QTRY_COMPARE(cameraChanged.size(), 1); + QTRY_COMPARE(camera.isActive(), true); durationChanged.clear(); recorder.record(); QTRY_VERIFY(recorder.recorderState() == QMediaRecorder::RecordingState); - QTRY_VERIFY(durationChanged.count() > 0); + QTRY_VERIFY(durationChanged.size() > 0); session.setCamera(nullptr); - QTRY_COMPARE(cameraChanged.count(), 2); + QTRY_COMPARE(cameraChanged.size(), 2); recorder.stop(); QTRY_VERIFY(recorder.recorderState() == QMediaRecorder::StoppedState); @@ -512,18 +729,20 @@ void tst_QMediaCaptureSession::can_add_and_remove_different_Cameras() session.setRecorder(&recorder); - QSignalSpy cameraChanged(&session, SIGNAL(cameraChanged())); + QSignalSpy cameraChanged(&session, &QMediaCaptureSession::cameraChanged); camera.setActive(true); session.setCamera(&camera); - QTRY_COMPARE(cameraChanged.count(), 1); + QTRY_COMPARE(cameraChanged.size(), 1); + QTRY_COMPARE(camera.isActive(), true); session.setCamera(nullptr); - QTRY_COMPARE(cameraChanged.count(), 2); + QTRY_COMPARE(cameraChanged.size(), 2); session.setCamera(&camera2); camera2.setActive(true); - QTRY_COMPARE(cameraChanged.count(), 3); + QTRY_COMPARE(cameraChanged.size(), 3); + QTRY_COMPARE(camera2.isActive(), true); recordOk(session); QVERIFY(!QTest::currentTestFailed()); @@ -543,22 +762,25 @@ void tst_QMediaCaptureSession::can_change_CameraDevice_on_attached_Camera() session.setRecorder(&recorder); - QSignalSpy cameraDeviceChanged(&camera, SIGNAL(cameraDeviceChanged())); - QSignalSpy cameraChanged(&session, SIGNAL(cameraChanged())); + QSignalSpy cameraDeviceChanged(&camera, &QCamera::cameraDeviceChanged); + QSignalSpy cameraChanged(&session, &QMediaCaptureSession::cameraChanged); session.setCamera(&camera); - QTRY_COMPARE(cameraChanged.count(), 1); + QTRY_COMPARE(cameraChanged.size(), 1); recordFail(session); QVERIFY(!QTest::currentTestFailed()); camera.setActive(true); + QTRY_COMPARE(camera.isActive(), true); + recordOk(session); QVERIFY(!QTest::currentTestFailed()); camera.setCameraDevice(cameraDevices[1]); camera.setActive(true); - QTRY_COMPARE(cameraDeviceChanged.count(), 1); + QTRY_COMPARE(cameraDeviceChanged.size(), 1); + QTRY_COMPARE(camera.isActive(), true); recordOk(session); QVERIFY(!QTest::currentTestFailed()); @@ -577,26 +799,26 @@ void tst_QMediaCaptureSession::can_change_VideoOutput_with_and_without_camera() QMediaCaptureSession session; - QSignalSpy videoOutputChanged(&session, SIGNAL(videoOutputChanged())); - QSignalSpy cameraChanged(&session, SIGNAL(cameraChanged())); + QSignalSpy videoOutputChanged(&session, &QMediaCaptureSession::videoOutputChanged); + QSignalSpy cameraChanged(&session, &QMediaCaptureSession::cameraChanged); session.setCamera(&camera); - QTRY_COMPARE(cameraChanged.count(), 1); + QTRY_COMPARE(cameraChanged.size(), 1); session.setVideoOutput(&videoOutput); - QTRY_COMPARE(videoOutputChanged.count(), 1); + QTRY_COMPARE(videoOutputChanged.size(), 1); session.setVideoOutput(nullptr); - QTRY_COMPARE(videoOutputChanged.count(), 2); + QTRY_COMPARE(videoOutputChanged.size(), 2); session.setVideoOutput(&videoOutput2); - QTRY_COMPARE(videoOutputChanged.count(), 3); + QTRY_COMPARE(videoOutputChanged.size(), 3); session.setCamera(nullptr); - QTRY_COMPARE(cameraChanged.count(), 2); + QTRY_COMPARE(cameraChanged.size(), 2); session.setVideoOutput(nullptr); - QTRY_COMPARE(videoOutputChanged.count(), 4); + QTRY_COMPARE(videoOutputChanged.size(), 4); } void tst_QMediaCaptureSession::can_change_VideoOutput_when_recording() @@ -613,27 +835,28 @@ void tst_QMediaCaptureSession::can_change_VideoOutput_when_recording() session.setRecorder(&recorder); - QSignalSpy cameraChanged(&session, SIGNAL(cameraChanged())); - QSignalSpy recorderErrorSignal(&recorder, SIGNAL(errorOccurred(Error, const QString &))); - QSignalSpy durationChanged(&recorder, SIGNAL(durationChanged(qint64))); - QSignalSpy videoOutputChanged(&session, SIGNAL(videoOutputChanged())); + QSignalSpy cameraChanged(&session, &QMediaCaptureSession::cameraChanged); + QSignalSpy recorderErrorSignal(&recorder, &QMediaRecorder::errorOccurred); + QSignalSpy durationChanged(&recorder, &QMediaRecorder::durationChanged); + QSignalSpy videoOutputChanged(&session, &QMediaCaptureSession::videoOutputChanged); camera.setActive(true); session.setCamera(&camera); - QTRY_COMPARE(cameraChanged.count(), 1); + QTRY_COMPARE(cameraChanged.size(), 1); + QTRY_COMPARE(camera.isActive(), true); recorder.record(); QTRY_VERIFY(recorder.recorderState() == QMediaRecorder::RecordingState); QVERIFY(durationChanged.wait(2000)); session.setVideoOutput(&videoOutput); - QTRY_COMPARE(videoOutputChanged.count(), 1); + QTRY_COMPARE(videoOutputChanged.size(), 1); session.setVideoOutput(nullptr); - QTRY_COMPARE(videoOutputChanged.count(), 2); + QTRY_COMPARE(videoOutputChanged.size(), 2); session.setVideoOutput(&videoOutput); - QTRY_COMPARE(videoOutputChanged.count(), 3); + QTRY_COMPARE(videoOutputChanged.size(), 3); recorder.stop(); QTRY_VERIFY(recorder.recorderState() == QMediaRecorder::StoppedState); @@ -655,20 +878,20 @@ void tst_QMediaCaptureSession::can_add_and_remove_recorders() QMediaRecorder recorder2; QMediaCaptureSession session; - QSignalSpy audioInputChanged(&session, SIGNAL(audioInputChanged())); - QSignalSpy recorderChanged(&session, SIGNAL(recorderChanged())); + QSignalSpy audioInputChanged(&session, &QMediaCaptureSession::audioInputChanged); + QSignalSpy recorderChanged(&session, &QMediaCaptureSession::recorderChanged); session.setAudioInput(&input); - QTRY_COMPARE(audioInputChanged.count(), 1); + QTRY_COMPARE(audioInputChanged.size(), 1); session.setRecorder(&recorder); - QTRY_COMPARE(recorderChanged.count(), 1); + QTRY_COMPARE(recorderChanged.size(), 1); session.setRecorder(&recorder2); - QTRY_COMPARE(recorderChanged.count(), 2); + QTRY_COMPARE(recorderChanged.size(), 2); session.setRecorder(&recorder); - QTRY_COMPARE(recorderChanged.count(), 3); + QTRY_COMPARE(recorderChanged.size(), 3); recordOk(session); QVERIFY(!QTest::currentTestFailed()); @@ -678,31 +901,31 @@ void tst_QMediaCaptureSession::can_move_Recorder_between_sessions() { QMediaCaptureSession session0; QMediaCaptureSession session1; - QSignalSpy recorderChanged0(&session0, SIGNAL(recorderChanged())); - QSignalSpy recorderChanged1(&session1, SIGNAL(recorderChanged())); + QSignalSpy recorderChanged0(&session0, &QMediaCaptureSession::recorderChanged); + QSignalSpy recorderChanged1(&session1, &QMediaCaptureSession::recorderChanged); { QMediaRecorder recorder; { QMediaCaptureSession session2; - QSignalSpy recorderChanged2(&session2, SIGNAL(recorderChanged())); + QSignalSpy recorderChanged2(&session2, &QMediaCaptureSession::recorderChanged); session2.setRecorder(&recorder); - QTRY_COMPARE(recorderChanged2.count(), 1); + QTRY_COMPARE(recorderChanged2.size(), 1); } QVERIFY(recorder.captureSession() == nullptr); session0.setRecorder(&recorder); - QTRY_COMPARE(recorderChanged0.count(), 1); + QTRY_COMPARE(recorderChanged0.size(), 1); QVERIFY(session0.recorder() == &recorder); QVERIFY(recorder.captureSession() == &session0); session1.setRecorder(&recorder); - QTRY_COMPARE(recorderChanged0.count(), 2); + QTRY_COMPARE(recorderChanged0.size(), 2); QVERIFY(session0.recorder() == nullptr); - QTRY_COMPARE(recorderChanged1.count(), 1); + QTRY_COMPARE(recorderChanged1.size(), 1); QVERIFY(session1.recorder() == &recorder); QVERIFY(recorder.captureSession() == &session1); } - QTRY_COMPARE(recorderChanged1.count(), 2); + QTRY_COMPARE(recorderChanged1.size(), 2); QVERIFY(session1.recorder() == nullptr); } @@ -721,10 +944,10 @@ void tst_QMediaCaptureSession::can_record_AudioInput_with_null_AudioDevice() QAudioInput input(nullDevice); QMediaCaptureSession session; - QSignalSpy audioInputChanged(&session, SIGNAL(audioInputChanged())); + QSignalSpy audioInputChanged(&session, &QMediaCaptureSession::audioInputChanged); session.setAudioInput(&input); - QTRY_COMPARE(audioInputChanged.count(), 1); + QTRY_COMPARE(audioInputChanged.size(), 1); recordOk(session); QVERIFY(!QTest::currentTestFailed()); @@ -739,12 +962,14 @@ void tst_QMediaCaptureSession::can_record_Camera_with_null_CameraDevice() QCamera camera(nullDevice); QMediaCaptureSession session; - QSignalSpy cameraChanged(&session, SIGNAL(cameraChanged())); + QSignalSpy cameraChanged(&session, &QMediaCaptureSession::cameraChanged); session.setCamera(&camera); - QTRY_COMPARE(cameraChanged.count(), 1); + QTRY_COMPARE(cameraChanged.size(), 1); camera.setActive(true); + QTRY_COMPARE(camera.isActive(), true); + recordOk(session); QVERIFY(!QTest::currentTestFailed()); } @@ -758,23 +983,23 @@ void tst_QMediaCaptureSession::recording_stops_when_recorder_removed() QMediaRecorder recorder; QMediaCaptureSession session; - QSignalSpy audioInputChanged(&session, SIGNAL(audioInputChanged())); - QSignalSpy recorderChanged(&session, SIGNAL(recorderChanged())); - QSignalSpy recorderErrorSignal(&recorder, SIGNAL(errorOccurred(Error, const QString &))); - QSignalSpy durationChanged(&recorder, SIGNAL(durationChanged(qint64))); + QSignalSpy audioInputChanged(&session, &QMediaCaptureSession::audioInputChanged); + QSignalSpy recorderChanged(&session, &QMediaCaptureSession::recorderChanged); + QSignalSpy recorderErrorSignal(&recorder, &QMediaRecorder::errorOccurred); + QSignalSpy durationChanged(&recorder, &QMediaRecorder::durationChanged); session.setAudioInput(&input); - QTRY_COMPARE(audioInputChanged.count(), 1); + QTRY_COMPARE(audioInputChanged.size(), 1); session.setRecorder(&recorder); - QTRY_COMPARE(recorderChanged.count(), 1); + QTRY_COMPARE(recorderChanged.size(), 1); recorder.record(); QTRY_VERIFY(recorder.recorderState() == QMediaRecorder::RecordingState); QVERIFY(durationChanged.wait(2000)); session.setRecorder(nullptr); - QTRY_COMPARE(recorderChanged.count(), 2); + QTRY_COMPARE(recorderChanged.size(), 2); QTRY_VERIFY(recorder.recorderState() == QMediaRecorder::StoppedState); QVERIFY(recorderErrorSignal.isEmpty()); @@ -795,38 +1020,40 @@ void tst_QMediaCaptureSession::can_add_and_remove_ImageCapture() QImageCapture capture; QMediaCaptureSession session; - QSignalSpy cameraChanged(&session, SIGNAL(cameraChanged())); - QSignalSpy imageCaptureChanged(&session, SIGNAL(imageCaptureChanged())); - QSignalSpy readyForCaptureChanged(&capture, SIGNAL(readyForCaptureChanged(bool))); + QSignalSpy cameraChanged(&session, &QMediaCaptureSession::cameraChanged); + QSignalSpy imageCaptureChanged(&session, &QMediaCaptureSession::imageCaptureChanged); + QSignalSpy readyForCaptureChanged(&capture, &QImageCapture::readyForCaptureChanged); QVERIFY(!capture.isAvailable()); QVERIFY(!capture.isReadyForCapture()); session.setImageCapture(&capture); - QTRY_COMPARE(imageCaptureChanged.count(), 1); + QTRY_COMPARE(imageCaptureChanged.size(), 1); QVERIFY(!capture.isAvailable()); QVERIFY(!capture.isReadyForCapture()); session.setCamera(&camera); - QTRY_COMPARE(cameraChanged.count(), 1); + QTRY_COMPARE(cameraChanged.size(), 1); QVERIFY(capture.isAvailable()); QVERIFY(!capture.isReadyForCapture()); camera.setActive(true); - QTRY_COMPARE(readyForCaptureChanged.count(), 1); + QTRY_COMPARE(camera.isActive(), true); + + QTRY_COMPARE(readyForCaptureChanged.size(), 1); QVERIFY(capture.isReadyForCapture()); session.setImageCapture(nullptr); - QTRY_COMPARE(imageCaptureChanged.count(), 2); - QTRY_COMPARE(readyForCaptureChanged.count(), 2); + QTRY_COMPARE(imageCaptureChanged.size(), 2); + QTRY_COMPARE(readyForCaptureChanged.size(), 2); QVERIFY(!capture.isAvailable()); QVERIFY(!capture.isReadyForCapture()); session.setImageCapture(&capture); - QTRY_COMPARE(imageCaptureChanged.count(), 3); - QTRY_COMPARE(readyForCaptureChanged.count(), 3); + QTRY_COMPARE(imageCaptureChanged.size(), 3); + QTRY_COMPARE(readyForCaptureChanged.size(), 3); QVERIFY(capture.isAvailable()); QVERIFY(capture.isReadyForCapture()); } @@ -835,31 +1062,31 @@ void tst_QMediaCaptureSession::can_move_ImageCapture_between_sessions() { QMediaCaptureSession session0; QMediaCaptureSession session1; - QSignalSpy imageCaptureChanged0(&session0, SIGNAL(imageCaptureChanged())); - QSignalSpy imageCaptureChanged1(&session1, SIGNAL(imageCaptureChanged())); + QSignalSpy imageCaptureChanged0(&session0, &QMediaCaptureSession::imageCaptureChanged); + QSignalSpy imageCaptureChanged1(&session1, &QMediaCaptureSession::imageCaptureChanged); { QImageCapture imageCapture; { QMediaCaptureSession session2; - QSignalSpy imageCaptureChanged2(&session2, SIGNAL(imageCaptureChanged())); + QSignalSpy imageCaptureChanged2(&session2, &QMediaCaptureSession::imageCaptureChanged); session2.setImageCapture(&imageCapture); - QTRY_COMPARE(imageCaptureChanged2.count(), 1); + QTRY_COMPARE(imageCaptureChanged2.size(), 1); } QVERIFY(imageCapture.captureSession() == nullptr); session0.setImageCapture(&imageCapture); - QTRY_COMPARE(imageCaptureChanged0.count(), 1); + QTRY_COMPARE(imageCaptureChanged0.size(), 1); QVERIFY(session0.imageCapture() == &imageCapture); QVERIFY(imageCapture.captureSession() == &session0); session1.setImageCapture(&imageCapture); - QTRY_COMPARE(imageCaptureChanged0.count(), 2); + QTRY_COMPARE(imageCaptureChanged0.size(), 2); QVERIFY(session0.imageCapture() == nullptr); - QTRY_COMPARE(imageCaptureChanged1.count(), 1); + QTRY_COMPARE(imageCaptureChanged1.size(), 1); QVERIFY(session1.imageCapture() == &imageCapture); QVERIFY(imageCapture.captureSession() == &session1); } - QTRY_COMPARE(imageCaptureChanged1.count(), 2); + QTRY_COMPARE(imageCaptureChanged1.size(), 2); QVERIFY(session1.imageCapture() == nullptr); } @@ -874,26 +1101,27 @@ void tst_QMediaCaptureSession::capture_is_not_available_when_Camera_is_null() QImageCapture capture; QMediaCaptureSession session; - QSignalSpy cameraChanged(&session, SIGNAL(cameraChanged())); - QSignalSpy capturedSignal(&capture, SIGNAL(imageCaptured(int,QImage))); - QSignalSpy readyForCaptureChanged(&capture, SIGNAL(readyForCaptureChanged(bool))); + QSignalSpy cameraChanged(&session, &QMediaCaptureSession::cameraChanged); + QSignalSpy capturedSignal(&capture, &QImageCapture::imageCaptured); + QSignalSpy readyForCaptureChanged(&capture, &QImageCapture::readyForCaptureChanged); session.setImageCapture(&capture); session.setCamera(&camera); camera.setActive(true); + QTRY_COMPARE(camera.isActive(), true); - QTRY_COMPARE(readyForCaptureChanged.count(), 1); + QTRY_COMPARE(readyForCaptureChanged.size(), 1); QVERIFY(capture.isReadyForCapture()); QVERIFY(capture.capture() >= 0); - QTRY_COMPARE(capturedSignal.count(), 1); + QTRY_COMPARE(capturedSignal.size(), 1); QVERIFY(capture.isReadyForCapture()); - int readyCount = readyForCaptureChanged.count(); + int readyCount = readyForCaptureChanged.size(); session.setCamera(nullptr); - QTRY_COMPARE(readyForCaptureChanged.count(), readyCount + 1); + QTRY_COMPARE(readyForCaptureChanged.size(), readyCount + 1); QVERIFY(!capture.isReadyForCapture()); QVERIFY(!capture.isAvailable()); QVERIFY(capture.capture() < 0); @@ -910,33 +1138,34 @@ void tst_QMediaCaptureSession::can_add_ImageCapture_and_capture_during_recording QMediaCaptureSession session; QMediaRecorder recorder; - QSignalSpy recorderChanged(&session, SIGNAL(recorderChanged())); - QSignalSpy recorderErrorSignal(&recorder, SIGNAL(errorOccurred(Error, const QString &))); - QSignalSpy durationChanged(&recorder, SIGNAL(durationChanged(qint64))); - QSignalSpy imageCaptureChanged(&session, SIGNAL(imageCaptureChanged())); - QSignalSpy readyForCaptureChanged(&capture, SIGNAL(readyForCaptureChanged(bool))); - QSignalSpy capturedSignal(&capture, SIGNAL(imageCaptured(int,QImage))); + QSignalSpy recorderChanged(&session, &QMediaCaptureSession::recorderChanged); + QSignalSpy recorderErrorSignal(&recorder, &QMediaRecorder::errorOccurred); + QSignalSpy durationChanged(&recorder, &QMediaRecorder::durationChanged); + QSignalSpy imageCaptureChanged(&session, &QMediaCaptureSession::imageCaptureChanged); + QSignalSpy readyForCaptureChanged(&capture, &QImageCapture::readyForCaptureChanged); + QSignalSpy capturedSignal(&capture, &QImageCapture::imageCaptured); session.setCamera(&camera); camera.setActive(true); + QTRY_COMPARE(camera.isActive(), true); session.setRecorder(&recorder); - QTRY_COMPARE(recorderChanged.count(), 1); + QTRY_COMPARE(recorderChanged.size(), 1); recorder.record(); QTRY_VERIFY(recorder.recorderState() == QMediaRecorder::RecordingState); QVERIFY(durationChanged.wait(2000)); session.setImageCapture(&capture); - QTRY_COMPARE(imageCaptureChanged.count(), 1); - QTRY_COMPARE(readyForCaptureChanged.count(), 1); + QTRY_COMPARE(imageCaptureChanged.size(), 1); + QTRY_COMPARE(readyForCaptureChanged.size(), 1); QVERIFY(capture.isReadyForCapture()); QVERIFY(capture.capture() >= 0); - QTRY_COMPARE(capturedSignal.count(), 1); + QTRY_COMPARE(capturedSignal.size(), 1); session.setImageCapture(nullptr); - QVERIFY(readyForCaptureChanged.count() >= 2); + QVERIFY(readyForCaptureChanged.size() >= 2); QVERIFY(!capture.isReadyForCapture()); recorder.stop(); @@ -966,28 +1195,26 @@ void tst_QMediaCaptureSession::testAudioMute() recorder.setOutputLocation(QStringLiteral("test")); QSignalSpy spy(&audioInput, &QAudioInput::mutedChanged); - QSignalSpy durationChanged(&recorder, SIGNAL(durationChanged(qint64))); + QSignalSpy durationChanged(&recorder, &QMediaRecorder::durationChanged); QMediaFormat format; - format.setAudioCodec(QMediaFormat::AudioCodec::MP3); + format.setAudioCodec(QMediaFormat::AudioCodec::Wave); recorder.setMediaFormat(format); - recorder.record(); audioInput.setMuted(true); - QCOMPARE(spy.count(), 1); + recorder.record(); + + QCOMPARE(spy.size(), 1); QCOMPARE(spy.last()[0], true); QTRY_VERIFY_WITH_TIMEOUT(recorder.recorderState() == QMediaRecorder::RecordingState, 2000); QVERIFY(durationChanged.wait(2000)); - audioInput.setMuted(false); - - QCOMPARE(spy.count(), 2); - QCOMPARE(spy.last()[0], false); - recorder.stop(); + QTRY_COMPARE(recorder.recorderState(), QMediaRecorder::StoppedState); + QString actualLocation = recorder.actualLocation().toLocalFile(); QVERIFY2(!actualLocation.isEmpty(), "Recorder did not save a file"); @@ -1016,6 +1243,33 @@ void tst_QMediaCaptureSession::testAudioMute() decoder.stop(); QFile(actualLocation).remove(); + + audioInput.setMuted(false); + + QCOMPARE(spy.size(), 2); + QCOMPARE(spy.last()[0], false); +} + +void tst_QMediaCaptureSession::can_reset_audio_input_output() +{ + QAudioInput in1; + QMediaCaptureSession session; + session.setAudioInput(&in1); + QVERIFY(session.audioInput() != nullptr); + QAudioInput in2; + QSignalSpy changeSpy1(&session, &QMediaCaptureSession::audioInputChanged); + session.setAudioInput(&in2); + QVERIFY(session.audioInput() != nullptr); + QCOMPARE(changeSpy1.count(), 1); + + QAudioOutput out1; + session.setAudioOutput(&out1); + QVERIFY(session.audioOutput() != nullptr); + QSignalSpy changeSpy2(&session, &QMediaCaptureSession::audioOutputChanged); + QAudioOutput out2; + session.setAudioOutput(&out2); + QVERIFY(session.audioOutput() != nullptr); + QCOMPARE(changeSpy2.count(), 1); } QTEST_MAIN(tst_QMediaCaptureSession) |