Hyperion "Light", Build improvements and minor fixes (#1400)

* Allow build, if no grabbers are enabled

* Align available functions to right Qt version

* Update to next development version

* Align available functions to right Qt version

* fix workflows (apt/nightly)

* Disable QNetworkConfigurationManager deprecation warnings

* Initial go on Smart Pointers

* Add Deallocation

* Correct QT_WARNING_DISABLE_DEPRECATED (available since 5.9)

* Cluster Build Variables

* Hyperion Light

* Address build warnings

* Hyperion Light - UI

* Update Protobuf to latest master

* Removed compiler warnings

* Added restart ability to systray

* Correct Protobuf

* Ignore 'no-return' warning on protobuf build

* hyperion-remote: Fix auto discovery of hyperion server

* Fix Qt version override

* Update changelog

* Remove Grabber Components, if no Grabber exists

* Standalone Grabber - Fix fps default

* Remote Control - Have Source Selction accrosswhole screen

* Enable Blackborder detection only, if relevant input sources available

* Enable Blackborder detection only, if relevant input sources available

* Remote UI - rearrange containers

* - QT5/6 path for arm64 added
- Remove ZLib Dependency
- Fix macOS bundle info details
- Cleanup

Co-authored-by: Paulchen Panther <16664240+Paulchen-Panther@users.noreply.github.com>
Co-authored-by: Paulchen Panther <Paulchen-Panter@protonmail.com>
This commit is contained in:
LordGrey 2022-01-07 14:47:51 +01:00 committed by GitHub
parent c38ec60208
commit 2f573a117f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
83 changed files with 1785 additions and 1284 deletions

View File

@ -16,5 +16,5 @@
},
},
"forwardPorts": [8090, 8092],
"postCreateCommand": "git submodule update --recursive --init && sudo apt-get update && sudo apt-get install -y git cmake build-essential qtbase5-dev libqt5serialport5-dev libqt5sql5-sqlite libqt5svg5-dev libqt5x11extras5-dev libusb-1.0-0-dev python3-dev libcec-dev libxcb-image0-dev libxcb-util0-dev libxcb-shm0-dev libxcb-render0-dev libxcb-randr0-dev libxrandr-dev libxrender-dev libavahi-core-dev libavahi-compat-libdnssd-dev libjpeg-dev libturbojpeg0-dev libssl-dev zlib1g-dev"
"postCreateCommand": "git submodule update --recursive --init && sudo apt-get update && sudo apt-get install -y git cmake build-essential qtbase5-dev libqt5serialport5-dev libqt5sql5-sqlite libqt5svg5-dev libqt5x11extras5-dev libusb-1.0-0-dev python3-dev libcec-dev libxcb-image0-dev libxcb-util0-dev libxcb-shm0-dev libxcb-render0-dev libxcb-randr0-dev libxrandr-dev libxrender-dev libavahi-core-dev libavahi-compat-libdnssd-dev libjpeg-dev libturbojpeg0-dev libssl-dev"
}

View File

