@@ -43,6 +43,7 @@ GST_PLUGIN_STATIC_DECLARE(opengl);
4343GST_PLUGIN_STATIC_DECLARE (openh264);
4444GST_PLUGIN_STATIC_DECLARE (playback);
4545GST_PLUGIN_STATIC_DECLARE (qml6);
46+ GST_PLUGIN_STATIC_DECLARE (qml6d3d11);
4647GST_PLUGIN_STATIC_DECLARE (qsv);
4748GST_PLUGIN_STATIC_DECLARE (rtp);
4849GST_PLUGIN_STATIC_DECLARE (rtpmanager);
@@ -120,10 +121,19 @@ void _registerPlugins()
120121 #endif
121122#endif
122123
123- // #if !defined(GST_PLUGIN_qml6_FOUND) && defined(QGC_GST_STATIC_BUILD)
124- GST_PLUGIN_STATIC_REGISTER (qml6);
124+ // #if !defined(GST_PLUGIN_qml6d3d11_FOUND) || defined(QGC_GST_STATIC_BUILD)
125+ // GST_PLUGIN_STATIC_REGISTER(qml6d3d11);
126+ // #endif
127+
128+ // #if !defined(GST_PLUGIN_qml6_FOUND) || defined(QGC_GST_STATIC_BUILD)
129+ // GST_PLUGIN_STATIC_REGISTER(qml6);
125130// #endif
126131
132+ GST_PLUGIN_STATIC_REGISTER (qml6);
133+ #ifdef Q_OS_WIN
134+ GST_PLUGIN_STATIC_REGISTER (qml6d3d11);
135+ #endif
136+
127137 GST_PLUGIN_STATIC_REGISTER (qgc);
128138}
129139
@@ -246,7 +256,13 @@ bool _verifyPlugins()
246256 g_list_foreach (plugins, _checkPlugin, NULL );
247257 g_list_free (plugins);
248258
249- static constexpr const char *pluginNames[2 ] = {" qml6" , " qgc" };
259+ static constexpr const char *pluginNames[] = {
260+ " qgc" ,
261+ " qml6"
262+ #ifdef Q_OS_WIN
263+ , " qml6d3d11"
264+ #endif
265+ };
250266 for (const char *name : pluginNames) {
251267 GstPlugin *plugin = gst_registry_find_plugin (registry, name);
252268 if (!plugin) {
@@ -407,9 +423,15 @@ bool initialize()
407423
408424 _setCodecPriorities (static_cast <GStreamer::VideoDecoderOptions>(SettingsManager::instance ()->videoSettings ()->forceVideoDecoder ()->rawValue ().toInt ()));
409425
410- GstElement *sink = gst_element_factory_make (" qml6glsink" , nullptr );
426+ #ifdef Q_OS_WIN
427+ static constexpr const char *qmlSinkName = " qml6d3d11sink" ;
428+ #else
429+ static constexpr const char *qmlSinkName = " qml6glsink" ;
430+ #endif
431+
432+ GstElement *sink = gst_element_factory_make (qmlSinkName, nullptr );
411433 if (!sink) {
412- qCCritical (GStreamerLog) << " failed to init qml6glsink " ;
434+ qCCritical (GStreamerLog) << " failed to init" << qmlSinkName ;
413435 return false ;
414436 }
415437
@@ -419,13 +441,19 @@ bool initialize()
419441
420442void *createVideoSink (QQuickItem *widget, QObject *parent)
421443{
422- GstElement *videoSinkBin = gst_element_factory_make (" qgcvideosinkbin" , NULL );
444+ #ifdef Q_OS_WIN
445+ static constexpr const char *videoSinkBinName = " qgcvideosinkbind3d11" ;
446+ #else
447+ static constexpr const char *videoSinkBinName = " qgcvideosinkbin" ;
448+ #endif
449+
450+ GstElement *videoSinkBin = gst_element_factory_make (videoSinkBinName, NULL );
423451 if (videoSinkBin) {
424452 if (widget) {
425453 g_object_set (videoSinkBin, " widget" , widget, NULL );
426454 }
427455 } else {
428- qCCritical (GStreamerLog) << " gst_element_factory_make('qgcvideosinkbin ') failed" ;
456+ qCCritical (GStreamerLog) << QStringLiteral ( " gst_element_factory_make('%1 ') failed" ). arg (videoSinkBinName) ;
429457 }
430458
431459 return videoSinkBin;
0 commit comments