Skip to content

Commit

Permalink
Update gst_video.pri
Browse files Browse the repository at this point in the history
  • Loading branch information
raphaelscholle committed Dec 29, 2024
1 parent 7b31859 commit fcc54c2
Showing 1 changed file with 87 additions and 44 deletions.
131 changes: 87 additions & 44 deletions app/videostreaming/gstreamer/gst_video.pri
Original file line number Diff line number Diff line change
@@ -1,57 +1,100 @@
INCLUDEPATH += $$PWD
INCLUDEPATH += C:/ffmpeg/include
DEFINES += QOPENHD_ENABLE_GSTREAMER_QMLGLSINK

LIBS += -LC:/ffmpeg/lib -lavcodec -lavutil -lavformat
# TODO dirty
LIBS += -lGLESv2 -lEGL
#DEFINES += QOPENHD_GSTREAMER_PRIMARY_VIDEO
DEFINES += QOPENHD_GSTREAMER_SECONDARY_VIDEO

win32 {
INCLUDEPATH += $$PWD/../../../build-libs-windows/ffmpeg/include
LIBS += -L$$PWD/../../../build-libs-windows/ffmpeg/lib -lavcodec -lavutil -lavformat
SOURCES += \
$$PWD/gstqmlglsinkstream.cpp \
$$PWD/gstrtpaudioplayer.cpp \
$$PWD/gstrtpreceiver.cpp

INCLUDEPATH += $$PWD/../../../build-libs-windows/angle-x64/include
LIBS += -L$$PWD/../../../build-libs-windows/angle-x64/bin -lGLESv2 -lEGL
HEADERS += \
$$PWD/gst_helper.hpp \
$$PWD/gstqmlglsinkstream.h \
$$PWD/gstrtpaudioplayer.h \
$$PWD/gstrtpreceiver.h

DEFINES += EGL_EGLEXT_PROTOTYPES
DEFINES += GL_GLEXT_PROTOTYPES
# LIBS += -lOpengl32
}
android{
message("gst android")
# More or less taken from QGroundControl.
# this is already the "least dirty" solution I could come up with :/
#DOWNLOADED_GST_FOLDER= /home/hyperion/gstreamer-1.0-android-universal-1.20.5
#DOWNLOADED_GST_FOLDER= /home/consti10/Downloads/gstreamer-1.0-android-universal-1.20.5
#DOWNLOADED_GST_FOLDER= $$PWD/../../../lib/gstreamer_prebuilts/gstreamer-1.0-android-universal-1.20.5
DOWNLOADED_GST_FOLDER= $$PWD/../../../lib/gstreamer_prebuilts/gstreamer-1.0-android-universal

# just using the something something webrtc from stephen was the easiest solution.
#include(../../lib/h264/h264.pri)
# Set the right folder for the compile arch
GSTREAMER_ARCH_FOLDER = armv7
contains(ANDROID_TARGET_ARCH, armeabi-v7a) {
GSTREAMER_ARCH_FOLDER = armv7
} else:contains(ANDROID_TARGET_ARCH, arm64-v8a) {
GSTREAMER_ARCH_FOLDER = arm64
} else:contains(ANDROID_TARGET_ARCH, x86_64) {
GSTREAMER_ARCH_FOLDER = x86_64
} else {
message(Unknown ANDROID_TARGET_ARCH $$ANDROID_TARGET_ARCH)
GSTREAMER_ARCH_FOLDER = armv7
}

SOURCES += \
$$PWD/QSGVideoTextureItem.cpp \
$$PWD/gl/gl_shaders.cpp \
$$PWD/gl/gl_videorenderer.cpp \
$$PWD/texturerenderer.cpp \
$$PWD/avcodec_decoder.cpp \
#GSTREAMER_ARCH_FOLDER = arm64

HEADERS += \
$$PWD/QSGVideoTextureItem.h \
$$PWD/gl/gl_shaders.h \
$$PWD/gl/gl_videorenderer.h \
$$PWD/texturerenderer.h \
$$PWD/avcodec_decoder.h \
GSTREAMER_ROOT_ANDROID = $$DOWNLOADED_GST_FOLDER/$$GSTREAMER_ARCH_FOLDER
message(gstreamer root android:)
message($$GSTREAMER_ROOT_ANDROID)

GST_ROOT = $$GSTREAMER_ROOT_ANDROID
exists($$GST_ROOT) {
message(Doing QGC gstreamer stuff)
message($$GST_ROOT)
QMAKE_CXXFLAGS += -pthread
CONFIG += VideoEnabled

LIBS += -L$$GST_ROOT/lib/gstreamer-1.0 \
-lgstvideo-1.0 \
-lgstcoreelements \
-lgstplayback \
-lgstudp \
-lgstrtp \
-lgstrtsp \
-lgstx264 \
-lgstlibav \
-lgstsdpelem \
-lgstvideoparsersbad \
-lgstrtpmanager \
-lgstisomp4 \
-lgstmatroska \
-lgstmpegtsdemux \
-lgstandroidmedia \
-lgstopengl \
-lgsttcp \
-lgstapp \
-lgstalaw \
-lgstautodetect

# experimental
#INCLUDEPATH += /usr/local/include/uvgrtp
#LIBS += -L/usr/local/lib -luvgrtp

# dirty way to check if we are on rpi and therefore should use the external decode service
CONFIG += link_pkgconfig
packagesExist(mmal) {
DEFINES += IS_PLATFORM_RPI
}
# Rest of GStreamer dependencies
LIBS += -L$$GST_ROOT/lib \
-lgraphene-1.0 -ljpeg -lpng16 \
-lgstfft-1.0 -lm \
-lgstnet-1.0 -lgio-2.0 \
-lgstphotography-1.0 -lgstgl-1.0 -lEGL \
-lgstaudio-1.0 -lgstcodecparsers-1.0 -lgstbase-1.0 \
-lgstreamer-1.0 -lgstrtp-1.0 -lgstpbutils-1.0 -lgstrtsp-1.0 -lgsttag-1.0 \
-lgstvideo-1.0 -lavformat -lavcodec -lavutil -lx264 -lavfilter -lswresample \
-lgstriff-1.0 -lgstcontroller-1.0 -lgstapp-1.0 \
-lgstsdp-1.0 -lbz2 -lgobject-2.0 -lgstmpegts-1.0 \
-Wl,--export-dynamic -lgmodule-2.0 -pthread -lglib-2.0 -lorc-0.4 -liconv -lffi -lintl \

exists(/usr/local/share/openhd/platform/rock/) {
message(This is a Rock)
DEFINES += IS_PLATFORM_ROCK
} else {
message(This is not a Rock)
INCLUDEPATH += \
$$GST_ROOT/include/gstreamer-1.0 \
$$GST_ROOT/lib/gstreamer-1.0/include \
$$GST_ROOT/include/glib-2.0 \
$$GST_ROOT/lib/glib-2.0/include
}else {
message(Gstreamer prebuilt directory does not exist)
}
}else {
message(gst linux)
CONFIG += link_pkgconfig
PKGCONFIG += gstreamer-1.0 gstreamer-video-1.0 gstreamer-gl-1.0 gstreamer-app-1.0 #gstreamer1.0-plugins-good
}

# can be used in c++, also set to be exposed in qml
DEFINES += QOPENHD_ENABLE_VIDEO_VIA_AVCODEC

0 comments on commit fcc54c2

Please sign in to comment.