CheapBudget
(→Links) |
Hulk (Diskussion | Beiträge) K |
||
(9 dazwischenliegende Versionen von 6 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
− | =CheapBudget= | + | =CheapBudget / VGA2Scart= |
==Beschreibung== | ==Beschreibung== | ||
Zeile 8: | Zeile 8: | ||
====Problem==== | ====Problem==== | ||
− | Bislang bekannte Grafikkartensysteme arbeiten mit festem Videotiming welches nicht mit dem Stream synchronisiert ist. Dies führt zwangsläufig zu Frame/Field- verlusten, die sich störend bemerkbar machen (z.B. durch sporadisches Ruckeln). | + | Bislang bekannte Grafikkartensysteme arbeiten mit festem Videotiming welches nicht mit dem Stream synchronisiert ist. Dies führt zwangsläufig zu Frame/Field -verlusten, die sich störend bemerkbar machen (z.B. durch sporadisches Ruckeln). |
Durch Software-Deinterlacing kann man dieses Problem weitgehend kaschieren, jedoch auf Kosten schlechterer Bildqualität bei Darstellung von Interlaced-Material und bei deutlich höherer Rechenlast. | Durch Software-Deinterlacing kann man dieses Problem weitgehend kaschieren, jedoch auf Kosten schlechterer Bildqualität bei Darstellung von Interlaced-Material und bei deutlich höherer Rechenlast. | ||
− | ==== | + | ====Lösung==== |
− | Grafikkarten sind | + | Grafikkarten sind grundsätzlich nicht für variable Frameraten konzipiert. Man kann sich nur mit Hardware- oder Software Tricks behelfen. Wie es jetzt aussieht, reicht bereits eine reine Softwarelösung aus. |
Der Radeon-DRM Treiber konnte so modifiziert werden, dass im erforderlichen Rahmen beliebige, von 50Hz leicht abweichende Timings am VGA-Port einer Test-Radeon (IGP9100) ausgegeben werden konnten. Genau so, wie eine FF Karte das auch macht. Durch ein neues Verfahren konnten inzwischen die sichtbaren Störungen am Röhren-TV komplett eliminiert werden. | Der Radeon-DRM Treiber konnte so modifiziert werden, dass im erforderlichen Rahmen beliebige, von 50Hz leicht abweichende Timings am VGA-Port einer Test-Radeon (IGP9100) ausgegeben werden konnten. Genau so, wie eine FF Karte das auch macht. Durch ein neues Verfahren konnten inzwischen die sichtbaren Störungen am Röhren-TV komplett eliminiert werden. | ||
Zeile 25: | Zeile 25: | ||
====Lesenswerte Threads im VDR-Portal:==== | ====Lesenswerte Threads im VDR-Portal:==== | ||
− | + | * [http://www.vdr-portal.de/board/thread.php?threadid=78480 RGB/PAL ueber VGA mit variabler Framerate] | |
− | + | * [http://www.vdr-portal.de/board/thread.php?threadid=80567 Korrekte interlaced und framesynchrone Ausgabe für SDTV/HDTV auf VGA/DVI/HDMI/RGB/SCART] | |
− | Vielen Dank an sparkie und durchflieger für die Arbeit, die sie in | + | Vielen Dank an sparkie und durchflieger für die Arbeit, die sie in den jeweiligen Patch stecken. Die Ansätze sind sehr interessant und ermöglichen einen Betrieb mit nur einer Budget Karte und einer sehr guten Ausgabequalität. |
− | === | + | ===Erfordernisse=== |
− | # Mainboard mit CPU ab ca. P3-800MHz | + | # [[Mainboard]] mit CPU ab ca. P3-800MHz |
# xf86-video-ati kompatible Grafikkarte. Momentan getestet sind folgende Modelle | # xf86-video-ati kompatible Grafikkarte. Momentan getestet sind folgende Modelle | ||
#* Radeon 7000 AGP | #* Radeon 7000 AGP | ||
Zeile 41: | Zeile 41: | ||
# DVB-Budget Karte (optional, auch Streaming Ausgabe möglich) | # DVB-Budget Karte (optional, auch Streaming Ausgabe möglich) | ||
# [http://www.vdr-portal.de/board/thread.php?postid=742945#post742945 Ein passendes Kabel (VGA2Scart)] | # [http://www.vdr-portal.de/board/thread.php?postid=742945#post742945 Ein passendes Kabel (VGA2Scart)] | ||
+ | |||
+ | Günstige und kompakte Lösung jetzt auch mit Intel Atom Boards wie beispielsweise D945GCLF/2 möglich. Bisher getestete Chipsätze: i810, 915G, 945G, 965GM. [http://www.vdr-portal.de/board/thread.php?postid=769703#post769703 Installation und Download der Patches] | ||
== Referenzsystem== | == Referenzsystem== | ||
Zeile 48: | Zeile 50: | ||
* xserver-xorg-video-ati experimental | * xserver-xorg-video-ati experimental | ||
* xine-lib (1.1.16) oder neuer (z.B. aus dem [http://hg.debian.org/hg/xine-lib/xine-lib HG Repository]) | * xine-lib (1.1.16) oder neuer (z.B. aus dem [http://hg.debian.org/hg/xine-lib/xine-lib HG Repository]) | ||
− | * xineliboutput (1.0.2) oder neuer (z.B. aus dem CVS | + | * xineliboutput (1.0.2) oder neuer (z.B. aus dem CVS) |
− | * drm aus dem GIT-Tree | + | * drm aus dem GIT-Tree |
− | == Referenzsystem (Ubuntu intrepid, Basis für | + | == Referenzsystem (Ubuntu intrepid, Basis für den [http://www.vdr-portal.de/board/thread.php?threadid=80567 Patch])== |
Ubuntu 8.10 (intrepid ibex) | Ubuntu 8.10 (intrepid ibex) | ||
− | Für diese Plattform gibt es fertige Pakete für i386 und amd64 für | + | Für diese Plattform gibt es fertige Pakete für i386 und amd64 für den bereitgestellten Patch. Dazu in der /etc/apt/sources.list folgendes ergänzen: |
<pre> | <pre> | ||
deb http://deb.vdreceiver.de/ubuntu intrepid main | deb http://deb.vdreceiver.de/ubuntu intrepid main | ||
</pre> | </pre> | ||
− | ACHTUNG: Bei libdrm fehlen noch die Kernel-Module! | + | '''ACHTUNG:''' Bei libdrm fehlen noch die Kernel-Module! |
==Installation== | ==Installation== | ||
− | + | '''/etc/apt/sources.list anpassen''' | |
− | + | ||
− | + | ||
<pre> | <pre> | ||
Zeile 79: | Zeile 79: | ||
</pre> | </pre> | ||
− | + | '''/etc/apt/apt.conf anpassen''' | |
<pre> | <pre> | ||
APT::Default-Release testing; | APT::Default-Release testing; | ||
Zeile 85: | Zeile 85: | ||
</pre> | </pre> | ||
− | + | '''/etc/apt/preferences anpassen''' | |
<pre> | <pre> | ||
Package: * | Package: * | ||
Zeile 92: | Zeile 92: | ||
</pre> | </pre> | ||
− | + | Oben haben wir ''experimental packages enabled'' - jetzt einmal nach schauen welche existieren oder sich geändert haben | |
<pre> | <pre> | ||
apt-get update | apt-get update | ||
Zeile 171: | Zeile 171: | ||
=== Tools übersetzen === | === Tools übersetzen === | ||
− | + | '''drift_control''' | |
<pre> | <pre> | ||
cd vga-sync-fields-X.X.X/tools | cd vga-sync-fields-X.X.X/tools | ||
cc -I/usr/include/drm -lpciaccess -ldrm drift_control.c -o drift_control | cc -I/usr/include/drm -lpciaccess -ldrm drift_control.c -o drift_control | ||
</pre> | </pre> | ||
− | + | '''drift_control810''' | |
<pre> | <pre> | ||
cd vga-sync-fields-X.X.X/tools | cd vga-sync-fields-X.X.X/tools | ||
cc -I/usr/include/drm -lpciaccess -ldrm drift_control810.c -o drift_control810 | cc -I/usr/include/drm -lpciaccess -ldrm drift_control810.c -o drift_control810 | ||
</pre> | </pre> | ||
− | + | '''dumpio''' | |
<pre> | <pre> | ||
cd vga-sync-fields-X.X.X/tools | cd vga-sync-fields-X.X.X/tools | ||
cc -lpciaccess dumpio.c -o dumpio | cc -lpciaccess dumpio.c -o dumpio | ||
</pre> | </pre> | ||
− | + | '''dumpio810''' | |
<pre> | <pre> | ||
cd vga-sync-fields-X.X.X/tools | cd vga-sync-fields-X.X.X/tools | ||
cc -lpciaccess dumpio810.c -o dumpio810 | cc -lpciaccess dumpio810.c -o dumpio810 | ||
</pre> | </pre> | ||
− | + | '''trim''' | |
<pre> | <pre> | ||
cd vga-sync-fields-X.X.X/tools | cd vga-sync-fields-X.X.X/tools | ||
cc -I/usr/include/drm -ldrm trim.c -o trim | cc -I/usr/include/drm -ldrm trim.c -o trim | ||
</pre> | </pre> | ||
− | + | '''trim810''' | |
<pre> | <pre> | ||
cd vga-sync-fields-X.X.X/tools | cd vga-sync-fields-X.X.X/tools | ||
cc -I/usr/include/drm -ldrm trim810.c -o trim810 | cc -I/usr/include/drm -ldrm trim810.c -o trim810 | ||
</pre> | </pre> | ||
+ | |||
+ | ==Tips & Tricks == | ||
+ | ===OSD-Qualität=== | ||
+ | "MFG" hat aus dem EasyVDR Portal wertvolle Tips gegeben -> [http://www.easyvdr-forum.de/forum/index.php/topic,6072.msg65715.html#msg65715 Link] | ||
+ | |||
+ | VGA2Scart hat mit den Menüeinblendungen kleinere Probleme und kommt aufgrund fehlender Transparenz nicht an die spezialisierte Hardware wir DXR3/FF/PVR350 heran. | ||
+ | Aber wenn die Schrift passend (Sans:Bold) und nicht zu klein gewählt, Kantenglättung aus ist und im xineliboutput das OSD auf Hardware und bilinear steht, gibt es doch ein knackig und scharfes OSD. | ||
+ | Hier als Beispiel die OSD-Einstellungen von MFG: | ||
+ | [[Bild:Vga2scart_osd.jpg|thumb|none|''VGA2Scart OSD Einstellungen'']] | ||
+ | |||
+ | xineliboutput OSD auf Sofware ist halt was für direkt VGA/HDMI und Co. oder | ||
+ | wenn man von VDRAdmin oder Live einen SnapShot anhängen möchte. | ||
==Credits== | ==Credits== | ||
Zeile 207: | Zeile 219: | ||
==Links== | ==Links== | ||
− | # [http://lowbyte.de/vga-sync-fields/ Downloadseite für | + | # [http://lowbyte.de/vga-sync-fields/ Downloadseite für den Patch] |
# [http://hg.debian.org/hg/xine-lib/xine-lib xine-lib HG Repository] | # [http://hg.debian.org/hg/xine-lib/xine-lib xine-lib HG Repository] | ||
# [http://www.vdr-portal.de/board/thread.php?threadid=78480 RGB/PAL ueber VGA mit variabler Framerate] | # [http://www.vdr-portal.de/board/thread.php?threadid=78480 RGB/PAL ueber VGA mit variabler Framerate] | ||
− | # [http:// | + | # [http://www.vdr-portal.de/board/thread.php?threadid=80567 Korrekte interlaced und framesynchrone Ausgabe für SDTV/HDTV auf VGA/DVI/HDMI/RGB/SCART] |
# [http://www.vdr-portal.de/board/thread.php?postid=769703#post769703 Intel D945GCLF2 - Atom 330 (Little Falls 2) mit VGA2SCART] | # [http://www.vdr-portal.de/board/thread.php?postid=769703#post769703 Intel D945GCLF2 - Atom 330 (Little Falls 2) mit VGA2SCART] | ||
[[Kategorie:Budget-Only Systeme]] | [[Kategorie:Budget-Only Systeme]] |
Aktuelle Version vom 29. Juli 2013, 18:41 Uhr
[Bearbeiten] CheapBudget / VGA2Scart
[Bearbeiten] Beschreibung
Autor: Markus "Mahlzeit" Küchler (Originaltexte mit Erlaubnis von sparkie)
[Bearbeiten] Aufgabe
Entwicklung eines Budgetkarten basierten VDRs mit VGA-Grafik-Ausgabe und RGB/PAL Ausgang in FF-Qualität. (Patch von sparkie)
[Bearbeiten] Problem
Bislang bekannte Grafikkartensysteme arbeiten mit festem Videotiming welches nicht mit dem Stream synchronisiert ist. Dies führt zwangsläufig zu Frame/Field -verlusten, die sich störend bemerkbar machen (z.B. durch sporadisches Ruckeln). Durch Software-Deinterlacing kann man dieses Problem weitgehend kaschieren, jedoch auf Kosten schlechterer Bildqualität bei Darstellung von Interlaced-Material und bei deutlich höherer Rechenlast.
[Bearbeiten] Lösung
Grafikkarten sind grundsätzlich nicht für variable Frameraten konzipiert. Man kann sich nur mit Hardware- oder Software Tricks behelfen. Wie es jetzt aussieht, reicht bereits eine reine Softwarelösung aus.
Der Radeon-DRM Treiber konnte so modifiziert werden, dass im erforderlichen Rahmen beliebige, von 50Hz leicht abweichende Timings am VGA-Port einer Test-Radeon (IGP9100) ausgegeben werden konnten. Genau so, wie eine FF Karte das auch macht. Durch ein neues Verfahren konnten inzwischen die sichtbaren Störungen am Röhren-TV komplett eliminiert werden.
Dabei wurde versucht, die Zahl der Eingriffe ins System zu minimieren. Letztlich braucht man im Moment nur noch 2 sehr überschaubare Patches in xine-lib und im Radeon DRM-kernel Modul. Der Xserver muss derzeit nicht mehr angefasst werden.
Grundsätzlich funktioniert es so, dass die xine-lib, wenn sie einen PutImage() an den Server absetzt, nebenbei noch kontrolliert, ob die Framerate des Xservers zu erhöhen/erniedrigen ist.
Auf diese Weise kann die xine-lib ihre PutImage() Calls immer wieder genau in die Mitte zwischen zwei Blanking-Intervallen driften lassen. Sollte die Framerate vom Streamschwankungen unterworfen sein, ist das kein Problem, da das Videotiming des Xservers sofort nachgeführt wird. Es gehen so bei gleichzeitig maximaler Störsicherheit überhaupt keine Fields mehr verloren.
Da jetzt erstmalig auch unter Verwendung der xine-lib nicht mehr deinterlaced werden muss, fallen auch alle damit verbundenen Nachteile weg. Insbesondere wird der Prozessor dadurch deutlich entlastet. Ein betagter 2Ghz Celeron (400MHz 128KB Socket 478 CPU) langweilt sich inzwischen mit 80% idle bei SD Wiedergabe.
[Bearbeiten] Lesenswerte Threads im VDR-Portal:
- RGB/PAL ueber VGA mit variabler Framerate
- Korrekte interlaced und framesynchrone Ausgabe für SDTV/HDTV auf VGA/DVI/HDMI/RGB/SCART
Vielen Dank an sparkie und durchflieger für die Arbeit, die sie in den jeweiligen Patch stecken. Die Ansätze sind sehr interessant und ermöglichen einen Betrieb mit nur einer Budget Karte und einer sehr guten Ausgabequalität.
[Bearbeiten] Erfordernisse
- Mainboard mit CPU ab ca. P3-800MHz
- xf86-video-ati kompatible Grafikkarte. Momentan getestet sind folgende Modelle
- Radeon 7000 AGP
- Radeon IGP-9100
- Radeon 9200SE AGP
- Radeon 9250 AGP
- Radeon 9600SE AGP
- Radeon X300SE PCIe
- DVB-Budget Karte (optional, auch Streaming Ausgabe möglich)
- Ein passendes Kabel (VGA2Scart)
Günstige und kompakte Lösung jetzt auch mit Intel Atom Boards wie beispielsweise D945GCLF/2 möglich. Bisher getestete Chipsätze: i810, 915G, 945G, 965GM. Installation und Download der Patches
[Bearbeiten] Referenzsystem
Debian 5.0 mit gepatchten
- linux-image-2.6.26
- xserver-xorg-video-ati experimental
- xine-lib (1.1.16) oder neuer (z.B. aus dem HG Repository)
- xineliboutput (1.0.2) oder neuer (z.B. aus dem CVS)
- drm aus dem GIT-Tree
[Bearbeiten] Referenzsystem (Ubuntu intrepid, Basis für den Patch)
Ubuntu 8.10 (intrepid ibex)
Für diese Plattform gibt es fertige Pakete für i386 und amd64 für den bereitgestellten Patch. Dazu in der /etc/apt/sources.list folgendes ergänzen:
deb http://deb.vdreceiver.de/ubuntu intrepid main
ACHTUNG: Bei libdrm fehlen noch die Kernel-Module!
[Bearbeiten] Installation
/etc/apt/sources.list anpassen
deb http://ftp.debian.org/debian/ testing main contrib non-free deb-src http://ftp.debian.org/debian/ testing main contrib non-free deb http://ftp.debian.org/debian/ unstable main contrib non-free deb-src http://ftp.debian.org/debian/ unstable main contrib non-free deb http://ftp.debian.org/debian/ experimental main contrib non-free deb-src http://ftp.debian.org/debian/ experimental main contrib non-free
/etc/apt/apt.conf anpassen
APT::Default-Release testing; APT::Cache-Limit "125000000"; ## Hatte ohne diesen Eintrag (easyVDR) folgende Fehlermeldung: "E: Dynamic MMap ran out of room"
/etc/apt/preferences anpassen
Package: * Pin: release o=Debian,a=testing Pin-Priority: 501
Oben haben wir experimental packages enabled - jetzt einmal nach schauen welche existieren oder sich geändert haben
apt-get update
[Bearbeiten] Benötigte Pakete installieren
apt-get install linux-image-2.6-686 linux-headers-2.6-686 fakeroot kernel-package git-core mercurial
[Bearbeiten] Installation xorg V7.4 (xserver V1.5):
apt-get -t experimental install xserver-xorg
[Bearbeiten] Übersetzen und installieren des radeon Xserver-DDX
# before building the DDX patched 'radeon_drm.h' must be # copied to /usr/include/drm/radeon_drm.h (see below). apt-get -t experimental build-dep xserver-xorg-video-ati apt-get -t experimental source xserver-xorg-video-ati cd xserver-xorg-video-ati-* patch -p1 < vga-sync-fields/patches/video-ati.patch ## Patch vorher von der unten gelinkten WebPage downloaden! dpkg-buildpackage cd .. dpkg -i xserver-xorg-video-radeon_*deb
[Bearbeiten] Übersetzen und installieren von drm für den laufenden Kernel
cd usr/src/ git-clone git://anongit.freedesktop.org/git/mesa/drm cd drm patch --dry-run -p1 < ../vga-sync-fields/patches/drm-radeon-intel.patch patch -p1 < ../vga-sync-fields/patches/drm-radeon-intel.patch cd linux-core make DRM_MODULES="drm radeon" modprobe -r radeon drm # You should save the original drm before removing it! rm -r /lib/modules/`uname -r`/kernel/drivers/char/drm make DRM_MODULES="drm radeon" install depmod -a # don't forget to copy the patched header file before building the tools cp drivers/char/drm/radeon_drm.h /usr/include/drm/radeon_drm.h # then reload the new modules rmmod radeon rmmod drm modprobe radeon
[Bearbeiten] Patchen, übersetzen und installieren von xine-lib
- xine-lib aus HG Repository holen
hg clone http://hg.debian.org/hg/xine-lib/xine-lib
- xine-lib patchen
cd xine-lib patch -p1 < vga-sync-fields/patches/xine-lib.patch
- konfigurieren, übersetzen und installieren
apt-get install zlib1g-dev cvs ./autogen.sh --with-external-ffmpeg --disable-dxr3 make make install
[Bearbeiten] Patchen des radeonfb Kernel Moduls
Das Original radeonfb Modul unterstützt bislang keinen interlaced Modus und auch nicht die für RGB Pal benötigten niedrigen Pixelfrequenzen. Mit diesem Patch ist es jedoch möglich, einen TV als Monitor zu benutzen.
Dazu muss im Linux Sourcetree-Root der Kernel gepatch werden:
patch -p0 < vga-sync-fields/patches/radeonfb.patch
[Bearbeiten] Tools übersetzen
drift_control
cd vga-sync-fields-X.X.X/tools cc -I/usr/include/drm -lpciaccess -ldrm drift_control.c -o drift_control
drift_control810
cd vga-sync-fields-X.X.X/tools cc -I/usr/include/drm -lpciaccess -ldrm drift_control810.c -o drift_control810
dumpio
cd vga-sync-fields-X.X.X/tools cc -lpciaccess dumpio.c -o dumpio
dumpio810
cd vga-sync-fields-X.X.X/tools cc -lpciaccess dumpio810.c -o dumpio810
trim
cd vga-sync-fields-X.X.X/tools cc -I/usr/include/drm -ldrm trim.c -o trim
trim810
cd vga-sync-fields-X.X.X/tools cc -I/usr/include/drm -ldrm trim810.c -o trim810
[Bearbeiten] Tips & Tricks
[Bearbeiten] OSD-Qualität
"MFG" hat aus dem EasyVDR Portal wertvolle Tips gegeben -> Link
VGA2Scart hat mit den Menüeinblendungen kleinere Probleme und kommt aufgrund fehlender Transparenz nicht an die spezialisierte Hardware wir DXR3/FF/PVR350 heran. Aber wenn die Schrift passend (Sans:Bold) und nicht zu klein gewählt, Kantenglättung aus ist und im xineliboutput das OSD auf Hardware und bilinear steht, gibt es doch ein knackig und scharfes OSD. Hier als Beispiel die OSD-Einstellungen von MFG:
xineliboutput OSD auf Sofware ist halt was für direkt VGA/HDMI und Co. oder wenn man von VDRAdmin oder Live einen SnapShot anhängen möchte.
[Bearbeiten] Credits
Sparkie hat das ganze Thema losgetreten und wichtige Grundlagenforschung betrieben. Ein spezieller Dank geht auch an durchflieger für seine Weiterentwicklung für neuere Radeon Modelle.