HyperHDR

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

Stars
1.1K
Committers
15

Bot releases are hidden (Show)

HyperHDR - v17.0.0.0

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 ):

  • fix for default LUT table for both SDR (yuv/nv12/i420) and HDR video stream: BT2020 color space matrix multiplication bug, truncating values to the allowed range and apply proper processing order. First & major LUT table update since v14 (important: included after v17 beta2 so testers need to upgrade HyperHDR and recalibrate automatic signal detection if used)
  • upgrade ancient Bootstrap 3 to version 5 (the core of the user interface)
  • replace and update most of UI components, new layout picture1, picture2, picture3, picture4, picture5, picture6
  • software screen grabbers (Windows: DirectX11 / Linux:X11 / macOS:CoreGraphics) pictureWin
    pictureLin pictureMac #46
  • automatic signal detection with smart learning capability for USB grabbers (you can have only one algorithm enabled at the time: automatic one or the old, difficult to setup and unreliable manual one) picture1 picture2 picture3 picture4 picture5 picture6
  • new feature: auto-resume option for video grabbers when capturing stops for some reason (for example: changing the resolution or refresh rate of the incoming video stream) picture1
  • re-implemented backup import / export function for ALL instances settings in place of the old functionality that clumsily imitated creating of backups, which in many cases resulted in data loss picture1
  • current video stream information in the 'overview' tab picture1
  • support for my new HyperSPI project (https://github.com/awawa-dev/HyperSPI) with awa_spi LED driver picture1
  • new video stream crop method in JSON API picture1 #64
  • JSON API documentation in a form of live playground in 'Advanced' tab picture1
  • new feature: execute multiple JSON commands via GET request using single link picture1
  • 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 picture1, you can even improve the effect with the anti-flickering filter with threshold set to 255
  • add timeout for the anti-flickering filter picture1
  • fix: in specific cases some devices could not react to 'no-signal' when it's triggered
  • translation resources are updated
  • new panel for easy video resolution & refresh mode selection picture1 picture2
  • add release for AARCH64 architecture #68 PERFORMANCE INCREASED UP to 30% COMPARED to Rpi 32bits: 32bit 1280 32bit 1920 64bit 1280 64bit 1920
  • fix for WLED new network protocol #90
  • HDR tone mapping is available as a global component picture1 picture2 picture3
  • new feature: add list of available COM ports for the adalight driver picture1
  • removed redundant default JSON config in favour of JSON Schemas defaults
  • fix missing Linux taskbar icon
  • support for libCEC 6.0.2 to turn on/off video & system grabber picture1
  • support for libCEC to turn on/off HDR tone mapping with remote buttons (CEC or libCEC is quite buggy here and dependent on the hardware, with LG C9 must restart TV to make them work) picture1
  • HyperHDR is ready for QT6.2 (tested with the preview version/Vulkan/Windows)
  • lower CPU usage when automatic signal detection triggers 'nosignal' ('save resources' for software framerate decimation) picture1 #93
  • standardize libJPEG-turbo library (where it's necessary)
  • fix values premature clipping in the LUT generator & SDR preview rendering fix, access available now from the menu ('Advanced' tab)
  • suppress most of external components' warnings while building
  • faster image to LED colors transformation
  • import 'sparks' and 'system shutdown' effects to the new effect API #75
  • upgrade: rpi_ws281x library
  • better logging with instances' indexes
  • fixed power saving issue in macOS version
  • fixed memory leaks in SPI drivers
  • Boblight changed from built-in to optional component
HyperHDR - v17.0.0.0beta2

Published by awawa-dev about 3 years ago

Changes from the previous v17 beta:

  • Fix: serious bug when the WWW panel after the restart had first instance's configuration
  • New feature: auto-resume option for video grabbers when capturing stops for some reason (for example: changing the resolution or refresh rate of the incoming video stream) picture1
  • New feature: add support for ESP32 devices for HyperSPI (awa_spi driver)
  • New feature: add list of available COM ports for the adalight driver picture1
  • New feature: execute multiple JSON commands via GET request using single link picture1
  • Fix: in specific cases some devices could not react to 'no-signal' when it's triggered
  • Fix: better fit for mobile browsers the remote and JSON API wizard tab pages
  • Upgrade: rpi_ws281x library
  • Fix: validate user color selection in the remote and JSON API wizard tab pages

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:

  • upgrade ancient Bootstrap 3 to version 5
  • replace and update most of UI components, new layout picture1, picture2, picture3, picture4, picture5, picture6
  • software screen grabbers (Windows:DirectX11 / Linux:X11 / macOS:CoreGraphics) pictureWin
    pictureLin pictureMac #46
  • automatic signal detection with smart learning capability for USB grabbers (you can have only one algorithm enabled at the time: automatic one or the old, difficult to setup and unreliable manual one) picture1 picture2 picture3 picture4 picture5 picture6
  • re-implemented backup import / export function for ALL instances settings in place of the old functionality that clumsily imitated creating of backups, which in many cases resulted in data loss picture1
  • current video stream information in the 'overview' tab picture1
  • support for my new HyperSPI project (https://github.com/awawa-dev/HyperSPI) with awa_spi LED driver picture1
  • new video stream crop method in JSON API picture1 #64
  • JSON API documentation in a form of live playground in 'Advanced' tab picture1
  • 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 picture1, you can even improve the effect with the anti-flickering filter with threshold set to 255
  • add timeout for the anti-flickering filter picture1
  • translation resources are updated
  • new panel for easy video resolution & refresh mode selection picture1 picture2
  • add release for AARCH64 architecture #68 PERFORMANCE INCREASED UP to 30% COMPARED to Rpi 32bits: 32bit 1280 32bit 1920 64bit 1280 64bit 1920
  • fix for WLED new network protocol #90
  • HDR tone mapping is available as a global component picture1 picture2 picture3
  • removed redundant default JSON config in favour of JSON Schemas defaults
  • fix missing Linux taskbar icon
  • support for libCEC 6.0.2 to turn on/off video & system grabber picture1
  • support for libCEC to turn on/off HDR tone mapping with remote buttons (CEC or libCEC is quite buggy here and dependent on the hardware, with LG C9 must restart TV to make them work) picture1
  • HyperHDR is ready for QT6.2 (tested with the preview version/Vulkan/Windows)
  • lower CPU usage when automatic signal detection triggers 'nosignal' ('save resources' for software framerate decimation) picture1 #93
  • standardize libJPEG-turbo library (where it's necessary)
  • fix values premature clipping in the LUT generator & SDR preview rendering fix, access available now from the menu ('Advanced' tab)
  • suppress most of external components' warnings while building
  • faster image to LED colors transformation
  • import 'sparks' and 'system shutdown' effects to the new effect API #75
  • better logging with instances' indexes
  • Fixed power saving issue in macOS version
  • fix memory leaks in SPI drivers
HyperHDR - v17.0.0.0beta

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:

  • upgrade ancient Bootstrap 3 to version 5
  • replace and update most of UI components, new layout picture1, picture2, picture3, picture4, picture5, picture6
  • software screen grabbers (Windows:DirectX11 / Linux:X11 / macOS:CoreGraphics) pictureWin
    pictureLin pictureMac #46
  • automatic signal detection with smart learning capability for USB grabbers (you can have only one algorithm enabled at the time: automatic one or the old, difficult to setup and unreliable manual one) picture1 picture2 picture3 picture4 picture5 picture6
  • re-implemented backup import / export function for ALL instances settings in place of the old functionality that clumsily imitated creating of backups, which in many cases resulted in data loss picture1
  • current video stream information in the 'overview' tab picture1
  • support for my new HyperSPI project (https://github.com/awawa-dev/HyperSPI) with awa_spi LED driver picture1
  • new video stream crop method in JSON API picture1 #64
  • JSON API documentation in a form of live playground in 'Advanced' tab picture1
  • 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 picture1, you can even improve the effect with the anti-flickering filter with threshold set to 255
  • add timeout for the anti-flickering filter picture1
  • translation resources are updated
  • new panel for easy video resolution & refresh mode selection picture1 picture2
  • add release for AARCH64 architecture #68 PERFORMANCE INCREASED UP to 30% COMPARED to Rpi 32bits: 32bit 1280 32bit 1920 64bit 1280 64bit 1920
  • fix for WLED new network protocol #90
  • HDR tone mapping is available as a global component picture1 picture2 picture3
  • removed redundant default JSON config in favour of JSON Schemas defaults
  • fix missing Linux taskbar icon
  • support for libCEC 6.0.2 to turn on/off video & system grabber picture1
  • support for libCEC to turn on/off HDR tone mapping with remote buttons (CEC or libCEC is quite buggy here and dependent on the hardware, with LG C9 must restart TV to make them work) picture1
  • HyperHDR is ready for QT6.2 (tested with the preview version/Vulkan/Windows)
  • lower CPU usage when automatic signal detection triggers 'nosignal' ('save resources' for software framerate decimation) picture1 #93
  • standardize libJPEG-turbo library (where it's necessary)
  • fix values premature clipping in the LUT generator & SDR preview rendering fix, access available now from the menu ('Advanced' tab)
  • suppress most of external components' warnings while building
  • faster image to LED colors transformation
  • import 'sparks' and 'system shutdown' effects to the new effect API #75
  • better logging with instances' indexes
  • Fixed power saving issue in macOS version
  • fix memory leaks in SPI drivers
HyperHDR - v16.0.0.1

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.

HyperHDR - v16.0.0.0

Published by awawa-dev over 3 years ago

Please use v16.0.0.1 instead.

HyperHDR - v15.0.0.0

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:

    • Start/stop HyperHDR as service run: sudo systemctl start/stop [email protected]
    • Run HyperHDR from command line:  /usr/share/hyperhdr/bin/hyperhdr
    • The configuration folder is .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.
HyperHDR - v14.0.0.0

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:

  • New: ultra-fast USB serial port AWA protocol for ESP8266 at 2 000 000 baud with data integrity check for WS2812b & SK6812 at https://github.com/awawa-dev/HyperSerialEsp8266 and https://github.com/awawa-dev/HyperSerialWLED (you use it on your own risk!)
  • Improvement: increase performance for YUV decoding up to 30% and decrease CPU usage by 40% for higher resolutions & frame rates. The internal video pipeline shouldn't be blocked now in specific circumstances (for example 1080p60).
  • New: add popular I420, RGB24 and NV12 & XRGB decoders particularly for incoming modern lossless USB3.1 grabbers
  • Fix: some non-standard chars inside the USB grabbers identifier caused the destruction of the grabber's configuration. Rullz Navy U3 is affected and probably Rullz Coffee and Black with internal loop.
  • Philips Hue fix: Entertainment API driver is back from the dead and it's working now. Lamps can be power off on black colors and wake up automatically.
  • Philips Hue new: new options to set sleep/wake time for lamps to eliminate unnecessary flickering.
  • Philips Hue fix: also for the old restful API power off/wake up issue is resolved. But please migrate to the Entertainment API as it is much, much faster.
  • Philips Hue new: add options for the bottom of the screen section for hue lamp's configuration.
  • Philips Hue new: Rpi/Windows with HyperHDR will wait for Hue Bridge if they are power on simultaneously (for ex. when they are connected to the same surge protector). Philips Hue Bridge needs about 1 minute to be ready and Raspberry Pi is much faster.
  • Improvement: better compatibility with some MJPEG grabbers and cameras for Linux.
HyperHDR - v12.1.0.0

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:

  • Fixed really nasty bug that was causing many troubles for multi-instances & forwarding configs. The symptom was: an instance frozen on the black screen or on the boot effect.
  • Fix for a crash of the HyperHDR while using Philips Hue instance.
  • Fixed calibration problem with Kodi caused by the 'classic calibration option'.
  • HDR on/off command should be synchronized now (but these commands don't have permanent effect after reboot as designed).
  • Workaround for the new family of MS2109 grabber's clones for Windows 10.
HyperHDR - v12.0.0.0

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!!!

  • Fixed some non-standard video streams under Windows 10 .
    With current release all of my capture devices including Logitech camera are working correctly with the Media Foundation grabber.
    The device must have properly installed Windows driver (mission impossible for UTV007 on latest Windows) and supports of MJPEG or YUV encoding of course.
    You can view the video tutorial how it works with both WLED and Adalight Arduino USB adapter and multiple capturing devices under Windows 10 here: tutorial videos for Windows
  • Add hardware saturation & hue control for USB video grabbers if supported by the device (Windows, Linux)
  • Improved debug logger
  • A lot of small fixes and polished interface, removed some legacy options from the analog era
  • Include experimental support for USB-HID devices under Windows (must enable in cmake config file and recompile)
  • Applied some of changes and fixes from Hyperion NG including #1087 (Fix/no signal detection)

Known issues:

  • crashes with Philips Hue on some systems (will be fixed in the incoming release)
  • at startup effects cause some LED strips to remain black or stuck on the rainbow effect (please disable effects as workaround in this version)
  • color calibration using Kodi
  • not fully synchronized remote commands (will be fixed in the incoming release)