Hallo,
ich habe mich die letzten Tage etwas mit der --hud-Option von vdr-sxfe (Teil des xineliboutput-plugins) beschäftigt und möchte hier meine Erkenntnisse zusammentragen, vll. kann daraus später eine Wiki-Seite entstehen.
Zielstellung
Was ich wollte war ein Budget-Only-System mit xineliboutput und vdr-sxfe. Ausgabe soll auf einen 4:3-Monitor am VGA-Out der Graka geschehen. Das funktionierte an sich ganz gut mit dem Befehl:
Lediglich das OSD war nicht befriedigend. Ich gehe hier also davon aus das vdr-sxfe bereits funktioniert und es lediglich um die Optimierung des OSD geht.
Funktionsprinzip von HUD OSD
Das OSD wird in ein neues Fenster gezeichnet, welches über Compositing halbtransparent über das Video-Fenster gelegt wird. Dadurch ist es unabhängig von dessen Seitenverhältnis und kann in der vollen Auflösung des Monitors gezeichnet werden.
X-Server
Der X-Server muss über die COMPOSITE-Extension verfügen. Angeschaltet wird diese über Hinzufügen von
zur xorg.conf. Danach sollte "Composite" in der Ausgabe von xdpyinfo erscheinen.
Desweiteren muss die Farbtiefe des Screens auf 24 Bit gestellt werden. Siehe dazu man xorg.conf.
Compositing Manager
Nun ist der Xserver bereit für einen Compositing Manager. I.d.R. soll vdr-sxfe als einziges Programm ohne großes Desktop Environment wie KDE oder Gnome laufen. Für diesen Zweck bieten sich zwei relativ schlanke Compositing Manager an: compiz und xcompmgr. xcompmgr ist kleiner, benötigt aber zwingend einen Windowmanager (twm, fvwm2, *box, ...) zum Funktionieren. Compiz ist umfangreicher, läuft aber ohne extra WM (ist bereits enthalten).
Compositing Test mit transset
Zum testen der Compositing Manger bietet sich eine simple X-Session an, die aus ein paar xterms und einem einfachem Windowmanager besteht. Eine solche wird von den meisten Distris standardmäßig gestartet, wenn kein KDE/Gnome installiert ist.
In einer solchen startet man den Compositing Manager wie folgt:
Danach kann man z.B. mit transset 0.5 durch Anklicken ein paar Fenster zu 50 % transparent machen um zu schauen, ob Compositing auch wirklich funktioniert.
vdr-sxfe
Läuft der Compositing Manager wie gewünscht, sollte beim Start von vdr-sxfe --hud schon mal ein Menü sichtbar sein. Ist es bereits transparent: you're done. Ist es nicht transparent, muss noch die Video-Ausgabe angepasst werden. Transparenz hat bei mir nur mit den Ausgabetreibern xshm und xv (Textured Video) funktioniert. Da xshm langsam ist, ist xv zu bevorzugen. Wie bereits angedeutet gibt es 2 Varianten von XVideo: Overlay und Textured Video. Welche davon die Grafikkarte unterstützt erfährt man mit xvinfo:
$> xvinfo
X-Video Extension version 2.2
screen #0
Adaptor #0: "ATI Radeon Video Overlay"
port base: 57
[...]
Adaptor #1: "Radeon Textured Video"
port base: 58
In Verbindung mit Compositing funktioniert nur Textured Video! Dummerweise verwendet vdr-sxfe nicht immer automatisch den richtigen Adapter. Die Angabe der Portnummer als Parameter an vdr-sxfe hat bei mir nicht geklappt:
Aber dem kann durch Bearbeiten der Datei ~/.xine/config_xineliboutput nachgeholfen werden:
[...]
# video display method preference
# { Any Overlay Textured Video Blitter }, default: 0
video.device.xv_preferred_method:Textured Video
[...]
Damit war bei mir dann endlich das OSD transparent.
Startskript
Zum Abschluss hier meine komplette ~/.xinitrc:
#/bin/sh
# ESC-Tastendruck via FB simulieren
irxevent --daemon
# Compositing
compiz-manager &
# Alternativ:
# xcompmgr &
# twm &
vdr-sxfe xvdr://localhost --lirc --fullscreen --width=1024 --height=768 --nokbd --syslog --video=xv --hud
Alles anzeigen
Ich hoffe das hilft dem einen oder anderen, Fragen und Anregungen willkommen.
Stefan