diff --git a/HyperDRM.manifest.json b/HyperDRM.manifest.json
index 239de8a..e940cd2 100644
--- a/HyperDRM.manifest.json
+++ b/HyperDRM.manifest.json
@@ -1,15 +1,15 @@
{
"id": "org.webosbrew.histogramhyperion",
- "version": "0.13.3",
+ "version": "0.13.4",
"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.3_arm.ipk",
+ "ipkUrl": "https://gitea.adnau.de/matze19999/HyperDRM/raw/branch/main/HyperDRM_0.13.4_arm.ipk",
"ipkHash": {
- "sha256": "acb0978100796e8765e586a91183599ef4eb783631d8b68205d716621790e232"
+ "sha256": "3028ea164e05ff6b9c601aa7f3ff0f05b17781ba603eaebe3395abae503f7bb7"
},
- "ipkSize": 1208120
+ "ipkSize": 1208554
}
diff --git a/HyperDRM_0.13.3_arm.ipk b/HyperDRM_0.13.4_arm.ipk
similarity index 89%
rename from HyperDRM_0.13.3_arm.ipk
rename to HyperDRM_0.13.4_arm.ipk
index 25035b7..2c6d385 100644
Binary files a/HyperDRM_0.13.3_arm.ipk and b/HyperDRM_0.13.4_arm.ipk differ
diff --git a/README.md b/README.md
index faeb85f..732c8d4 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.3_arm.ipk](HyperDRM_0.13.3_arm.ipk). Install it using the TV's webOS/Homebrew package installation workflow.
+The current package is [HyperDRM_0.13.4_arm.ipk](HyperDRM_0.13.4_arm.ipk). Install it using the TV's webOS/Homebrew package installation workflow.
Elevate the installed own service through Homebrew Channel:
@@ -237,3 +237,5 @@ 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 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.
Thin letterbox detection compares both edges against lit interior histogram samples and requires a consistently dark upper edge for at least two seconds. Histogram probes cannot determine the exact bar height or guarantee detection on every scene.
+
+Histogram capture defaults to 50 ms. The Receiver panel provides a saved Capture interval (ms) setting from 25 to 1000 in steps of 25. Existing settings without this field use 50 ms. PicCap capture timing is unchanged.
diff --git a/VERSION b/VERSION
index 288adf5..dffa40e 100644
--- a/VERSION
+++ b/VERSION
@@ -1 +1 @@
-0.13.3
+0.13.4
diff --git a/app/app.js b/app/app.js
index 4d6ee40..7d49f1c 100644
--- a/app/app.js
+++ b/app/app.js
@@ -125,6 +125,7 @@ function display(result) {
document.getElementById('host').value = result.host;
document.getElementById('port').value = result.port;
document.getElementById('piccapPort').value = result.piccapPort || 19400;
+ document.getElementById('captureInterval').value = result.captureIntervalMs || 50;
receiver = result.receiver;
document.getElementById('receiver').textContent = 'Receiver: ' + receiver;
}
@@ -298,7 +299,7 @@ document.getElementById('handover').onclick = function() {
enabled: button.getAttribute('aria-checked') !== 'true'
});
};
-['host', 'port', 'piccapPort', 'token', 'clearToken'].forEach(function(id) {
+['host', 'port', 'piccapPort', 'captureInterval', 'token', 'clearToken'].forEach(function(id) {
document.getElementById(id).addEventListener('input', function() {
targetDirty = true;
});
@@ -320,7 +321,13 @@ document.getElementById('saveTarget').onclick = function() {
showActionError('PicCap FlatBuffer port must be an integer from 1 to 65535.');
return;
}
+ var interval = Number(document.getElementById('captureInterval').value);
+ if (!Number.isInteger(interval) || interval < 25 || interval > 1000 || interval % 25) {
+ showActionError('Capture interval must be 25–1000 ms in steps of 25.');
+ return;
+ }
var settings = {
+ captureIntervalMs: interval,
piccapPort: flatPort,
host: document.getElementById('host').value.trim(),
port: port,
@@ -393,6 +400,6 @@ document.getElementById('editProfile').onclick = function() {
showProfile();
if (advancedProfile) document.getElementById('customProfileField').focus();
};
-setupRemoteNavigation(['overviewTab', 'receiverTab', 'calibrationTab', 'reloadService', 'grantRoot', 'start', 'stop', 'refresh', 'autostart', 'handover', 'calibrationShortcut', 'receiver', 'hostField', 'portField', 'piccapPortField', 'tokenField', 'clearToken', 'saveTarget', 'testConnection', 'calibrate', 'validateCalibration', 'profile', 'saveProfile', 'editProfile', 'customProfileField', 'cancelCalibration'].map(function(id) {
+setupRemoteNavigation(['overviewTab', 'receiverTab', 'calibrationTab', 'reloadService', 'grantRoot', 'start', 'stop', 'refresh', 'autostart', 'handover', 'calibrationShortcut', 'receiver', 'hostField', 'portField', 'piccapPortField', 'captureIntervalField', 'tokenField', 'clearToken', 'saveTarget', 'testConnection', 'calibrate', 'validateCalibration', 'profile', 'saveProfile', 'editProfile', 'customProfileField', 'cancelCalibration'].map(function(id) {
return document.getElementById(id);
}), document, window);
diff --git a/app/appinfo.json b/app/appinfo.json
index 1134cc0..c42e62d 100644
--- a/app/appinfo.json
+++ b/app/appinfo.json
@@ -1,6 +1,6 @@
{
"id": "org.webosbrew.histogramhyperion",
- "version": "0.13.3",
+ "version": "0.13.4",
"vendor": "Local development",
"type": "web",
"main": "index.html",
diff --git a/app/index.html b/app/index.html
index 049d5b8..1c2a7f8 100644
--- a/app/index.html
+++ b/app/index.html
@@ -38,11 +38,12 @@ nav{border-bottom:1px solid #456185;padding-bottom:10px;margin-bottom:18px}nav b
+
Connection test: Not tested
-
The JSON TCP port is usually 19444. Leave the token blank to keep the saved token. Saving updates the current session.
+
The JSON TCP port is usually 19444. Leave the token blank to keep the saved token. Saving updates the current session. Histogram capture defaults to 50 ms; choose 25–1000 ms in steps of 25. Lower values reduce latency and increase TV load. PicCap uses its own capture rate.
Auto PicCap uses the same IP and its FlatBuffer port, usually 19400. Enable the receiver's FlatBuffer server. Remote IPv6 uses HyperDRM.