summaryrefslogtreecommitdiffstats
path: root/tests/auto
diff options
context:
space:
mode:
authorVaL Doroshchuk <valentyn.doroshchuk@qt.io>2019-10-30 14:01:18 +0100
committerVaL Doroshchuk <valentyn.doroshchuk@qt.io>2020-01-22 17:02:18 +0100
commit836bde2ba1a3fc5bdce51aad839e07fb7584af35 (patch)
treee2c86ecbefe5ce345d01c4189e7e993ce589f0f6 /tests/auto
parentf4e2f8f71660a914bbbe2495b922ae83c5c5ad67 (diff)
Introduce MediaPlayer::videoOutput property
This property holds the target video output, and allows to render video to multiple items. MediaPlayer { videoOutput: [videoOutput1, 1, "ignored", videoOutput2.videoSurface] } Incorrect inputs are ignored. The property also accepts single either QAbstractVideoSurface or QDeclarativeVideoOutput objects. Task-number: QTBUG-32939 Change-Id: I41fc557dcac60be6d70b3889036ff4ae75734cc0 Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
Diffstat (limited to 'tests/auto')
-rw-r--r--tests/auto/unit/qdeclarativeaudio/qdeclarativeaudio.pro2
-rw-r--r--tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp49
2 files changed, 50 insertions, 1 deletions
diff --git a/tests/auto/unit/qdeclarativeaudio/qdeclarativeaudio.pro b/tests/auto/unit/qdeclarativeaudio/qdeclarativeaudio.pro
index f59027bc2..6d8b3c215 100644
--- a/tests/auto/unit/qdeclarativeaudio/qdeclarativeaudio.pro
+++ b/tests/auto/unit/qdeclarativeaudio/qdeclarativeaudio.pro
@@ -1,7 +1,7 @@
CONFIG += testcase
TARGET = tst_qdeclarativeaudio
-QT += multimedia-private qml testlib
+QT += multimedia-private qml testlib qtmultimediaquicktools-private
HEADERS += \
../../../../src/imports/multimedia/qdeclarativeaudio_p.h \
diff --git a/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp b/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp
index 87c72521c..ded188d72 100644
--- a/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp
+++ b/tests/auto/unit/qdeclarativeaudio/tst_qdeclarativeaudio.cpp
@@ -40,7 +40,9 @@
#include <qmediaplayercontrol.h>
#include <qmediaservice.h>
#include <private/qmediaserviceprovider_p.h>
+#include <private/qdeclarativevideooutput_p.h>
#include <qmetadatareadercontrol.h>
+#include <QAbstractVideoSurface>
#include <QtGui/qguiapplication.h>
#include <QtQml/qqmlengine.h>
@@ -75,6 +77,7 @@ private slots:
void loops();
void audioRole();
void customAudioRole();
+ void videoOutput();
private:
void enumerator(const QMetaObject *object, const char *name, QMetaEnum *result);
@@ -1201,6 +1204,52 @@ int tst_QDeclarativeAudio::keyToValue(const QMetaEnum &enumeration, const char *
return result;
}
+struct Surface : QAbstractVideoSurface
+{
+ Surface(QObject *parent = nullptr) : QAbstractVideoSurface(parent) { }
+ QList<QVideoFrame::PixelFormat> supportedPixelFormats(QAbstractVideoBuffer::HandleType) const override
+ {
+ return QList<QVideoFrame::PixelFormat>() << QVideoFrame::Format_RGB32;
+ }
+
+ bool present(const QVideoFrame &) override { return true; }
+};
+
+void tst_QDeclarativeAudio::videoOutput()
+{
+ QtTestMediaPlayerControl playerControl;
+ QtTestMediaServiceProvider provider(&playerControl, 0);
+
+ QDeclarativeAudio audio;
+ QSignalSpy spy(&audio, &QDeclarativeAudio::videoOutputChanged);
+
+ audio.classBegin();
+ audio.componentComplete();
+
+ QVERIFY(audio.videoOutput().isNull());
+
+ QVariant surface;
+ surface.setValue(new Surface(this));
+ audio.setVideoOutput(surface);
+ QCOMPARE(audio.videoOutput(), surface);
+ QCOMPARE(spy.count(), 1);
+
+ QQmlEngine engine;
+ QJSValue jsArray = engine.newArray(5);
+ jsArray.setProperty(0, engine.newQObject(new Surface(this)));
+ jsArray.setProperty(1, engine.newQObject(new Surface(this)));
+ QDeclarativeVideoOutput output;
+ jsArray.setProperty(2, engine.newQObject(&output));
+ jsArray.setProperty(3, 123);
+ jsArray.setProperty(4, QLatin1String("ignore this"));
+
+ QVariant surfaces;
+ surfaces.setValue(jsArray);
+ audio.setVideoOutput(surfaces);
+ QCOMPARE(audio.videoOutput(), surfaces);
+ QCOMPARE(spy.count(), 2);
+}
+
QTEST_MAIN(tst_QDeclarativeAudio)
#include "tst_qdeclarativeaudio.moc"