Per-tile stream quality (high/low), fps cap, latency flags
Cameras carry multiple stream URLs (streams: high/medium/low); each tile picks one via Quality (auto/high/low). Small tiles can pull the low substream to cut Pi decode load. discover --enable-rtsp takes a comma list (high,low), enables each channel, records all enabled ones. TUI: q cycles a tile quality (shown in the tile); discover enables high+low. Player: --framedrop + low-delay demuxer flags; player.max_fps. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -107,13 +107,27 @@ func (m *model) viewLayoutEdit() string {
|
||||
b.WriteString("\n\n")
|
||||
b.WriteString(strings.Join([]string{
|
||||
hkey("click", "assign cell") + " " + hkey("drag a tile", "resize") + " (mouse)",
|
||||
hkey("←↑↓→/hjkl", "move") + " " + hkey("enter", "assign") + " " + hkey("c", "clear"),
|
||||
hkey("←↑↓→/hjkl", "move") + " " + hkey("enter", "assign") + " " + hkey("c", "clear") + " " + hkey("q", "quality"),
|
||||
"resize tile " + hkey("L/H", "wider/narrower") + " " + hkey("J/K", "taller/shorter"),
|
||||
"base grid " + hkey("] [", "cols") + " " + hkey("} {", "rows") + " " + hkey("esc", "back"),
|
||||
}, "\n"))
|
||||
return b.String()
|
||||
}
|
||||
|
||||
// qualityAbbrev shortens a quality name for the compact tile label.
|
||||
func qualityAbbrev(q string) string {
|
||||
switch q {
|
||||
case "high":
|
||||
return "hi"
|
||||
case "medium":
|
||||
return "med"
|
||||
case "low":
|
||||
return "lo"
|
||||
default:
|
||||
return q
|
||||
}
|
||||
}
|
||||
|
||||
// renderGrid draws the base grid with tiles, camera labels, continuation marks
|
||||
// for spanned cells, and a highlighted cursor cell — a live picture of the wall.
|
||||
func (m *model) renderGrid(cols, rows int) string {
|
||||
@@ -156,9 +170,17 @@ func (m *model) renderCell(l config.Layout, c, r, line int) string {
|
||||
plain = padTo(truncate(label, cellW), cellW)
|
||||
case isOrigin && line == 1:
|
||||
cs, rs := t.Span()
|
||||
info := ""
|
||||
if cs > 1 || rs > 1 {
|
||||
plain = padTo(fmt.Sprintf("%dx%d", cs, rs), cellW)
|
||||
info = fmt.Sprintf("%dx%d", cs, rs)
|
||||
}
|
||||
if t.Quality != "" {
|
||||
if info != "" {
|
||||
info += " "
|
||||
}
|
||||
info += qualityAbbrev(t.Quality)
|
||||
}
|
||||
plain = padTo(info, cellW)
|
||||
dim = true
|
||||
default: // continuation cell of a spanned tile
|
||||
plain = center("·", cellW)
|
||||
|
||||
Reference in New Issue
Block a user