src.nth.io/

summaryrefslogtreecommitdiff
path: root/scrypted
diff options
context:
space:
mode:
authorLuke Hoersten <[email protected]>2026-07-15 19:36:56 -0500
committerLuke Hoersten <[email protected]>2026-07-15 19:36:56 -0500
commit2af69f78a6179334c6f59d4273bd72ae170fb821 (patch)
tree5833ba2e3325c07d2abec27004745eb6eea649b1 /scrypted
parentf59cea3be9eed8d63fa44d4fd360c9c68e9318f6 (diff)
scrypted: temp_c on the stats line; docs: triple-buffer model + window tuning
- Scrypted per-stream stats line gains temp=<c>C from /state temp_c — free thermal trending under streaming load. - README Display strategy rewritten for the tear-free triple-buffer model: why the deferred fb-index reload tears under double buffering, why scan-tracked buffer roles beat vsync-waiting, and the tear_guard_engaged counter. - New 'TCP window + EMAC tuning' section documenting the measured window raise, the EMAC-RX-pool-below-window RTO regression, and the pool >= TCP_WND invariant; stale 'window bump is safe but won't help' backlog text updated. - Memory strategy updated (3 fbs, decoder writes into them directly, stream body ring).
Diffstat (limited to 'scrypted')
-rw-r--r--scrypted/scrypted-viewport.ts6
1 files changed, 5 insertions, 1 deletions
diff --git a/scrypted/scrypted-viewport.ts b/scrypted/scrypted-viewport.ts
index b7f2c65..9ca42e7 100644
--- a/scrypted/scrypted-viewport.ts
+++ b/scrypted/scrypted-viewport.ts
@@ -1487,6 +1487,7 @@ class ScryptedViewportProvider extends ScryptedDeviceBase
// missed /state never wedges the logger.
let painted = "?", paintedMb = "?", g2g = "?", paintedNum = -1;
let recvStr = "?", decStr = "?", paintStr = "?", idleStr = "?";
+ let tempStr = "?";
try {
const st: any = await fetch(`http://${v.host}/state`, {
signal: AbortSignal.timeout(800),
@@ -1501,6 +1502,9 @@ class ScryptedViewportProvider extends ScryptedDeviceBase
paintStr = `${fs.paint_min_us}/${fs.paint_avg_us}/${fs.paint_max_us}`;
idleStr = `${fs.idle_min_us}/${fs.idle_avg_us}/${fs.idle_max_us}`;
}
+ // On-die junction temp (°C); free thermal trending under
+ // streaming load, the hottest thing this device does.
+ if (typeof st?.temp_c === "number") tempStr = st.temp_c.toFixed(1);
if (fs?.last_paint_event_us_low) {
const nowUsLow = (Date.now() * 1000) >>> 0;
const diff = (nowUsLow - fs.last_paint_event_us_low) >>> 0;
@@ -1541,7 +1545,7 @@ class ScryptedViewportProvider extends ScryptedDeviceBase
`${mbPerSec.toFixed(2)}MB/s sent / ${paintedMb}MB/s painted | ` +
`socket.write p50=${p50}ms p95=${p95}ms max=${max}ms backpressured=${socketBackpressured} bp=${framesSampled > 0 ? ((framesUnderBp / framesSampled) * 100).toFixed(0) : "?"}% ` +
`node_buf=${(nodeBufBytes / 1024).toFixed(0)}KB≈${nodeBufMs}ms/${v.maxNodeBufMb}MB cap | ` +
- `recv=${recvStr}us dec=${decStr}us paint=${paintStr}us idle=${idleStr}us | g2g=${g2g}`);
+ `recv=${recvStr}us dec=${decStr}us paint=${paintStr}us idle=${idleStr}us | temp=${tempStr}C | g2g=${g2g}`);
droppedFrames = 0;
droppedOldest = 0;