From 0a04185f66df5d1e8e8da1483bef19f5b5021c21 Mon Sep 17 00:00:00 2001 From: talksik Date: Tue, 29 Aug 2023 09:02:05 -0700 Subject: [PATCH] cleanup and making it work on raspberry pi --- device.sh | 3 --- main.cpp | 70 +++++++++++++------------------------------------------ main.qml | 5 ++-- 3 files changed, 18 insertions(+), 60 deletions(-) diff --git a/device.sh b/device.sh index 760b230..aa30174 100755 --- a/device.sh +++ b/device.sh @@ -1,15 +1,12 @@ #!/bin/sh # this is special script for running on jetson nano -export QT_DEBUG_PLUGINS=1 - export QT_QPA_EGLFS_DEBUG=1 # the below will run on kms. it will not work on X11/desktop environment # export QT_QPA_EGLFS_INTEGRATION=eglfs_kms export QT_QPA_EGLFS_HIDECURSOR=1 export GST_DEBUG=2 -export QT_QPA_EGLFS_DEBUG=1 rm -rf build mkdir build diff --git a/main.cpp b/main.cpp index b28fca4..081931e 100644 --- a/main.cpp +++ b/main.cpp @@ -1,83 +1,45 @@ #include #include -#include #include +#include #include #include -class SetPlaying : public QRunnable -{ +class SetPlaying : public QRunnable { public: SetPlaying(GstElement *); ~SetPlaying(); - void run (); + void run(); private: - GstElement * pipeline_; + GstElement *pipeline_; }; -SetPlaying::SetPlaying (GstElement * pipeline) -{ - this->pipeline_ = pipeline ? static_cast (gst_object_ref (pipeline)) : NULL; +SetPlaying::SetPlaying(GstElement *pipeline) { + this->pipeline_ = + pipeline ? static_cast(gst_object_ref(pipeline)) : NULL; } -SetPlaying::~SetPlaying () -{ +SetPlaying::~SetPlaying() { if (this->pipeline_) - gst_object_unref (this->pipeline_); + gst_object_unref(this->pipeline_); } -void -SetPlaying::run () -{ +void SetPlaying::run() { if (this->pipeline_) - gst_element_set_state (this->pipeline_, GST_STATE_PLAYING); + gst_element_set_state(this->pipeline_, GST_STATE_PLAYING); } -int main(int argc, char *argv[]) -{ +int main(int argc, char *argv[]) { int ret; - gst_init (&argc, &argv); + QGuiApplication app(argc, argv); - { - QGuiApplication app(argc, argv); + QQmlApplicationEngine engine; + engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); - // GstElement *pipeline = gst_pipeline_new (NULL); - // GstElement *src = gst_element_factory_make ("videotestsrc", NULL); - // GstElement *glupload = gst_element_factory_make ("glupload", NULL); - // /* the plugin must be loaded before loading the qml file to register the - // * GstGLVideoItem qml item */ - // GstElement *sink = gst_element_factory_make ("qmlglsink", NULL); - // - // g_assert (src && glupload && sink); - // - // gst_bin_add_many (GST_BIN (pipeline), src, glupload, sink, NULL); - // gst_element_link_many (src, glupload, sink, NULL); - - QQmlApplicationEngine engine; - engine.load(QUrl(QStringLiteral("qrc:/main.qml"))); - - // QQuickItem *videoItem; - // QQuickWindow *rootObject; - // - // /* find and set the videoItem on the sink */ - // rootObject = static_cast (engine.rootObjects().first()); - // videoItem = rootObject->findChild ("videoItem"); - // g_assert (videoItem); - // g_object_set(sink, "widget", videoItem, NULL); - // - // rootObject->scheduleRenderJob (new SetPlaying (pipeline), - // QQuickWindow::BeforeSynchronizingStage); - - ret = app.exec(); - - // gst_element_set_state (pipeline, GST_STATE_PAUSED); - // gst_object_unref (pipeline); - } - - gst_deinit (); + ret = app.exec(); return ret; } diff --git a/main.qml b/main.qml index 955bf75..bbe297b 100644 --- a/main.qml +++ b/main.qml @@ -30,11 +30,11 @@ ApplicationWindow { MediaPlayer { id: player autoPlay: true - source: "gst-pipeline: videotestsrc ! qtvideosink" + source: "gst-pipeline: videotestsrc ! videoconvert ! qtvideosink" } VideoOutput { - id: videoOutput + id: output anchors.fill: parent source: player } @@ -43,7 +43,6 @@ ApplicationWindow { color: "red" border.width: 1 border.color: "white" - anchors.bottom: video.bottom anchors.bottomMargin: 15 anchors.horizontalCenter: parent.horizontalCenter width : parent.width - 100