@ -2,7 +2,7 @@
{
"distribution": "Bionic",
"architecture": "amd64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl1.0-dev, zlib1g-dev, libmbedtls-dev",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl1.0-dev, libmbedtls-dev",
"package-depends": "libpython3.6, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls10, libturbojpeg, libcec4",
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Ubuntu 18.04 (Bionic Beaver) (amd64)"
@ -10,7 +10,7 @@
{
"distribution": "Focal",
"architecture": "amd64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, libmbedtls-dev",
"package-depends": "libpython3.8, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg, libcec4",
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Ubuntu 20.04 (Focal Fossa) (amd64)"
@ -18,7 +18,7 @@
{
"distribution": "Groovy",
"architecture": "amd64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, libmbedtls-dev",
"package-depends": "libpython3.8, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg, libcec6",
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Ubuntu 20.10 (Groovy Gorilla) (amd64)"
@ -26,7 +26,7 @@
{
"distribution": "Hirsute",
"architecture": "amd64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, libmbedtls-dev",
"package-depends": "libpython3.9, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg, libcec6",
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Ubuntu 21.04 (Hirsute Hippo) (amd64)"
@ -34,7 +34,7 @@
{
"distribution": "Impish",
"architecture": "amd64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, libmbedtls-dev",
"package-depends": "libpython3.9, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg, libcec6",
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Ubuntu 21.10 (Impish Indri) (amd64)"
@ -42,7 +42,7 @@
{
"distribution": "Jammy",
"architecture": "amd64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, libmbedtls-dev",
"package-depends": "libpython3.9, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg, libcec6",
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Ubuntu 22.04 (Jammy Jellyfish) (amd64)"
@ -50,7 +50,7 @@
{
"distribution": "Stretch",
"architecture": "amd64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl1.0-dev, zlib1g-dev, libmbedtls-dev",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl1.0-dev, libmbedtls-dev",
"package-depends": "libpython3.5, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls10, libturbojpeg0, libcec4",
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Debian 9.x (Stretch) (amd64)"
@ -58,7 +58,7 @@
{
"distribution": "Buster",
"architecture": "amd64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, libmbedtls-dev",
"package-depends": "libpython3.7, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg0, libcec4",
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Debian 10.x (Buster) (amd64)"
@ -66,7 +66,7 @@
{
"distribution": "Bullseye",
"architecture": "amd64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, libmbedtls-dev",
"package-depends": "libpython3.9, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg0, libcec6",
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Debian 11.x (Bullseye) (amd64)"
@ -74,7 +74,7 @@
{
"distribution": "Bookworm",
"architecture": "amd64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, libmbedtls-dev",
"package-depends": "libpython3.9, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg0, libcec6",
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Debian 12.x (Bookworm) (amd64)"

View File

@ -2,7 +2,7 @@
{
"distribution": "Bionic",
"architecture": "arm64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl1.0-dev, zlib1g-dev, libmbedtls-dev",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl1.0-dev, libmbedtls-dev",
"package-depends": "libpython3.6, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls10, libturbojpeg, libcec4",
"cmake-environment": "-DENABLE_DISPMANX=OFF -DENABLE_X11=ON -DENABLE_XCB=ON -DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Ubuntu 18.04 (Bionic Beaver) (arm64)"
@ -10,7 +10,7 @@
{
"distribution": "Focal",
"architecture": "arm64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, libmbedtls-dev",
"package-depends": "libpython3.8, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg, libcec4",
"cmake-environment": "-DENABLE_DISPMANX=OFF -DENABLE_X11=ON -DENABLE_XCB=ON -DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Ubuntu 20.04 (Focal Fossa) (arm64)"
@ -18,7 +18,7 @@
{
"distribution": "Hirsute",
"architecture": "arm64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, libmbedtls-dev",
"package-depends": "libpython3.9, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg, libcec6",
"cmake-environment": "-DENABLE_DISPMANX=OFF -DENABLE_X11=ON -DENABLE_XCB=ON -DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Ubuntu 21.04 (Hirsute Hippo) (arm64)"
@ -26,7 +26,7 @@
{
"distribution": "Impish",
"architecture": "arm64",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, libmbedtls-dev",
"package-depends": "libpython3.9, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg, libcec6",
"cmake-environment": "-DENABLE_DISPMANX=OFF -DENABLE_X11=ON -DENABLE_XCB=ON -DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Ubuntu 21.10 (Impish Indri) (arm64)"
@ -34,7 +34,7 @@
{
"distribution": "Buster",
"architecture": "arm64",
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, zlib1g-dev, libssl-dev, libraspberrypi-dev, libturbojpeg0-dev, libmbedtls-dev",
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libssl-dev, libraspberrypi-dev, libturbojpeg0-dev, libmbedtls-dev",
"package-depends": "libpython3.7, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg0, libcec4",
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Debian 10.x (Buster) (arm64)"
@ -42,7 +42,7 @@
{
"distribution": "Bullseye",
"architecture": "arm64",
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, zlib1g-dev, libssl-dev, libraspberrypi-dev, libturbojpeg0-dev, libmbedtls-dev",
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libssl-dev, libraspberrypi-dev, libturbojpeg0-dev, libmbedtls-dev",
"package-depends": "libpython3.9, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg0, libcec6",
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Debian 11.x (Bullseye) (arm64)"

View File

@ -2,7 +2,7 @@
{
"distribution": "Bionic",
"architecture": "armhf",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl1.0-dev, zlib1g-dev, libmbedtls-dev",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl1.0-dev, libmbedtls-dev",
"package-depends": "libpython3.6, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls10, libturbojpeg, libcec4",
"cmake-environment": "-DENABLE_DISPMANX=OFF -DENABLE_X11=ON -DENABLE_XCB=ON -DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Ubuntu 18.04 (Bionic Beaver) (armhf)"
@ -10,7 +10,7 @@
{
"distribution": "Focal",
"architecture": "armhf",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, libmbedtls-dev",
"package-depends": "libpython3.8, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg, libcec4",
"cmake-environment": "-DENABLE_DISPMANX=OFF -DENABLE_X11=ON -DENABLE_XCB=ON -DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Ubuntu 20.04 (Focal Fossa) (armhf)"
@ -18,7 +18,7 @@
{
"distribution": "Hirsute",
"architecture": "armhf",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, libmbedtls-dev",
"package-depends": "libpython3.9, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg, libcec6",
"cmake-environment": "-DENABLE_DISPMANX=OFF -DENABLE_X11=ON -DENABLE_XCB=ON -DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Ubuntu 21.04 (Hirsute Hippo) (armhf)"
@ -26,7 +26,7 @@
{
"distribution": "Impish",
"architecture": "armhf",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, zlib1g-dev, libmbedtls-dev",
"build-depends": "git, cmake, build-essential, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, libqt5x11extras5-dev, libusb-1.0-0-dev, python3-dev, libcec-dev, libxcb-image0-dev, libxcb-util0-dev, libxcb-shm0-dev, libxcb-render0-dev, libxcb-randr0-dev, libxrandr-dev, libxrender-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libturbojpeg0-dev, libssl-dev, libmbedtls-dev",
"package-depends": "libpython3.9, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg, libcec6",
"cmake-environment": "-DENABLE_DISPMANX=OFF -DENABLE_X11=ON -DENABLE_XCB=ON -DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Ubuntu 21.10 (Impish Indri) (armhf)"
@ -34,7 +34,7 @@
{
"distribution": "Stretch",
"architecture": "armhf",
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, zlib1g-dev, libssl1.0-dev, libraspberrypi-dev, libturbojpeg0-dev, libmbedtls-dev",
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libssl1.0-dev, libraspberrypi-dev, libturbojpeg0-dev, libmbedtls-dev",
"package-depends": "libpython3.5, libusb-1.0-0, libqt5widgets5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls10, libturbojpeg0, libcec4",
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description":"Debian 9.x (Stretch) (armhf)"
@ -42,7 +42,7 @@
{
"distribution": "Buster",
"architecture": "armhf",
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, zlib1g-dev, libssl1.0-dev, libraspberrypi-dev, libturbojpeg0-dev, libmbedtls-dev",
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libssl1.0-dev, libraspberrypi-dev, libturbojpeg0-dev, libmbedtls-dev",
"package-depends": "libpython3.7, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg0, libcec4",
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Debian 10.x (Buster) (armhf)"
@ -50,7 +50,7 @@
{
"distribution": "Bullseye",
"architecture": "armhf",
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, zlib1g-dev, libssl-dev, libraspberrypi-dev, libturbojpeg0-dev, libmbedtls-dev",
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libssl-dev, libraspberrypi-dev, libturbojpeg0-dev, libmbedtls-dev",
"package-depends": "libpython3.9, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg0, libcec6",
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Debian 11.x (Bullseye) (armhf)"
@ -58,7 +58,7 @@
{
"distribution": "Bookworm",
"architecture": "armhf",
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, zlib1g-dev, libssl-dev, libraspberrypi-dev, libturbojpeg0-dev, libmbedtls-dev",
"build-depends": "git, cmake, python3-dev, qtbase5-dev, libqt5serialport5-dev, libqt5sql5-sqlite, libqt5svg5-dev, build-essential, libusb-1.0-0-dev, libcec-dev, libavahi-core-dev, libavahi-compat-libdnssd-dev, libssl-dev, libraspberrypi-dev, libturbojpeg0-dev, libmbedtls-dev",
"package-depends": "libpython3.9, libusb-1.0-0, libqt5widgets5, libqt5x11extras5, libqt5sql5, libqt5sql5-sqlite, libqt5serialport5, libavahi-compat-libdnssd1, libmbedtls12, libturbojpeg0, libcec6",
"cmake-environment": "-DUSE_SYSTEM_MBEDTLS_LIBS=ON -DENABLE_DEPLOY_DEPENDENCIES=OFF -DCMAKE_BUILD_TYPE=Release",
"description": "Debian 12.x (Bookworm) (armhf)"

3
.gitmodules vendored
View File

@ -8,5 +8,4 @@
branch = master
[submodule "dependencies/external/protobuf"]
path = dependencies/external/protobuf
url = https://github.com/hyperion-project/protobuf.git
branch = master
url = https://github.com/protocolbuffers/protobuf

View File

@ -24,4 +24,3 @@ extraction:
- "libavahi-compat-libdnssd-dev"
- "libturbojpeg0-dev"
- "libssl-dev"
- "zlib1g-dev"

View File

@ -1 +1 @@
2.0.12
2.0.13-beta.1

2
.vscode/launch.json vendored
View File

@ -38,7 +38,7 @@
"name": "(macOS) Hyperion.app",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/build/bin/hyperiond.app/Contents/MacOS/hyperiond",
"program": "${workspaceFolder}/build/bin/Hyperion.app/Contents/MacOS/Hyperion",
"args": ["-d"],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",

View File

@ -10,6 +10,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
### Added
- Allow to build a "light" version of Hyperion, i.e. no grabbers, or services like flat-/proto buffers, boblight, CEC
- Allow to restart Hyperion via Systray
### Changed
- Colors Smoothing is started in pause mode to save resources, when Hyperion starts with no active source
@ -19,7 +22,8 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
- Effects: Fix image URL in Matrix effect
- Fixes that the Led-Device output flow was interrupted, by an enabling API request on an already enabled device (#967
- Yeelight - Workaround: Ignore error when setting music mode = off, but the music-mode is already off (#1372)
- Standalone grabbers: Improved fps help/error text, fixed default address and port
- Standalone grabbers: Improved fps help/error text, fixed default address and port, fixed auto discovery of Hyperion server in hyperion-remote
- Fixed Qt version override, e.g. set via QTDIR
## Removed

View File

@ -2,6 +2,18 @@ cmake_minimum_required(VERSION 3.0.0)
message( STATUS "CMake Version: ${CMAKE_VERSION}" )
macro(addIndent text)
if(${CMAKE_VERSION} VERSION_GREATER "3.16.0")
list(APPEND CMAKE_MESSAGE_INDENT ${text})
endif()
endmacro()
macro(removeIndent)
if(${CMAKE_VERSION} VERSION_GREATER "3.16.0")
list(POP_BACK CMAKE_MESSAGE_INDENT)
endif()
endmacro()
PROJECT(hyperion)
# Parse semantic version of version file and write version to config
@ -19,10 +31,6 @@ set(CMAKE_AUTOMOC ON)
# auto prepare .qrc files
set(CMAKE_AUTORCC ON)
if ( POLICY CMP0026 )
CMAKE_POLICY( SET CMP0026 OLD )
endif()
# Configure CCache if available
find_program(CCACHE_FOUND ccache)
if ( CCACHE_FOUND )
@ -41,40 +49,61 @@ else()
endif()
# Set build variables
# Grabber
SET ( DEFAULT_AMLOGIC OFF )
SET ( DEFAULT_BOBLIGHT ON )
SET ( DEFAULT_DISPMANX OFF )
SET ( DEFAULT_DX OFF )
SET ( DEFAULT_MF OFF )
SET ( DEFAULT_OSX OFF )
SET ( DEFAULT_QT ON )
SET ( DEFAULT_V4L2 OFF )
SET ( DEFAULT_X11 OFF )
SET ( DEFAULT_XCB OFF )
SET ( DEFAULT_V4L2 OFF )
# Input
SET ( DEFAULT_BOBLIGHT_SERVER ON )
SET ( DEFAULT_CEC OFF )
SET ( DEFAULT_FLATBUF_SERVER ON )
SET ( DEFAULT_PROTOBUF_SERVER ON )
# Output
SET ( DEFAULT_FORWARDER ON )
SET ( DEFAULT_FLATBUF_CONNECT ON )
# LED-Devices
SET ( DEFAULT_SPIDEV OFF )
SET ( DEFAULT_TINKERFORGE OFF )
SET ( DEFAULT_USB_HID OFF )
SET ( DEFAULT_WS281XPWM OFF )
# Services
SET ( DEFAULT_AVAHI ON )
SET ( DEFAULT_EXPERIMENTAL OFF )
# Build
SET ( DEFAULT_TESTS OFF )
SET ( DEFAULT_DEPLOY_DEPENDENCIES ON )
SET ( DEFAULT_USE_SHARED_AVAHI_LIBS ON )
SET ( DEFAULT_USE_SYSTEM_FLATBUFFERS_LIBS OFF )
SET ( DEFAULT_USE_SYSTEM_PROTO_LIBS OFF )
SET ( DEFAULT_USE_SYSTEM_MBEDTLS_LIBS OFF )
SET ( DEFAULT_TESTS OFF )
SET ( DEFAULT_EXPERIMENTAL OFF )
SET ( DEFAULT_CEC OFF )
SET ( DEFAULT_DEPLOY_DEPENDENCIES ON )
# Build Hyperion with a reduced set of functionality, overwrites other default values
SET ( DEFAULT_HYPERION_LIGHT OFF )
IF ( ${CMAKE_SYSTEM} MATCHES "Linux" )
SET ( DEFAULT_FB ON )
SET ( DEFAULT_V4L2 ON )
SET ( DEFAULT_SPIDEV ON )
SET ( DEFAULT_TINKERFORGE ON )
SET ( DEFAULT_FB ON )
SET ( DEFAULT_USB_HID ON )
SET ( DEFAULT_CEC ON )
ELSEIF ( WIN32 )
SET ( DEFAULT_DX ON )
SET ( DEFAULT_MF ON )
ELSE()
SET ( DEFAULT_V4L2 OFF )
SET ( DEFAULT_FB OFF )
SET ( DEFAULT_V4L2 OFF )
SET ( DEFAULT_SPIDEV OFF )
SET ( DEFAULT_TINKERFORGE OFF )
SET ( DEFAULT_USB_HID OFF )
@ -166,49 +195,65 @@ ADD_DEFINITIONS( ${PLATFORM_DEFINE} )
# set the build options
option(ENABLE_BOBLIGHT "Enable BOBLIGHT server" ${DEFAULT_BOBLIGHT} )
message(STATUS "ENABLE_BOBLIGHT = ${ENABLE_BOBLIGHT}")
option(HYPERION_LIGHT "Build Hyperion with a reduced set of functionality" ${DEFAULT_HYPERION_LIGHT} )
message(STATUS "HYPERION_LIGHT = ${HYPERION_LIGHT}")
if (HYPERION_LIGHT)
message(STATUS "HYPERION_LIGHT: Hyperion is build with a reduced set of functionality.")
# Disable Grabbers
SET ( DEFAULT_AMLOGIC OFF )
SET ( DEFAULT_DISPMANX OFF )
SET ( DEFAULT_DX OFF )
SET ( DEFAULT_FB OFF )
SET ( DEFAULT_MF OFF )
SET ( DEFAULT_OSX OFF )
SET ( DEFAULT_QT OFF )
SET ( DEFAULT_V4L2 OFF )
SET ( DEFAULT_X11 OFF )
SET ( DEFAULT_XCB OFF )
# Disable Input Servers
SET ( DEFAULT_BOBLIGHT_SERVER OFF )
SET ( DEFAULT_CEC OFF )
SET ( DEFAULT_FLATBUF_SERVER OFF )
SET ( DEFAULT_PROTOBUF_SERVER OFF )
# Disable Output Connectors
SET ( DEFAULT_FORWARDER OFF )
SET ( DEFAULT_FLATBUF_CONNECT OFF )
endif()
message(STATUS "Grabber options:")
addIndent(" - ")
option(ENABLE_AMLOGIC "Enable the AMLOGIC video grabber" ${DEFAULT_AMLOGIC} )
message(STATUS "ENABLE_AMLOGIC = ${ENABLE_AMLOGIC}")
option(ENABLE_DISPMANX "Enable the RPi dispmanx grabber" ${DEFAULT_DISPMANX} )
message(STATUS "ENABLE_DISPMANX = ${ENABLE_DISPMANX}")
option(ENABLE_DX "Enable the DirectX grabber" ${DEFAULT_DX})
message(STATUS "ENABLE_DX = ${ENABLE_DX}")
if (ENABLE_AMLOGIC)
SET(ENABLE_FB ON)
else()
option(ENABLE_FB " Enable the framebuffer grabber" ${DEFAULT_FB} )
endif()
message(STATUS "ENABLE_FB = ${ENABLE_FB}")
option(ENABLE_DISPMANX "Enable the RPi dispmanx grabber" ${DEFAULT_DISPMANX} )
message(STATUS "ENABLE_DISPMANX = ${ENABLE_DISPMANX}")
option(ENABLE_OSX "Enable the OSX grabber" ${DEFAULT_OSX} )
message(STATUS "ENABLE_OSX = ${ENABLE_OSX}")
option(ENABLE_SPIDEV "Enable the SPIDEV device" ${DEFAULT_SPIDEV} )
message(STATUS "ENABLE_SPIDEV = ${ENABLE_SPIDEV}")
option(ENABLE_TINKERFORGE "Enable the TINKERFORGE device" ${DEFAULT_TINKERFORGE})
message(STATUS "ENABLE_TINKERFORGE = ${ENABLE_TINKERFORGE}")
option(ENABLE_V4L2 "Enable the V4L2 grabber" ${DEFAULT_V4L2})
message(STATUS "ENABLE_V4L2 = ${ENABLE_V4L2}")
option(ENABLE_MF "Enable the Media Foundation grabber" ${DEFAULT_MF})
message(STATUS "ENABLE_MF = ${ENABLE_MF}")
option(ENABLE_WS281XPWM "Enable the WS281x-PWM device" ${DEFAULT_WS281XPWM} )
message(STATUS "ENABLE_WS281XPWM = ${ENABLE_WS281XPWM}")
option(ENABLE_OSX "Enable the OSX grabber" ${DEFAULT_OSX} )
message(STATUS "ENABLE_OSX = ${ENABLE_OSX}")
option(ENABLE_AVAHI "Enable Zeroconf" ${DEFAULT_AVAHI})
message(STATUS "ENABLE_AVAHI = " ${ENABLE_AVAHI})
option(ENABLE_QT "Enable the Qt grabber" ${DEFAULT_QT})
message(STATUS "ENABLE_QT = ${ENABLE_QT}")
option(ENABLE_USB_HID "Enable the libusb and hid devices" ${DEFAULT_USB_HID} )
message(STATUS "ENABLE_USB_HID = ${ENABLE_USB_HID}")
option(ENABLE_CEC "Enable the libcec and CEC control" ${DEFAULT_CEC} )
message(STATUS "ENABLE_CEC = ${ENABLE_CEC}")
option(ENABLE_V4L2 "Enable the V4L2 grabber" ${DEFAULT_V4L2})
message(STATUS "ENABLE_V4L2 = ${ENABLE_V4L2}")
option(ENABLE_X11 "Enable the X11 grabber" ${DEFAULT_X11})
message(STATUS "ENABLE_X11 = ${ENABLE_X11}")
@ -216,11 +261,70 @@ message(STATUS "ENABLE_X11 = ${ENABLE_X11}")
option(ENABLE_XCB "Enable the XCB grabber" ${DEFAULT_XCB})
message(STATUS "ENABLE_XCB = ${ENABLE_XCB}")
option(ENABLE_QT "Enable the Qt grabber" ${DEFAULT_QT})
message(STATUS "ENABLE_QT = ${ENABLE_QT}")
removeIndent()
option(ENABLE_DX "Enable the DirectX grabber" ${DEFAULT_DX})
message(STATUS "ENABLE_DX = ${ENABLE_DX}")
message(STATUS "Input options:")
addIndent(" - ")
option(ENABLE_BOBLIGHT_SERVER "Enable BOBLIGHT server" ${DEFAULT_BOBLIGHT_SERVER} )
message(STATUS "ENABLE_BOBLIGHT_SERVER = ${ENABLE_BOBLIGHT_SERVER}")
option(ENABLE_CEC "Enable the libcec and CEC control" ${DEFAULT_CEC} )
message(STATUS "ENABLE_CEC = ${ENABLE_CEC}")
option(ENABLE_FLATBUF_SERVER "Enable Flatbuffers server" ${DEFAULT_FLATBUF_SERVER} )
message(STATUS "ENABLE_FLATBUF_SERVER = ${ENABLE_FLATBUF_SERVER}")
option(ENABLE_PROTOBUF_SERVER "Enable Protocol Buffers server" ${DEFAULT_PROTOBUF_SERVER} )
message(STATUS "ENABLE_PROTOBUF_SERVER = ${ENABLE_PROTOBUF_SERVER}")
removeIndent()
message(STATUS "Output options:")
addIndent(" - ")
option(ENABLE_FORWARDER "Enable Hyperion forwarding" ${DEFAULT_FORWARDER} )
message(STATUS "ENABLE_FORWARDER = ${ENABLE_FORWARDER}")
if (ENABLE_FORWARDER)
SET(ENABLE_FLATBUF_CONNECT ON)
else()
option(ENABLE_FLATBUF_CONNECT "Enable Flatbuffers connecting remotely" ${DEFAULT_FLATBUF_CONNECT} )
endif()
message(STATUS "ENABLE_FLATBUF_CONNECT = ${ENABLE_FLATBUF_CONNECT}")
removeIndent()
message(STATUS "LED-Device options:")
addIndent(" - ")
option(ENABLE_SPIDEV "Enable the SPIDEV device" ${DEFAULT_SPIDEV} )
message(STATUS "ENABLE_SPIDEV = ${ENABLE_SPIDEV}")
option(ENABLE_TINKERFORGE "Enable the TINKERFORGE device" ${DEFAULT_TINKERFORGE})
message(STATUS "ENABLE_TINKERFORGE = ${ENABLE_TINKERFORGE}")
option(ENABLE_USB_HID "Enable the libusb and hid devices" ${DEFAULT_USB_HID} )
message(STATUS "ENABLE_USB_HID = ${ENABLE_USB_HID}")
option(ENABLE_WS281XPWM "Enable the WS281x-PWM device" ${DEFAULT_WS281XPWM} )
message(STATUS "ENABLE_WS281XPWM = ${ENABLE_WS281XPWM}")
removeIndent()
message(STATUS "Services options:")
addIndent(" - ")
option(ENABLE_AVAHI "Enable Zeroconf" ${DEFAULT_AVAHI})
message(STATUS "ENABLE_AVAHI = " ${ENABLE_AVAHI})
option(ENABLE_EXPERIMENTAL "Compile experimental features" ${DEFAULT_EXPERIMENTAL})
message(STATUS "ENABLE_EXPERIMENTAL = ${ENABLE_EXPERIMENTAL}")
removeIndent()
message(STATUS "Build options:")
addIndent(" - ")
option(ENABLE_TESTS "Compile additional test applications" ${DEFAULT_TESTS})
message(STATUS "ENABLE_TESTS = ${ENABLE_TESTS}")
@ -228,12 +332,18 @@ message(STATUS "ENABLE_TESTS = ${ENABLE_TESTS}")
option(ENABLE_PROFILER "enable profiler capabilities - not for release code" OFF)
message(STATUS "ENABLE_PROFILER = ${ENABLE_PROFILER}")
option(ENABLE_EXPERIMENTAL "Compile experimental features" ${DEFAULT_EXPERIMENTAL})
message(STATUS "ENABLE_EXPERIMENTAL = ${ENABLE_EXPERIMENTAL}")
option(ENABLE_DEPLOY_DEPENDENCIES "Deploy with dependencies" ${DEFAULT_DEPLOY_DEPENDENCIES})
message(STATUS "ENABLE_DEPLOY_DEPENDENCIES = ${ENABLE_DEPLOY_DEPENDENCIES}")
if (ENABLE_AVAHI)
message(STATUS "DEFAULT_USE_SHARED_AVAHI_LIBS = ${DEFAULT_USE_SHARED_AVAHI_LIBS}")
endif()
message(STATUS "DEFAULT_USE_SYSTEM_FLATBUFFERS_LIBS = ${DEFAULT_USE_SYSTEM_FLATBUFFERS_LIBS}")
message(STATUS "DEFAULT_USE_SYSTEM_MBEDTLS_LIBS = ${DEFAULT_USE_SYSTEM_MBEDTLS_LIBS}")
message(STATUS "DEFAULT_USE_SYSTEM_PROTO_LIBS = ${DEFAULT_USE_SYSTEM_PROTO_LIBS}")
removeIndent()
SET ( FLATBUFFERS_INSTALL_BIN_DIR ${CMAKE_BINARY_DIR}/flatbuf )
SET ( FLATBUFFERS_INSTALL_LIB_DIR ${CMAKE_BINARY_DIR}/flatbuf )
@ -346,10 +456,18 @@ if (NOT DEFINED QTDIR)
set(QTDIR "${SUBDIRQT}/msvc2019_64")
endif()
elseif ( "${PLATFORM}" MATCHES "osx" )
# QT6 x86_64 location
if (EXISTS /usr/local/opt/qt6)
set(QTDIR "/usr/local/opt/qt6")
# QT6 arm64 location
elseif (EXISTS /opt/homebrew/opt/qt@6)
set(QTDIR "/opt/homebrew/opt/qt@6")
# QT5 x86_64 location
elseif (EXISTS /usr/local/opt/qt5)
set(QTDIR "/usr/local/opt/qt5")
# QT5 arm64 location
elseif (EXISTS /opt/homebrew/opt/qt@5)
set(QTDIR "/opt/homebrew/opt/qt@5")
endif()
endif()
endif()
@ -376,7 +494,7 @@ IF ( "${QT_VERSION}" VERSION_LESS "${QT_MIN_VERSION}" )
message( FATAL_ERROR "Your Qt version is to old! Minimum required ${QT_MIN_VERSION}" )
ENDIF()
find_package(Qt${QT_VERSION_MAJOR} COMPONENTS Core Gui Network SerialPort Sql Widgets REQUIRED)
find_package(Qt${QT_VERSION_MAJOR} ${QT_VERSION} COMPONENTS Core Gui Network SerialPort Sql Widgets REQUIRED)
message( STATUS "Qt version used: ${QT_VERSION}" )

View File

@ -1,62 +1,77 @@
// Generated config file
// Define to enable the DispmanX grabber
#cmakedefine ENABLE_DISPMANX
// Define to enable the V4L2 grabber
#cmakedefine ENABLE_V4L2
// Define to enable the Media Foundation grabber
#cmakedefine ENABLE_MF
// Define to enable the Framebuffer grabber
#cmakedefine ENABLE_FB
// Define to enable the AMLogic grabber
#cmakedefine ENABLE_AMLOGIC
// Define to enable the DispmanX grabber
#cmakedefine ENABLE_DISPMANX
// Define to enable the DirectX grabber
#cmakedefine ENABLE_DX
// Define to enable the Framebuffer grabber
#cmakedefine ENABLE_FB
// Define to enable the Media Foundation grabber
#cmakedefine ENABLE_MF
// Define to enable the OSX grabber
#cmakedefine ENABLE_OSX
// Define to enable the Qt grabber
#cmakedefine ENABLE_QT
// Define to enable the V4L2 grabber
#cmakedefine ENABLE_V4L2
// Define to enable the X11 grabber
#cmakedefine ENABLE_X11
// Define to enable the XCB grabber
#cmakedefine ENABLE_XCB
// Define to enable the Qt grabber
#cmakedefine ENABLE_QT
// Define to enable the DirectX grabber
#cmakedefine ENABLE_DX
// Define to enable the SPI-Device
#cmakedefine ENABLE_SPIDEV
// Define to enable the WS281x-PWM-via-DMA-device using jgarff's library
#cmakedefine ENABLE_WS281XPWM
// Define to enable the Tinkerforge device
#cmakedefine ENABLE_TINKERFORGE
// Define to enable AVAHI
#cmakedefine ENABLE_AVAHI
// Define to enable boblight server
#cmakedefine ENABLE_BOBLIGHT_SERVER
// Define to enable CEC
#cmakedefine ENABLE_CEC
// Define to enable boblight server
#cmakedefine ENABLE_BOBLIGHT
// Define to enable flatbuffer server
#cmakedefine ENABLE_FLATBUF_SERVER
// Define to enable protocol buffer server
#cmakedefine ENABLE_PROTOBUF_SERVER
// Define to enable hyperion forwarding
#cmakedefine ENABLE_FORWARDER
// Define to enable enable flatbuffer connect
#cmakedefine ENABLE_FLATBUF_CONNECT
// Define to enable protocol buffer connect
#cmakedefine ENABLE_PROTOBUF_CONNECT
// Define to enable the SPI-Device
#cmakedefine ENABLE_SPIDEV
// Define to enable the Tinkerforge device
#cmakedefine ENABLE_TINKERFORGE
// Define to enable the USB / HID devices
#cmakedefine ENABLE_USB_HID
// Define to enable profiler for development purpose
#cmakedefine ENABLE_PROFILER
// Define to enable the WS281x-PWM-via-DMA-device using jgarff's library
#cmakedefine ENABLE_WS281XPWM
// Define to enable AVAHI
#cmakedefine ENABLE_AVAHI
// Define to enable experimental features
#cmakedefine ENABLE_EXPERIMENTAL
// Define to enable profiler for development purpose
#cmakedefine ENABLE_PROFILER
// Define to enable deploy dependencies to packages
#cmakedefine ENABLE_DEPLOY_DEPENDENCIES

View File

@ -16,7 +16,7 @@
<span id="dash_config_status">Status</span>
</div>
<div class="panel-body">
<table class="table borderless">
<table id="dash_capture_hw" class="table borderless">
<thead>
<tr>
<th colspan="3">
@ -26,7 +26,7 @@
</tr>
</thead>
<tbody>
<tr>
<tr id="dash_screen_grabber_row">
<td></td>
<td data-i18n="edt_conf_fg_heading_title">Screen-Grabber</td>
<td style="text-align: right; padding-right: 0">
@ -34,7 +34,7 @@
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemGrabber', 'editor_container_screengrabber')" style="text-decoration: none; cursor: pointer"></a>
</td>
</tr>
<tr>
<tr id="dash_video_grabber_row">
<td></td>
<td data-i18n="edt_conf_v4l2_heading_title">Video-Grabber</td>
<td style="text-align: right; padding-right: 0">
@ -44,7 +44,7 @@
</tr>
</tbody>
</table>
<table class="table borderless">
<table id="dash_ports" class="table borderless">
<thead>
<tr>
<th colspan="3">
@ -54,15 +54,7 @@
</tr>
</thead>
<tbody>
<tr>
<td></td>
<td data-i18n="dashboard_infobox_label_port_proto">proto</td>
<td style="text-align: right; padding-right: 0">
<span id="dash_pbPort">unknown</span>
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemNetwork', 'editor_container_protoserver')" style="text-decoration: none; cursor: pointer"></a>
</td>
</tr>
<tr>
<tr id="dash_ports_flat_row">
<td></td>
<td data-i18n="dashboard_infobox_label_port_flat">flat</td>
<td style="text-align: right; padding-right: 0">
@ -70,6 +62,14 @@
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemNetwork', 'editor_container_fbserver')" style="text-decoration: none; cursor: pointer"></a>
</td>
</tr>
<tr id="dash_ports_proto_row">
<td></td>
<td data-i18n="dashboard_infobox_label_port_proto">proto</td>
<td style="text-align: right; padding-right: 0">
<span id="dash_pbPort">unknown</span>
<a class="fa fa-cog fa-fw" onclick="SwitchToMenuItem('MenuItemNetwork', 'editor_container_protoserver')" style="text-decoration: none; cursor: pointer"></a>
</td>
</tr>
<tr>
<td></td>
<td data-i18n="dashboard_infobox_label_port_json">json</td>

View File

@ -14,7 +14,7 @@
</div>
<div class="row">
<div class="col-md-12 col-lg-8 col-xxl-7">
<div class="col-md-12 col-lg-8 col-xxl-8">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_input_label">Source selection</span></div>
<div class="panel-body">
@ -24,7 +24,7 @@
</div>
</div>
<div class="col-md-6 col-lg-4 col-xxl-5">
<div class="col-md-6 col-lg-4 col-xxl-4">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_components_label">Components control</span></div>
<div class="panel-body" id="comp_intro">
@ -32,7 +32,9 @@
</div>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6 col-lg-6 col-xxl-4">
<div class="panel panel-default">
<div class="panel-heading"><i class="fa fa-wifi fa-fw"></i><span data-i18n="remote_color_label">Colors/Effects</span></div>

View File

@ -1,6 +1,8 @@
$(document).ready(function () {
performTranslation();
var BORDERDETECT_ENABLED = (jQuery.inArray("borderdetection", window.serverInfo.services) !== -1);
// update instance listing
updateHyperionInstanceListing();
@ -20,16 +22,20 @@ $(document).ready(function () {
$('#conf_cont_smoothing').append(createHelpTable(window.schema.smoothing.properties, $.i18n("edt_conf_smooth_heading_title"), "smoothingHelpPanelId"));
//blackborder
if (BORDERDETECT_ENABLED) {
$('#conf_cont').append(createRow('conf_cont_blackborder'));
$('#conf_cont_blackborder').append(createOptPanel('fa-photo', $.i18n("edt_conf_bb_heading_title"), 'editor_container_blackborder', 'btn_submit_blackborder'));
$('#conf_cont_blackborder').append(createHelpTable(window.schema.blackborderdetector.properties, $.i18n("edt_conf_bb_heading_title"), "blackborderHelpPanelId"));
}
}
else {
$('#conf_cont').addClass('row');
$('#conf_cont').append(createOptPanel('fa-photo', $.i18n("edt_conf_color_heading_title"), 'editor_container_color', 'btn_submit_color'));
$('#conf_cont').append(createOptPanel('fa-photo', $.i18n("edt_conf_smooth_heading_title"), 'editor_container_smoothing', 'btn_submit_smoothing'));
if (BORDERDETECT_ENABLED) {
$('#conf_cont').append(createOptPanel('fa-photo', $.i18n("edt_conf_bb_heading_title"), 'editor_container_blackborder', 'btn_submit_blackborder'));
}
}
//color
editor_color = createJsonEditor('editor_container_color', {
@ -66,6 +72,7 @@ $(document).ready(function () {
});
//blackborder
if (BORDERDETECT_ENABLED) {
editor_blackborder = createJsonEditor('editor_container_blackborder', {
blackborderdetector: window.schema.blackborderdetector
}, true, true);
@ -88,6 +95,7 @@ $(document).ready(function () {
$('#btn_submit_blackborder').off().on('click', function () {
requestWriteConfig(editor_blackborder.getValue());
});
}
//wiki links
var wikiElement = $(buildWL("user/advanced/Advanced.html#blackbar-detection", "edt_conf_bb_mode_title", true));
@ -98,8 +106,10 @@ $(document).ready(function () {
if (window.showOptHelp) {
createHint("intro", $.i18n('conf_colors_color_intro'), "editor_container_color");
createHint("intro", $.i18n('conf_colors_smoothing_intro'), "editor_container_smoothing");
if (BORDERDETECT_ENABLED) {
createHint("intro", $.i18n('conf_colors_blackborder_intro'), "editor_container_blackborder");
}
}
removeOverlay();
});

View File

@ -102,15 +102,41 @@ $(document).ready(function () {
// add more info
var screenGrabberAvailable = (window.serverInfo.grabbers.screen.available.length !== 0);
var videoGrabberAvailable = (window.serverInfo.grabbers.video.available.length !== 0);
if (screenGrabberAvailable || videoGrabberAvailable) {
if (screenGrabberAvailable) {
var screenGrabber = window.serverConfig.framegrabber.enable ? $.i18n('general_enabled') : $.i18n('general_disabled');
$('#dash_screen_grabber').html(screenGrabber);
} else {
$("#dash_screen_grabber_row").hide();
}
if (videoGrabberAvailable) {
var videoGrabber = window.serverConfig.grabberV4L2.enable ? $.i18n('general_enabled') : $.i18n('general_disabled');
$('#dash_video_grabber').html(videoGrabber);
} else {
$("#dash_video_grabber_row").hide();
}
} else {
$("#dash_capture_hw").hide();
}
if (jQuery.inArray("flatbuffer", window.serverInfo.services) !== -1) {
var fbPort = window.serverConfig.flatbufServer.enable ? window.serverConfig.flatbufServer.port : $.i18n('general_disabled');
$('#dash_fbPort').html(fbPort);
} else {
$("#dash_ports_flat_row").hide();
}
if (jQuery.inArray("protobuffer", window.serverInfo.services) !== -1) {
var pbPort = window.serverConfig.protoServer.enable ? window.serverConfig.protoServer.port : $.i18n('general_disabled');
$('#dash_pbPort').html(pbPort);
} else {
$("#dash_ports_proto_row").hide();
}
var jsonPort = window.serverConfig.jsonServer.port;
$('#dash_jsonPort').html(jsonPort);

View File

@ -1,17 +1,29 @@
$(document).ready(function () {
performTranslation();
var screenGrabberAvailable = (window.serverInfo.grabbers.screen.available.length !== 0);
var videoGrabberAvailable = (window.serverInfo.grabbers.video.available.length !== 0);
var CEC_ENABLED = (jQuery.inArray("cec", window.serverInfo.services) !== -1);
var conf_editor_video = null;
var conf_editor_screen = null;
var configuredDevice = "";
var discoveredInputSources = {};
var deviceProperties = {};
// Screen-Grabber
if (screenGrabberAvailable) {
$('#conf_cont').append(createRow('conf_cont_screen'));
$('#conf_cont_screen').append(createOptPanel('fa-camera', $.i18n("edt_conf_fg_heading_title"), 'editor_container_screengrabber', 'btn_submit_screengrabber', 'panel-system', 'screengrabberPanelId'));
if (window.showOptHelp) {
$('#conf_cont_screen').append(createHelpTable(window.schema.framegrabber.properties, $.i18n("edt_conf_fg_heading_title"), "screengrabberHelpPanelId"));
}
}
// Video-Grabber
if (videoGrabberAvailable) {
$('#conf_cont').append(createRow('conf_cont_video'));
$('#conf_cont_video').append(createOptPanel('fa-camera', $.i18n("edt_conf_v4l2_heading_title"), 'editor_container_videograbber', 'btn_submit_videograbber', 'panel-system', 'videograbberPanelId'));
@ -24,6 +36,7 @@ $(document).ready(function () {
if (window.showOptHelp) {
$('#conf_cont_video').append(createHelpTable(window.schema.grabberV4L2.properties, $.i18n("edt_conf_v4l2_heading_title"), "videograbberHelpPanelId"));
}
}
JSONEditor.defaults.custom_validators.push(function (schema, value, path) {
var errors = [];
@ -77,6 +90,7 @@ $(document).ready(function () {
}
// Screen-Grabber
if (screenGrabberAvailable) {
conf_editor_screen = createJsonEditor('editor_container_screengrabber', {
framegrabber: window.schema.framegrabber
}, true, true);
@ -300,13 +314,10 @@ $(document).ready(function () {
requestWriteConfig(saveOptions);
});
}
// External Input Sources (Video-Grabbers)
var configuredDevice = "";
var discoveredInputSources = {};
var deviceProperties = {};
if (videoGrabberAvailable) {
function updateDeviceProperties(deviceProperties, property, key) {
var properties = {};
if (deviceProperties) {
@ -341,7 +352,7 @@ $(document).ready(function () {
conf_editor_video.on('change', function () {
// Hide elements not supported by the backend
if (window.serverInfo.cec.enabled === false) {
if (window.serverInfo.cec.enabled === false || !CEC_ENABLED) {
showInputOptionForItem(conf_editor_video, "grabberV4L2", "cecDetection", false);
}
@ -681,6 +692,7 @@ $(document).ready(function () {
}
}
});
}
// ------------------------------------------------------------------
@ -688,9 +700,13 @@ $(document).ready(function () {
//create introduction
if (window.showOptHelp) {
if (screenGrabberAvailable) {
createHint("intro", $.i18n('conf_grabber_fg_intro'), "editor_container_screengrabber");
}
if (videoGrabberAvailable) {
createHint("intro", $.i18n('conf_grabber_v4l_intro'), "editor_container_videograbber");
}
}
removeOverlay();
@ -773,11 +789,15 @@ $(document).ready(function () {
switch (type) {
case "screen":
discoveredInputSources.screen = discoveryResult.video_sources;
if (screenGrabberAvailable) {
updateScreenSourcesList(type, discoveredInputSources.screen);
}
break;
case "video":
discoveredInputSources.video = discoveryResult.video_sources;
if (videoGrabberAvailable) {
updateVideoSourcesList(type, discoveredInputSources.video);
}
break;
}
}

View File

@ -222,6 +222,12 @@ $(document).ready(function () {
$(window.hyperion).one("ready", function (event) {
// Content will be loaded by the instance load/switch
//Hide capture menu entries, if no grabbers are available
if ((window.serverInfo.grabbers.screen.available.length === 0) && (window.serverInfo.grabbers.video.available.length === 0)) {
$("#MenuItemGrabber").attr('style', 'display:none')
$("#MenuItemInstCapture").attr('style', 'display:none')
}
});
$(window.hyperion).on("cmd-adjustment-update", function (event) {

View File

@ -1,6 +1,9 @@
$(document).ready(function () {
performTranslation();
var screenGrabberAvailable = (window.serverInfo.grabbers.screen.available.length !== 0);
var videoGrabberAvailable = (window.serverInfo.grabbers.video.available.length !== 0);
// update instance listing
updateHyperionInstanceListing();
@ -26,6 +29,7 @@ $(document).ready(function () {
conf_editor_instCapt.on('ready', function () {
if (screenGrabberAvailable) {
if (!window.serverConfig.framegrabber.enable) {
conf_editor_instCapt.getEditor("root.instCapture.systemEnable").setValue(false);
conf_editor_instCapt.getEditor("root.instCapture.systemEnable").disable();
@ -33,13 +37,25 @@ $(document).ready(function () {
else {
conf_editor_instCapt.getEditor("root.instCapture.systemEnable").setValue(window.serverConfig.instCapture.systemEnable);
}
} else {
showInputOptionForItem(conf_editor_instCapt, "instCapture", "systemEnable", false);
showInputOptionForItem(conf_editor_instCapt, "instCapture", "systemGrabberDevice", false);
showInputOptionForItem(conf_editor_instCapt, "instCapture", "systemPriority", false);
}
if (videoGrabberAvailable) {
if (!window.serverConfig.grabberV4L2.enable) {
conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").setValue(false);
conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").disable();
}
else {
conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").setValue(window.serverConfig.instCapture.v4lEnable);
}
} else {
showInputOptionForItem(conf_editor_instCapt, "instCapture", "v4lGrabberDevice", false);
showInputOptionForItem(conf_editor_instCapt, "instCapture", "v4lEnable", false);
showInputOptionForItem(conf_editor_instCapt, "instCapture", "v4lPriority", false);
}
});
@ -75,6 +91,7 @@ $(document).ready(function () {
});
conf_editor_instCapt.watch('root.instCapture.v4lEnable', () => {
console.log("instCapt.watch(root.instCapture.v4lEnable");
var videoEnable = conf_editor_instCapt.getEditor("root.instCapture.v4lEnable").getValue();
if (videoEnable) {
conf_editor_instCapt.getEditor("root.instCapture.v4lGrabberDevice").setValue(window.serverConfig.grabberV4L2.available_devices);

View File

@ -1,7 +1,10 @@
$(document).ready(function () {
performTranslation();
var BOBLIGHT_ENABLED = window.comps.find(element => element.name == "BOBLIGHTSERVER");
var BOBLIGHT_ENABLED = (jQuery.inArray("boblight", window.serverInfo.services) !== -1);
var FORWARDER_ENABLED = (jQuery.inArray("forwarder", window.serverInfo.services) !== -1);
var FLATBUF_SERVER_ENABLED = (jQuery.inArray("flatbuffer", window.serverInfo.services) !== -1);
var PROTOTBUF_SERVER_ENABLED = (jQuery.inArray("protobuffer", window.serverInfo.services) !== -1);
var conf_editor_net = null;
var conf_editor_json = null;
@ -24,14 +27,18 @@ $(document).ready(function () {
$('#conf_cont_json').append(createHelpTable(window.schema.jsonServer.properties, $.i18n("edt_conf_js_heading_title")));
//flatbufserver
if (FLATBUF_SERVER_ENABLED) {
$('#conf_cont').append(createRow('conf_cont_flatbuf'));
$('#conf_cont_flatbuf').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fbs_heading_title"), 'editor_container_fbserver', 'btn_submit_fbserver', 'panel-system'));
$('#conf_cont_flatbuf').append(createHelpTable(window.schema.flatbufServer.properties, $.i18n("edt_conf_fbs_heading_title"), "flatbufServerHelpPanelId"));
}
//protoserver
if (PROTOTBUF_SERVER_ENABLED) {
$('#conf_cont').append(createRow('conf_cont_proto'));
$('#conf_cont_proto').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_pbs_heading_title"), 'editor_container_protoserver', 'btn_submit_protoserver', 'panel-system'));
$('#conf_cont_proto').append(createHelpTable(window.schema.protoServer.properties, $.i18n("edt_conf_pbs_heading_title"), "protoServerHelpPanelId"));
}
//boblight
if (BOBLIGHT_ENABLED) {
@ -41,21 +48,30 @@ $(document).ready(function () {
}
//forwarder
if (FORWARDER_ENABLED) {
if (storedAccess != 'default') {
$('#conf_cont').append(createRow('conf_cont_fw'));
$('#conf_cont_fw').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fw_heading_title"), 'editor_container_forwarder', 'btn_submit_forwarder', 'panel-system'));
$('#conf_cont_fw').append(createHelpTable(window.schema.forwarder.properties, $.i18n("edt_conf_fw_heading_title"), "forwarderHelpPanelId"));
}
}
}
else {
$('#conf_cont').addClass('row');
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_net_heading_title"), 'editor_container_net', 'btn_submit_net'));
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_js_heading_title"), 'editor_container_jsonserver', 'btn_submit_jsonserver'));
if (FLATBUF_SERVER_ENABLED) {
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fbs_heading_title"), 'editor_container_fbserver', 'btn_submit_fbserver'));
}
if (PROTOTBUF_SERVER_ENABLED) {
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_pbs_heading_title"), 'editor_container_protoserver', 'btn_submit_protoserver'));
}
if (BOBLIGHT_ENABLED) {
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_bobls_heading_title"), 'editor_container_boblightserver', 'btn_submit_boblightserver'));
}
if (FORWARDER_ENABLED) {
$('#conf_cont').append(createOptPanel('fa-sitemap', $.i18n("edt_conf_fw_heading_title"), 'editor_container_forwarder', 'btn_submit_forwarder'));
}
$("#conf_cont_tok").removeClass('row');
}
@ -86,6 +102,7 @@ $(document).ready(function () {
});
//flatbuffer
if (FLATBUF_SERVER_ENABLED) {
conf_editor_fbs = createJsonEditor('editor_container_fbserver', {
flatbufServer: window.schema.flatbufServer
}, true, true);
@ -105,8 +122,10 @@ $(document).ready(function () {
$('#btn_submit_fbserver').off().on('click', function () {
requestWriteConfig(conf_editor_fbs.getValue());
});
}
//protobuffer
if (PROTOTBUF_SERVER_ENABLED) {
conf_editor_proto = createJsonEditor('editor_container_protoserver', {
protoServer: window.schema.protoServer
}, true, true);
@ -126,6 +145,7 @@ $(document).ready(function () {
$('#btn_submit_protoserver').off().on('click', function () {
requestWriteConfig(conf_editor_proto.getValue());
});
}
//boblight
if (BOBLIGHT_ENABLED) {
@ -150,8 +170,9 @@ $(document).ready(function () {
});
}
if (storedAccess != 'default') {
//forwarder
if (FORWARDER_ENABLED) {
if (storedAccess != 'default') {
conf_editor_forw = createJsonEditor('editor_container_forwarder', {
forwarder: window.schema.forwarder
}, true, true);
@ -172,17 +193,24 @@ $(document).ready(function () {
requestWriteConfig(conf_editor_forw.getValue());
});
}
}
//create introduction
if (window.showOptHelp) {
createHint("intro", $.i18n('conf_network_net_intro'), "editor_container_net");
createHint("intro", $.i18n('conf_network_json_intro'), "editor_container_jsonserver");
if (FLATBUF_SERVER_ENABLED) {
createHint("intro", $.i18n('conf_network_fbs_intro'), "editor_container_fbserver");
}
if (PROTOTBUF_SERVER_ENABLED) {
createHint("intro", $.i18n('conf_network_proto_intro'), "editor_container_protoserver");
}
if (BOBLIGHT_ENABLED) {
createHint("intro", $.i18n('conf_network_bobl_intro'), "editor_container_boblightserver");
}
if (FORWARDER_ENABLED) {
createHint("intro", $.i18n('conf_network_forw_intro'), "editor_container_forwarder");
}
createHint("intro", $.i18n('conf_network_tok_intro'), "tok_desc_cont");
}

View File

@ -1208,7 +1208,9 @@ function getSystemInfo() {
info += '- UI Lang: ' + storedLang + ' (BrowserLang: ' + navigator.language + ')\n';
info += '- UI Access: ' + storedAccess + '\n';
//info += '- Log lvl: ' + window.serverConfig.logger.level + '\n';
info += '- Avail Capt: ' + window.serverInfo.grabbers.available + '\n';
info += '- Avail Screen Cap.: ' + window.serverInfo.grabbers.screen.available + '\n';
info += '- Avail Video Cap.: ' + window.serverInfo.grabbers.video.available + '\n';
info += '- Avail Services: ' + window.serverInfo.services + '\n';
info += '- Config path: ' + shy.rootPath + '\n';
info += '- Database: ' + (shy.readOnlyMode ? "ready-only" : "read/write") + '\n';

View File

@ -27,7 +27,6 @@ sudo apt-get install \
libssl-dev \
libqt5sql5-sqlite \
libqt5svg5-dev \
zlib1g-dev \
if [ -e /dev/vc-cma -a -e /dev/vc-mem ]
then

View File

@ -1,10 +1,9 @@
# - Find the native BCM includes and library
# Find Broadcom VideoCore firmware installation
#
# This module defines
# BCM_INCLUDE_DIR, where to find png.h, etc.
# BCM_LIBRARIES, the libraries to link against to use PNG.
# BCM_FOUND, If false, do not try to use PNG.
# BCM_INCLUDE_DIR - The Broadcom VideoCore include directory
# BCM_LIBRARIES - The Broadcom VideoCore BCM_HOST library.
# BCM_FOUND - BCM_HOST is available
#
FIND_PATH(BCM_INCLUDE_DIR

View File

@ -1,60 +0,0 @@
# - Find the native PNG includes and library
#
# This module defines
# PNG_INCLUDE_DIR, where to find png.h, etc.
# PNG_LIBRARIES, the libraries to link against to use PNG.
# PNG_DEFINITIONS - You should ADD_DEFINITONS(${PNG_DEFINITIONS}) before compiling code that includes png library files.
# PNG_FOUND, If false, do not try to use PNG.
# also defined, but not for general use are
# PNG_LIBRARY, where to find the PNG library.
# None of the above will be defined unles zlib can be found.
# PNG depends on Zlib
#
INCLUDE(FindZLIB)
SET(PNG_FOUND "NO")
IF(ZLIB_FOUND)
FIND_PATH(PNG_PNG_INCLUDE_DIR png.h
/usr/local/include
/usr/include
/usr/local/include/libpng # OpenBSD
)
SET(PNG_NAMES ${PNG_NAMES} png libpng)
FIND_LIBRARY(PNG_LIBRARY
NAMES ${PNG_NAMES}
PATHS /usr/lib64 /usr/lib /usr/local/lib
)
IF (PNG_LIBRARY AND PNG_PNG_INCLUDE_DIR)
# png.h includes zlib.h. Sigh.
SET(PNG_INCLUDE_DIR ${PNG_PNG_INCLUDE_DIR} ${ZLIB_INCLUDE_DIR} )
SET(PNG_LIBRARIES ${PNG_LIBRARY} ${ZLIB_LIBRARY})
SET(PNG_FOUND "YES")
SET(HAVE_PNG_H)
IF (CYGWIN)
IF(BUILD_SHARED_LIBS)
# No need to define PNG_USE_DLL here, because it's default for Cygwin.
ELSE(BUILD_SHARED_LIBS)
SET (PNG_DEFINITIONS -DPNG_STATIC)
ENDIF(BUILD_SHARED_LIBS)
ENDIF (CYGWIN)
ENDIF (PNG_LIBRARY AND PNG_PNG_INCLUDE_DIR)
ENDIF(ZLIB_FOUND)
IF (PNG_FOUND)
IF (NOT PNG_FIND_QUIETLY)
MESSAGE(STATUS "Found PNG: ${PNG_LIBRARY}")
ENDIF (NOT PNG_FIND_QUIETLY)
ELSE (PNG_FOUND)
IF (PNG_FIND_REQUIRED)
MESSAGE(FATAL_ERROR "Could not find PNG library")
ENDIF (PNG_FIND_REQUIRED)
ENDIF (PNG_FOUND)
MARK_AS_ADVANCED(PNG_PNG_INCLUDE_DIR PNG_LIBRARY )

View File

@ -5,19 +5,27 @@
<key>CFBundleDeveloperRegion</key>
<string>en</string>
<key>CFBundleIdentifier</key>
<string>com.hyperion-project.hyperiond</string>
<string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
<key>CFBundleName</key>
<string>Hyperion</string>
<key>CFBundleExecutable</key>
<string>Hyperion</string>
<key>CFBundleIconFile</key>
<string>Hyperion.icns</string>
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
<key>CFBundleGetInfoString</key>
<string>${MACOSX_BUNDLE_INFO_STRING}</string>
<key>CFBundleVersion</key>
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
<key>CFBundleShortVersionString</key>
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
<key>CFBundleLongVersionString</key>
<string>${MACOSX_BUNDLE_LONG_VERSION_STRING}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>NSHumanReadableCopyright</key>
<string>MIT License</string>
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
<key>Source Code</key>
<string>"https://github.com/hyperion-project/hyperion.ng"</string>
</dict>

View File

@ -16,6 +16,7 @@ endif()
# FLATBUFFER
#=============================================================================
if(ENABLE_FLATBUF_SERVER OR ENABLE_FLATBUF_CONNECT)
set(USE_SYSTEM_FLATBUFFERS_LIBS ${DEFAULT_USE_SYSTEM_FLATBUFFERS_LIBS} CACHE BOOL "use flatbuffers library from system")
if (USE_SYSTEM_FLATBUFFERS_LIBS)
@ -40,7 +41,7 @@ else ()
IF (NOT CMAKE_CROSSCOMPILING)
# define the flatc executable at the parent scope
get_property(FLATBUFFERS_FLATC_EXECUTABLE TARGET flatc PROPERTY LOCATION)
set(FLATBUFFERS_FLATC_EXECUTABLE "$<TARGET_FILE:flatc>")
else()
#Workaround, set flatc comiplier directory hard, as cmake definitions of flatc do not cater for crosscompile correctly.
#Includ of flatc_export.cmake detects that flatc target is defined aand returns before using the definitions written by export
@ -52,7 +53,7 @@ set(FLATBUFFERS_INCLUDE_DIRS ${FLATBUFFERS_INCLUDE_DIRS} PARENT_SCOPE)
include_directories(${FLATBUFFERS_INCLUDE_DIRS})
message(STATUS "Using flatbuffers compiler: " ${FLATBUFFERS_FLATC_EXECUTABLE})
# message(STATUS "Using flatbuffers compiler: " ${FLATBUFFERS_FLATC_EXECUTABLE})
function(compile_flattbuffer_schema SRC_FBS OUTPUT_DIR)
string(REGEX REPLACE "\\.fbs$" "_generated.h" GEN_HEADER ${SRC_FBS})
@ -66,24 +67,28 @@ function(compile_flattbuffer_schema SRC_FBS OUTPUT_DIR)
"${SRC_FBS}"
DEPENDS "${FLATBUFFERS_FLATC_EXECUTABLE}" ${SRC_FBS})
endfunction()
endif()
#=============================================================================
# PROTOBUFFER
#=============================================================================
if(ENABLE_PROTOBUF_SERVER)
set(USE_SYSTEM_PROTO_LIBS ${DEFAULT_USE_SYSTEM_PROTO_LIBS} CACHE BOOL "use protobuf library from system")
if (USE_SYSTEM_PROTO_LIBS)
find_package(Protobuf REQUIRED)
else ()
set(BUILD_SHARED_LIBS OFF CACHE BOOL "Build shared protobuf library")
set(protobuf_BUILD_TESTS OFF CACHE BOOL "Build protobuf with tests")
set(protobuf_BUILD_SHARED_LIBS OFF CACHE BOOL "Build protobuf shared")
set(protobuf_WITH_ZLIB OFF CACHE BOOL "Build protobuf with zlib support")
if (WIN32)
set(protobuf_MSVC_STATIC_RUNTIME OFF CACHE BOOL "Build protobuf static")
endif()
add_subdirectory(external/protobuf)
add_subdirectory(external/protobuf/cmake)
if(CMAKE_CROSSCOMPILING)
# when crosscompiling import the protoc executable targets from a file generated by a native build
@ -91,22 +96,21 @@ else ()
include(${IMPORT_PROTOC})
else()
# export the protoc compiler so it can be used when cross compiling
export(TARGETS protoc_compiler FILE "${CMAKE_BINARY_DIR}/protoc_export.cmake")
export(TARGETS protoc FILE "${CMAKE_BINARY_DIR}/protoc_export.cmake")
endif()
# define the include for the protobuf library at the parent scope
set(PROTOBUF_INCLUDE_DIRS "${CMAKE_CURRENT_SOURCE_DIR}/external/protobuf/src")
# define the protoc executable at the parent scope
get_property(PROTOBUF_PROTOC_EXECUTABLE TARGET protoc_compiler PROPERTY LOCATION)
set(PROTOBUF_PROTOC_EXECUTABLE "$<TARGET_FILE:protoc>")
endif()
option(protobuf_BUILD_TESTS "" OFF)
set(PROTOBUF_PROTOC_EXECUTABLE ${PROTOBUF_PROTOC_EXECUTABLE} PARENT_SCOPE)
set(PROTOBUF_INCLUDE_DIRS ${PROTOBUF_INCLUDE_DIRS} PARENT_SCOPE)
include_directories(${PROTOBUF_INCLUDE_DIRS})
message(STATUS "Using protobuf compiler: " ${PROTOBUF_PROTOC_EXECUTABLE})
# message(STATUS "Using protobuf compiler: " ${PROTOBUF_PROTOC_EXECUTABLE})
#=============================================================================
# Copyright 2009 Kitware, Inc.
@ -155,7 +159,7 @@ function(PROTOBUF_GENERATE_CPP SRCS HDRS)
if(CMAKE_CROSSCOMPILING OR USE_SYSTEM_PROTO_LIBS)
set(PROTOC_DEPENDENCY ${PROTOBUF_PROTOC_EXECUTABLE})
else()
set(PROTOC_DEPENDENCY protoc_compiler)
set(PROTOC_DEPENDENCY protoc)
endif()
set(${SRCS})
@ -184,6 +188,7 @@ function(PROTOBUF_GENERATE_CPP SRCS HDRS)
set(${SRCS} ${${SRCS}} PARENT_SCOPE)
set(${HDRS} ${${HDRS}} PARENT_SCOPE)
endfunction()
endif()
#=============================================================================
# MBEDTLS

@ -1 +1 @@
Subproject commit adce8a99fdab90f290d659b6b3bf2d09b721e24a
Subproject commit b360b9e388351aaed97f2ead98dd951fb5f1951e

View File

@ -74,7 +74,7 @@ cd $HYPERION_HOME
```console
sudo apt-get update
sudo apt-get install git cmake build-essential qtbase5-dev libqt5serialport5-dev libqt5sql5-sqlite libqt5svg5-dev libqt5x11extras5-dev libusb-1.0-0-dev python3-dev libavahi-core-dev libavahi-compat-libdnssd-dev libturbojpeg0-dev libssl-dev zlib1g-dev
sudo apt-get install git cmake build-essential qtbase5-dev libqt5serialport5-dev libqt5sql5-sqlite libqt5svg5-dev libqt5x11extras5-dev libusb-1.0-0-dev python3-dev libavahi-core-dev libavahi-compat-libdnssd-dev libturbojpeg0-dev libssl-dev
```
**For Linux X11/XXCB grabber support**
@ -125,7 +125,7 @@ To install on OS X you either need Homebrew or Macport but Homebrew is the recom
First you need to install the dependencies:
```console
brew install qt5 python3 cmake libusb doxygen zlib
brew install qt5 python3 cmake libusb doxygen
```
## Windows

View File

@ -0,0 +1,15 @@
#ifndef GRABBERTYPE_H
#define GRABBERTYPE_H
enum class GrabberType {
SCREEN,
VIDEO,
};
enum class GrabberTypeFilter {
ALL,
SCREEN,
VIDEO,
};
#endif // GRABBERTYPE_H

View File

@ -16,6 +16,8 @@
#include <utils/settings.h>
#include <utils/VideoStandard.h>
#include <grabber/GrabberType.h>
class Grabber;
class GlobalSignals;
class QTimer;
@ -67,16 +69,17 @@ public:
///
/// @brief Get active grabber name
/// @param hyperionInd The instance index
/// @param type Filter for a given grabber type
/// @return Active grabbers
///
virtual QStringList getActive(int inst) const;
virtual QStringList getActive(int inst, GrabberTypeFilter type = GrabberTypeFilter::ALL) const;
bool getSysGrabberState() const { return GLOBAL_GRABBER_SYS_ENABLE; }
void setSysGrabberState(bool sysGrabberState){ GLOBAL_GRABBER_SYS_ENABLE = sysGrabberState; }
bool getV4lGrabberState() const { return GLOBAL_GRABBER_V4L_ENABLE; }
void setV4lGrabberState(bool v4lGrabberState){ GLOBAL_GRABBER_V4L_ENABLE = v4lGrabberState; }
static QStringList availableGrabbers();
static QStringList availableGrabbers(GrabberTypeFilter type = GrabberTypeFilter::ALL);
public:
template <typename Grabber_T>

View File

@ -38,7 +38,9 @@
// Forward class declaration
class HyperionDaemon;
class ImageProcessor;
#if defined(ENABLE_FORWARDER)
class MessageForwarder;
#endif
class LinearColorSmoothing;
class EffectEngine;
class MultiColorAdjustment;
@ -46,7 +48,7 @@ class ColorAdjustment;
class SettingsManager;
class BGEffectHandler;
class CaptureCont;
#if defined(ENABLE_BOBLIGHT)
#if defined(ENABLE_BOBLIGHT_SERVER)
class BoblightServer;
#endif
class LedDeviceWrapper;
@ -534,8 +536,10 @@ private:
/// Effect engine
EffectEngine * _effectEngine;
#if defined(ENABLE_FORWARDER)
// Message forwarder
MessageForwarder * _messageForwarder;
#endif
/// Logger instance
Logger * _log;
@ -555,7 +559,7 @@ private:
VideoMode _currVideoMode = VideoMode::VIDEO_2D;
#if defined(ENABLE_BOBLIGHT)
#if defined(ENABLE_BOBLIGHT_SERVER)
/// Boblight instance
BoblightServer* _boblightServer;
#endif

View File

@ -6,7 +6,7 @@
#include <utils/ColorRgb.h>
#include <utils/Components.h>
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
#include <QRecursiveMutex>
#else
#include <QMutex>
@ -129,7 +129,7 @@ protected:
/// contains all available led device constructors
static LedDeviceRegistry _ledDeviceMap;
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
static QRecursiveMutex _ledDeviceMapLock;
#else
static QMutex _ledDeviceMapLock;

View File

@ -2,7 +2,7 @@
#undef slots
#include <Python.h>
#define slots
#define slots Q_SLOTS
// decl
extern PyThreadState* mainThreadState;

View File

@ -87,6 +87,22 @@ private slots:
///
void handleMSearchRequest(const QString& target, const QString& mx, const QString address, quint16 port);
private:
WebServer* _webserver;
QString _localAddress;
QString _uuid;
/// Targets for announcement
std::vector<QString> _deviceList;
//Handle elements deprecated from Qt 6.x and reported as deprecatedsince 5.15.x
#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0))
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
#endif
private slots:
///
/// @brief Handle changes in the network configuration
/// @param conig New config
@ -96,12 +112,12 @@ private slots:
#endif
private:
WebServer* _webserver;
QString _localAddress;
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
QNetworkConfigurationManager* _NCA;
#endif
QString _uuid;
/// Targets for announcement
std::vector<QString> _deviceList;
#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0))
QT_WARNING_POP
#endif
};

View File

@ -15,8 +15,10 @@ enum Components
COMP_ALL,
COMP_SMOOTHING,
COMP_BLACKBORDER,
#if defined(ENABLE_FORWARDER)
COMP_FORWARDER,
#if defined(ENABLE_BOBLIGHT)
#endif
#if defined(ENABLE_BOBLIGHT_SERVER)
COMP_BOBLIGHTSERVER,
#endif
COMP_GRABBER,
@ -25,8 +27,12 @@ enum Components
COMP_IMAGE,
COMP_EFFECT,
COMP_LEDDEVICE,
#if defined(ENABLE_FLATBUF_SERVER)
COMP_FLATBUFSERVER,
#endif
#if defined(ENABLE_PROTOBUF_SERVER)
COMP_PROTOSERVER
#endif
};
inline const char* componentToString(Components c)
@ -36,8 +42,10 @@ inline const char* componentToString(Components c)
case COMP_ALL: return "Hyperion";
case COMP_SMOOTHING: return "Smoothing";
case COMP_BLACKBORDER: return "Blackborder detector";
#if defined(ENABLE_FORWARDER)
case COMP_FORWARDER: return "Json/Proto forwarder";
#if defined(ENABLE_BOBLIGHT)
#endif
#if defined(ENABLE_BOBLIGHT_SERVER)
case COMP_BOBLIGHTSERVER:return "Boblight server";
#endif
case COMP_GRABBER: return "Framegrabber";
@ -46,8 +54,12 @@ inline const char* componentToString(Components c)
case COMP_EFFECT: return "Effect";
case COMP_IMAGE: return "Image";
case COMP_LEDDEVICE: return "LED device";
#if defined(ENABLE_FLATBUF_SERVER)
case COMP_FLATBUFSERVER: return "Image Receiver";
#endif
#if defined(ENABLE_PROTOBUF_SERVER)
case COMP_PROTOSERVER: return "Proto Server";
#endif
default: return "";
}
}
@ -59,8 +71,10 @@ inline const char* componentToIdString(Components c)
case COMP_ALL: return "ALL";
case COMP_SMOOTHING: return "SMOOTHING";
case COMP_BLACKBORDER: return "BLACKBORDER";
#if defined(ENABLE_FORWARDER)
case COMP_FORWARDER: return "FORWARDER";
#if defined(ENABLE_BOBLIGHT)
#endif
#if defined(ENABLE_BOBLIGHT_SERVER)
case COMP_BOBLIGHTSERVER:return "BOBLIGHTSERVER";
#endif
case COMP_GRABBER: return "GRABBER";
@ -69,8 +83,12 @@ inline const char* componentToIdString(Components c)
case COMP_EFFECT: return "EFFECT";
case COMP_IMAGE: return "IMAGE";
case COMP_LEDDEVICE: return "LEDDEVICE";
#if defined(ENABLE_FLATBUF_SERVER)
case COMP_FLATBUFSERVER: return "FLATBUFSERVER";
#endif
#if defined(ENABLE_PROTOBUF_SERVER)
case COMP_PROTOSERVER: return "PROTOSERVER";
#endif
default: return "";
}
}
@ -81,8 +99,10 @@ inline Components stringToComponent(const QString& component)
if (cmp == "ALL") return COMP_ALL;
if (cmp == "SMOOTHING") return COMP_SMOOTHING;
if (cmp == "BLACKBORDER") return COMP_BLACKBORDER;
#if defined(ENABLE_FORWARDER)
if (cmp == "FORWARDER") return COMP_FORWARDER;
#if defined(ENABLE_BOBLIGHT)
#endif
#if defined(ENABLE_BOBLIGHT_SERVER)
if (cmp == "BOBLIGHTSERVER")return COMP_BOBLIGHTSERVER;
#endif
if (cmp == "GRABBER") return COMP_GRABBER;
@ -91,8 +111,12 @@ inline Components stringToComponent(const QString& component)
if (cmp == "EFFECT") return COMP_EFFECT;
if (cmp == "IMAGE") return COMP_IMAGE;
if (cmp == "LEDDEVICE") return COMP_LEDDEVICE;
#if defined(ENABLE_FLATBUF_SERVER)
if (cmp == "FLATBUFSERVER") return COMP_FLATBUFSERVER;
#endif
#if defined(ENABLE_PROTOBUF_SERVER)
if (cmp == "PROTOSERVER") return COMP_PROTOSERVER;
#endif
return COMP_INVALID;
}

View File

@ -7,7 +7,7 @@
#include <QAtomicInteger>
#include <QList>
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
#include <QRecursiveMutex>
#else
#include <QMutex>
@ -86,7 +86,7 @@ protected:
private:
void write(const Logger::T_LOG_MESSAGE & message);
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
static QRecursiveMutex MapLock;
#else
static QMutex MapLock;

View File

@ -1,4 +1,5 @@
#pragma once
#include <memory>
#include <QObject>
#include <QString>
@ -35,7 +36,7 @@ private:
SysInfo();
void getCPUInfo();
static SysInfo* _instance;
static std::unique_ptr <SysInfo> _instance;
HyperionSysInfo _sysinfo;
};

View File

@ -7,12 +7,23 @@ add_subdirectory(hyperion)
add_subdirectory(commandline)
add_subdirectory(blackborder)
add_subdirectory(jsonserver)
add_subdirectory(flatbufserver)
add_subdirectory(protoserver)
add_subdirectory(ssdp)
if(ENABLE_BOBLIGHT)
if(ENABLE_BOBLIGHT_SERVER)
add_subdirectory(boblightserver)
endif()
if(ENABLE_FLATBUF_SERVER OR ENABLE_FLATBUF_CONNECT)
add_subdirectory(flatbufserver)
endif()
if(ENABLE_PROTOBUF_SERVER)
add_subdirectory(protoserver)
endif()
if(ENABLE_FORWARDER)
add_subdirectory(forwarder)
endif()
add_subdirectory(leddevice)
add_subdirectory(utils)
add_subdirectory(effectengine)
@ -22,14 +33,15 @@ add_subdirectory(db)
add_subdirectory(api)
add_subdirectory(python)
if(ENABLE_CEC)
add_subdirectory(cec)
endif()
add_subdirectory(ssdp)
if(ENABLE_AVAHI)
add_subdirectory(bonjour)
endif()
if(ENABLE_CEC)
add_subdirectory(cec)
endif()
if(ENABLE_EXPERIMENTAL)
add_subdirectory(experimental)
endif()

View File

@ -512,34 +512,71 @@ void JsonAPI::handleServerInfoCommand(const QJsonObject &message, const QString
info["ledDevices"] = ledDevices;
QJsonObject grabbers;
QJsonArray availableGrabbers;
#if defined(ENABLE_DISPMANX) || defined(ENABLE_V4L2) || defined(ENABLE_MF) || defined(ENABLE_FB) || defined(ENABLE_AMLOGIC) || defined(ENABLE_OSX) || defined(ENABLE_X11) || defined(ENABLE_XCB) || defined(ENABLE_QT)
// *** Deprecated ***
//QJsonArray availableGrabbers;
//if ( GrabberWrapper::getInstance() != nullptr )
//{
// QStringList activeGrabbers = GrabberWrapper::getInstance()->getActive(_hyperion->getInstanceIndex());
// QJsonArray activeGrabberNames;
// for (auto grabberName : activeGrabbers)
// {
// activeGrabberNames.append(grabberName);
// }
// grabbers["active"] = activeGrabberNames;
//}
//for (auto grabber : GrabberWrapper::availableGrabbers(GrabberTypeFilter::ALL))
//{
// availableGrabbers.append(grabber);
//}
//grabbers["available"] = availableGrabbers;
QJsonObject screenGrabbers;
if (GrabberWrapper::getInstance() != nullptr)
{
QStringList activeGrabbers = GrabberWrapper::getInstance()->getActive(_hyperion->getInstanceIndex());
QStringList activeGrabbers = GrabberWrapper::getInstance()->getActive(_hyperion->getInstanceIndex(), GrabberTypeFilter::SCREEN);
QJsonArray activeGrabberNames;
for (auto grabberName : activeGrabbers)
{
activeGrabberNames.append(grabberName);
}
grabbers["active"] = activeGrabberNames;
screenGrabbers["active"] = activeGrabberNames;
}
// get available grabbers
for (auto grabber : GrabberWrapper::availableGrabbers())
QJsonArray availableScreenGrabbers;
for (auto grabber : GrabberWrapper::availableGrabbers(GrabberTypeFilter::SCREEN))
{
availableGrabbers.append(grabber);
availableScreenGrabbers.append(grabber);
}
screenGrabbers["available"] = availableScreenGrabbers;
QJsonObject videoGrabbers;
if (GrabberWrapper::getInstance() != nullptr)
{
QStringList activeGrabbers = GrabberWrapper::getInstance()->getActive(_hyperion->getInstanceIndex(), GrabberTypeFilter::VIDEO);
QJsonArray activeGrabberNames;
for (auto grabberName : activeGrabbers)
{
activeGrabberNames.append(grabberName);
}
#endif
videoGrabbers["active"] = activeGrabberNames;
}
QJsonArray availableVideoGrabbers;
for (auto grabber : GrabberWrapper::availableGrabbers(GrabberTypeFilter::VIDEO))
{
availableVideoGrabbers.append(grabber);
}
videoGrabbers["available"] = availableVideoGrabbers;
grabbers["available"] = availableGrabbers;
info["videomode"] = QString(videoMode2String(_hyperion->getCurrentVideoMode()));
grabbers.insert("screen", screenGrabbers);
grabbers.insert("video", videoGrabbers);
info["grabbers"] = grabbers;
info["videomode"] = QString(videoMode2String(_hyperion->getCurrentVideoMode()));
QJsonObject cecInfo;
#if defined(ENABLE_CEC)
cecInfo["enabled"] = true;
@ -548,6 +585,36 @@ void JsonAPI::handleServerInfoCommand(const QJsonObject &message, const QString
#endif
info["cec"] = cecInfo;
// get available services
QJsonArray services;
#if defined(ENABLE_BOBLIGHT_SERVER)
services.append("boblight");
#endif
#if defined(ENABLE_CEC)
services.append("cec");
#endif
#if defined(ENABLE_FORWARDER)
services.append("forwarder");
#endif
#if defined(ENABLE_FLATBUF_SERVER)
services.append("flatbuffer");
#endif
#if defined(ENABLE_PROTOBUF_SERVER)
services.append("protobuffer");
#endif
if (!availableScreenGrabbers.isEmpty() || !availableVideoGrabbers.isEmpty() || services.contains("flatbuffer") || services.contains("protobuffer"))
{
services.append("borderdetection");
}
info["services"] = services;
// get available components
QJsonArray component;
std::map<hyperion::Components, bool> components = _hyperion->getComponentRegister().getRegister();

View File

@ -43,6 +43,14 @@ BlackBorderProcessor::~BlackBorderProcessor()
void BlackBorderProcessor::handleSettingsUpdate(settings::type type, const QJsonDocument& config)
{
if(type == settings::BLACKBORDER)
{
if (_hyperion->isComponentEnabled(COMP_BLACKBORDER) == -1)
{
//Disable, if service is not available
_enabled = false;
_userEnabled = false;
}
else
{
const QJsonObject& obj = config.object();
_unknownSwitchCnt = obj["unknownFrameCnt"].toInt(600);
@ -67,6 +75,7 @@ void BlackBorderProcessor::handleSettingsUpdate(settings::type type, const QJson
handleCompStateChangeRequest(hyperion::COMP_BLACKBORDER, obj["enable"].toBool(true));
}
}
}
void BlackBorderProcessor::handleCompStateChangeRequest(hyperion::Components component, bool enable)
{

View File

@ -118,6 +118,8 @@ void BonjourServiceRegister::registerService(const BonjourRecord &record, quint1
connect(bonjourSocket, &QSocketNotifier::activated, this, &BonjourServiceRegister::bonjourSocketReadyRead);
}
}
TXTRecordDeallocate(&txtRec);
}

View File

@ -8,8 +8,6 @@ include_directories(
${FLATBUFFERS_INCLUDE_DIRS}
)
FILE ( GLOB FLATBUFSERVER_SOURCES "${CURRENT_HEADER_DIR}/*.h" "${CURRENT_SOURCE_DIR}/*.h" "${CURRENT_SOURCE_DIR}/*.cpp" )
set(Flatbuffer_GENERATED_FBS
hyperion_reply_generated.h
hyperion_request_generated.h
@ -28,7 +26,30 @@ set_source_files_properties(
${Flatbuffer_GENERATED_FBS} PROPERTIES GENERATED TRUE
)
### Split flatbufconnect from flatbufserver as flatbufserver relates to HyperionDaemon
if(ENABLE_FLATBUF_CONNECT)
add_library(flatbufconnect
${CURRENT_HEADER_DIR}/FlatBufferConnection.h
${CURRENT_SOURCE_DIR}/FlatBufferConnection.cpp
${FLATBUFSERVER_SOURCES}
${Flatbuffer_GENERATED_FBS}
)
target_link_libraries(flatbufconnect
hyperion-utils
flatbuffers
Qt${QT_VERSION_MAJOR}::Network
Qt${QT_VERSION_MAJOR}::Core
)
endif()
if(ENABLE_FLATBUF_SERVER)
add_library(flatbufserver
${CURRENT_HEADER_DIR}/FlatBufferServer.h
${CURRENT_SOURCE_DIR}/FlatBufferServer.cpp
${CURRENT_SOURCE_DIR}/FlatBufferClient.h
${CURRENT_SOURCE_DIR}/FlatBufferClient.cpp
${FLATBUFSERVER_SOURCES}
${Flatbuffer_GENERATED_FBS}
)
@ -39,3 +60,5 @@ target_link_libraries(flatbufserver
Qt${QT_VERSION_MAJOR}::Network
Qt${QT_VERSION_MAJOR}::Core
)
endif()

View File

@ -0,0 +1,24 @@
# Define the current source locations
SET(CURRENT_HEADER_DIR ${CMAKE_SOURCE_DIR}/include/forwarder)
SET(CURRENT_SOURCE_DIR ${CMAKE_SOURCE_DIR}/libsrc/forwarder)
if(ENABLE_FLATBUF_CONNECT)
include_directories(
${CMAKE_CURRENT_BINARY_DIR}/../../libsrc/flatbufserver
)
endif()
FILE ( GLOB Forwarder_SOURCES "${CURRENT_HEADER_DIR}/*.h" "${CURRENT_SOURCE_DIR}/*.h" "${CURRENT_SOURCE_DIR}/*.cpp" )
add_library(forwarder ${Forwarder_SOURCES} )
target_link_libraries(forwarder
hyperion
hyperion-utils
${QT_LIBRARIES}
)
if(ENABLE_FLATBUF_CONNECT)
target_link_libraries(forwarder flatbufconnect)
endif()

View File

@ -2,7 +2,7 @@
#include <stdexcept>
// project includes
#include <hyperion/MessageForwarder.h>
#include <forwarder/MessageForwarder.h>
// hyperion includes
#include <hyperion/Hyperion.h>

View File

@ -3,9 +3,11 @@
SET(CURRENT_HEADER_DIR ${CMAKE_SOURCE_DIR}/include/hyperion)
SET(CURRENT_SOURCE_DIR ${CMAKE_SOURCE_DIR}/libsrc/hyperion)
if(ENABLE_FLATBUF_SERVER)
include_directories(
${CMAKE_CURRENT_BINARY_DIR}/../../libsrc/flatbufserver
)
endif()
FILE ( GLOB Hyperion_SOURCES "${CURRENT_HEADER_DIR}/*.h" "${CURRENT_SOURCE_DIR}/*.h" "${CURRENT_SOURCE_DIR}/*.cpp" )
@ -19,18 +21,24 @@ add_library(hyperion
target_link_libraries(hyperion
blackborder
hyperion-utils
flatbufserver
flatbuffers
leddevice
effectengine
database
${QT_LIBRARIES}
)
if(ENABLE_BOBLIGHT)
if(ENABLE_BOBLIGHT_SERVER)
target_link_libraries(hyperion boblightserver)
endif()
if(ENABLE_FLATBUF_SERVER)
target_link_libraries(hyperion flatbufserver)
endif()
if(ENABLE_FORWARDER)
target_link_libraries(hyperion forwarder)
endif()
if (ENABLE_AVAHI)
target_link_libraries(hyperion bonjour)
endif ()

View File

@ -3,6 +3,8 @@
#include <hyperion/Hyperion.h>
#include <hyperion/GrabberWrapper.h>
using namespace hyperion;
ComponentRegister::ComponentRegister(Hyperion* hyperion)
@ -11,12 +13,45 @@ ComponentRegister::ComponentRegister(Hyperion* hyperion)
{
// init all comps to false
QVector<hyperion::Components> vect;
vect << COMP_ALL << COMP_SMOOTHING << COMP_BLACKBORDER << COMP_FORWARDER << COMP_GRABBER << COMP_V4L << COMP_LEDDEVICE;
vect << COMP_ALL << COMP_SMOOTHING << COMP_LEDDEVICE;
#if defined(ENABLE_BOBLIGHT)
bool areScreenGrabberAvailable = !GrabberWrapper::availableGrabbers(GrabberTypeFilter::VIDEO).isEmpty();
bool areVideoGrabberAvailable = !GrabberWrapper::availableGrabbers(GrabberTypeFilter::VIDEO).isEmpty();
bool flatBufServerAvailable { false };
bool protoBufServerAvailable{ false };
#if defined(ENABLE_FLATBUF_SERVER)
flatBufServerAvailable = true;
#endif
#if defined(ENABLE_PROTOBUF_SERVER)
protoBufServerAvailable = true;
#endif
if (areScreenGrabberAvailable)
{
vect << COMP_GRABBER;
}
if (areVideoGrabberAvailable)
{
vect << COMP_V4L;
}
if (areScreenGrabberAvailable || areVideoGrabberAvailable || flatBufServerAvailable || protoBufServerAvailable)
{
vect << COMP_BLACKBORDER;
}
#if defined(ENABLE_BOBLIGHT_SERVER)
vect << COMP_BOBLIGHTSERVER;
#endif
#if defined(ENABLE_FORWARDER)
vect << COMP_FORWARDER;
#endif
for(auto e : vect)
{
_componentStates.emplace(e, (e == COMP_ALL));
@ -35,6 +70,9 @@ int ComponentRegister::isComponentEnabled(hyperion::Components comp) const
}
void ComponentRegister::setNewComponentState(hyperion::Components comp, bool activated)
{
if (_componentStates.count(comp) > 0)
{
if (_componentStates[comp] != activated)
{
@ -44,6 +82,7 @@ void ComponentRegister::setNewComponentState(hyperion::Components comp, bool act
emit updatedComponentState(comp, activated);
}
}
}
void ComponentRegister::handleCompStateChangeRequest(hyperion::Components comps, bool activated)
{

View File

@ -83,31 +83,35 @@ bool GrabberWrapper::isActive() const
return _timer->isActive();
}
QStringList GrabberWrapper::getActive(int inst) const
QStringList GrabberWrapper::getActive(int inst, GrabberTypeFilter type) const
{
QStringList result = QStringList();
if(GRABBER_V4L_CLIENTS.contains(inst))
result << GRABBER_V4L_CLIENTS.value(inst);
if (type == GrabberTypeFilter::SCREEN || type == GrabberTypeFilter::ALL)
{
if (GRABBER_SYS_CLIENTS.contains(inst))
result << GRABBER_SYS_CLIENTS.value(inst);
}
if (type == GrabberTypeFilter::VIDEO || type == GrabberTypeFilter::ALL)
{
if (GRABBER_V4L_CLIENTS.contains(inst))
result << GRABBER_V4L_CLIENTS.value(inst);
}
return result;
}
QStringList GrabberWrapper::availableGrabbers()
QStringList GrabberWrapper::availableGrabbers(GrabberTypeFilter type)
{
QStringList grabbers;
if (type == GrabberTypeFilter::SCREEN || type == GrabberTypeFilter::ALL)
{
#ifdef ENABLE_DISPMANX
grabbers << "dispmanx";
#endif
#if defined(ENABLE_V4L2) || defined(ENABLE_MF)
grabbers << "v4l2";
#endif
#ifdef ENABLE_FB
grabbers << "framebuffer";
#endif
@ -135,6 +139,14 @@ QStringList GrabberWrapper::availableGrabbers()
#ifdef ENABLE_DX
grabbers << "dx";
#endif
}
if (type == GrabberTypeFilter::VIDEO || type == GrabberTypeFilter::ALL)
{
#if defined(ENABLE_V4L2) || defined(ENABLE_MF)
grabbers << "v4l2";
#endif
}
return grabbers;
}

View File

@ -9,7 +9,11 @@
// hyperion include
#include <hyperion/Hyperion.h>
#include <hyperion/MessageForwarder.h>
#if defined(ENABLE_FORWARDER)
#include <forwarder/MessageForwarder.h>
#endif
#include <hyperion/ImageProcessor.h>
#include <hyperion/ColorAdjustment.h>
@ -37,7 +41,7 @@
#include <hyperion/CaptureCont.h>
// Boblight
#if defined(ENABLE_BOBLIGHT)
#if defined(ENABLE_BOBLIGHT_SERVER)
#include <boblightserver/BoblightServer.h>
#endif
@ -53,14 +57,16 @@ Hyperion::Hyperion(quint8 instance, bool readonlyMode)
, _ledDeviceWrapper(nullptr)
, _deviceSmooth(nullptr)
, _effectEngine(nullptr)
#if defined(ENABLE_FORWARDER)
, _messageForwarder(nullptr)
#endif
, _log(Logger::getInstance("HYPERION"))
, _hwLedCount()
, _ledGridSize(hyperion::getLedLayoutGridSize(getSetting(settings::LEDS).array()))
, _BGEffectHandler(nullptr)
, _captureCont(nullptr)
, _ledBuffer(_ledString.leds().size(), ColorRgb::BLACK)
#if defined(ENABLE_BOBLIGHT)
#if defined(ENABLE_BOBLIGHT_SERVER)
, _boblightServer(nullptr)
#endif
, _readOnlyMode(readonlyMode)
@ -127,11 +133,13 @@ void Hyperion::start()
//Start in pause mode, a new priority will activate smoothing (either start-effect or grabber)
_deviceSmooth->setPause(true);
#if defined(ENABLE_FORWARDER)
// create the message forwarder only on main instance
if (_instIndex == 0)
{
_messageForwarder = new MessageForwarder(this);
}
#endif
// create the effect engine; needs to be initialized after smoothing!
_effectEngine = new EffectEngine(this);
@ -155,7 +163,7 @@ void Hyperion::start()
// if there is no startup / background effect and no sending capture interface we probably want to push once BLACK (as PrioMuxer won't emit a priority change)
update();
#if defined(ENABLE_BOBLIGHT)
#if defined(ENABLE_BOBLIGHT_SERVER)
// boblight, can't live in global scope as it depends on layout
_boblightServer = new BoblightServer(this, getSetting(settings::BOBLSERVER));
connect(this, &Hyperion::settingsChanged, _boblightServer, &BoblightServer::handleSettingsUpdate);
@ -177,13 +185,18 @@ void Hyperion::freeObjects()
clear(-1,true);
// delete components on exit of hyperion core
#if defined(ENABLE_BOBLIGHT)
#if defined(ENABLE_BOBLIGHT_SERVER)
delete _boblightServer;
#endif
delete _captureCont;
delete _effectEngine;
delete _raw2ledAdjustment;
#if defined(ENABLE_FORWARDER)
delete _messageForwarder;
#endif
delete _settingsManager;
delete _ledDeviceWrapper;
}

View File

@ -17,7 +17,7 @@
LedDeviceRegistry LedDeviceWrapper::_ledDeviceMap {};
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
QRecursiveMutex LedDeviceWrapper::_ledDeviceMapLock;
#else
QMutex LedDeviceWrapper::_ledDeviceMapLock{ QMutex::Recursive };

View File

@ -11,7 +11,6 @@ include_directories(
set(ProtoServer_PROTOS ${CURRENT_SOURCE_DIR}/message.proto )
protobuf_generate_cpp(ProtoServer_PROTO_SRCS ProtoServer_PROTO_HDRS ${ProtoServer_PROTOS} )
### Split protoclient from protoserver as protoserver relates to HyperionDaemon and standalone capture binarys can't link to it
add_library(protoclient
@ -27,12 +26,16 @@ add_library(protoserver
)
# disable warnings for auto generated proto files, we can't change the files ....
SET_SOURCE_FILES_PROPERTIES ( ${ProtoServer_PROTO_SRCS} ${ProtoServer_PROTO_HDRS} ${ProtoServer_PROTOS} PROPERTIES COMPILE_FLAGS -w )
if (CMAKE_COMPILER_IS_GNUCC OR CMAKE_COMPILER_IS_GNUCXX)
set_source_files_properties(${ProtoServer_PROTO_SRCS} ${ProtoServer_PROTO_HDRS} ${ProtoServer_PROTOS} PROPERTIES COMPILE_FLAGS "-w -Wno-return-local-addr")
elseif(MSVC)
set_source_files_properties(${ProtoServer_PROTO_SRCS} ${ProtoServer_PROTO_HDRS} ${ProtoServer_PROTOS} PROPERTIES COMPILE_FLAGS "/W0")
endif()
target_link_libraries(protoclient
hyperion
hyperion-utils
protobuf
libprotobuf
Qt${QT_VERSION_MAJOR}::Gui
)

View File

@ -1,3 +1,4 @@
syntax = "proto2";
package proto;
message HyperionRequest {

View File

@ -31,7 +31,8 @@ PythonInit::PythonInit()
#if defined(ENABLE_DEPLOY_DEPENDENCIES)
// Set Program name
Py_SetProgramName(L"Hyperion");
wchar_t programName[] = L"Hyperion";
Py_SetProgramName(programName);
// set Python module path when exists
QString py_path = QDir::cleanPath(qApp->applicationDirPath() + "/../lib/python" + STRINGIFY(PYTHON_VERSION_MAJOR) + "." + STRINGIFY(PYTHON_VERSION_MINOR));

View File

@ -51,8 +51,17 @@ void SSDPHandler::initServer()
SSDPServer::initServer();
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0))
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
#endif
_NCA = new QNetworkConfigurationManager(this);
connect(_NCA, &QNetworkConfigurationManager::configurationChanged, this, &SSDPHandler::handleNetworkConfigurationChanged);
#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0))
QT_WARNING_POP
#endif
#endif
// listen for mSearchRequestes
@ -144,6 +153,10 @@ void SSDPHandler::handleWebServerStateChange(bool newState)
}
#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0))
#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0))
QT_WARNING_PUSH
QT_WARNING_DISABLE_DEPRECATED
#endif
void SSDPHandler::handleNetworkConfigurationChanged(const QNetworkConfiguration& config)
{
// get localAddress from interface
@ -160,6 +173,9 @@ void SSDPHandler::handleNetworkConfigurationChanged(const QNetworkConfiguration
sendAnnounceList(true);
}
}
#if (QT_VERSION >= QT_VERSION_CHECK(5, 15, 0))
QT_WARNING_POP
#endif
#endif
QString SSDPHandler::getLocalAddress() const

View File

@ -27,7 +27,9 @@ static const QString UPNP_ALIVE_MESSAGE = "NOTIFY * HTTP/1.1\r\n"
"NTS: ssdp:alive\r\n"
"SERVER: %4\r\n"
"USN: uuid:%5\r\n"
#if defined(ENABLE_FLATBUF_SERVER)
"HYPERION-FBS-PORT: %6\r\n"
#endif
"HYPERION-JSS-PORT: %7\r\n"
"HYPERION-NAME: %8\r\n"
"\r\n";
@ -72,7 +74,9 @@ static const QString UPNP_MSEARCH_RESPONSE = "HTTP/1.1 200 OK\r\n"
"SERVER: %4\r\n"
"ST: %5\r\n"
"USN: uuid:%6\r\n"
#if defined(ENABLE_FLATBUF_SERVER)
"HYPERION-FBS-PORT: %7\r\n"
#endif
"HYPERION-JSS-PORT: %8\r\n"
"HYPERION-NAME: %9\r\n"
"\r\n";
@ -175,7 +179,9 @@ void SSDPServer::sendMSearchResponse(const QString& st, const QString& senderIp,
, _serverHeader
, st
, _uuid
#if defined(ENABLE_FLATBUF_SERVER)
, _fbsPort
#endif
, _jssPort
, _name );
@ -202,7 +208,9 @@ void SSDPServer::sendAlive(const QString& st)
, st
, _serverHeader
, tempUSN
#if defined(ENABLE_FLATBUF_SERVER)
, _fbsPort
#endif
, _jssPort
, _name );

View File

@ -17,7 +17,7 @@
#include <QThreadStorage>
#include <time.h>
#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0))
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
QRecursiveMutex Logger::MapLock;
#else
QMutex Logger::MapLock{ QMutex::Recursive };

View File

@ -1,10 +1,25 @@
#ifdef _WIN32
#include <QCoreApplication>
#include <QProcess>
#include <utils/Logger.h>
#include <QString>
#include <QByteArray>
namespace Process {
void restartHyperion(bool asNewProcess) {}
void restartHyperion(bool asNewProcess)
{
Logger* log = Logger::getInstance("Process");
Info(log, "Restarting hyperion ...");
auto arguments = QCoreApplication::arguments();
if (!arguments.contains("--wait-hyperion"))
arguments << "--wait-hyperion";
QProcess::startDetached(QCoreApplication::applicationFilePath(), arguments);
QCoreApplication::quit();
}
QByteArray command_exec(const QString& /*cmd*/, const QByteArray& /*data*/)
{

View File

@ -15,7 +15,7 @@
#include <shlobj_core.h>
#endif
SysInfo* SysInfo::_instance = nullptr;
std::unique_ptr<SysInfo> SysInfo::_instance = nullptr;
SysInfo::SysInfo()
: QObject()
@ -38,7 +38,7 @@ SysInfo::SysInfo()
SysInfo::HyperionSysInfo SysInfo::get()
{
if (SysInfo::_instance == nullptr)
SysInfo::_instance = new SysInfo();
SysInfo::_instance = std::unique_ptr<SysInfo>(new SysInfo());
return SysInfo::_instance->_sysinfo;
}

View File

@ -0,0 +1 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" width="24" height="24" viewBox="0 0 24 24"><path d="M12,4C14.1,4 16.1,4.8 17.6,6.3C20.7,9.4 20.7,14.5 17.6,17.6C15.8,19.5 13.3,20.2 10.9,19.9L11.4,17.9C13.1,18.1 14.9,17.5 16.2,16.2C18.5,13.9 18.5,10.1 16.2,7.7C15.1,6.6 13.5,6 12,6V10.6L7,5.6L12,0.6V4M6.3,17.6C3.7,15 3.3,11 5.1,7.9L6.6,9.4C5.5,11.6 5.9,14.4 7.8,16.2C8.3,16.7 8.9,17.1 9.6,17.4L9,19.4C8,19 7.1,18.4 6.3,17.6Z" /></svg>

After

Width:  |  Height:  |  Size: 618 B

View File

@ -46,7 +46,6 @@ parts:
- libavahi-compat-libdnssd-dev
- libturbojpeg0-dev
- libssl-dev
- zlib1g-dev
stage-packages:
- libfontconfig1
- libfreetype6

View File

@ -2,34 +2,34 @@ add_subdirectory(hyperiond)
add_subdirectory(hyperion-remote)
# The following binaries are just compiled if requested
if (ENABLE_AMLOGIC)
if (ENABLE_AMLOGIC AND ENABLE_FLATBUF_CONNECT)
add_subdirectory(hyperion-aml)
endif()
if(ENABLE_V4L2)
if(ENABLE_V4L2 AND ENABLE_FLATBUF_CONNECT)
add_subdirectory(hyperion-v4l2)
endif()
if(ENABLE_X11)
if(ENABLE_X11 AND ENABLE_FLATBUF_CONNECT)
add_subdirectory(hyperion-x11)
endif()
if(ENABLE_XCB)
if(ENABLE_XCB AND ENABLE_FLATBUF_CONNECT)
add_subdirectory(hyperion-xcb)
endif()
if(ENABLE_DISPMANX)
if(ENABLE_DISPMANX AND ENABLE_FLATBUF_CONNECT)
add_subdirectory(hyperion-dispmanx)
endif()
if(ENABLE_FB)
if(ENABLE_FB AND ENABLE_FLATBUF_CONNECT)
add_subdirectory(hyperion-framebuffer)
endif()
if(ENABLE_QT)
if(ENABLE_QT AND ENABLE_FLATBUF_CONNECT)
add_subdirectory(hyperion-qt)
endif()
if(ENABLE_OSX)
if(ENABLE_OSX AND ENABLE_FLATBUF_CONNECT)
add_subdirectory(hyperion-osx)
endif()

View File

@ -25,7 +25,7 @@ add_executable(${PROJECT_NAME}
target_link_libraries(${PROJECT_NAME}
commandline
hyperion-utils
flatbufserver
flatbufconnect
flatbuffers
amlogic-grabber
framebuffer-grabber

View File

@ -44,7 +44,7 @@ int main(int argc, char ** argv)
// create the option parser and initialize all parser
Parser parser("AmLogic capture application for Hyperion. Will automatically search a Hyperion server if -a option isn't used. Please note that if you have more than one server running it's more or less random which one will be used.");
IntOption & argFps = parser.add<IntOption> ('f', "framerate", "Capture frame rate. %1", QString("Range %1-%2fps, default: [%3]").arg(GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_RATE_HZ), GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ, GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ);
IntOption & argFps = parser.add<IntOption> ('f', "framerate", QString("Capture frame rate. Range %1-%2fps").arg(GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ), QString::number(GrabberWrapper::DEFAULT_RATE_HZ), GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ, GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ);
IntOption & argSizeDecimation = parser.add<IntOption> ('s', "size-decimator", "Decimation factor for the output image size [default=%1]", QString::number(GrabberWrapper::DEFAULT_PIXELDECIMATION), 1);
IntOption & argCropLeft = parser.add<IntOption> (0x0, "crop-left", "Number of pixels to crop from the left of the picture before decimation");

View File

@ -33,7 +33,7 @@ add_executable( ${PROJECT_NAME}
target_link_libraries( ${PROJECT_NAME}
commandline
hyperion-utils
flatbufserver
flatbufconnect
flatbuffers
dispmanx-grabber
${Dispmanx_LIBRARIES}

View File

@ -45,7 +45,7 @@ int main(int argc, char ** argv)
// create the option parser and initialize all parameters
Parser parser("Dispmanx capture application for Hyperion. Will automatically search a Hyperion server if -a option isn't used. Please note that if you have more than one server running it's more or less random which one will be used.");
IntOption & argFps = parser.add<IntOption> ('f', "framerate", "Capture frame rate. %1", QString("Range %1-%2fps, default: [%3]").arg(GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_RATE_HZ), GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ, GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ);
IntOption & argFps = parser.add<IntOption> ('f', "framerate", QString("Capture frame rate. Range %1-%2fps").arg(GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ), QString::number(GrabberWrapper::DEFAULT_RATE_HZ), GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ, GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ);
IntOption & argSizeDecimation = parser.add<IntOption> ('s', "size-decimator", "Decimation factor for the output image size [default=%1]", QString::number(GrabberWrapper::DEFAULT_PIXELDECIMATION), 1);
IntOption & argCropLeft = parser.add<IntOption> (0x0, "crop-left", "Number of pixels to crop from the left of the picture before decimation");

View File

@ -25,7 +25,7 @@ add_executable( ${PROJECT_NAME}
target_link_libraries( ${PROJECT_NAME}
commandline
hyperion-utils
flatbufserver
flatbufconnect
flatbuffers
framebuffer-grabber
ssdp

View File

@ -46,7 +46,7 @@ int main(int argc, char ** argv)
Option & argDevice = parser.add<Option> ('d', "device", "Set the framebuffer device [default: %1]", "/dev/fb0");
IntOption & argFps = parser.add<IntOption> ('f', "framerate", "Capture frame rate. %1", QString("Range %1-%2fps, default: [%3]").arg(GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_RATE_HZ), GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ, GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ);
IntOption & argFps = parser.add<IntOption> ('f', "framerate", QString("Capture frame rate. Range %1-%2fps").arg(GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ), QString::number(GrabberWrapper::DEFAULT_RATE_HZ), GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ, GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ);
IntOption & argSizeDecimation = parser.add<IntOption> ('s', "size-decimator", "Decimation factor for the output image size [default=%1]", QString::number(GrabberWrapper::DEFAULT_PIXELDECIMATION), 1);
IntOption & argCropLeft = parser.add<IntOption> (0x0, "crop-left", "Number of pixels to crop from the left of the picture before decimation");

View File

@ -25,7 +25,7 @@ add_executable( ${PROJECT_NAME}
target_link_libraries( ${PROJECT_NAME}
commandline
hyperion-utils
flatbufserver
flatbufconnect
flatbuffers
osx-grabber
ssdp

View File

@ -40,7 +40,7 @@ int main(int argc, char ** argv)
IntOption & argDisplay = parser.add<IntOption> ('d', "display", "Set the display to capture [default: %1]", "0");
IntOption & argFps = parser.add<IntOption> ('f', "framerate", "Capture frame rate. %1", QString("Range %1-%2fps, default: [%3]").arg(GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_RATE_HZ), GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ, GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ);
IntOption & argFps = parser.add<IntOption> ('f', "framerate", QString("Capture frame rate. Range %1-%2fps").arg(GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ), QString::number(GrabberWrapper::DEFAULT_RATE_HZ), GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ, GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ);
IntOption & argSizeDecimation = parser.add<IntOption> ('s', "size-decimator", "Decimation factor for the output image size [default=%1]", QString::number(GrabberWrapper::DEFAULT_PIXELDECIMATION), 1);
IntOption & argCropLeft = parser.add<IntOption> (0x0, "crop-left", "Number of pixels to crop from the left of the picture before decimation");

View File

@ -32,7 +32,7 @@ add_executable(${PROJECT_NAME}
target_link_libraries(${PROJECT_NAME}
commandline
qt-grabber
flatbufserver
flatbufconnect
flatbuffers
ssdp
Qt${QT_VERSION_MAJOR}::Core

View File

@ -47,7 +47,7 @@ int main(int argc, char ** argv)
IntOption & argDisplay = parser.add<IntOption> ('d', "display", "Set the display to capture [default: %1]", "0");
IntOption & argFps = parser.add<IntOption> ('f', "framerate", "Capture frame rate. %1", QString("Range %1-%2fps, default: [%3]").arg(GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_RATE_HZ), GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ, GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ);
IntOption & argFps = parser.add<IntOption> ('f', "framerate", QString("Capture frame rate. Range %1-%2fps").arg(GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ), QString::number(GrabberWrapper::DEFAULT_RATE_HZ), GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ, GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ);
IntOption & argSizeDecimation = parser.add<IntOption> ('s', "size-decimator", "Decimation factor for the output image size [default=%1]", QString::number(GrabberWrapper::DEFAULT_PIXELDECIMATION), 1);
IntOption & argCropLeft = parser.add<IntOption> (0x0, "crop-left", "Number of pixels to crop from the left of the picture before decimation");

View File

@ -93,7 +93,7 @@ int main(int argc, char * argv[])
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// art variable definition append art to Parser short-, long option description, optional default value //
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Option & argAddress = parser.add<Option> ('a', "address" , "The hostname or IP-address (IPv4 or IPv6) of the hyperion server.\nDefault port: 19444.\nSample addresses:\nHost : hyperion.fritz.box\nIPv4 : 127.0.0.1:19444\nIPv6 : [2001:1:2:3:4:5:6:7]");
Option & argAddress = parser.add<Option> ('a', "address" , "The hostname or IP-address (IPv4 or IPv6) of the hyperion server.\nDefault port: 19444.\nSample addresses:\nHost : hyperion.fritz.box\nIPv4 : 127.0.0.1:19444\nIPv6 : [2001:1:2:3:4:5:6:7]", "127.0.0.1");
Option & argToken = parser.add<Option> ('t', "token" , "If authorization tokens are required, this token is used");
Option & argInstance = parser.add<Option> ('I', "instance" , "Select a specific target instance by name for your command. By default it uses always the first instance");
IntOption & argPriority = parser.add<IntOption> ('p', "priority" , "Used to the provided priority channel (suggested 2-99) [default: %1]", "50");
@ -200,7 +200,7 @@ int main(int argc, char * argv[])
// server searching by ssdp
QString address = argAddress.value(parser);
if(argAddress.value(parser) == "127.0.0.1:19444")
if(address == "127.0.0.1" || address == "127.0.0.1:19444")
{
SSDPDiscover discover;
address = discover.getFirstService(searchType::STY_JSONSERVER);

View File

@ -26,7 +26,7 @@ target_link_libraries(${PROJECT_NAME}
v4l2-grabber
commandline
hyperion-utils
flatbufserver
flatbufconnect
flatbuffers
ssdp
Qt${QT_VERSION_MAJOR}::Core

View File

@ -57,7 +57,8 @@ int main(int argc, char** argv)
IntOption & argInput = parser.add<IntOption> ('i', "input", "The device input [default: %1]", "0");
SwitchOption<VideoStandard> & argVideoStandard= parser.add<SwitchOption<VideoStandard>>('v', "video-standard", "The used video standard. Valid values are PAL, NTSC, SECAM or no-change. [default: %1]", "no-change");
SwitchOption<PixelFormat> & argPixelFormat = parser.add<SwitchOption<PixelFormat>> (0x0, "pixel-format", "The use pixel format. Valid values are YUYV, UYVY, RGB32, MJPEG or no-change. [default: %1]", "no-change");
IntOption & argFps = parser.add<IntOption> ('f', "framerate", "Capture frame rate. %1", QString("Range %1-%2fps, default: [%3]").arg(GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_RATE_HZ), GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ, GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ);
IntOption & argFps = parser.add<IntOption> ('f', "framerate", QString("Capture frame rate. Range %1-%2fps").arg(GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ), QString::number(GrabberWrapper::DEFAULT_RATE_HZ), GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ, GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ);
SwitchOption<FlipMode> & argFlipMode = parser.add<SwitchOption<FlipMode>>(0x0, "flip-mode", "The used image flip mode. Valid values are HORIZONTAL, VERTICAL, BOTH or no-change. [default: %1]", "no-change");
IntOption & argWidth = parser.add<IntOption> ('w', "width", "Width of the captured image [default: %1]", "640", 640);
IntOption & argHeight = parser.add<IntOption> ('h', "height", "Height of the captured image [default: %1]", "480", 480);

View File

@ -32,7 +32,7 @@ add_executable(${PROJECT_NAME}
target_link_libraries(${PROJECT_NAME}
commandline
hyperion-utils
flatbufserver
flatbufconnect
flatbuffers
x11-grabber
ssdp

View File

@ -41,7 +41,7 @@ int main(int argc, char ** argv)
// create the option parser and initialize all parameters
Parser parser("X11 capture application for Hyperion. Will automatically search a Hyperion server if -a option isn't used. Please note that if you have more than one server running it's more or less random which one will be used.");
IntOption & argFps = parser.add<IntOption> ('f', "framerate", "Capture frame rate. %1", QString("Range %1-%2fps, default: [%3]").arg(GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_RATE_HZ), GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ, GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ);
IntOption & argFps = parser.add<IntOption> ('f', "framerate", QString("Capture frame rate. Range %1-%2fps").arg(GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ), QString::number(GrabberWrapper::DEFAULT_RATE_HZ), GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ, GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ);
IntOption & argSizeDecimation = parser.add<IntOption> ('s', "size-decimator", "Decimation factor for the output image size [default=%1]", QString::number(GrabberWrapper::DEFAULT_PIXELDECIMATION), 1);
IntOption & argCropWidth = parser.add<IntOption> (0x0, "crop-width", "Number of pixels to crop from the left and right sides of the picture before decimation [default: %1]", "0");

View File

@ -25,7 +25,7 @@ add_executable(${PROJECT_NAME}
target_link_libraries(${PROJECT_NAME}
commandline
hyperion-utils
flatbufserver
flatbufconnect
flatbuffers
xcb-grabber
ssdp

View File

@ -41,7 +41,7 @@ int main(int argc, char ** argv)
// create the option parser and initialize all parameters
Parser parser("XCB capture application for Hyperion. Will automatically search a Hyperion server if -a option isn't used. Please note that if you have more than one server running it's more or less random which one will be used.");
IntOption & argFps = parser.add<IntOption> ('f', "framerate", "Capture frame rate. %1", QString("Range %1-%2fps, default: [%3]").arg(GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_RATE_HZ), GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ, GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ);
IntOption & argFps = parser.add<IntOption> ('f', "framerate", QString("Capture frame rate. Range %1-%2fps").arg(GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ).arg(GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ), QString::number(GrabberWrapper::DEFAULT_RATE_HZ), GrabberWrapper::DEFAULT_MIN_GRAB_RATE_HZ, GrabberWrapper::DEFAULT_MAX_GRAB_RATE_HZ);
IntOption & argSizeDecimation = parser.add<IntOption> ('s', "size-decimator", "Decimation factor for the output image size [default=%1]", QString::number(GrabberWrapper::DEFAULT_PIXELDECIMATION), 1);
IntOption & argCropWidth = parser.add<IntOption> (0x0, "crop-width", "Number of pixels to crop from the left and right sides of the picture before decimation [default: %1]", "0");

View File

@ -49,8 +49,6 @@ target_link_libraries(${PROJECT_NAME}
hyperion
effectengine
jsonserver
flatbufserver
protoserver
webserver
ssdp
database
@ -68,6 +66,15 @@ else()
target_link_libraries( ${PROJECT_NAME} ${PYTHON_LIBRARIES} )
endif()
if(ENABLE_FLATBUF_SERVER)
target_link_libraries(${PROJECT_NAME} flatbufserver)
endif()
if(ENABLE_PROTOBUF_SERVER)
target_link_libraries(${PROJECT_NAME} protoserver)
endif()
if (ENABLE_AVAHI)
target_link_libraries(${PROJECT_NAME} bonjour)
endif (ENABLE_AVAHI)
@ -137,13 +144,13 @@ endif (ENABLE_CEC)
if (APPLE)
set_target_properties( ${PROJECT_NAME} PROPERTIES
MACOSX_BUNDLE TRUE
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/cmake/osxbundle/Info.plist
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_SOURCE_DIR}/cmake/osxbundle/Info.plist.in
MACOSX_BUNDLE_BUNDLE_NAME "Hyperion"
MACOSX_BUNDLE_BUNDLE_VERSION ${HYPERION_VERSION}
MACOSX_BUNDLE_COPYRIGHT "Copyright (c) 2014-2021 Hyperion Project"
MACOSX_BUNDLE_GUI_IDENTIFIER "com.hyperion-project.${PROJECT_NAME}"
MACOSX_BUNDLE_ICON_FILE "Hyperion.icns"
MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME} Version ${HYPERION_VERSION}"
MACOSX_BUNDLE_INFO_STRING "${PROJECT_NAME} ${HYPERION_VERSION}"
MACOSX_BUNDLE_LONG_VERSION_STRING ${HYPERION_VERSION}
MACOSX_BUNDLE_SHORT_VERSION_STRING ${HYPERION_VERSION}
)

View File

@ -29,10 +29,14 @@
#include "hyperiond.h"
// Flatbuffer Server
#ifdef ENABLE_FLATBUF_SERVER
#include <flatbufserver/FlatBufferServer.h>
#endif
// Protobuffer Server
#ifdef ENABLE_PROTOBUF_SERVER
#include <protoserver/ProtoServer.h>
#endif
// ssdp
#include <ssdp/SSDPHandler.h>
@ -83,7 +87,9 @@ HyperionDaemon::HyperionDaemon(const QString& rootPath, QObject* parent, bool lo
, _qtGrabber(nullptr)
, _dxGrabber(nullptr)
, _ssdp(nullptr)
#ifdef ENABLE_CEC
, _cecHandler(nullptr)
#endif
, _currVideoMode(VideoMode::VIDEO_2D)
{
HyperionDaemon::daemon = this;
@ -179,6 +185,7 @@ void HyperionDaemon::freeObjects()
delete _jsonServer;
_jsonServer = nullptr;
#if defined(ENABLE_FLATBUF_SERVER)
if (_flatBufferServer != nullptr)
{
auto flatBufferServerThread = _flatBufferServer->thread();
@ -187,7 +194,9 @@ void HyperionDaemon::freeObjects()
delete flatBufferServerThread;
_flatBufferServer = nullptr;
}
#endif
#if defined(ENABLE_PROTOBUF_SERVER)
if (_protoServer != nullptr)
{
auto protoServerThread = _protoServer->thread();
@ -196,6 +205,7 @@ void HyperionDaemon::freeObjects()
delete protoServerThread;
_protoServer = nullptr;
}
#endif
//ssdp before webserver
if (_ssdp != nullptr)
@ -268,6 +278,7 @@ void HyperionDaemon::startNetworkServices()
_jsonServer = new JsonServer(getSetting(settings::JSONSERVER));
connect(this, &HyperionDaemon::settingsChanged, _jsonServer, &JsonServer::handleSettingsUpdate);
#if defined(ENABLE_FLATBUF_SERVER)
// Create FlatBuffer server in thread
_flatBufferServer = new FlatBufferServer(getSetting(settings::FLATBUFSERVER));
QThread* fbThread = new QThread(this);
@ -277,7 +288,9 @@ void HyperionDaemon::startNetworkServices()
connect(fbThread, &QThread::finished, _flatBufferServer, &FlatBufferServer::deleteLater);
connect(this, &HyperionDaemon::settingsChanged, _flatBufferServer, &FlatBufferServer::handleSettingsUpdate);
fbThread->start();
#endif
#if defined(ENABLE_PROTOBUF_SERVER)
// Create Proto server in thread
_protoServer = new ProtoServer(getSetting(settings::PROTOSERVER));
QThread* pThread = new QThread(this);
@ -287,6 +300,7 @@ void HyperionDaemon::startNetworkServices()
connect(pThread, &QThread::finished, _protoServer, &ProtoServer::deleteLater);
connect(this, &HyperionDaemon::settingsChanged, _protoServer, &ProtoServer::handleSettingsUpdate);
pThread->start();
#endif
// Create Webserver in thread
_webserver = new WebServer(getSetting(settings::WEBSERVER), false);
@ -416,8 +430,6 @@ void HyperionDaemon::handleSettingsUpdate(settings::type settingsType, const QJs
if (_prevType != type)
{
Info(_log, "set screen capture device to '%s'", QSTRING_CSTR(type));
// stop all capture interfaces
#ifdef ENABLE_FB
if (_fbGrabber != nullptr)

View File

@ -58,6 +58,8 @@
typedef QObject DirectXWrapper;
#endif
#include <hyperion/GrabberWrapper.h>
#include <utils/Logger.h>
#include <utils/VideoMode.h>
@ -180,10 +182,16 @@ private:
QtWrapper* _qtGrabber;
DirectXWrapper* _dxGrabber;
SSDPHandler* _ssdp;
CECHandler* _cecHandler;
FlatBufferServer* _flatBufferServer;
ProtoServer* _protoServer;
#ifdef ENABLE_CEC
CECHandler* _cecHandler;
#endif
#if defined(ENABLE_FLATBUF_SERVER)
FlatBufferServer* _flatBufferServer;
#endif
#if defined(ENABLE_PROTOBUF_SERVER)
ProtoServer* _protoServer;
#endif
int _grabber_width;
int _grabber_height;
int _grabber_pixelDecimation;

View File

@ -14,6 +14,7 @@
#include <QSettings>
#include <utils/ColorRgb.h>
#include <utils/Process.h>
#include <effectengine/EffectDefinition.h>
#include <effectengine/Effect.h>
#include <webserver/WebServer.h>
@ -72,19 +73,23 @@ void SysTray::createTrayIcon()
quitAction = new QAction(tr("&Quit"), this);
quitAction->setIcon(QPixmap(":/quit.svg"));
connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit()));
connect(quitAction, &QAction::triggered, qApp, QApplication::quit);
restartAction = new QAction(tr("&Restart"), this);
restartAction->setIcon(QPixmap(":/restart.svg"));
connect(restartAction, &QAction::triggered, this , [=](){ Process::restartHyperion(); });
colorAction = new QAction(tr("&Color"), this);
colorAction->setIcon(QPixmap(":/color.svg"));
connect(colorAction, SIGNAL(triggered()), this, SLOT(showColorDialog()));
connect(colorAction, &QAction::triggered, this, &SysTray::showColorDialog);
settingsAction = new QAction(tr("&Settings"), this);
settingsAction->setIcon(QPixmap(":/settings.svg"));
connect(settingsAction, SIGNAL(triggered()), this, SLOT(settings()));
connect(settingsAction, &QAction::triggered, this, &SysTray::settings);
clearAction = new QAction(tr("&Clear"), this);
clearAction->setIcon(QPixmap(":/clear.svg"));
connect(clearAction, SIGNAL(triggered()), this, SLOT(clearEfxColor()));
connect(clearAction, &QAction::triggered, this, &SysTray::clearEfxColor);
const std::list<EffectDefinition> efxs = _hyperion->getEffects();
_trayIconMenu = new QMenu(this);
@ -98,7 +103,7 @@ void SysTray::createTrayIcon()
if (efx.file.mid(0, 1) != ":")
{
QAction *efxAction = new QAction(efx.name, this);
connect(efxAction, SIGNAL(triggered()), this, SLOT(setEffect()));
connect(efxAction, &QAction::triggered, this, &SysTray::setEffect);
_trayIconEfxMenu->addAction(efxAction);
}
}
@ -113,7 +118,7 @@ void SysTray::createTrayIcon()
if (efx.file.mid(0, 1) == ":")
{
QAction *efxAction = new QAction(efx.name, this);
connect(efxAction, SIGNAL(triggered()), this, SLOT(setEffect()));
connect(efxAction, &QAction::triggered, this, &SysTray::setEffect);
_trayIconEfxMenu->addAction(efxAction);
}
}
@ -121,7 +126,7 @@ void SysTray::createTrayIcon()
#ifdef _WIN32
autorunAction = new QAction(tr("&Disable autostart"), this);
autorunAction->setIcon(QPixmap(":/autorun.svg"));
connect(autorunAction, SIGNAL(triggered()), this, SLOT(setAutorunState()));
connect(autorunAction, &QAction::triggered, this, &SysTray::setAutorunState);
_trayIconMenu->addAction(autorunAction);
_trayIconMenu->addSeparator();
@ -133,6 +138,7 @@ void SysTray::createTrayIcon()
_trayIconMenu->addMenu(_trayIconEfxMenu);
_trayIconMenu->addAction(clearAction);
_trayIconMenu->addSeparator();
_trayIconMenu->addAction(restartAction);
_trayIconMenu->addAction(quitAction);
_trayIcon = new QSystemTrayIcon(this);
@ -242,12 +248,10 @@ void SysTray::handleInstanceStateChange(InstanceState state, quint8 instance, co
_hyperion = _instanceManager->getHyperionInstance(0);
createTrayIcon();
connect(_trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)),
this, SLOT(iconActivated(QSystemTrayIcon::ActivationReason)));
connect(_trayIcon, &QSystemTrayIcon::activated, this, &SysTray::iconActivated);
connect(quitAction, &QAction::triggered, _trayIcon, &QSystemTrayIcon::hide, Qt::DirectConnection);
connect(&_colorDlg, &QColorDialog::currentColorChanged, this, &SysTray::setColor);
connect(&_colorDlg, SIGNAL(currentColorChanged(const QColor&)), this, SLOT(setColor(const QColor &)));
QIcon icon(":/hyperion-icon-32px.png");
_trayIcon->setIcon(icon);
_trayIcon->show();

View File

@ -54,6 +54,7 @@ private:
#endif
QAction *quitAction;
QAction *restartAction;
QAction *startAction;
QAction *stopAction;
QAction *colorAction;

View File

@ -1,45 +0,0 @@
// STL includes
#include <iostream>
// HyperionPNG includes
#include <hyperionpng/HyperionPng.h>
template <typename Hyperion_T>
void process(Hyperion_T& hyperion)
{
hyperion.setInputSize(64, 64);
// Obtain reference to buffer
RgbImage& image = hyperion.image();
// Write some data to the image
std::cout << "Write data to buffer-image" << std::endl;
for (unsigned y=0; y<image.height(); ++y)
{
for (unsigned x=0; x<image.width(); ++x)
{
const RgbColor color = {255, 0, 0};
image(x,y) = color;
}
}
std::cout << "Commit image to write png" << std::endl;
for (unsigned i=0; i<40; ++i)
{
// Commit the image (writing first png)
hyperion.commit();
}
std::cout << "FINISHED" << std::endl;
}
int main()
{
// Construct instance of Hyperion-PNG
std::cout << "Initialisaing Hyperion PNG" << std::endl;
HyperionPng hyperion;
process(hyperion);
return 0;
}