-
-
Notifications
You must be signed in to change notification settings - Fork 88
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
8444c40
commit 6e77ec8
Showing
11 changed files
with
104 additions
and
145 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,120 +1,57 @@ | ||
# Enable GStreamer QMLGLSink for video rendering | ||
DEFINES += QOPENHD_ENABLE_GSTREAMER_QMLGLSINK | ||
INCLUDEPATH += $$PWD | ||
INCLUDEPATH += C:/ffmpeg/include | ||
|
||
# Uncomment for primary video, keep secondary for now | ||
# DEFINES += QOPENHD_GSTREAMER_PRIMARY_VIDEO | ||
DEFINES += QOPENHD_GSTREAMER_SECONDARY_VIDEO | ||
LIBS += -LC:/ffmpeg/lib -lavcodec -lavutil -lavformat | ||
# TODO dirty | ||
LIBS += -lGLESv2 -lEGL | ||
|
||
# Sources and headers specific to GStreamer | ||
SOURCES += \ | ||
$$PWD/gstqmlglsinkstream.cpp \ | ||
$$PWD/gstrtpaudioplayer.cpp \ | ||
$$PWD/gstrtpreceiver.cpp | ||
|
||
HEADERS += \ | ||
$$PWD/gst_helper.hpp \ | ||
$$PWD/gstqmlglsinkstream.h \ | ||
$$PWD/gstrtpaudioplayer.h \ | ||
$$PWD/gstrtpreceiver.h | ||
|
||
# Platform-specific configurations | ||
win32 { | ||
INCLUDEPATH += $$PWD/../../../build-libs-windows/ffmpeg/include | ||
LIBS += -L$$PWD/../../../build-libs-windows/ffmpeg/lib -lavcodec -lavutil -lavformat | ||
|
||
# Android-specific configuration | ||
android { | ||
message("Configuring GStreamer for Android") | ||
INCLUDEPATH += $$PWD/../../../build-libs-windows/angle-x64/include | ||
LIBS += -L$$PWD/../../../build-libs-windows/angle-x64/bin -lGLESv2 -lEGL | ||
|
||
# Define the base directory for the GStreamer prebuilt binaries | ||
DOWNLOADED_GST_FOLDER = $$PWD/../../../lib/gstreamer_prebuilts/gstreamer-1.0-android-universal | ||
DEFINES += EGL_EGLEXT_PROTOTYPES | ||
DEFINES += GL_GLEXT_PROTOTYPES | ||
# LIBS += -lOpengl32 | ||
} | ||
|
||
# Determine the GStreamer architecture folder based on the target architecture | ||
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 | ||
} | ||
# just using the something something webrtc from stephen was the easiest solution. | ||
#include(../../lib/h264/h264.pri) | ||
|
||
# Define the root path for GStreamer | ||
GSTREAMER_ROOT_ANDROID = $$DOWNLOADED_GST_FOLDER/$$GSTREAMER_ARCH_FOLDER | ||
message("GStreamer root for Android: $$GSTREAMER_ROOT_ANDROID") | ||
SOURCES += \ | ||
$$PWD/QSGVideoTextureItem.cpp \ | ||
$$PWD/gl/gl_shaders.cpp \ | ||
$$PWD/gl/gl_videorenderer.cpp \ | ||
$$PWD/texturerenderer.cpp \ | ||
$$PWD/avcodec_decoder.cpp \ | ||
|
||
GST_ROOT = $$GSTREAMER_ROOT_ANDROID | ||
HEADERS += \ | ||
$$PWD/QSGVideoTextureItem.h \ | ||
$$PWD/gl/gl_shaders.h \ | ||
$$PWD/gl/gl_videorenderer.h \ | ||
$$PWD/texturerenderer.h \ | ||
$$PWD/avcodec_decoder.h \ | ||
|
||
# Check if the GStreamer root directory exists | ||
exists($$GST_ROOT) { | ||
message("Setting up GStreamer for Android build") | ||
QMAKE_CXXFLAGS += -pthread | ||
CONFIG += VideoEnabled | ||
|
||
# Link GStreamer libraries | ||
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 | ||
|
||
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 | ||
# experimental | ||
#INCLUDEPATH += /usr/local/include/uvgrtp | ||
#LIBS += -L/usr/local/lib -luvgrtp | ||
|
||
# Include paths for GStreamer | ||
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") | ||
} | ||
# 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 | ||
} | ||
|
||
# Windows-specific configuration | ||
win32 { | ||
GST_ROOT = c:/gstreamer/1.0/x86_64 | ||
|
||
exists($$GST_ROOT) { | ||
CONFIG += VideoEnabled | ||
|
||
# Link GStreamer libraries for Windows | ||
LIBS += -L$$GST_ROOT/lib -lopengl32 | ||
|
||
LIBS += -lgstfft-1.0 \ | ||
-lgstnet-1.0 -lgio-2.0 \ | ||
-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 \ | ||
-lgstriff-1.0 -lgstcontroller-1.0 -lgstapp-1.0 \ | ||
-lgstsdp-1.0 -lbz2 -lgobject-2.0 \ | ||
-lgstgl-1.0 -lgraphene-1.0 -lpng16 -ljpeg -lgstphotography-1.0 \ | ||
-lgmodule-2.0 -lglib-2.0 -lorc-0.4 -lffi -lintl | ||
|
||
# Include paths for GStreamer on Windows | ||
INCLUDEPATH += \ | ||
$$GST_ROOT/include/gstreamer-1.0 \ | ||
$$GST_ROOT/include/glib-2.0 \ | ||
$$GST_ROOT/lib/gstreamer-1.0/include \ | ||
$$GST_ROOT/lib/glib-2.0/include | ||
} else { | ||
message("GStreamer root directory for Windows does not exist") | ||
} | ||
exists(/usr/local/share/openhd/platform/rock/) { | ||
message(This is a Rock) | ||
DEFINES += IS_PLATFORM_ROCK | ||
} else { | ||
message(This is not a Rock) | ||
} | ||
|
||
# Linux-specific configuration | ||
unix:!android { | ||
message("Configuring GStreamer for Linux") | ||
|
||
CONFIG += link_pkgconfig | ||
PKGCONFIG += gstreamer-1.0 gstreamer-video-1.0 gstreamer-gl-1.0 gstreamer-app-1.0 | ||
} | ||
# can be used in c++, also set to be exposed in qml | ||
DEFINES += QOPENHD_ENABLE_VIDEO_VIA_AVCODEC |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters