Highly optimized open source ambient lighting implementation based on modern digital video and audio stream analysis for Windows, macOS and Linux (x86 and Raspberry Pi / ARM).
MIT License
Bot releases are visible (Hide)
The HyperHDR v20 release was created with the participation of many users (thanks to everyone, especially to @astarom) and brings many important new features and fixes. More than several dozen thousand lines of code were changed, including almost the entire application base was rewritten using newer technologies, which then required several months of testing to make sure that it would not negatively affect stability. Thanks to the rebuilt LED rendering model, even more precise refreshing is achieved and the use of Smart Pointers gives us greater control over memory management. Software grabbers have been significantly improved, including hardware acceleration for Pipewire (Linux) and in particular a huge leap in performance and capabilities has occurred in the case of the DirectX grabber for Windows (native system HDR support without LUT and Pixel & Vertex Shader acceleration). At that time, a new HyperSerialPico project was also created, thanks to rp2040 PIO IO co-processor we received a driver offering even more precise timings for LED rendering than ESP32/Esp8266 and it allows the use of ready-made boards with a built-in level shifter: which significantly simplifies the construction of new HyperHDR setups regardless of the platform on which you host it.
Below is the full list of changes. Have fun!
New features:
LED devices:
Core:
Platform support:
Updates:
Bug fixing:
Published by github-actions[bot] 8 months ago
Full list of changes below, with details in the attached links. Update is also available in HyperHDR Debian/Ubuntu APT repository: link.
HyperHDR: v20beta2:
HyperHDR: v20beta1:
Published by github-actions[bot] 10 months ago
First test release of the upcoming next version of HyperHDR: v20beta1. Full list of changes below, with details in the attached links.
Published by github-actions[bot] over 1 year ago
I've published new updated build-log on my blog which includes needed components and how to build and configure the entire system. It can be useful even if you already have your system built, as it also includes optimization tips and the possibility to upgrade your setup to a multi-segment configuration.
https://www.hyperhdr.eu/2023/02/ultimate-guide-on-how-to-build-led.html
New features:
Fix:
Improvements:
Published by github-actions[bot] almost 2 years ago
I think that the number of changes and fixes introduced recently fully justifies the release of one more test version before the stable one.
New features:
Fix:
Improvements:
Published by github-actions[bot] almost 2 years ago
Check out also latest HyperSerialEsp8266 and HyperSerialESP32 releases. Both projects were migrated to PlatformIO which greatly simplify customizations and building the firmware in case if you want e.g. to change default serial port speed or the pin-outs (support for Github Actions!). Also HyperHDR v19 new feature allows me to remove old "first LED enabled/disabled" firmware version, because now you can set it up in HyperHDR.
New features:
Bug fixing:
Improvements:
Published by github-actions[bot] about 2 years ago
Changelog (v18 key highlights can be found on the HyperHDR blog link )
New features:
Bug Fixing:
Improvements:
Community:
Published by github-actions[bot] over 2 years ago
Beta3
Beta2
New features:
Bug Fixing:
Improvements:
Community:
Published by github-actions[bot] over 2 years ago
New features:
Bug Fixing:
Improvements:
Community:
Published by awawa-dev about 3 years ago
This is the most important HyperHDR update to date, bringing new features, fixes, and changes to: UI, video processing, JSON API, translation resources, software screen grabbers and LED drivers. SD card OS images include new AARCH64 version for Raspberry Pi 2 (rev. 1.2), 3 and 4 as tests showed performance improvements compared to the 32-bit armv7l.
Changelog (v17 key highlights can be found on the HyperHDR blog link ):
Published by awawa-dev about 3 years ago
Changes from the previous v17 beta:
This is a beta version intended for testers or users who want to try out new functionalities.
It has just come out of production and despite our best efforts it may still contains bugs.
More detailed information can be found on the HyperHDR blog: link.
BEFORE INSTALLING PLEASE BACKUP YOUR HYPERHDR CONFIGURATION FOLDER (JUST IN CASE, YOUR CONFIGURATION SHOULD BE PRESERVED)
SD card images will be available for the stable release.
Please put your feedback in dedicated thread in the discussions link or report a new issue with full details.
Change log:
Published by awawa-dev about 3 years ago
This is a beta version intended for testers or users who want to try out new functionalities.
It has just come out of production and despite our best efforts it may still contains bugs.
More detailed information can be found on the HyperHDR blog: link.
BEFORE INSTALLING PLEASE BACKUP YOUR HYPERHDR CONFIGURATION FOLDER (JUST IN CASE, YOUR CONFIGURATION SHOULD BE PRESERVED)
SD card images will be available for the stable release.
Please put your feedback in dedicated thread in the discussions link or report a new issue with full details.
Change log:
Published by awawa-dev over 3 years ago
HOTFIX:
HDR tone mapping for MJPEG stream was completely broken since the previous v15 ( #63 thanks @setrin).
THIS UPDATE IS HIGHLY RECOMMENDED. Sorry for inconvenience.
Last year new important feature was introduced by HyperHDR for your ambient systems: support for USB grabbers using Microsoft Media Foundation in Windows. Now next significant milestone is reached: HyperHDR official support for Apple macOS and AVFoundation for direct USB grabber connection. Both for the video and audio streams.
New manual's chapter about fundamentals of HyperHDR configuration is available: read new chapter. Probably most of users know the basics but it can be useful if you are looking some information about instances & multi-light sources configuration, remotely controlling HDR tone mapping, configuring Philips Hue devices or using the audio effects.
New platform support: Apple macOS. You can use standard HyperHDR DMG container and after few clicks have hyperhdr application running on your system. The documentation was updated to address new OS support and to guide you through the installation process. You can find more information here.
Smoothing: new anti-flickering filter for low-light movie scenes. The problem haunted me and some users for a really long time. It is not caused by the software bug but it's an effect of the player/video filter processing on the input and the LED strip high refresh rate that can render discreet, constant changes around some RGB value on the output. Here is a video of the example how it manifests itself: read and watch more here. You can find details in the Smoothing section's description in HyperHDR also. But if you experience flickering on static scenes like paused movie then your problem lies elsewhere.
Smoothing: new 'Alternative linear' algorithm. Despite its name old 'Linear' smoothing algorithm practically is closer to the 'Exponential' one. I don't like how the old algorithm behaves in the full bright to dark transition where process begins fast and slows down much at the end (near the black color) creating some kind of non-linear decay effect. 'Alternative linear' has that side-effect minimized and can be considered as faster: around 20-30% in full transition. Anyway you can choose any of them and test it preferable on movie scenes with bright to dark transitions.
Upgraded LUT generator: maybe you don't know it but the LUT table in HyperHDR is used not only for HDR tone mapping. For popular YUV/NV12/I420 video streams it's also used for YUV to internal RGB conversion even without HDR tone mapping enabled to reduce CPU overload. With new version LUT table generator was redesigned and offers new features such as gamma correction and minimal threshold values. So you can tune up the video stream for HDR and mentioned above codecs to fit your needs. If you experience for ex. video shifted towards the green color you can correct it with a green gamma tuning up. Or if you want to trim very dark colors to black you can have it using minimal threshold. After you finish you should upload new LUT table to the HyperHDR home folder (location is written in the first lines in logs, later you can find information about if it was found successfully). The link to the generator is in the grabber description section or you can open it directly:
http://IP_OF_HYPERHDR:8090/content/lut_generator.html
You may need a sample of your video stream to test on. First turn OFF the HDR tone mapping and then take a screenshot using new button ('Screenshot') available in the HyperHDR video preview window. Next upload it to the LUT generator page using 'Upload test image' button.
New JSON helper for API access: standard way of communication is to send JSON packages using POST requests. But it complicates things if we don't have an access to the POST helper like linux curl on some systems or home automation solutions. Now it's possible to send JSON package using simply GET request on the address:
http://IP_OF_HYPERHDR:8090/json-rpc?request=URL_ENCODED_JSON_PACKAGE
For example to turn on/off HDR tone mapping remotely: read more here. You can test it in your web browser too.
Published by awawa-dev over 3 years ago
Please use v16.0.0.1 instead.
Published by awawa-dev over 3 years ago
Main feature of this release is brand new kind of effect: music visualization. In addition to that there are some important new features/changes for video processing, bug fixes, optimization and structural changes so please read the change log carefully because new version brings some breaking changes.
Most modern HDMI grabbers offer both audio and video capturing. Till now we could only use led visualization for the video content. Don't you think that it's kind of waste and we couldn't use the system for other activities? But that's the past because HyperHDR v15 introduces the audio visualization. Best effect is achieved of course with low latency grabbers and led system like new Ezcap's grabbers family and HyperSerialEsp8266 / HyperSerialWLED. But it was tested using various grabbers including popular MacroSilicone MS2109 on Windows/Linux also.
You can enable sound effect for the selected instance so you can have video visualization on the led strip and sound visualization for Philips Hue lamps simultaneously. Or go full party mode with sound visualization on both devices. For large areas lamps like Philips Hue is best to use full-screen pulse effect. Refer to the live video preview to see how the effect is visualized.
Keep in mind that your current system is configured specifically for video capturing and you must make sure that the grabber is receiving sound also. In case of troubles please refer to the HyperHDR log as there are all needed information.
Effects: music API for effects is introduced. First configure your sound device in the 'Effects' tab and then run selected music effect from the 'Remote' tab. Please be aware that they are causing much more flickering than the standard video visualization... just like the disco lightning does.
Video processing: quarter of frame mode. New feature has strong, positive performance impact especially for slower devices like Raspberry Pi Zero. The frame is fast scaled to 50% of original width and height resulting in a quarter of the original frame. For me it's a kind of controversial change because such feature as side-effect allows to hide some unoptimized code from user but at this stage I think the video processing is quite well optimized and tested. Beside some of new grabbers don't allow to change the resolution and 1080p capturing is not always best choice for fast ambilight setups. And NV12/I420 are delivering only a quarter of color information anyway so only some part of luminescence data is lost during the down-scaling process.
Image processing: sparse processing. Enabling this option for selected instance causes to process only 25% of the captured frame. Effect similar to new 'quarter of frame' mode in the USB grabber settings but it's for selected instances for example: for an instance with large areas for Philips Hue lamps where we don't need such precision and we can turn on sparse processing. Both options have positive, cumulative impact on performance.
Effects: python module is removed once and for all. That has a positive aspect for stability and resources usage. Most of old effects were rewritten and migrated to the new, fast in-app API. During the process I discovered that one, quite popular configuration of effects stole a lot of resources from the CPU without your attention ... even if you didn't use them during the session (fixed).
Fixes: better instances interaction and many of discovered bugs were fixed including critical ones like heap corruption while picking up a color during calibration.
Build system: removing python module and introduced music capability caused rework of the build system. The installers are much smaller now and all the needed dependencies should be provided for most minimal systems even if installed from tar archive. The only needed dependency for deb/rpm installers is xz-utils to extract and to install default LUT table.
Philips Hue: minimal and maximum brightness were moved to the 'Processing' tab where they belong. Using these settings in the internal Philips driver caused out of gamut situations where orange/blue colors appeared instead of gray at minimal/maximal level. In the Philips' driver there was always hard-coded gamma correction ('candy gamma') and now you have opportunity to disable it as it has quite heavy impact on the lamps and it's not always a good option. Also HyperHDR will wait now for the Hue bridge to start up for all configurations: fix introduced in the previous version worked only for one instance.
OpenHab automation system: basic interaction with multiple LED's instances was fixed. May have impact on other integrated external applications that are using JSON API also.
⚠️Breaking changes: names of the components, configuration file and folders have changed so to:
sudo systemctl start/stop [email protected]
/usr/share/hyperhdr/bin/hyperhdr
.hyperhdr
in the user home directory on your system. Your old configuration is kept safe and copied&migrated to the new folder automatically at startup but if you have custom LUT table in old home folder or you are on the read-only system then you must do it by yourself.Published by awawa-dev almost 4 years ago
High responsiveness was always among the main goals of this project and reasons to fork it as HyperHDR from Hyperion NG. Now as the video processing is almost done with tuning up it's time to look at the other end of the system: the LED strip driver. You are sure that your large, high-density LED strip setup that is driven by the Adalight/Arduino doesn't have a bottleneck? Well, you may be wrong. Or do you have problems with Wifi's stability while using WLED?
Then you may be also interested in my new side-project for HyperHDR: ultra-fast USB serial port AWA protocol for ESP8266 at @2000000 baud with data integrity check at https://github.com/awawa-dev/HyperSerialEsp8266 Pure facts backed by results from the Saleae logic analyzer vs subjective opinions like "I think I don't see any lag anyway". Remember, you use it on your own risk.
It includes build-in calibration for each channel for RGBW led strips. Read more about it here: https://hyperhdr.blogspot.com/2020/12/my-build-log-using-sk6812-rgbw-led.html
There is also my new fork HyperSerialWLED available with the support for the AWA serial protocol at 2Mb speed: https://github.com/awawa-dev/HyperSerialWLED Can't guarantee it will work as stable as HyperSerialEsp8266 because WLED has a lot of other things to do in the background (ex. handling Wifi) and timing control for the serial port could be at stake for larger number of LEDs. But you don't need to abandon all the benefits offered by the WLED which can be a big advantage for some users.
Why the data integrity check was introduced which causes incompatibility with other software? Because at 2Mb speed many chip-makers allow few percentage error in the transmission. And we do not want to have any distracting flashes.
In this version generic performance for decoding YUV stream increased up to 30% in higher resolutions. New decoders were added for incoming new modern grabbers: NV12, xRGB, RGB24, I420.
Also I own now some devices from Philips Hue ecosystem so this module received and will receive even more support if necessary. Please migrate your Hue setups to the Entertainment API. You won't want to go back to the old and very slow restful API. Check logs after you activate it as it can fall-back to the restful API in some circumstances (you should see a message about activating the stream and no errors if everything is OK).
Main changes:
Published by awawa-dev almost 4 years ago
This is a maintenance release that addresses all the issues reported by the users. Thanks for the feedback and time spent for testing.
If you are happy with previous version then it's perfectly fine to stay on it.
Main features:
Published by awawa-dev almost 4 years ago
For the Macro Silicone MS2109 clones please make sure that you DON'T allowed 1080p 60 frames: the device reports these settings as allowed but they won't work (beware: 1080p60 may be set on 'auto' mode automatically). Set the resolution and FPS manually to make sure of it and restart the app/service!!!
Known issues: