mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
c135d91986
* - New Media Foundation grabber
- JsonAPI available grabber fix
- commented json config removed
* Added libjpeg-turbo to dependencies
* Fix OSX build
Removed Azure Pipelines from build scripts
* Remove Platform from Dashboard
* Correct Grabber Namings
* Grabber UI improvements, generic JSONEditor Selection Update
* Active grabber fix
* Stop Framebuffer grabber on failure
* - Image format NV12 and I420 added
- Flip mode
- Scaling factor for MJPEG
- VSCode (compile before run)
- CI (push) dependency libjpeg-turbo added
* Refactor MediaFoundation (Part 1)
* Remove QDebug output
* Added image flipping ability to MF Grabber
* fix issue 1160
* -Reload MF Grabber only once per WebUI update
- Cleanup
* Improvements
* - Set 'Software Frame Decimation' begin to 0
- Removed grabber specific device name from Log
- Keep pixel format when switching resolution
- Display 'Flip mode' correct in Log
- BGR24 images always flipped
* Refactor MediaFoundation (Part 2)
* Refactor V4L2 grabber (part 1) (#62)
* Media Foundation grabber adapted to V4L2 change
* Enable Media Foundation grabber on windows
* Have fps as int, fix height typo
* Added video standards to JsonAPI output
* Error handling in source reader improved
* Fix "Frame to small" error
* Discovery VideoSources and Dynamically Update Editor
* Hide all element when no video grabber discovered, upate naming
* Do not show unsupported grabbers
* Copy Log to Clipboard
* Update Grabber schema and Defaults
* Update access levels and validate crop ranges
* Height and width in Qt grabber corrected
* Correct formatting
* Untabify
* Global component states across instances
* Components divided on the dashboard
* refactor
* Fix Merge-issues
* Database migration aligning with updated grabber model
* Align Grabber.js with new utility functions
* Allow editor-validation for enum-lists
* Handle "Show Explainations scenario" correctly
* Grabber - Ensure save is only possible on valid content
* Dashboard update + fix GlobalSignal connection
* Ensure default database is populated with current release
* Correct grabber4L2 access level
* Display Signal detection area in preview
* Write Hyperion version into default config on compiling.
* Create defaultconfig.json dynamically
* WebUI changes
* Correct grabber config look-ups
* Refactor i18n language loading
* Fix en.json
* Split global capture from instance capture config
* Update grabber default values
* Standalone grabber: Add --debug switch
* Enhance showInputOptionsForKey for multiple keys
* Add grabber instance link to system grabber config
* Only show signal detection area, if grabber is enabled
* Always show Active element on grabber page
* Remote control - Only display gabber status, if global grabber is enabled
* WebUI optimization (thx to @mkcologne)
Start Grabber only when global settings are enabled
Fixed an issue in the WebUI preview
* V4L2/MF changes
* Jsoneditor, Correct translation for default values
* Refactor LED-Device handling in UI and make element naming consistent
* MF Discovery extended
* Fix LGTM finding
* Support Grabber Bri, Hue, Sat and Con in UI, plus their defaults
* Concider Access level for item filtering
* Concider Access level for item filtering
* Revert "Concider Access level for item filtering"
This reverts commit 5b0ce3c0f2
.
* Disable fpsSoftwareDecimation for framegrabber, as not supported yet
* JSON-Editor- Add updated schema for validation on dynamic elements
* added V4L2 color IDs
* LGTM findings fix
* destroy SR callback only on exit
* Grabber.js - Hide elements not supported by platform
* Fixed freezing start effect
* Grabber UI - Hardware controls - Show current values and allow to reset to defaults
* Grabber - Discovery - Add current values to properties
* Small things
* Clean-up Effects and have ENDLESS consistently defined
* Fix on/off/on priority during startup, by initializing _prevVisComp in line with background priority
* Add missing translation mappings
* DirectX Grabber reactivated/ QT Grabber size decimation fixed
* typo in push-master workflow
* Use PreciseTimer for Grabber to ensure stable FPS timing
* Set default Screencapture rate consistently
* Fix libjpeg-turbo download
* Remove Zero character from file
* docker-compile Add PLATFORM parameter, only copy output file after successful compile
* Framebuffer, Dispmanx, OSX, AML Grabber discovery, various clean-up and consistencies across grabbers
* Fix merge problem - on docker-compile Add PLATFORM parameter, only copy output file after successful compile
* Fix definition
* OSXFRameGrabber - Revert cast
* Clean-ups nach Feedback
* Disable certain libraries when building armlogic via standard stretch image as developer
* Add CEC availability to ServerInfo to have it platform independent
* Grabber UI - Fix problem that crop values are not populated when refining editor rage
* Preserve value when updating json-editor range
* LEDVisualisation - Clear image when source changes
* Fix - Preserve value when updating json-editor range
* LEDVisualisation - Clear image when no component is active
* Allow to have password handled by Password-Manager (#1263)
* Update default signal detection area to green assuming rainbow grabber
* LED Visualisation - Handle empty priority update
* Fix yuv420 in v4l2 grabber
* V4L2-Grabber discovery - Only report grabbers with valid video input information
* Grabber - Update static variables to have them working in release build
* LED Visualisation - ClearImage when no priorities
* LED Visualisation - Fix Logo resizing issue
* LED Visualisation - Have nearly black background and negative logo
Co-authored-by: LordGrey <lordgrey.emmel@gmail.com>
Co-authored-by: LordGrey <48840279+Lord-Grey@users.noreply.github.com>
239 lines
9.5 KiB
Markdown
239 lines
9.5 KiB
Markdown
|
|
# With Docker
|
|
If you are using [Docker](https://www.docker.com/), you can compile Hyperion inside a docker container. This keeps your system clean and with a simple script it's easy to use. Supported is also cross compiling for Raspberry Pi (Debian Stretch or higher). To compile Hyperion just execute one of the following commands.
|
|
|
|
The compiled binaries and packages will be available at the deploy folder next to the script.<br/>
|
|
Note: call the script with `./docker-compile.sh -h` for more options.
|
|
|
|
## Native compilation on Raspberry Pi for:
|
|
|
|
**Raspbian Stretch**
|
|
```console
|
|
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -i rpi-raspbian
|
|
```
|
|
**Raspbian Buster/Raspberry Pi OS**
|
|
```console
|
|
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -i rpi-raspbian -t buster
|
|
```
|
|
|
|
## Cross compilation on x86_64 for:
|
|
|
|
**x86_64 (Debian Stretch):**
|
|
```console
|
|
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -i x86_64
|
|
```
|
|
**x86_64 (Debian Buster):**
|
|
```console
|
|
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -i x86_64 -t buster
|
|
```
|
|
**Raspberry Pi v1 & ZERO (Debian Stretch)**
|
|
```console
|
|
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -i armv6l
|
|
```
|
|
**Raspberry Pi v1 & ZERO (Debian Buster)**
|
|
```console
|
|
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -i armv6l -t buster
|
|
```
|
|
**Raspberry Pi 2/3/4 (Debian Stretch)**
|
|
```console
|
|
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -i armv7l
|
|
```
|
|
**Raspberry Pi 2/3/4 (Debian Buster)**
|
|
```console
|
|
wget -qN https://raw.github.com/hyperion-project/hyperion.ng/master/bin/scripts/docker-compile.sh && chmod +x *.sh && ./docker-compile.sh -i armv7l -t buster
|
|
```
|
|
## Cross compilation on x86_64 for developers
|
|
Using additional options you can cross compile locally
|
|
-l: use a local hyperion source code directory rather than cloning from GitHub
|
|
-c: do incremental compiles, Note: you need to keep the image and tag stable
|
|
|
|
**Compile code in $HYPERION_HOME incrementally for Raspberry Pi 2/3/4 (Debian Buster)**
|
|
```console
|
|
cd $HYPERION_HOME
|
|
./bin/scripts/docker-compile.sh -l -c -i armv7l -t buster
|
|
```
|
|
# The usual way
|
|
|
|
## Debian/Ubuntu/Win10LinuxSubsystem
|
|
|
|
```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 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
|
|
```
|
|
|
|
**on RPI you need the videocore IV headers**
|
|
|
|
```console
|
|
sudo apt-get install libraspberrypi-dev
|
|
```
|
|
|
|
**OSMC on Raspberry Pi**
|
|
```console
|
|
sudo apt-get install rbp-userland-dev-osmc
|
|
```
|
|
|
|
**ATTENTION Win10LinuxSubsystem** we do not (/we can't) support using hyperion in linux subsystem of MS Windows 10, albeit some users tested it with success. Keep in mind to disable
|
|
all linux specific led and grabber hardware via cmake. Because we use QT as framework in hyperion, serialport leds and network driven devices could work.
|
|
|
|
|
|
## Arch
|
|
See [AUR](https://aur.archlinux.org/packages/?O=0&SeB=nd&K=hyperion&outdated=&SB=n&SO=a&PP=50&do_Search=Go) for PKGBUILDs on arch. If the PKGBUILD does not work ask questions there please.
|
|
|
|
## Fedora
|
|
The following dependencies are needed to build hyperion.ng on fedora.
|
|
```console
|
|
sudo dnf -y groupinstall "Development Tools"
|
|
sudo dnf install python3-devel qt-devel qt5-qtbase-devel qt5-qtserialport-devel xrandr xcb-util-image-devel qt5-qtx11extras-devel turbojpeg-devel libusb-devel avahi-libs avahi-compat-libdns_sd-devel xcb-util-devel dbus-devel openssl-devel fedora-packager rpmdevtools gcc libcec-devel
|
|
```
|
|
After installing the dependencies, you can continue with the compile instructions later on this page (the more detailed way..).
|
|
|
|
## OSX
|
|
To install on OS X you either need Homebrew or Macport but Homebrew is the recommended way to install the packages. To use Homebrew XCode is required as well, use `brew doctor` to check your install.
|
|
|
|
First you need to install the dependencies:
|
|
```console
|
|
brew install qt5 python3 cmake libusb doxygen zlib
|
|
```
|
|
|
|
## Windows (WIP)
|
|
We assume a 64bit Windows 10. Install the following;
|
|
- [Git](https://git-scm.com/downloads) (Check: Add to PATH)
|
|
- [CMake (Windows win64-x64 installer)](https://cmake.org/download/) (Check: Add to PATH)
|
|
- [Visual Studio 2019 Build Tools](https://go.microsoft.com/fwlink/?linkid=840931) ([direct link](https://aka.ms/vs/16/release/vs_buildtools.exe))
|
|
- Select C++ Buildtools
|
|
- On the right, just select `MSVC v142 VS 2019 C++ x64/x86-Buildtools` and latest `Windows 10 SDK`. Everything else is not needed.
|
|
- [Win64 OpenSSL v1.1.1k](https://slproweb.com/products/Win32OpenSSL.html) ([direct link](https://slproweb.com/download/Win64OpenSSL-1_1_1k.exe))
|
|
- [Python 3 (Windows x86-64 executable installer)](https://www.python.org/downloads/windows/) (Check: Add to PATH and Debug Symbols)
|
|
- Open a console window and execute `pip install aqtinstall`.
|
|
- Now we can download Qt to _C:\Qt_ `mkdir c:\Qt && aqt install -O c:\Qt 5.15.0 windows desktop win64_msvc2019_64`
|
|
- [libjpeg-turbo SDK for Visual C++](https://sourceforge.net/projects/libjpeg-turbo/files/)
|
|
- Download the latest 64bit installer (currently `libjpeg-turbo-2.1.0-vc64.exe`) and install to its default location `C:\libjpeg-turbo64`.
|
|
|
|
### Optional:
|
|
- For DirectX9 grabber:
|
|
- [DirectX Software Development Kit](https://www.microsoft.com/en-us/download/details.aspx?id=6812) ([direct link](https://download.microsoft.com/download/A/E/7/AE743F1F-632B-4809-87A9-AA1BB3458E31/DXSDK_Jun10.exe))
|
|
- For package creation:
|
|
- [NSIS 3.x](https://sourceforge.net/projects/nsis/files/NSIS%203/) ([direct link](https://sourceforge.net/projects/nsis/files/latest/download))
|
|
|
|
# Compiling and installing Hyperion
|
|
|
|
## The general quick way (without big comments)
|
|
|
|
**complete automated process for Mac/Linux:**
|
|
```console
|
|
wget -qO- https://raw.githubusercontent.com/hyperion-project/hyperion.ng/master/bin/compile.sh | sh
|
|
```
|
|
|
|
**some more detailed way: (or more or less the content of the script above)**
|
|
|
|
```console
|
|
# be sure you fulfill the prerequisites above
|
|
git clone --recursive https://github.com/hyperion-project/hyperion.ng.git hyperion
|
|
cd hyperion
|
|
mkdir build
|
|
cd build
|
|
cmake -DCMAKE_BUILD_TYPE=Release ..
|
|
make -j $(nproc)
|
|
if this get stucked and dmesg says out of memory try:
|
|
make -j 2
|
|
# optional: install into your system
|
|
sudo make install/strip
|
|
# to uninstall (not very well tested, please keep that in mind)
|
|
sudo make uninstall
|
|
# ... or run it from compile directory
|
|
bin/hyperiond
|
|
# webui is located on localhost:8090 or 8091
|
|
```
|
|
|
|
## The detailed way (with many comments)
|
|
|
|
**Download:**
|
|
Creates hyperion directory and checkout the code from github
|
|
```console
|
|
export HYPERION_DIR="hyperion"
|
|
git clone --recursive --depth 1 https://github.com/hyperion-project/hyperion.ng.git "$HYPERION_DIR"
|
|
```
|
|
|
|
**Preparations:**
|
|
Change into hyperion folder and create a build folder
|
|
```console
|
|
cd "$HYPERION_DIR"
|
|
mkdir build
|
|
cd build
|
|
```
|
|
|
|
**Generate the make files:**
|
|
To generate make files with automatic platform detection and default settings:
|
|
This should fit to *RPI, x86, amlogic/wetek:
|
|
```console
|
|
cmake -DCMAKE_BUILD_TYPE=Release ..
|
|
```
|
|
|
|
*Developers on x86* linux should use:
|
|
```console
|
|
cmake -DPLATFORM=x11-dev -DCMAKE_BUILD_TYPE=Release ..
|
|
```
|
|
|
|
To use framebuffer instead of dispmanx (for example on the *cubox-i*):
|
|
```console
|
|
cmake -DENABLE_FB=ON -DCMAKE_BUILD_TYPE=Release ..
|
|
```
|
|
|
|
To generate make files on OS X:
|
|
|
|
Platform should be auto detected and refer to osx, you can also force osx:
|
|
```console
|
|
cmake -DPLATFORM=osx -DCMAKE_BUILD_TYPE=Release ..
|
|
```
|
|
|
|
In case you would like to build with a dedicated Qt version, provide the version's location via the CMAKE_PREFIX_PATH:
|
|
```console
|
|
cmake -DCMAKE_PREFIX_PATH=/opt/Qt/5.15.2/gcc_64 -DCMAKE_BUILD_TYPE=Release ..
|
|
```
|
|
|
|
To generate files on Windows (Release+Debug capable):
|
|
|
|
Platform should be auto detected and refer to windows, you can also force windows:
|
|
|
|
```posh
|
|
# You might need to setup MSVC env first
|
|
call "C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC\Auxiliary\Build\vcvars64.bat"
|
|
cmake -DPLATFORM=windows -G "Visual Studio 16 2019" ..
|
|
```
|
|
|
|
**Run make to build Hyperion:**
|
|
The `-j $(nproc)` specifies the amount of CPU cores to use.
|
|
```console
|
|
make -j $(nproc)
|
|
```
|
|
|
|
On a mac you can use ``sysctl -n hw.ncpu`` to get the number of available CPU cores to use.
|
|
|
|
```console
|
|
make -j $(sysctl -n hw.ncpu)
|
|
```
|
|
|
|
On Windows run:
|
|
```posh
|
|
cmake --build . --config Release -- -maxcpucount
|
|
```
|
|
Maintainer: To build installer, install [NSIS](https://nsis.sourceforge.io/Main_Page) and set env `VCINSTALLDIR="C:\Program Files (x86)\Microsoft Visual Studio\2019\BuildTools\VC"`
|
|
|
|
**Install hyperion into your system:**
|
|
Copy all necessary files to ``/usr/local/share/hyperion``
|
|
```console
|
|
sudo make install/strip
|
|
```
|
|
|
|
If you want to install into another location call this before installing
|
|
|
|
```console
|
|
cmake -DCMAKE_INSTALL_PREFIX=/home/pi/apps ..
|
|
```
|
|
This will install to ``/home/pi/apps/share/hyperion``
|
|
|
|
|
|
**Integrating hyperion into your system:**
|
|
|
|
... ToDo
|