Skip to content

Commit d7e3117

Browse files
committed
18.0.0.0beta2 release
1 parent 08230e5 commit d7e3117

File tree

7 files changed

+92
-42
lines changed

7 files changed

+92
-42
lines changed

.github/workflows/image-builder.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -71,6 +71,8 @@ jobs:
7171
echo 'apt install -y ./hyperhdr.deb' >> start_chroot_script
7272
echo 'rm ./hyperhdr.deb' >> start_chroot_script
7373
echo 'touch /boot/ssh' >> start_chroot_script
74+
echo "echo -n 'pi:' > /boot/userconf" >> start_chroot_script
75+
echo "echo 'raspberry' | openssl passwd -6 -stdin >> /boot/userconf" >> start_chroot_script
7476
echo 'echo "HyperHDR" > /etc/hostname' >> start_chroot_script
7577
echo 'sed -i "s/raspberrypi/HyperHDR/" /etc/hosts' >> start_chroot_script
7678
echo "systemctl -q enable hyperhdr@pi.service" >> start_chroot_script

.github/workflows/push-master.yml

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ name: HyperHDR CI Build
33
on: [push]
44

55
env:
6-
USE_CACHE: "1"
6+
USE_CACHE: "0"
77
RESET_CACHE: "0"
88

99
jobs:
@@ -157,7 +157,7 @@ jobs:
157157
runs-on: windows-2022
158158
env:
159159
VCINSTALLDIR: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC'
160-
QT_VERSION: 6.2.2
160+
QT_VERSION: 6.2.4
161161
steps:
162162
- name: Checkout
163163
uses: actions/checkout@v1
@@ -181,9 +181,6 @@ jobs:
181181
shell: cmd
182182
run: call "${{env.VCINSTALLDIR}}\Auxiliary\Build\vcvars64.bat"
183183

184-
- name: Set up nasm
185-
uses: ilammy/setup-nasm@v1
186-
187184
# Build packages
188185
- name: Build packages
189186
env:

README.md

Lines changed: 58 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ https://github.com/awawa-dev/HyperHDR/releases
1212
Latest testing installers can be find as the artifacts of the latest build in the Github Action tab at the bottom of the page. Must be logged in. \
1313
https://github.com/awawa-dev/HyperHDR/actions
1414

