Private
Public Access
Release 0.13.2
This commit is contained in:
1 parent
c3040680a0
commit
2f6efd9864
12 files changed
+25
-19
No files matched your search
@@ -1,15 +1,15 @@
|
|||||||
{
|
{
|
||||||
"id": "org.webosbrew.histogramhyperion",
|
"id": "org.webosbrew.histogramhyperion",
|
||||||
"version": "0.13.1",
|
"version": "0.13.2",
|
||||||
"type": "web",
|
"type": "web",
|
||||||
"title": "HyperDRM",
|
"title": "HyperDRM",
|
||||||
"appDescription": "Ambient lighting for webOS, Hyperion and HyperHDR",
|
"appDescription": "Ambient lighting for webOS, Hyperion and HyperHDR",
|
||||||
"iconUri": "https://gitea.adnau.de/matze19999/HyperDRM/raw/branch/main/app/icon.png",
|
"iconUri": "https://gitea.adnau.de/matze19999/HyperDRM/raw/branch/main/app/icon.png",
|
||||||
"sourceUrl": "https://gitea.adnau.de/matze19999/HyperDRM",
|
"sourceUrl": "https://gitea.adnau.de/matze19999/HyperDRM",
|
||||||
"rootRequired": true,
|
"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": {
|
"ipkHash": {
|
||||||
"sha256": "7ee27c6c8c0f7649690f1eb6e055b0add5ba2e57461cec58cbc8e144316af1d6"
|
"sha256": "d83eed088b5a1cc8a90d96bc781359db219aa50f51218e3ae3c2ef52510f6ed7"
|
||||||
},
|
},
|
||||||
"ipkSize": 1207854
|
"ipkSize": 1207844
|
||||||
}
|
}
|
||||||
Binary file not shown.
@@ -27,7 +27,7 @@ Only the own service is modified. Optional Auto PicCap can configure its receive
|
|||||||
|
|
||||||
## Installation
|
## 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:
|
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
|
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.
|
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.
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"id": "org.webosbrew.histogramhyperion",
|
"id": "org.webosbrew.histogramhyperion",
|
||||||
"version": "0.13.1",
|
"version": "0.13.2",
|
||||||
"vendor": "Local development",
|
"vendor": "Local development",
|
||||||
"type": "web",
|
"type": "web",
|
||||||
"main": "index.html",
|
"main": "index.html",
|
||||||
|
|||||||
+1
-1
@@ -1,2 +1,2 @@
|
|||||||
'use strict';
|
'use strict';
|
||||||
var HYPERDRM_APP_VERSION = '0.13.1';
|
var HYPERDRM_APP_VERSION = '0.13.2';
|
||||||
@@ -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.
|
||||||
+3
-3
@@ -7,10 +7,10 @@ static inline void dark_color_filter(unsigned char color[3]) {
|
|||||||
for (unsigned c = 1; c < 3; c++)
|
for (unsigned c = 1; c < 3; c++)
|
||||||
if (color[c] > peak)
|
if (color[c] > peak)
|
||||||
peak = color[c];
|
peak = color[c];
|
||||||
if (peak >= 24)
|
if (peak >= 32)
|
||||||
return;
|
return;
|
||||||
unsigned gain = peak > 12 ? peak - 12 : 0;
|
unsigned gain = peak > 16 ? peak - 16 : 0;
|
||||||
for (unsigned c = 0; c < 3; c++)
|
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
|
#endif
|
||||||
@@ -5,17 +5,20 @@ int main(void) {
|
|||||||
for (unsigned v = 0; v <= 255; v++) {
|
for (unsigned v = 0; v <= 255; v++) {
|
||||||
unsigned char gray[3] = {v, v, v};
|
unsigned char gray[3] = {v, v, v};
|
||||||
dark_color_filter(gray);
|
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);
|
for (unsigned c = 0; c < 3; c++) assert(gray[c] == expected);
|
||||||
}
|
}
|
||||||
unsigned char residual[3] = {4, 8, 2};
|
unsigned char residual[3] = {4, 8, 2};
|
||||||
dark_color_filter(residual);
|
dark_color_filter(residual);
|
||||||
assert(!residual[0] && !residual[1] && !residual[2]);
|
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);
|
dark_color_filter(transition);
|
||||||
assert(transition[0] == 5 && transition[1] == 9 && transition[2] == 3);
|
assert(transition[0] == 6 && transition[1] == 12 && transition[2] == 4);
|
||||||
unsigned char saturated[3] = {0, 24, 0};
|
unsigned char saturated[3] = {0, 32, 0};
|
||||||
dark_color_filter(saturated);
|
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");
|
puts("PASS: near-black suppression, gradual transition, unchanged brighter colors");
|
||||||
}
|
}
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
#ifndef HYPERDRM_VERSION_H
|
#ifndef HYPERDRM_VERSION_H
|
||||||
#define HYPERDRM_VERSION_H
|
#define HYPERDRM_VERSION_H
|
||||||
#define HYPERDRM_VERSION "0.13.1"
|
#define HYPERDRM_VERSION "0.13.2"
|
||||||
#endif
|
#endif
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"id": "org.webosbrew.histogramhyperion",
|
"id": "org.webosbrew.histogramhyperion",
|
||||||
"version": "0.13.1",
|
"version": "0.13.2",
|
||||||
"vendor": "Local development",
|
"vendor": "Local development",
|
||||||
"app": "org.webosbrew.histogramhyperion",
|
"app": "org.webosbrew.histogramhyperion",
|
||||||
"services": [
|
"services": [
|
||||||
|
|||||||
Binary file not shown.
Reference in new issue
Block a user