Softdevice-plugin
Wirbel (Diskussion | Beiträge) (→Detaillierte Beschreibung) |
|||
(139 dazwischenliegende Versionen von 75 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
==Beschreibung== | ==Beschreibung== | ||
− | '''Autor:''' Torgeir Veimo, Martin Wache, Stefan Lucke | + | '''Autor:''' Torgeir Veimo, Martin Wache, Stefan Lucke, Harald Milz |
− | + | Dieses Plugin ist ein Ausgabe-Plugin für den VDR. | |
− | Das Grundprinzip des Plugins besteht darin, den MPEG-2 codierten Videostrom von VDR zu übernehmen, zu dekodieren, zu skalieren, in das RGB-Format zu bringen und auf dem Framebuffer-Device ( | + | ===Status=== |
− | *Quasi-Hardwaredekodierung über XvMC ("XVideo Motion Compensation"), recht geringe CPU-Last (~30%, prozessorunabhängig). | + | Letztes Update 04/2008 |
+ | |||
+ | ===Detaillierte Beschreibung=== | ||
+ | |||
+ | Das Plugin dient der [[MPEG|MPEG-2]]-Decodierung in Software, wie auch das [[xine-plugin]]. Es wird vom [[VDR]] als vollwertiges Ausgabegerät erkannt, die Ausgabe erfolgt dann auf dem Monitor bzw. über den TV-Out-Anschluss der Grafikkarte. Dabei wird der VDR direkt auf der Textkonsole ([[Framebuffer]]) dargestellt. In Verbindung mit dem [[streamdev-plugin]] lässt sich damit ein Client ohne [[DVB-Karte]] aufbauen. | ||
+ | |||
+ | Das Grundprinzip des Plugins besteht darin, den MPEG-2 codierten Videostrom von VDR zu übernehmen, zu dekodieren, zu skalieren, in das RGB-Format zu bringen und auf dem Framebuffer-Device (spezieller Operationsmodus der Grafikkarte) auszugeben. Dafür gibt es verschiedene Verfahrensweisen: | ||
+ | *Quasi-Hardwaredekodierung über [[XvMC]] ("XVideo Motion Compensation"), recht geringe CPU-Last (~30%, prozessorunabhängig), bisher leider nur in Planung. | ||
Unter anderem unterstützt von NVidia Grafikkarten (GF4MX400 sowie >= GF5), S3 Unichrome (u.a. auf VIA Epia Boards) und vielleicht | Unter anderem unterstützt von NVidia Grafikkarten (GF4MX400 sowie >= GF5), S3 Unichrome (u.a. auf VIA Epia Boards) und vielleicht | ||
anderen, laden über ''option "XvMC"'' in XF86config, falls installiert (Distribution checken!) | anderen, laden über ''option "XvMC"'' in XF86config, falls installiert (Distribution checken!) | ||
− | *Dekodierung in Software, Ausgabe auf Overlay via Xv ("XVideo"), unterstützt von wohl allen AGP-Karten, laden über | + | *Dekodierung in Software, Ausgabe auf Overlay via [http://en.wikipedia.org/wiki/X_video_extension Xv] ("XVideo"), unterstützt von wohl allen AGP-Karten, laden über ''option "v4l"'' in XF86config. |
− | ''option "v4l"'' in XF86config. | + | |
*Dekodierung, Skalierung, YUV2RGB in Software, Ausgabe auf (VESA)-Framebuffer (sehr CPU-lastig) | *Dekodierung, Skalierung, YUV2RGB in Software, Ausgabe auf (VESA)-Framebuffer (sehr CPU-lastig) | ||
*Dekodierung in Software, Skalierung und YUV2RGB über Vidix-Treiber oder DirectFB mit kartenabhängiger Hardwarebeschleunigung | *Dekodierung in Software, Skalierung und YUV2RGB über Vidix-Treiber oder DirectFB mit kartenabhängiger Hardwarebeschleunigung | ||
Zeile 15: | Zeile 21: | ||
==Bilder== | ==Bilder== | ||
− | [[Bild:softdevice-plugin.jpg|thumb|none|''XV'']] | + | {| |
+ | |[[Bild:softdevice-plugin-00.jpg|thumb|none|''XV'']] | ||
+ | |[[Bild:softdevice-plugin-01.jpg|thumb|none|''XV'']] | ||
+ | |} | ||
− | == | + | ==Softwareanforderungen== |
− | + | * {{wikipedia|ALSA}} | |
+ | * {{wikipedia|FFmpeg}} | ||
+ | * {{wikipedia|Pkg-config}} | ||
− | + | ==Installation== | |
− | + | ===Optionen=== | |
− | + | {| class="wikitable" | |
− | + | ||
− | + | ||
− | + | ||
|- | |- | ||
− | | | + | | bgcolor=#efefef | XV_SUPPORT=1 |
+ | | XV support von Stefan Lucke | ||
|- | |- | ||
− | | | + | | bgcolor=#efefef | DFB_SUPPORT=1 |
+ | | DFB ist sehr experimentell (funktioniert nur mit meiner matrox G200, Kommentare erwünscht) | ||
|- | |- | ||
− | | | + | | bgcolor=#efefef | FB_SUPPORT=1 |
+ | | FB ist nicht beschleunigt und sollte mit jedem FB mit 16bit Farbtiefe funtionieren | ||
|- | |- | ||
− | | | + | | bgcolor=#efefef | VIDIX_SUPPORT=1 |
+ | | Vidix Unterstützung von Vadim Catana | ||
|- | |- | ||
− | | | + | | bgcolor=#efefef | LIBXDPMS_SUPPORT=1 |
+ | | Set this if you want to use DPMS | ||
|- | |- | ||
− | | | + | | bgcolor=#efefef | PP_LIBAVCODEC=1 |
+ | | Enable the usage from some deinterlacing pp-filters of libavcodec | ||
|- | |- | ||
− | | | + | | bgcolor=#efefef | SUSPEND_BY_KEY=1 |
+ | | Set this if you want to be able to toggle suspend mode by keyboard XV only | ||
|- | |- | ||
− | | | + | | bgcolor=#efefef | USE_SUBPLUGINS=1 |
− | | | + | | if you want output methods build as a single lib |
− | + | ||
|} | |} | ||
− | |||
− | |||
− | == | + | ==Konfiguration== |
− | + | Im Makefile muss eingestellt werden, welche Treiber-Variante man benutzen will und wo sich die benötigten [[Bibliothek]]en / [[Headerfile]]s befinden. | |
− | + | ||
− | + | Dieses hat über das configure Skript des Plugins zu erfolgen. | |
− | + | ||
− | + | shell> cd [[Struktur|$SOURCEDIR]]/VDR/PLUGINS/src/softdevice | |
− | + | shell> sh configure (--help) | |
− | cd $SOURCEDIR | + | |
− | + | Das Framebufferdevice muss existieren und ansprechbar sein. Dazu muss entweder beim Systemstart der VESA-Framebuffer aktiviert werden oder bei unterstützten Grafikkarten das entsprechende Framebuffer [[Modul]] geladen sein. | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | . | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | === | + | |
− | + | ===IR Fernbedienung mit LIRC=== | |
+ | Wenn man [[LIRC]] nutzen will, um softdevice-dfb zu bedienen, muss man einige Tipps beachten. | ||
+ | Zwingend nötig ist diese Vorgehensweise für die Cropping-Funktion mit einer Taste. | ||
+ | |||
+ | Zunächst ist das [[Remote-plugin]] im Startskript '''runvdr''' zu deaktivieren. Als nächstes erzeugt man sich mit '''irrecord''' eine Datei '''[[lircd.conf]]'''. Entscheidend ist hierbei die richtige Wahl der Tastennamen. Damit Directfb diese richtig an Softdevice weitergeben kann, ist es nötig, die DIKS_-Namen aus '''include/directfb_keyboard.h''' zu verwenden und zwar ohne den vorangestellten String '''DIKS_'''. Meine lircd.conf sieht beispielsweise so aus | ||
+ | |||
+ | {{Box Datei|/etc/lircd.conf| | ||
<pre> | <pre> | ||
− | + | begin codes | |
− | + | POWER 0x4190 | |
− | + | CHANNEL_UP 0x4350 | |
− | + | CHANNEL_DOWN 0x4340 | |
− | + | F3 0x3E00 | |
+ | RED 0x3DB0 | ||
+ | GREEN 0x40B0 | ||
+ | YELLOW 0x41B0 | ||
+ | BLUE 0x3DA0 | ||
+ | 1 0x4140 | ||
+ | 2 0x4170 | ||
+ | 3 0x4160 | ||
+ | 4 0x4110 | ||
+ | 5 0x4100 | ||
+ | 6 0x4130 | ||
+ | 7 0x4120 | ||
+ | 8 0x41D0 | ||
+ | 9 0x41C0 | ||
+ | 0 0x4150 | ||
+ | CURSOR_UP 0x3FA0 | ||
+ | CURSOR_DOWN 0x3FB0 | ||
+ | CURSOR_RIGHT 0x3FC0 | ||
+ | OK 0x3FD0 | ||
+ | CURSOR_LEFT 0x3FF0 | ||
+ | MENU 0x3F80 | ||
+ | EXIT 0x4240 | ||
+ | REWIND 0x4300 | ||
+ | PLAY 0x4200 | ||
+ | FASTFORWARD 0x4330 | ||
+ | RECORD 0x4220 | ||
+ | STOP 0x4230 | ||
+ | PAUSE 0x43C0 | ||
+ | end codes | ||
</pre> | </pre> | ||
− | + | }} | |
− | + | ||
− | + | "F3" ist hierbei die Taste "User3"; im Softdevice-Menu -> Cropping ist nach dem Lernen der Tasten entsprechend "User3" als Taste für "Bildausschnitt-Taste" zu konfigurieren. '''Vorsicht:''' dieses Beispiel könnt Ihr nicht einfach so nehmen, da die Hexcodes je nach Fernbedienung unterschiedlich sind. Das dient nur als Beispiel für die Namen der Einträge. | |
− | + | ||
− | + | Um die Tasten zu lernen, alle Einträge mit '''softdevice-dfb.*''' aus '''[[Struktur|$VDRCONFIG]]/[[remote.conf]]''' löschen und VDR starten. Ist alles richtig konfiguriert, kann man mit der als "User3" definierten Taste zyklisch durch die Cropping-Modi wechseln (Aus -> 4:3 -> 16:9 -> 14:9 -> Aus -> ...). | |
− | + | ||
− | ./ | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | == | + | ===Parameter=== |
− | {| | + | {| class="wikitable" |
|- | |- | ||
− | + | !Parameter | |
− | + | !Beschreibung | |
|- | |- | ||
− | | | + | | -ao alsa:pcm=dev_name# || Alsa ausgabe Gerät für analog und PCM out |
− | | | + | |
|- | |- | ||
− | | | + | | -ao alsa:ac3=dev_name# || Alsa ausgabe Gerät für AC3 passthrough |
− | | | + | |
|- | |- | ||
− | | | + | | -ao oss: || Ausgabe über das Open Sound System |
− | | | + | |
|- | |- | ||
− | | | + | | -ao dummy: || Dummy ausgabe Gerät |
− | | | + | |
|- | |- | ||
− | | | + | | -vo xv: || Ausgabe über X11-Xv |
− | | | + | |
|- | |- | ||
− | | | + | | -vo xv:aspect=wide || 16:9 Format (1024x576) |
− | | | + | |
|- | |- | ||
− | | | + | | -vo xv:aspect=normal || 4:3 Format (768x576) |
− | | | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
|- | |- | ||
− | | - | + | | -vo xv:max-area || Nutze maximal verfügbare Fläche |
|- | |- | ||
− | | - | + | | -vo xv:full || Start in Vollbild |
|- | |- | ||
− | | -vo | + | | -vo fb: || Ausgabe über Framebuffer Gerät |
|- | |- | ||
− | | -vo | + | | -vo dfb: || Ausgabe über directFB |
|- | |- | ||
− | | -vo | + | | -vo dfb:mgatv || Ausgabe über directFB (Matrox-Karten) |
|- | |- | ||
− | | -vo | + | | -vo dfb:viatv || output via Unichrome TV-out |
|- | |- | ||
− | | -vo | + | | -vo dfb:triple || enables triple buffering on back end scaler |
|- | |- | ||
− | | -vo | + | | -vo vidix: || Ausgabe über Vidix-Treiber |
|- | |- | ||
− | | -vo | + | | -vo shm: || Ausgabe in den SharedMemory. Anzeige (über X11/XVideo) nur, wenn das separate Programm ShmClient gestartet ist. |
|- | |- | ||
− | | -vo | + | | -vo dummy: || Ausgabe über Dummy-Gerät |
|- | |- | ||
− | | -L <plugin_path_name> || | + | | -L <plugin_path_name> || Suchpfad für das Laden der Subplugins (siehe Optionen: '''USE_SUBPLUGINS=1''') |
|} | |} | ||
− | ==Tipps== | + | ===Tipps=== |
+ | ====Device ''erzwingen''==== | ||
VDR stellt das OSD auf der ersten Karte mit Decoder dar.<br> | VDR stellt das OSD auf der ersten Karte mit Decoder dar.<br> | ||
Mit dem Plugin gibt es ein weiteres Device (inc. Decoder), es ist immer das letzte.<br> | Mit dem Plugin gibt es ein weiteres Device (inc. Decoder), es ist immer das letzte.<br> | ||
Zeile 198: | Zeile 176: | ||
</pre> | </pre> | ||
Oder via "sed", VDR ist vorher zu beenden, einfach schauen welches wir haben (+1). | Oder via "sed", VDR ist vorher zu beenden, einfach schauen welches wir haben (+1). | ||
− | + | ||
− | #~ grep ^PrimaryDVB | + | #~ grep ^PrimaryDVB [[Struktur|$VDRCONFIG]]/setup.conf |
− | PrimaryDVB = 3 | + | PrimaryDVB = 3 |
− | #~ sed -i "s/^PrimaryDVB.*/PrimaryDVB = 4/" / | + | #~ sed -i "s/^PrimaryDVB.*/PrimaryDVB = 4/" [[Struktur|$VDRCONFIG]]/setup.conf |
+ | |||
+ | ====[[LIRC]]-Lernmodus==== | ||
+ | So kann man daß [[remote-plugin]] sparen und [[LIRC]]-Lernmodus und Steuerung direkt im Softdevice-Plugin (hier nur xv) implementieren. (video-xv.c / vdr-1.3.41) | ||
+ | |||
+ | <pre> | ||
+ | 0) #include <vdr/lirc.h> | ||
+ | 1) cLircRemote *xvLircRemote =NULL; | ||
+ | nach static cXvRemote *xvRemote = NULL; | ||
+ | 2) const char *LircDevice = NULL; und | ||
+ | LircDevice = "/dev/lircd"; // hier ist es besser wenn man eine Option übergibt | ||
+ | nach const char cursor_data[] = { 0x0 }; | ||
+ | 3) xvLircRemote = new cLircRemote(LircDevice); | ||
+ | nach xvRemote = new cXvRemote ("softdevice-xv", this); | ||
+ | |||
</pre> | </pre> | ||
+ | ====ShmClient==== | ||
− | + | Mittels der Option <pre>-vo shm:</pre> kann softdevice die Dekodierung in den shared Memory schreiben. Das bedeutet, es wird so lange nichts angezeigt, bis das externe (aber sich im Lieferumfang des Plugins befindliche) Programm <pre>ShmClient</pre> gestartet wird. Dieses Programm liest die Daten dann aus dem shared Memory wieder aus und zeigt sie in einem X11-Fenster an. Sehr gut geeignet, wenn vdr beim Systemstart als Daemon gestartet werden soll und ab und an Fernsehen direkt am Bildschirm geschaut werden soll. | |
− | + | ||
− | + | ====Parameter in der setup.conf==== | |
+ | Hier einige der Parameter und ihre Entsprechung im OSD-Menü von softdevice | ||
+ | <pre> | ||
+ | softdevice.bufferMode = 1 | ||
+ | 0=sicher | ||
+ | 1=Suchlauf optimiert | ||
+ | 2=HDTV | ||
+ | softdevice.Deinterlace Method = 1 | ||
+ | 0=keine | ||
+ | 1=lavc | ||
+ | 2=FB-intern | ||
+ | 3=linblend | ||
+ | 4=linpol | ||
+ | 5=cubicipol | ||
+ | 6=median | ||
+ | softdevice.PixelFormat = 2 | ||
+ | 2=YUY2 | ||
+ | 0=I420 | ||
+ | 1=YV12 | ||
+ | softdevice.Postprocess Method = 0 | ||
+ | 0=keine | ||
+ | 1=schnell | ||
+ | 2=standard | ||
+ | softdevice.syncTimerMode = 1 | ||
+ | 1=rtc | ||
+ | 2=sig | ||
+ | 0=usleep | ||
− | |||
− | + | ||
+ | </pre> | ||
+ | ====DirectFB und VDR non Root==== | ||
+ | Das Console Switching von DirectFB funktioniert nicht wenn der VDR nicht als Root ausgeführt wird. Im DirectFB Log sieht man dann z.B. folgendes | ||
+ | <pre>(!) DirectFB/core/vt: VT_ACTIVATE failed! | ||
+ | --> Die Operation ist nicht erlaubt</pre> | ||
+ | Dagegen hilft es im Quellcode des VDR (vdr.c) folgende Zeile | ||
+ | cap_t caps = cap_from_text("= cap_sys_time=ep"); | ||
+ | so zu ändern | ||
+ | cap_t caps = cap_from_text("= cap_sys_time,cap_sys_tty_config=ep"); | ||
+ | und dann den VDR mit der Option "-u" als User zu starten. Dadurch behält der VDR die notwendigen Konsolenrechte. | ||
− | == | + | ===Snapshot=== |
− | + | cvs -z3 -d:pserver:anonymous@cvs.softdevice.berlios.de:/cvsroot/softdevice co softdevice | |
+ | |||
+ | ==Aktuelle Versionen== | ||
+ | [http://developer.berlios.de/project/showfiles.php?group_id=2051&release_id=14504 0.0.5] | ||
− | |||
− | |||
==Links== | ==Links== | ||
− | + | # [http://softdevice.berlios.de Homepage des Plugins] | |
− | + | ||
− | + | [[Kategorie:Veraltete Plugins]] | |
− | + | {{i18n|softdevice-plugin}} | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | | | + | |
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + | ||
− | + |
Aktuelle Version vom 1. September 2013, 10:23 Uhr
Inhaltsverzeichnis |
[Bearbeiten] Beschreibung
Autor: Torgeir Veimo, Martin Wache, Stefan Lucke, Harald Milz
Dieses Plugin ist ein Ausgabe-Plugin für den VDR.
[Bearbeiten] Status
Letztes Update 04/2008
[Bearbeiten] Detaillierte Beschreibung
Das Plugin dient der MPEG-2-Decodierung in Software, wie auch das xine-plugin. Es wird vom VDR als vollwertiges Ausgabegerät erkannt, die Ausgabe erfolgt dann auf dem Monitor bzw. über den TV-Out-Anschluss der Grafikkarte. Dabei wird der VDR direkt auf der Textkonsole (Framebuffer) dargestellt. In Verbindung mit dem streamdev-plugin lässt sich damit ein Client ohne DVB-Karte aufbauen.
Das Grundprinzip des Plugins besteht darin, den MPEG-2 codierten Videostrom von VDR zu übernehmen, zu dekodieren, zu skalieren, in das RGB-Format zu bringen und auf dem Framebuffer-Device (spezieller Operationsmodus der Grafikkarte) auszugeben. Dafür gibt es verschiedene Verfahrensweisen:
- Quasi-Hardwaredekodierung über XvMC ("XVideo Motion Compensation"), recht geringe CPU-Last (~30%, prozessorunabhängig), bisher leider nur in Planung.
Unter anderem unterstützt von NVidia Grafikkarten (GF4MX400 sowie >= GF5), S3 Unichrome (u.a. auf VIA Epia Boards) und vielleicht anderen, laden über option "XvMC" in XF86config, falls installiert (Distribution checken!)
- Dekodierung in Software, Ausgabe auf Overlay via Xv ("XVideo"), unterstützt von wohl allen AGP-Karten, laden über option "v4l" in XF86config.
- Dekodierung, Skalierung, YUV2RGB in Software, Ausgabe auf (VESA)-Framebuffer (sehr CPU-lastig)
- Dekodierung in Software, Skalierung und YUV2RGB über Vidix-Treiber oder DirectFB mit kartenabhängiger Hardwarebeschleunigung
- Alles komplett über Treiber mit Hardwarebeschleunigung über DirectFB und Libsoftmpeg leider noch nicht unterstützt, da die libsoftmpeg noch entwickelt wird)
[Bearbeiten] Bilder
[Bearbeiten] Softwareanforderungen
[Bearbeiten] Installation
[Bearbeiten] Optionen
XV_SUPPORT=1 | XV support von Stefan Lucke |
DFB_SUPPORT=1 | DFB ist sehr experimentell (funktioniert nur mit meiner matrox G200, Kommentare erwünscht) |
FB_SUPPORT=1 | FB ist nicht beschleunigt und sollte mit jedem FB mit 16bit Farbtiefe funtionieren |
VIDIX_SUPPORT=1 | Vidix Unterstützung von Vadim Catana |
LIBXDPMS_SUPPORT=1 | Set this if you want to use DPMS |
PP_LIBAVCODEC=1 | Enable the usage from some deinterlacing pp-filters of libavcodec |
SUSPEND_BY_KEY=1 | Set this if you want to be able to toggle suspend mode by keyboard XV only |
USE_SUBPLUGINS=1 | if you want output methods build as a single lib |
[Bearbeiten] Konfiguration
Im Makefile muss eingestellt werden, welche Treiber-Variante man benutzen will und wo sich die benötigten Bibliotheken / Headerfiles befinden.
Dieses hat über das configure Skript des Plugins zu erfolgen.
shell> cd $SOURCEDIR/VDR/PLUGINS/src/softdevice shell> sh configure (--help)
Das Framebufferdevice muss existieren und ansprechbar sein. Dazu muss entweder beim Systemstart der VESA-Framebuffer aktiviert werden oder bei unterstützten Grafikkarten das entsprechende Framebuffer Modul geladen sein.
[Bearbeiten] IR Fernbedienung mit LIRC
Wenn man LIRC nutzen will, um softdevice-dfb zu bedienen, muss man einige Tipps beachten. Zwingend nötig ist diese Vorgehensweise für die Cropping-Funktion mit einer Taste.
Zunächst ist das Remote-plugin im Startskript runvdr zu deaktivieren. Als nächstes erzeugt man sich mit irrecord eine Datei lircd.conf. Entscheidend ist hierbei die richtige Wahl der Tastennamen. Damit Directfb diese richtig an Softdevice weitergeben kann, ist es nötig, die DIKS_-Namen aus include/directfb_keyboard.h zu verwenden und zwar ohne den vorangestellten String DIKS_. Meine lircd.conf sieht beispielsweise so aus
begin codes POWER 0x4190 CHANNEL_UP 0x4350 CHANNEL_DOWN 0x4340 F3 0x3E00 RED 0x3DB0 GREEN 0x40B0 YELLOW 0x41B0 BLUE 0x3DA0 1 0x4140 2 0x4170 3 0x4160 4 0x4110 5 0x4100 6 0x4130 7 0x4120 8 0x41D0 9 0x41C0 0 0x4150 CURSOR_UP 0x3FA0 CURSOR_DOWN 0x3FB0 CURSOR_RIGHT 0x3FC0 OK 0x3FD0 CURSOR_LEFT 0x3FF0 MENU 0x3F80 EXIT 0x4240 REWIND 0x4300 PLAY 0x4200 FASTFORWARD 0x4330 RECORD 0x4220 STOP 0x4230 PAUSE 0x43C0 end codes
"F3" ist hierbei die Taste "User3"; im Softdevice-Menu -> Cropping ist nach dem Lernen der Tasten entsprechend "User3" als Taste für "Bildausschnitt-Taste" zu konfigurieren. Vorsicht: dieses Beispiel könnt Ihr nicht einfach so nehmen, da die Hexcodes je nach Fernbedienung unterschiedlich sind. Das dient nur als Beispiel für die Namen der Einträge.
Um die Tasten zu lernen, alle Einträge mit softdevice-dfb.* aus $VDRCONFIG/remote.conf löschen und VDR starten. Ist alles richtig konfiguriert, kann man mit der als "User3" definierten Taste zyklisch durch die Cropping-Modi wechseln (Aus -> 4:3 -> 16:9 -> 14:9 -> Aus -> ...).
[Bearbeiten] Parameter
Parameter | Beschreibung |
---|---|
-ao alsa:pcm=dev_name# | Alsa ausgabe Gerät für analog und PCM out |
-ao alsa:ac3=dev_name# | Alsa ausgabe Gerät für AC3 passthrough |
-ao oss: | Ausgabe über das Open Sound System |
-ao dummy: | Dummy ausgabe Gerät |
-vo xv: | Ausgabe über X11-Xv |
-vo xv:aspect=wide | 16:9 Format (1024x576) |
-vo xv:aspect=normal | 4:3 Format (768x576) |
-vo xv:max-area | Nutze maximal verfügbare Fläche |
-vo xv:full | Start in Vollbild |
-vo fb: | Ausgabe über Framebuffer Gerät |
-vo dfb: | Ausgabe über directFB |
-vo dfb:mgatv | Ausgabe über directFB (Matrox-Karten) |
-vo dfb:viatv | output via Unichrome TV-out |
-vo dfb:triple | enables triple buffering on back end scaler |
-vo vidix: | Ausgabe über Vidix-Treiber |
-vo shm: | Ausgabe in den SharedMemory. Anzeige (über X11/XVideo) nur, wenn das separate Programm ShmClient gestartet ist. |
-vo dummy: | Ausgabe über Dummy-Gerät |
-L <plugin_path_name> | Suchpfad für das Laden der Subplugins (siehe Optionen: USE_SUBPLUGINS=1) |
[Bearbeiten] Tipps
[Bearbeiten] Device erzwingen
VDR stellt das OSD auf der ersten Karte mit Decoder dar.
Mit dem Plugin gibt es ein weiteres Device (inc. Decoder), es ist immer das letzte.
Deshalb ist bei dem Betrieb mit einer (oder mehreren) FF Karten, ein höheres Device zu wählen. (das letzte verfügbare im Menü)
Einstellungen / Setup DVB Primäres DVB Interface / Primary DVB interface
Oder via "sed", VDR ist vorher zu beenden, einfach schauen welches wir haben (+1).
#~ grep ^PrimaryDVB $VDRCONFIG/setup.conf PrimaryDVB = 3 #~ sed -i "s/^PrimaryDVB.*/PrimaryDVB = 4/" $VDRCONFIG/setup.conf
[Bearbeiten] LIRC-Lernmodus
So kann man daß remote-plugin sparen und LIRC-Lernmodus und Steuerung direkt im Softdevice-Plugin (hier nur xv) implementieren. (video-xv.c / vdr-1.3.41)
0) #include <vdr/lirc.h> 1) cLircRemote *xvLircRemote =NULL; nach static cXvRemote *xvRemote = NULL; 2) const char *LircDevice = NULL; und LircDevice = "/dev/lircd"; // hier ist es besser wenn man eine Option übergibt nach const char cursor_data[] = { 0x0 }; 3) xvLircRemote = new cLircRemote(LircDevice); nach xvRemote = new cXvRemote ("softdevice-xv", this);
[Bearbeiten] ShmClient
Mittels der Option-vo shm:kann softdevice die Dekodierung in den shared Memory schreiben. Das bedeutet, es wird so lange nichts angezeigt, bis das externe (aber sich im Lieferumfang des Plugins befindliche) Programm
ShmClientgestartet wird. Dieses Programm liest die Daten dann aus dem shared Memory wieder aus und zeigt sie in einem X11-Fenster an. Sehr gut geeignet, wenn vdr beim Systemstart als Daemon gestartet werden soll und ab und an Fernsehen direkt am Bildschirm geschaut werden soll.
[Bearbeiten] Parameter in der setup.conf
Hier einige der Parameter und ihre Entsprechung im OSD-Menü von softdevice
softdevice.bufferMode = 1 0=sicher 1=Suchlauf optimiert 2=HDTV softdevice.Deinterlace Method = 1 0=keine 1=lavc 2=FB-intern 3=linblend 4=linpol 5=cubicipol 6=median softdevice.PixelFormat = 2 2=YUY2 0=I420 1=YV12 softdevice.Postprocess Method = 0 0=keine 1=schnell 2=standard softdevice.syncTimerMode = 1 1=rtc 2=sig 0=usleep
[Bearbeiten] DirectFB und VDR non Root
Das Console Switching von DirectFB funktioniert nicht wenn der VDR nicht als Root ausgeführt wird. Im DirectFB Log sieht man dann z.B. folgendes
(!) DirectFB/core/vt: VT_ACTIVATE failed! --> Die Operation ist nicht erlaubt
Dagegen hilft es im Quellcode des VDR (vdr.c) folgende Zeile
cap_t caps = cap_from_text("= cap_sys_time=ep");
so zu ändern
cap_t caps = cap_from_text("= cap_sys_time,cap_sys_tty_config=ep");
und dann den VDR mit der Option "-u" als User zu starten. Dadurch behält der VDR die notwendigen Konsolenrechte.
[Bearbeiten] Snapshot
cvs -z3 -d:pserver:anonymous@cvs.softdevice.berlios.de:/cvsroot/softdevice co softdevice