15-
Default LUT table is already included (in the installers) but you can generate your own or import 3dl Autodesk lut table.\
15+
Default LUT table is already included, but for the best effect you can generate your own using new calibration tool (recommended). Or you use dedicated LUT tables for supported USB grabbers (available [here](https://github.com/awawa-dev/HyperHDR/releases)). You can also import 3dl Autodesk lut table. :new:
16+
1617
For Raspberry Pi you may use prepared SD card images: [manual](https://hyperhdr.blogspot.com/2020/11/hyperhdr-prepare-for-building-buying_17.html)\
1718
Default hostname for SD images is HyperHDR so connect to http://hyperhdr:8090/ \
1819
SSH and SPI are enabled on default.
@@ -25,8 +26,6 @@ SSH and SPI are enabled on default.
2526

2627
[HyperHDR's support section](https://github.com/awawa-dev/HyperHDR/discussions) (or https://hyperhdr.blogspot.com/ )
2728

28-
Discord: https://discord.gg/gvyBnnns :new:
29-
3029
**Manuals and guides for building and configuring your own ambient lighting system with HyperHDR:**
3130

3231
[Official Wiki](https://github.com/awawa-dev/HyperHDR/wiki) :new:
@@ -38,46 +37,74 @@ Discord: https://discord.gg/gvyBnnns :new:
3837
* **Really low CPU** usage on SoCs like Raspberry Pi using v4l2 grabbers
3938
* Support for multithreading that makes Raspberry Pi capable of processing HQ video stream (Rpi 1 & Zero should also benefit from the optimization alone)
4039
* Built-in LUT table generator
40+
* Built-in automatic HDR LUT calibration for USB grabbers :new:
41+
* Built-in latency benchmark for USB grabbers :new:
4142
* HDR/BT2020 color, treshold & gamma correction (LUT)
4243
* SDR treshold & gamma correction for selected codecs (LUT)
43-
* Automatic signal detection with smart learning capability for USB grabbers :new:
44+
* Provides vital informations about your OS condition: CPU & RAM usage, CPU temperature, undervoltage detection, internal components performance including USB grabber and LED devices :new:
45+
* Automatic signal detection with smart learning capability for USB grabbers
4446
* Support for USB grabbers under Windows 10
4547
* Support for USB grabbers under macOS (x64/M1)
46-
* Support for software screen grabbers: DirectX11 (Windows), CoreGraphics (macOS), X11 (Linux) :new:
48+
* Software screen grabbers: DirectX11 (Windows), CoreGraphics (macOS), X11 (Linux), Wayland (Linux) :new:
49+
* HDR tone mapping for external flatbuffers sources :new:
4750
* Built-in audio visualization effects
51+
* Dynamic video cache buffers. Now Rpi can process even 1080p120 NV12 stream without any size decimation :new:
52+
* SK6812 RGBW: the white color channel calibration for [HyperSerialEsp8266](https://github.com/awawa-dev/HyperSerialEsp8266), [HyperSerialESP32](https://github.com/awawa-dev/HyperSerialESP32), [HyperSPI](https://github.com/awawa-dev/HyperSPI) :new:
4853
* Optimized multi-instances. You can use for example your TV LED strip and multiple WLED or Philips Hue light sources.
49-
* Support for WS821x, APA102 (HD107, SK9822 etc) and SK6812 RGBW LED strips using fastest possible cable solution for generic ESP8266/ESP32 external LED drivers: [HyperSPI](https://github.com/awawa-dev/HyperSPI) :new:
50-
* Support for WS8201, WS821x, APA102 (HD107, SK9822 etc) and SK6812 RGBW LED strips ultrafast USB serial port AWA protocol for ESP8266/ESP32 at 2Mb baud with data integrity check and white channel calibration: [HyperSerialEsp8266](https://github.com/awawa-dev/HyperSerialEsp8266) and [HyperSerialESP32](https://github.com/awawa-dev/HyperSerialESP32) :new:
51-
* WLED fork for ESP8266 & ESP32 at 2Mb baud (also @921600 baud :new:) and almost all popular types of LED strips is available: [HyperSerialWLED](https://github.com/awawa-dev/HyperSerialWLED)
54+
* Support for WS821x, APA102 (HD107, SK9822 etc) and SK6812 RGBW LED strips using fastest possible cable solution for generic ESP8266/ESP32 external LED drivers: [HyperSPI](https://github.com/awawa-dev/HyperSPI)
55+
* Support for WS8201, WS821x, APA102 (HD107, SK9822 etc) and SK6812 RGBW LED strips ultrafast USB serial port AWA protocol for ESP8266/ESP32 at 2Mb baud with data integrity check and white channel calibration: [HyperSerialEsp8266](https://github.com/awawa-dev/HyperSerialEsp8266) and [HyperSerialESP32](https://github.com/awawa-dev/HyperSerialESP32)
56+
* WLED fork for ESP8266 & ESP32 at 2Mb baud (also 4Mb for certain chipsets :new:) and almost all popular types of LED strips is available: [HyperSerialWLED](https://github.com/awawa-dev/HyperSerialWLED)
5257

5358
##
5459

55-
**Changelog (v17)** :new:
60+
**Changelog (v18 beta)** :new:
5661
- Overall performance without tone mapping for USB grabbers improved x10 (MJPEG) and x3 (YUV) over Hyperion NG 2.0.0.8A thanks to optimization & using of multi-threading
5762
- Direct support for USB grabbers under Windows 10, Linux and macOS (really fast & of course multi-threaded)
58-
- Support for software screen grabbers: DirectX11, CoreGraphics, X11 :new:
59-
- User interface upgraded to modern standards (Bootstrap 5) :new:
63+
- Support for software screen grabbers: DirectX11, CoreGraphics, X11
64+
- New software grabber for Linux: Wayland (pipewire/portal) which also means support for **Ubuntu 22.04 LTS** :new:
65+
- Wayland grabber: support for pipewire/portal version 4 protocol persistent authentication :new:
66+
- [New fully automatic LUT calibration for HDR/SDR/YUV](https://www.hyperhdr.eu/2022/04/usb-grabbers-hdr-to-sdr-quality-test.html) :new:
67+
- 30% improved performance for MJPEG HDR mode :new:
68+
- Add white channel calibration for RGBW led strips and latest HyperSerialEsp8266/HyperSerialESP32/HyperSPI ([Adalight](https://i.postimg.cc/hv9366VD/calib1.jpg) [HyperSPI](https://i.postimg.cc/kGdTQszk/calib2.jpg)) :new:
69+
- New dynamic video cache buffers (improved performance, fixes [#142](https://github.com/awawa-dev/HyperHDR/issues/142)) :new:
70+
- Performance information panel in the overview tab :new:
71+
- CPU performance and RAM usage (excluding Apple M1) :new:
72+
- CPU temperature reading (Linux only, when sensor is present) :new:
73+
- Under-voltage detection (Raspberry Pi OS only) :new:
74+
- USB grabber performance (shows framerate and latency) :new:
75+
- Instance input images to LED colors performance :new:
76+
- LED device output performance :new:
77+
- New JSON API function to control USB grabber: brightness, contrast, saturation, hue :new:
78+
- USB grabber latency benchmark ([link](https://www.hyperhdr.eu/2021/10/usb-grabbers-grand-latency-test-part-i.html)) :new:
79+
- HDR tone mapping for flatbuffers ([PR #215](https://github.com/awawa-dev/HyperHDR/pull/215) thanks @chbartsch) :new:
80+
- Dynamic LED layout resize on container size changed :new:
81+
- Improved and refactored LED devices model and communication :new:
82+
- Flatbuffers: HDR tone mapping can use alternative filename: *flat_lut_lin_tables.3d* :new:
83+
- FlatBuffers: add support for high performance local sockets ([link](https://github.com/awawa-dev/HyperHDR/commit/1100093068196a53eff5f856f0eaaf8e43ca229f)) :new:
84+
- The new build scheme allows grabless configuration and the use of external toolchains :new:
85+
- Add popular 'UDP raw' (WLED compatible) receiver for HyperHDR ([link1](https://i.postimg.cc/RV4PqPct/udpraw.jpg) [link2](https://github.com/awawa-dev/HyperHDR/commit/5fb1be1c4bdbc84becfd964a08cb106482b6c4e5)) :new:
86+
- User interface upgraded to modern standards (Bootstrap 5)
6087
- Improved LUT table for SDR(yuv) and HDR video streams :new:
61-
- Support for CEC (turn ON/OFF grabbers, remote keys to command HDR tone mapping) :new:
88+
- Support for CEC (turn ON/OFF grabbers, remote keys to command HDR tone mapping)
6289
- Support for my new [HyperSPI](https://github.com/awawa-dev/HyperSPI) project for Rpi. Fastest possible cable solution for almost every generic ESP8266/ESP32 LED driver :new:
63-
- Fork of WLED with USB serial port AWA protocol at @2000000 speed (:sparkles: there are also special versions for @921600) for ESP32 & ESP8266 and almost all types of LED strips: [HyperSerialWLED](https://github.com/awawa-dev/HyperSerialWLED)
64-
- Support for WS821x RGB, SK6812 RGBW, APA102 like LED strips using USB serial port AWA protocol for ESP8266 at @2000000 baud with data integrity check: [HyperSerialEsp8266](https://github.com/awawa-dev/HyperSerialEsp8266) :new:
65-
- Support for WS821x RGB, SK6812 RGBW, APA102 like LED strips using USB serial port AWA protocol for ESP32 at @2000000 baud with data integrity check: [HyperSerialESP32](https://github.com/awawa-dev/HyperSerialESP32) :new:
66-
- Automatic signal detection with smart learning capability for USB grabbers :new:
67-
- Re-implemented backup import / export functions for ALL instances :new:
68-
- New video stream crop method in JSON API and GET multi-command support :new:
69-
- Auto-resume option for the USB grabber :new:
70-
- JSON API documentation in a form of live playground in 'Advanced' tab :new:
71-
- List of available COM ports for the adalight driver :new:
72-
- Fix: in specific cases some devices could not react to the 'no video signal' event when it's triggered :new:
73-
- New installer for Raspberry Pi 3 & 4 64bit OS (AARCH64), faster up to 30% over 32bit OS armv7l version :new:
74-
- Fix for WLED new network protocol :new:
75-
- LED grouping *aka* PC mode *aka* gradient mode, can help with eye fatigue when used with the monitor, each LED in the group has same average color :new:
76-
- Add timeout for the anti-flickering filter :new:
77-
- Panel for easy video resolution & refresh mode selection in the grabber section :new:
78-
- Support for QT6 :new:
79-
- Lower CPU usage when automatic signal detection triggers 'no-signal' :new:
80-
- Fixed power saving issue in macOS version :new:
90+
- Fork of WLED with USB serial port AWA protocol at @2000000 speed for ESP32 & ESP8266 and almost all types of LED strips: [HyperSerialWLED](https://github.com/awawa-dev/HyperSerialWLED)
91+
- Support for WS821x RGB, SK6812 RGBW, APA102 like LED strips using USB serial port AWA protocol for ESP8266 at @2000000 baud with data integrity check: [HyperSerialEsp8266](https://github.com/awawa-dev/HyperSerialEsp8266)
92+
- Support for WS821x RGB, SK6812 RGBW, APA102 like LED strips using USB serial port AWA protocol for ESP32 at @2000000 baud with data integrity check: [HyperSerialESP32](https://github.com/awawa-dev/HyperSerialESP32)
93+
- Automatic signal detection with smart learning capability for USB grabbers
94+
- Re-implemented backup import / export functions for ALL instances
95+
- New video stream crop method in JSON API and GET multi-command support
96+
- Auto-resume option for the USB grabber
97+
- JSON API documentation in a form of live playground in 'Advanced' tab
98+
- List of available COM ports for the adalight driver
99+
- Fix: in specific cases some devices could not react to the 'no video signal' event when it's triggered
100+
- New installer for Raspberry Pi 3 & 4 64bit OS (AARCH64), faster up to 30% over 32bit OS armv7l version
101+
- Fix for WLED new network protoco
102+
- LED grouping *aka* PC mode *aka* gradient mode, can help with eye fatigue when used with the monitor, each LED in the group has same average color
103+
- Add timeout for the anti-flickering filter
104+
- Panel for easy video resolution & refresh mode selection in the grabber section
105+
- Support for QT6.2 :new:
106+
- Lower CPU usage when automatic signal detection triggers 'no-signal'
107+
- Fixed power saving issue in macOS version
81108
- Audio visualization effects (Windows, macOS and Linux)
82109
- Support for YUV, MJPEG, RGB24, I420, NV12 and XRGB encoding
83110
- Overall (_'Quarter of frame'_ in the USB grabber section) and per an instance (_'Sparse processing'_ in the _Processing_ tab) options to control quality/performance balance.
@@ -99,7 +126,7 @@ Discord: https://discord.gg/gvyBnnns :new:
99126

100127
### Dedicated HDR LUT tables for USB grabbers
101128

102-
You can create your own calibrated LUT table using latest HyperHDR or use LUT dedicated for MS2109 clones, Navy U3, Ezcap 320, Ezcap 321, Ezcap 331, AV Access 4KVC00 (you can find them in the HyperHDR [release](https://github.com/awawa-dev/HyperHDR/releases/latest) section). Why is it worth using them? [USB grabbers HDR to SDR quality review](https://www.hyperhdr.eu/2022/04/usb-grabbers-hdr-to-sdr-quality-test.html)
129+
You can create your own calibrated LUT table using latest HyperHDR or use LUT dedicated for MS2109 clones, Navy U3, Ezcap 269, Ezcap 320, Ezcap 321, Ezcap 331, AV Access 4KVC00 (you can find them in the HyperHDR [release](https://github.com/awawa-dev/HyperHDR/releases/latest) section). Why is it worth using them? [USB grabbers HDR to SDR quality review](https://www.hyperhdr.eu/2022/04/usb-grabbers-hdr-to-sdr-quality-test.html)
103130

104131
### FAQ:
105132

dependencies/external/rpi_ws281x

Submodule rpi_ws281x updated 1 file

sources/api/JsonAPI.cpp

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -360,9 +360,16 @@ void JsonAPI::handleServerInfoCommand(const QJsonObject& message, const QString&
360360
// collect priority information
361361
QJsonArray priorities;
362362
uint64_t now = QDateTime::currentMSecsSinceEpoch();
363+
364+
int currentPriority = -1;
365+
if (QThread::currentThread() == _hyperhdr->thread())
366+
currentPriority = _hyperhdr->getCurrentPriority();
367+
else
368+
QMetaObject::invokeMethod(_hyperhdr, "getCurrentPriority", Qt::ConnectionType::BlockingQueuedConnection, Q_RETURN_ARG(int, currentPriority));
369+
363370
QList<int> activePriorities = _hyperhdr->getActivePriorities();
364371
activePriorities.removeAll(255);
365-
int currentPriority = _hyperhdr->getCurrentPriority();
372+
366373

367374
for (int priority : activePriorities)
368375
{

sources/base/PriorityMuxer.cpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -314,8 +314,6 @@ void PriorityMuxer::setCurrentTime()
314314

315315
for (auto infoIt = _activeInputs.begin(); infoIt != _activeInputs.end();)
316316
{
317-
hyperhdr::Components vcomp = getComponentOfPriority(infoIt->priority);
318-
319317
if (infoIt->timeoutTime_ms > 0 && infoIt->timeoutTime_ms <= now)
320318
{
321319
int tPrio = infoIt->priority;

sources/utils/LutCalibrator.cpp

Lines changed: 21 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -566,12 +566,13 @@ void LutCalibrator::balanceGray(int r, int g, int b, double& _r, double& _g, dou
566566

567567

568568
if (max - min < 30)
569-
for (capColors selector = capColors::LowestGray; selector != capColors::White; selector = capColors(((int)selector) + 1))
569+
{
570+
for (capColors selector = capColors::LowestGray; selector != capColors::None; selector = capColors(((int)selector) + 1))
570571
{
571572
double whiteR = r * _colorBalance[selector].scaledRed;
572573
double whiteG = g * _colorBalance[selector].scaledGreen;
573574
double whiteB = b * _colorBalance[selector].scaledBlue;
574-
double error = (max > 96) ? 3 : 2;
575+
double error = 1;
575576

576577
if (qAbs(whiteR - whiteG) <= error && qAbs(whiteG - whiteB) <= error && qAbs(whiteB - whiteR) <= error)
577578
{
@@ -580,6 +581,24 @@ void LutCalibrator::balanceGray(int r, int g, int b, double& _r, double& _g, dou
580581
}
581582
}
582583

584+
for (capColors selector = capColors::LowestGray; selector != capColors::None; selector = capColors(((int)selector) + 1))
585+
{
586+
double whiteR = r * _colorBalance[selector].scaledRed;
587+
double whiteG = g * _colorBalance[selector].scaledGreen;
588+
double whiteB = b * _colorBalance[selector].scaledBlue;
589+
double error = 2;
590+
591+
if (qAbs(whiteR - whiteG) <= error && qAbs(whiteG - whiteB) <= error && qAbs(whiteB - whiteR) <= error)
592+
{
593+
double average = (_r + _g + _b) / 3.0;
594+
_r = (_r + average) / 2;
595+
_g = (_g + average) / 2;
596+
_b = (_b + average) / 2;
597+
return;
598+
}
599+
}
600+
}
601+
583602
if (max <= 4 && max >= 1)
584603
{
585604
_r = qMax(_r, 1.0 / 255.0);

0 commit comments

Comments
 (0)