4#ifndef MEDIABACKENDUTILS_H
5#define MEDIABACKENDUTILS_H
18#include <QtGui/private/qguiapplication_p.h>
19#include <QtGui/qpa/qplatformintegration.h>
21#include <QtMultimedia/private/qplatformmediaintegration_p.h>
23#include <QtTest/qtestcase.h>
33 return QPlatformMediaIntegration::instance()->name() ==
"gstreamer"_L1;
38 return QPlatformMediaIntegration::instance()->name() ==
"qnx"_L1;
43 return QPlatformMediaIntegration::instance()->name() ==
"darwin"_L1;
48 return QPlatformMediaIntegration::instance()->name() ==
"android"_L1;
53 return QPlatformMediaIntegration::instance()->name() ==
"ohos"_L1;
58 return QPlatformMediaIntegration::instance()->name() ==
"ffmpeg"_L1;
63 return QPlatformMediaIntegration::instance()->name() ==
"windows"_L1;
68 return QPlatformMediaIntegration::instance()->name() !=
"fallback"_L1;
78 static std::optional<QString> backend;
84 QString backend = qEnvironmentVariable(
"QT_MEDIA_BACKEND");
85 if (backend.isEmpty())
86 backend = QPlatformMediaIntegration::defaultBackend();
87 QPlatformMediaIntegration::setBackend(backend);
88 addMediaBackendToTestEnvironment(backend);
99 "No media backend plugin was loaded; the fallback integration was used. "
100 "Integration tests require a real backend plugin.");
102 const std::optional<QString> &intended = intendedMediaBackend();
103 const QString loaded = QPlatformMediaIntegration::instance()->name();
105 QVERIFY2(!intended || loaded == *intended,
106 qPrintable(u"Expected media backend '%1', but '%2' was loaded."_s.arg(
107 intended.value_or(u"any"_s), loaded)));
109 return !QTest::currentTestFailed();
114 return QGuiApplicationPrivate::platformIntegration()->hasCapability(
115 QPlatformIntegration::RhiBasedRendering);
120 return QGuiApplicationPrivate::platformIntegration()->hasCapability(
121 QPlatformIntegration::OpenGL);
126 return qEnvironmentVariable(
"QTEST_ENVIRONMENT").toLower().split(u' ').contains(u"ci"_s);
133#define QSKIP_IF(checker, defaultMessage, ...)
136 QSKIP(strlen(__VA_ARGS__ "") ? __VA_ARGS__ "" : defaultMessage);
139#define QSKIP_GSTREAMER(...)
140 QSKIP_IF(isGStreamerPlatform(), "The feature is not supported on GStreamer", __VA_ARGS__)
142#define QSKIP_IF_NOT_FFMPEG(...)
143 QSKIP_IF(!isFFMPEGPlatform(), "The feature is only supported on FFmpeg", __VA_ARGS__)
145#define QSKIP_FFMPEG(...)
146 QSKIP_IF(isFFMPEGPlatform(), "The feature is not supported on FFmpeg", __VA_ARGS__)
148#define QSKIP_DARWIN(...)
149 QSKIP_IF(isDarwinPlatform(), "The feature is not supported on Darwin", __VA_ARGS__)
151#define QSKIP_OHOS(...)
152 QSKIP_IF(isOhosPlatform(), "The feature is not supported on HarmonyOS", __VA_ARGS__)
154#define QSKIP_WMF(...)
155 QSKIP_IF(isWMFPlatform(), "The feature is not supported on Windows MediaEngine", __VA_ARGS__)
157#define QEXPECT_FAIL_GSTREAMER(dataIndex, comment, mode)
159 if (isGStreamerPlatform())
160 QEXPECT_FAIL(dataIndex, comment, mode);
bool isMediaBackendPluginLoaded()
bool isGStreamerPlatform()
bool initIntegrationTestCase()
std::optional< QString > & intendedMediaBackend()
bool isRhiRenderingSupported()
void initIntegrationTestMain()
void addMediaBackendToTestEnvironment(const QString &backend)