summaryrefslogtreecommitdiffstats
path: root/tests/auto/integration/qmediacapturesession/tst_qmediacapturesession.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'tests/auto/integration/qmediacapturesession/tst_qmediacapturesession.cpp')
-rw-r--r--tests/auto/integration/qmediacapturesession/tst_qmediacapturesession.cpp644
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)