121 Commits

Author SHA1 Message Date
98212e4f46 feat: Implement configurable color order for WLED 2025-08-16 15:06:44 +02:00
68333f855b Merge branch 'wled-color-fix' into master 2025-08-16 06:48:09 +02:00
5b050dab9c docs: Add lesson learned about resolving LED flickering with increased frame rate 2025-08-16 06:42:42 +02:00
6695ca9f99 feat: Increase HyperionGrabber frame rate to 30 FPS 2025-08-16 06:40:16 +02:00
cfc205db7a fix: Increase WledClient DDP timeout to 5 seconds 2025-08-16 06:35:59 +02:00
da1890f237 feat: Implement LED offset in HyperionProcessor 2025-08-16 06:30:39 +02:00
845dc5c0a6 feat: Update default LED layout parameters 2025-08-16 06:27:52 +02:00
45a831f317 feat: Add configurable color algorithm (mean, mean_sqrt, max) 2025-08-16 06:25:40 +02:00
768b3b17b5 fix: Change WledClient to send RGB color order as default 2025-08-16 06:23:31 +02:00
8b35c5f58c feat: Add configurable color order to WledClient 2025-08-16 06:22:08 +02:00
9cb3fe0a72 fix: Resolve build errors by adding missing Qt includes and fixing QByteArray to QString conversions 2025-08-16 06:19:40 +02:00
9195dbfad2 feat: Integrate detailed black border and smoothing parameters; update docs 2025-08-16 06:18:14 +02:00
03c08ff4c0 docs: Add original Hyperion.ng default parameters to algorithm documentation 2025-08-16 06:14:12 +02:00
10be323a3b docs: Add default parameters for HyperionProcessor to algorithm documentation 2025-08-16 06:11:49 +02:00
e321272c95 docs: Update lessons_learned.md with recent refactoring and GRB color order details 2025-08-16 06:10:14 +02:00
32b32adbe0 docs: Update README.md for environment variable configuration and new features 2025-08-16 05:47:50 +02:00
c46fade6b0 feat: Refactor main application to use HyperionProcessor and WledClient with environment variable configuration 2025-08-16 05:40:47 +02:00
d81fe64cc1 feat: Implement GRB color order for WledClient 2025-08-16 05:16:08 +02:00
60bcfb043d feat: Integrate WledClient into grabberconfigurator for direct WLED communication 2025-08-16 04:31:35 +02:00
478828bdcf docs: Add lesson learned about KWin script interference 2025-08-16 04:20:03 +02:00
e31f154b38 feat: Implement and verify HyperionProcessor with live visualization 2025-08-16 03:58:49 +02:00
24a94a4ab3 feat(wled-config-tool): Fix segfault, flickering, and add ASCII layout visualization
- Resolved persistent segmentation faults by correcting memory management and simplifying interactive input logic.
- Eliminated LED flickering by implementing a longer timeout in DNRGB packets and removing unnecessary refresh timers.
- Added an ASCII visualization of the LED layout to the terminal for better user feedback.
- Updated lessons_learned.md with detailed explanations of the problems and their solutions.
2025-08-16 02:04:09 +02:00
edb694fd81 feat(wled-config-tool): Re-implement and fix demo and flash modes
- Re-implemented the demo and interactive flashing functionality for the wled_config_tool from scratch based on the detailed specification in lessons_learned.md.
- Added a new WledClient::setLedsColor method to send the entire LED state in a single packet, preventing flickering.
- Fixed multiple build issues, including missing Qt module dependencies, deprecated function calls, and linker errors.
- Updated lessons_learned.md to document the code loss and recovery process, as well as the build fixes.
2025-08-16 01:28:58 +02:00
0a5186bc70 docs: Update lessons_learned.md with Ambilight color mapping details 2025-08-16 00:55:55 +02:00
3425fe26b5 feat: Implement initial Ambilight color mapping 2025-08-16 00:54:46 +02:00
4ac2e445a9 docs: Update lessons_learned.md with LED demo mode implementation details 2025-08-16 00:37:18 +02:00
e43de997c8 feat: Add interactive LED layout configuration to wled_config_tool 2025-08-16 00:10:18 +02:00
f6dec995f9 feat: Implement and verify WLED configuration retrieval tool 2025-08-16 00:06:57 +02:00
c50aed732e feat: Implement WLED direct communication, config tool, and screen capture test setup. 2025-08-15 23:31:28 +02:00
79c5aa7f41 Docs: New strategy for dedicated WLED configuration and LED testing tool
Outlined a new strategy to create a standalone tool for WLED configuration retrieval and interactive LED testing, addressing previous challenges with programmatic access and LED mapping.
2025-08-15 23:21:22 +02:00
bdd9e2982d Docs: New strategy for dedicated WLED configuration and LED testing tool
Outlined a new strategy to create a standalone tool for WLED configuration retrieval and interactive LED testing, addressing previous challenges with programmatic access and LED mapping.
2025-08-15 23:16:18 +02:00
113d5b53fa Revert "Docs: Confirm WLED configuration with correct IP, LED count, and UDP port"
This reverts commit eebe7e1a04b49d543fc68521d9c96d1967a9a640.
2025-08-15 23:10:17 +02:00
eebe7e1a04 Docs: Confirm WLED configuration with correct IP, LED count, and UDP port
Updated lessons_learned.md with the confirmed WLED device details, including the corrected IP address (192.168.178.69), total LED count (181), and UDP port (21324). This resolves previous connectivity issues and allows for accurate configuration.
2025-08-15 23:06:49 +02:00
b0e4f24f0a Docs: Add WLED API information to lessons_learned.md
Documented findings from WLED API research, including JSON API for configuration and UDP Realtime protocol details, highlighting the default port mismatch.
2025-08-15 22:46:13 +02:00
1411eff48e Docs: Add Ambilight TV concept to lessons_learned.md
Documented the core principles of Ambilight TV and its relevance to the Hyperion_Grabber_X11_QT project, including potential causes for LED color mismatches.
2025-08-15 22:37:03 +02:00
27caa88ce9 Revert "Feat: Increase default change threshold to reduce flickering"
This reverts commit bff295502f2ae366ef6c8e039933e5c5154ed143.
2025-08-15 22:36:23 +02:00
bff295502f Feat: Increase default change threshold to reduce flickering
Addresses flickering issue by increasing _changeThreshold_m in hyperiongrabber.cpp from 100 to 5000. This filters out subtle pixel variations that caused unnecessary frame updates to WLED.
2025-08-15 22:34:00 +02:00
1fee3e518f Docs: Update lessons_learned.md with flickering problem diagnosis and proposed solution 2025-08-15 22:25:18 +02:00
9c98604e12 Docs: Document color order troubleshooting and resolution in lessons_learned.md 2025-08-15 22:13:41 +02:00
77059a24aa Refactor: Remove wled_test and update CMakeLists.txt 2025-08-15 21:58:22 +02:00
b08186cf00 Docs: Update lessons_learned.md with detailed direct WLED communication explanation and testing parameters 2025-08-15 21:47:54 +02:00
5919ee7ae7 Refactor: Remove HyperionClient dependency 2025-08-15 21:45:44 +02:00
c45cba611d Feat: Integrate WledClient and update HyperionGrabber for direct WLED communication 2025-08-15 21:45:28 +02:00
edf041a09a Docs: Update lessons_learned.md with new WLED direct communication strategy 2025-08-15 21:40:31 +02:00
a5e3298bd8 Docs: Add image transformation algorithm to lessons_learned.md 2025-08-15 21:36:23 +02:00
7036e466e3 Docs: Update lessons_learned.md with WLED-focused insights and new strategy 2025-08-15 21:27:32 +02:00
aa57826800 feat(mock): Implement realistic Hyperion mock server
The mock server now correctly implements the newline-delimited JSON protocol observed in the Hyperion server and client code.

