diff --git a/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-linalg/package.mk b/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-linalg/package.mk new file mode 100644 index 0000000000..26100e917d --- /dev/null +++ b/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-linalg/package.mk @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="hyperhdr-linalg" +PKG_VERSION="4460f1f5b85ccc81ffcf49aa450d454db58ca90e" +PKG_SHA256="fbeacd845a4121da101222112af45b2e7f4fb024ad627b4adc97aaaab2272ccb" +PKG_LICENSE="Unlicense" +PKG_SITE="https://github.com/sgorsten/linalg" +PKG_URL="https://github.com/sgorsten/linalg/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_LONGDESC="single header, public domain, short vector math library for C++" +PKG_TOOLCHAIN="manual" diff --git a/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-lunasvg/package.mk b/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-lunasvg/package.mk new file mode 100644 index 0000000000..fdec8cb99a --- /dev/null +++ b/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-lunasvg/package.mk @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="hyperhdr-lunasvg" +PKG_VERSION="610b8bf5148a27489b4e3344b4f5617b81be38c7" +PKG_SHA256="b71a1abf80cebf909da1b0e9bc86b8e10d0281851202785ecf04761229da8275" +PKG_LICENSE="MIT" +PKG_SITE="https://github.com/sammycage/lunasvg" +PKG_URL="https://github.com/sammycage/lunasvg/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_LONGDESC="Lightweight SVG rendering library in C++" +PKG_TOOLCHAIN="manual" diff --git a/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-mdns/package.mk b/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-mdns/package.mk new file mode 100644 index 0000000000..474ac96506 --- /dev/null +++ b/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-mdns/package.mk @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="hyperhdr-mdns" +PKG_VERSION="1727be0602941a714cb6048a737f0584b1cebf3c" +PKG_SHA256="e8559095ac179ca89fee6c2de6c24cf252538485c7521a50d4f36785e22c571e" +PKG_LICENSE="Unlicense" +PKG_SITE="https://github.com/mjansson/mdns" +PKG_URL="https://github.com/mjansson/mdns/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_LONGDESC="Public domain mDNS/DNS-SD library in C" +PKG_TOOLCHAIN="manual" diff --git a/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-nanopb/package.mk b/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-nanopb/package.mk new file mode 100644 index 0000000000..0b00c0056d --- /dev/null +++ b/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-nanopb/package.mk @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="hyperhdr-nanopb" +PKG_VERSION="6cfe48d6f1593f8fa5c0f90437f5e6522587745e" +PKG_SHA256="556899aeba86a151a0c27b85234cc1918b8278d90d482aaeb58207da5720dd4a" +PKG_LICENSE="Zlib" +PKG_SITE="https://github.com/nanopb/nanopb" +PKG_URL="https://github.com/nanopb/nanopb/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_LONGDESC="Protocol Buffers for Embedded Systems" +PKG_TOOLCHAIN="manual" diff --git a/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-qmqtt/package.mk b/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-qmqtt/package.mk new file mode 100644 index 0000000000..58ca94d3fd --- /dev/null +++ b/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-qmqtt/package.mk @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="hyperhdr-qmqtt" +PKG_VERSION="6476bf68edc4840fbe4395838a27d1b06f9f84ec" +PKG_SHA256="8a8dfdb77391a565cb086708557a4f96db4b8186cd316bca6e8fd1a41611bb7f" +PKG_LICENSE="EPL-1.0" +PKG_SITE="https://github.com/emqx/qmqtt" +PKG_URL="https://github.com/emqx/qmqtt/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_LONGDESC="MQTT client for Qt 5 in maintenance status" +PKG_TOOLCHAIN="manual" diff --git a/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-sdbus-cpp/package.mk b/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-sdbus-cpp/package.mk new file mode 100644 index 0000000000..9bf06ed3c2 --- /dev/null +++ b/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-sdbus-cpp/package.mk @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="hyperhdr-sdbus-cpp" +PKG_VERSION="b7d85f936d622299ee57966c2b2aefde5e4f3684" +PKG_SHA256="1ab2c8b6ee551fe6cd5afe75660cf88ebf9094b1132a5823bb84a65a14fd821c" +PKG_LICENSE="LGPL-2.1" +PKG_SITE="https://github.com/Kistler-Group/sdbus-cpp" +PKG_URL="https://github.com/Kistler-Group/sdbus-cpp/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_LONGDESC="single-file public domain (or MIT licensed) libraries for C/C++" +PKG_TOOLCHAIN="manual" diff --git a/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-stb/package.mk b/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-stb/package.mk new file mode 100644 index 0000000000..a74393d3ae --- /dev/null +++ b/packages/addons/addon-depends/hyperhdr-depends/hyperhdr-stb/package.mk @@ -0,0 +1,12 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="hyperhdr-stb" +PKG_VERSION="f7f20f39fe4f206c6f19e26ebfef7b261ee59ee4" +PKG_SHA256="76bbeda8d27488b8520e2c05b722c6f2500530ac41de3240d364a2ad800eb273" +PKG_LICENSE="MIT" +PKG_SITE="https://github.com/nothings/stb" +PKG_URL="https://github.com/nothings/stb/archive/${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain" +PKG_LONGDESC="single-file public domain (or MIT licensed) libraries for C/C++" +PKG_TOOLCHAIN="manual" diff --git a/packages/addons/service/hyperhdr/icon/icon.png b/packages/addons/service/hyperhdr/icon/icon.png new file mode 100644 index 0000000000..df54c836a1 Binary files /dev/null and b/packages/addons/service/hyperhdr/icon/icon.png differ diff --git a/packages/addons/service/hyperhdr/package.mk b/packages/addons/service/hyperhdr/package.mk new file mode 100644 index 0000000000..efde7876be --- /dev/null +++ b/packages/addons/service/hyperhdr/package.mk @@ -0,0 +1,71 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025-present Team LibreELEC (https://libreelec.tv) + +PKG_NAME="hyperhdr" +PKG_VERSION="21.0.0.0beta2" +PKG_SHA256="7ef919e10b903541f138685bb0fef0a14a4c2b36e925b61aceb9c76472385511" +PKG_REV="0" +PKG_LICENSE="MIT" +PKG_SITE="https://github.com/awawa-dev/HyperHDR" +PKG_URL="https://github.com/awawa-dev/HyperHDR/archive/v${PKG_VERSION}.tar.gz" +PKG_DEPENDS_TARGET="toolchain flatbuffers:host alsa-lib libjpeg-turbo qt5 systemd rpi_ws281x zstd \ + hyperhdr-linalg hyperhdr-lunasvg hyperhdr-mdns hyperhdr-nanopb hyperhdr-qmqtt \ + hyperhdr-sdbus-cpp hyperhdr-stb" +PKG_TOOLCHAIN="cmake" +PKG_SECTION="service" +PKG_SHORTDESC="HyperHDR: an ambient lighting controller" +PKG_LONGDESC="HyperHDR (${PKG_VERSION}) is a highly optimized opensource ambient lighting implementation" +PKG_BUILD_FLAGS="-sysroot" + +PKG_IS_ADDON="yes" +PKG_ADDON_NAME="HyperHDR" +PKG_ADDON_TYPE="xbmc.service" + +if [ "${PROJECT}" = "ARM" -o "${PROJECT}" = "RPi" ]; then + PKG_WS281X="-DENABLE_WS281XPWM=ON" +else + PKG_WS281X="-DENABLE_WS281XPWM=OFF" +fi + +PKG_CMAKE_OPTS_TARGET="-DCMAKE_NO_SYSTEM_FROM_IMPORTED=ON \ + -DCMAKE_BUILD_TYPE=Release \ + -DENABLE_CEC=OFF \ + -DENABLE_FRAMEBUFFER=OFF \ + -DENABLE_PIPEWIRE=OFF \ + -DENABLE_POWER_MANAGEMENT=ON \ + -DENABLE_SYSTRAY=OFF \ + -DENABLE_X11=OFF \ + -DENABLE_ZSTD=ON \ + ${PKG_WS281X} \ + -DPLATFORM=linux \ + -DUSE_CCACHE_CACHING=OFF \ + -DUSE_PRECOMPILED_HEADERS=OFF \ + -DUSE_SHARED_LIBS=OFF \ + -DUSE_STATIC_QT_PLUGINS=ON \ + -DUSE_SYSTEM_FLATBUFFERS_LIBS=OFF \ + -DFLATBUFFERS_FLATC_EXECUTABLE=${TOOLCHAIN}/bin/flatc \ + -Wno-dev" + +pre_configure_target() { + pkg_flatbuffers_version=$(get_pkg_version flatbuffers) + tar --strip-components=1 -xf "${SOURCES}/flatbuffers/flatbuffers-${pkg_flatbuffers_version}.tar.gz" -C "${PKG_BUILD}/external/flatbuffers" + cp -a $(get_build_dir rpi_ws281x)/* ${PKG_BUILD}/external/rpi_ws281x + cp -a $(get_build_dir hyperhdr-lunasvg)/* ${PKG_BUILD}/external/lunasvg + cp -a $(get_build_dir hyperhdr-nanopb)/* ${PKG_BUILD}/external/nanopb + cp -a $(get_build_dir hyperhdr-stb)/* ${PKG_BUILD}/external/stb + cp -a $(get_build_dir hyperhdr-linalg)/* ${PKG_BUILD}/external/linalg + cp -a $(get_build_dir hyperhdr-mdns)/* ${PKG_BUILD}/external/mdns + cp -a $(get_build_dir hyperhdr-qmqtt)/* ${PKG_BUILD}/external/qmqtt + cp -a $(get_build_dir hyperhdr-sdbus-cpp)/* ${PKG_BUILD}/external/sdbus-cpp +} + + +addon() { + mkdir -p ${ADDON_BUILD}/${PKG_ADDON_ID}/bin + cp ${PKG_INSTALL}/usr/share/hyperhdr/bin/hyperhdr ${ADDON_BUILD}/${PKG_ADDON_ID}/bin + + patchelf --add-rpath '$ORIGIN/../lib.private' ${ADDON_BUILD}/${PKG_ADDON_ID}/bin/hyperhdr + + mkdir -p ${ADDON_BUILD}/${PKG_ADDON_ID}/lib.private + cp -p $(get_install_dir zstd)/usr/lib/libzstd.so.1 ${ADDON_BUILD}/${PKG_ADDON_ID}/lib.private +} diff --git a/packages/addons/service/hyperhdr/source/bin/hyperhdr.start b/packages/addons/service/hyperhdr/source/bin/hyperhdr.start new file mode 100644 index 0000000000..4825b2daae --- /dev/null +++ b/packages/addons/service/hyperhdr/source/bin/hyperhdr.start @@ -0,0 +1,10 @@ +#!/bin/sh + +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025-present Team LibreELEC (https://libreelec.tv) + +. /etc/profile + +oe_setup_addon service.hyperhdr + +exec hyperhdr --userdata "${ADDON_HOME}" diff --git a/packages/addons/service/hyperhdr/source/default.py b/packages/addons/service/hyperhdr/source/default.py new file mode 100644 index 0000000000..7dbaf42ae7 --- /dev/null +++ b/packages/addons/service/hyperhdr/source/default.py @@ -0,0 +1,7 @@ +# SPDX-License-Identifier: GPL-2.0 +# Copyright (C) 2025-present Team LibreELEC (https://libreelec.tv) + +import xbmc + +monitor = xbmc.Monitor() +monitor.waitForAbort() diff --git a/packages/addons/service/hyperhdr/source/resources/screenshot-01.png b/packages/addons/service/hyperhdr/source/resources/screenshot-01.png new file mode 100755 index 0000000000..c6e9f9338f Binary files /dev/null and b/packages/addons/service/hyperhdr/source/resources/screenshot-01.png differ diff --git a/packages/addons/service/hyperhdr/source/system.d/service.hyperhdr.service b/packages/addons/service/hyperhdr/source/system.d/service.hyperhdr.service new file mode 100644 index 0000000000..1630bbdf70 --- /dev/null +++ b/packages/addons/service/hyperhdr/source/system.d/service.hyperhdr.service @@ -0,0 +1,13 @@ +[Unit] +Description=HyperHDR service +After=graphical.target + +[Service] +ExecStart=/bin/sh -c "exec sh /storage/.kodi/addons/service.hyperhdr/bin/hyperhdr.start" +TimeoutStopSec=2 +Restart=always +RestartSec=10 +StartLimitInterval=0 + +[Install] +WantedBy=default.target