Files
hdmiviewer/README.md

95 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# HDMI Viewer
Ein schlanker Qt6/C++ HDMI-Viewer für Arch Linux mit V4L2 (Video) und ALSA (Audio).
Gedacht als Companion zu OBS Studio: **Anzeigen ohne Aufnehmen**.
## Features
- Live-Vorschau vom HDMI-Grabber via V4L2 (YUYV und NV12)
- ALSA-Audio direkt vom Grabber-Gerät
- Gerät-Auswahl beim Start, **Audio-Gerät wird gespeichert**
- **F** → Vollbild / **F** oder **Esc** im Vollbild → Fenstermodus
- **Esc** im Fenstermodus → zurück zur Gerät-Auswahl (Device wird sauber freigegeben)
- Seitenverhältnis immer bewahrt (Letterbox/Pillarbox)
- Titelleiste zeigt tatsächliche Auflösung und FPS
- Colorspace-Konvertierung im ThreadPool (kein Ruckeln)
- FPS explizit auf 60fps gesetzt (was Grabber liefert wird in Statusbar angezeigt)
- **Bildglättung** (standardmäßig an): GPU-Shader trennt Luma/Chroma und
behandelt sie getrennt Chroma wird stärker weichgezeichnet (killt
Dot-Crawl/Farbrauschen billiger Composite→HDMI-Scaler wie Lioncast Mini
AV2HDMI o.ä.), Luma wird leicht geglättet und dezent gegengeschärft
(nimmt harte Scaler-Kanten raus, ohne matschig zu wirken). Keine Optik-
Spielerei, sondern eine echte Bildverbesserung. Taste **S** zum Umschalten.
- **Retro-Optik** (standardmäßig aus): separater Nostalgie-Look Scanlines,
Phosphor-/Aperture-Grille-Maske, leichte Wölbung wie bei einem alten
Röhrenfernseher. Lässt sich mit der Bildglättung kombinieren. Taste **C**.
- **Helligkeit** (Tasten **,** dunkler / **.** heller): Gamma-Anpassung, live
und persistiert. Sinnvoll als Feinjustierung, falls Farbraum-Erkennung
(siehe unten) allein nicht perfekt zum eigenen Bildschirm passt.
- **Hardware-Helligkeit**: Beim Öffnen des Geräts wird (falls vom Chip
unterstützt) der V4L2-Brightness-Regler direkt am Grabber moderat
angehoben (+20 % des Wertebereichs ab Werkseinstellung) das wirkt
bereits VOR der JPEG-Kompression und kann so tatsächlich verlorene
Schattendetails retten, statt nur nachträglich zu strecken, was von der
Kompression übrig blieb. Diagnose-Ausgabe der verfügbaren Regler landet
beim Start im Terminal.
- **Studio-/Full-Range-Korrektur**: Das fertig dekodierte Bild wird von einem
komprimierten Kontrastumfang (Schwarzpunkt niedrig angesetzt, Weißpunkt
≈235/255) auf den vollen 0255-Kontrastumfang gedehnt. Ohne diese
Korrektur wirkt das Bild dumpf, kontrastarm und zu dunkel viele billige
HDMI-Grabber liefern (oder kodieren, auch bei MJPEG) genau in diesem
komprimierten Bereich. Greift direkt im GPU-Shader auf dem fertigen
RGB-Bild, also unabhängig vom Pixelformat.
## Abhängigkeiten (Arch Linux)
```bash
sudo pacman -S qt6-base cmake alsa-lib linux-headers base-devel
```
`qt6-base` bringt auf Arch bereits die benötigten `Qt6OpenGL`- und
`Qt6OpenGLWidgets`-Module mit.
## Bauen
```bash
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
```
## Starten
```bash
./hdmi-viewer
```
## Tastenkürzel
| Taste | Funktion |
|--------------|---------------------------------------------|
| F | Vollbild ein/aus |
| S | Bildglättung ein/aus |
| C | Retro-Optik (Scanlines/Maske) ein/aus |
| , / . | Dunkler / Heller (Helligkeit, gespeichert) |
| Esc | Vollbild verlassen ODER zurück zum Dialog |
## Einstellungen
Werden gespeichert in: `~/.config/hdmi-viewer/HDMIViewer.conf`
(Standard XDG-Pfad, kein manuelles Anlegen nötig)
## Audio-Gerät finden
```bash
# Alle ALSA-Capture-Geräte auflisten
arecord -l
# Testen (hw:X,Y aus arecord -l, z.B. hw:2,0)
arecord -D hw:2,0 -f S16_LE -r 48000 -c 2 /tmp/test.wav
aplay /tmp/test.wav
```
Das Gerät dann im Dialog so eingeben: z.B. `hw:2,0` oder `plughw:2,0`
(plughw macht automatische Sample-Rate-Konvertierung, falls nötig)