- It properly parses incoming JSON streams line-by-line.
- It creates QImage objects from the raw RGB data using the dimensions provided in the JSON payload.
- It sends a success reply to the client after receiving an image.
- This commit also updates lessons_learned.md with key findings from the debugging session.
2025-08-15 20:20:14 +02:00
d1497f8c91 refactor(client): Use QJsonObject for Hyperion command construction
Refactored HyperionClient to use QJsonObject and QJsonDocument for constructing JSON commands.

This improves code readability, maintainability, and reduces the risk of malformed JSON strings compared to manual string concatenation.
2025-08-15 00:42:09 +02:00
817caed810 fix(main): Correct command-line argument parsing
Resolved an issue where the `--address` and `--port` command-line arguments were being ignored due to a hardcoded IP address and an incorrect parsing loop.

This commit ensures that:
- The application correctly uses the address and port provided by the user.
- The application exits gracefully if required arguments are missing.
- The argument parsing logic is simplified and more explicit.
2025-08-15 00:41:47 +02:00
4f8d53fedb refactor(grabber): Simplify frame scaling by removing OpenGL
Replaced the complex, low-level OpenGL pipeline in HyperionGrabber with a simple, high-level `QImage::scaled()` call.

This change significantly reduces code complexity and improves maintainability without sacrificing performance, as `QImage::scaled()` is highly optimized and often hardware-accelerated. The new implementation is more robust and easier to understand.

This resolves the following issues:
- Removes fragile, hard-to-debug OpenGL code.
- Eliminates potential bugs related to FBOs, shaders, and texture handling.
- Corrects the image data pipeline to ensure raw pixel data is processed consistently.
2025-08-15 00:41:07 +02:00