diff --git a/HyperDRM.manifest.json b/HyperDRM.manifest.json index 691894f..29a926a 100644 --- a/HyperDRM.manifest.json +++ b/HyperDRM.manifest.json @@ -1,15 +1,15 @@ { "id": "org.webosbrew.histogramhyperion", - "version": "0.13.1", + "version": "0.13.2", "type": "web", "title": "HyperDRM", "appDescription": "Ambient lighting for webOS, Hyperion and HyperHDR", "iconUri": "https://gitea.adnau.de/matze19999/HyperDRM/raw/branch/main/app/icon.png", "sourceUrl": "https://gitea.adnau.de/matze19999/HyperDRM", "rootRequired": true, - "ipkUrl": "https://gitea.adnau.de/matze19999/HyperDRM/raw/branch/main/HyperDRM_0.13.1_arm.ipk", + "ipkUrl": "https://gitea.adnau.de/matze19999/HyperDRM/raw/branch/main/HyperDRM_0.13.2_arm.ipk", "ipkHash": { - "sha256": "7ee27c6c8c0f7649690f1eb6e055b0add5ba2e57461cec58cbc8e144316af1d6" + "sha256": "d83eed088b5a1cc8a90d96bc781359db219aa50f51218e3ae3c2ef52510f6ed7" }, - "ipkSize": 1207854 + "ipkSize": 1207844 } diff --git a/HyperDRM_0.13.1_arm.ipk b/HyperDRM_0.13.2_arm.ipk similarity index 95% rename from HyperDRM_0.13.1_arm.ipk rename to HyperDRM_0.13.2_arm.ipk index eb80875..7df99f9 100644 Binary files a/HyperDRM_0.13.1_arm.ipk and b/HyperDRM_0.13.2_arm.ipk differ diff --git a/README.md b/README.md index 0ff342f..c6187d6 100644 --- a/README.md +++ b/README.md @@ -27,7 +27,7 @@ Only the own service is modified. Optional Auto PicCap can configure its receive ## Installation -The current package is [HyperDRM_0.13.1_arm.ipk](HyperDRM_0.13.1_arm.ipk). Install it using the TV's webOS/Homebrew package installation workflow. +The current package is [HyperDRM_0.13.2_arm.ipk](HyperDRM_0.13.2_arm.ipk). Install it using the TV's webOS/Homebrew package installation workflow. Elevate the installed own service through Homebrew Channel: @@ -234,4 +234,4 @@ and briefly interrupts ambient lighting; it never runs automatically. receiver-output and simulated service-lifecycle tests with ASan/UBSan. These host tests do not replace real LG capture and remote-control validation on a TV. -Histogram near-black handling suppresses colors with a maximum RGB channel of 12 or less, gradually restores brightness between 12 and 24, and preserves brighter colors. This applies only to histogram output; PicCap, receiver calibration and raw calibration samples are unchanged. +Histogram near-black handling suppresses colors with a maximum RGB channel of 16 or less, gradually restores brightness between 16 and 32, and preserves brighter colors. This applies only to histogram output; PicCap, receiver calibration and raw calibration samples are unchanged. diff --git a/VERSION b/VERSION index c317a91..9beb74d 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -0.13.1 +0.13.2 diff --git a/app/appinfo.json b/app/appinfo.json index 4a5826a..e8a6f14 100644 --- a/app/appinfo.json +++ b/app/appinfo.json @@ -1,6 +1,6 @@ { "id": "org.webosbrew.histogramhyperion", - "version": "0.13.1", + "version": "0.13.2", "vendor": "Local development", "type": "web", "main": "index.html", diff --git a/app/version.js b/app/version.js index ffa86a7..fd9640d 100644 --- a/app/version.js +++ b/app/version.js @@ -1,2 +1,2 @@ 'use strict'; -var HYPERDRM_APP_VERSION = '0.13.1'; +var HYPERDRM_APP_VERSION = '0.13.2'; diff --git a/docs/release-0.13.2.md b/docs/release-0.13.2.md new file mode 100644 index 0000000..45143b8 --- /dev/null +++ b/docs/release-0.13.2.md @@ -0,0 +1,3 @@ +# HyperDRM 0.13.2 + +Raise the histogram black cutoff to 16 and extend the proportional transition to 32. Live measurements showed raw [13,14,7] causing residual [1,1,0] to [2,2,1] at the bottom-right LEDs with the previous cutoff. Regression coverage now includes this sample. Brighter colors, PicCap and saved settings remain unchanged; very dark detail is suppressed more strongly. diff --git a/native/dark_color.h b/native/dark_color.h index c2cb6e7..bd3995f 100644 --- a/native/dark_color.h +++ b/native/dark_color.h @@ -7,10 +7,10 @@ static inline void dark_color_filter(unsigned char color[3]) { for (unsigned c = 1; c < 3; c++) if (color[c] > peak) peak = color[c]; - if (peak >= 24) + if (peak >= 32) return; - unsigned gain = peak > 12 ? peak - 12 : 0; + unsigned gain = peak > 16 ? peak - 16 : 0; for (unsigned c = 0; c < 3; c++) - color[c] = (unsigned char)((color[c] * gain + 6) / 12); + color[c] = (unsigned char)((color[c] * gain + 8) / 16); } #endif diff --git a/native/test_dark_color.c b/native/test_dark_color.c index b94ff31..385c9ee 100644 --- a/native/test_dark_color.c +++ b/native/test_dark_color.c @@ -5,17 +5,20 @@ int main(void) { for (unsigned v = 0; v <= 255; v++) { unsigned char gray[3] = {v, v, v}; dark_color_filter(gray); - unsigned expected = v <= 12 ? 0 : v >= 24 ? v : (v * (v - 12) + 6) / 12; + unsigned expected = v <= 16 ? 0 : v >= 32 ? v : (v * (v - 16) + 8) / 16; for (unsigned c = 0; c < 3; c++) assert(gray[c] == expected); } unsigned char residual[3] = {4, 8, 2}; dark_color_filter(residual); assert(!residual[0] && !residual[1] && !residual[2]); - unsigned char transition[3] = {9, 18, 6}; + unsigned char measured[3] = {13, 14, 7}; + dark_color_filter(measured); + assert(!measured[0] && !measured[1] && !measured[2]); + unsigned char transition[3] = {12, 24, 8}; dark_color_filter(transition); - assert(transition[0] == 5 && transition[1] == 9 && transition[2] == 3); - unsigned char saturated[3] = {0, 24, 0}; + assert(transition[0] == 6 && transition[1] == 12 && transition[2] == 4); + unsigned char saturated[3] = {0, 32, 0}; dark_color_filter(saturated); - assert(saturated[0] == 0 && saturated[1] == 24 && saturated[2] == 0); + assert(saturated[0] == 0 && saturated[1] == 32 && saturated[2] == 0); puts("PASS: near-black suppression, gradual transition, unchanged brighter colors"); } diff --git a/native/version.h b/native/version.h index 52bdd06..1263c46 100644 --- a/native/version.h +++ b/native/version.h @@ -1,4 +1,4 @@ #ifndef HYPERDRM_VERSION_H #define HYPERDRM_VERSION_H -#define HYPERDRM_VERSION "0.13.1" +#define HYPERDRM_VERSION "0.13.2" #endif diff --git a/package/packageinfo.json b/package/packageinfo.json index 16a6b20..b8bf389 100644 --- a/package/packageinfo.json +++ b/package/packageinfo.json @@ -1,6 +1,6 @@ { "id": "org.webosbrew.histogramhyperion", - "version": "0.13.1", + "version": "0.13.2", "vendor": "Local development", "app": "org.webosbrew.histogramhyperion", "services": [ diff --git a/service/histogram-service b/service/histogram-service index 58a1526..3a0fa27 100644 Binary files a/service/histogram-service and b/service/histogram-service differ