[patches} Korrekte interlaced und framesynchrone Ausgabe für SDTV/HDTV auf VGA/DVI/HDMI/RGB/SCART

  • Die hier vorgestellten "Frame Rate Control" Patches sind für den aktuellen xorg xf-86-video-ati Treiber sowie dem radeon DRM-Kernel-Modul gedacht die bekanntlich Grafikkarten mit AMD/ATI Radeon Chipsätzen (u.a. R300/R400/R500) unterstützen.


    Die Patches erweitern den Treiber um folgende Funktionen:


    1. Interlaced video Ausgabe über Xv mit korrekter field order. Damit kann ein interlacing im Video-Player entfallen was insbesondere bei HDTV die notwendige Rechenleistung verringert.


    2. Vermeidung eines Drift zwischen Grapikkarten-Takt und Video-Ausgabe-Takt des Players durch "on the fly" Modifikation des video timing der Graphikkarte.


    Unterstützt werden beliebige video modes insbesondere aber die für TV interessanten
    Modes 720x576@50i, 1440x576@50i, 1280x720@50p sowie 1920x1080@50i.


    Mehr Grundlagen zu dem Thema findet man in diesen beiden Threads:
    [patch] framesynchrone Ausgabe mit der Xv-Extension am VGA/DVI Anschluss
    [patch] RGB/PAL ueber VGA mit variabler Framerate


    Aus diesen Threads stammen auch die wesentlichen Ideen und ich möchte hier insbesondere auch noch einmal sparkie für seine tolle Grundlagenarbeit sowie Unterstützung bei der Entwicklung dieser Patches danken.


    Getestet wurde bisher von mir mit einer X1550 (RV515) sowie von sparkie mit einer ATI 9100 IGP.
    Die Karten unterscheiden sich bezüglich der Xv-Ausgabe ziemlich fundamental. Die X1550 hat zur Videoausgabe AVIVO-Hardware die im aktuellen Treiber nur per textured video Ausgabe funktioniert. Die IGP hat eine ältere Videoausgabe-Architektur die wir einfach mal pre-AVIVO benannt haben. Hier erfolgt die Ausgabe über overlay video.


    Ob das "on the fly" modifizieren des Videotiming ohne Bildstörungen funktioniert hängt sehr von der eingesetzen Graphikkarte, der Verbindung zum sowie dem verwendeten TV/Monitor ab. Aus diesem Grund fügt der Patch dem Treiber einige neue Optionen hinzu mit dem der Regelalgorithmus vielfältig konfiguriert werden kann.


    Wer den Patch testen möchte sollte in einem ersten Schritt erstmal nur die Funktion 1 "korrekte field order" in Betrieb nehmen und sehen das er ein brauchbares Bild bekommt. Überigens ist alleine diese Funktion schon sehr wertvoll.


    Um das erstellen des modifizierten Treiber so einfach wie möglich zu halten habe ich die Patches samt dem passenden Sourcecode von Treiber und DRM Modul als debian source packages hinterlegt.

    Die Patches setzen eine aktuelle Distribution voraus. Ich habe mit Ubuntu V8.10 getestet. Eine kleine Bauanleitung ist in der README-Datei enthalten die natürlich auch eine Beschreibung aller Konfigurations-Optionen enthält.


    Noch eine WARNUNG: Es besteht die Gefahr dass die Patches inkorrekte video timings erzeugen die euren TV oder LCD potentiell beschädigen können! Wenn Ihr die Patches ausprobiert macht Ihr das auf eigene Gefahr! Anzumerken wäre hierbei das bei unseren Tests bisher kein Gerät in mitleidenschaft gezogen wurde.

    Demnächst folgt noch ein Patch für das xineliboutput-Plugin das dann "on the fly"
    die video modes umschaltet wenn man zwischen SDTV und HDTV Kanälen zappt.
    Siehe hier: SDTV/HDTV video mode switching für das vdr-xinliboutput-plugin


    DOWNLOAD: http://www.halstenbach.de/publ…adeon-frc-20090421.tar.gz


    Viel Spass beim ausprobieren!


    EDIT:
    02.10.2008: xorg.conf für radeon als Anhang aufgenommen
    28.10.2008: Korrigierte und überarbeitete xorg.conf für xserver V1.5.2. Danke an shh für den Hinweis.
    06.01.2009: Anpassung an aktuellen xorg radeon treiber 6.9.0.91 und drm 2.4.3. Download jetzt als vollständige debian source packages.
    15.01.2009: Überarbeitete xorg.conf wieder als Anhang aufgenommen
    16.02.2009:Neue download version 0.9.1 mit wichtigen Anmerkungen zum xineliboutput plugin im README. xorg.conf aus Anhang in download archive übernommen. Anhang entfernt
    23.02.2009:Neue download version 0.10 jetzt basierend auf xserver-xorg-video-ati v6.11.0 und drm 2.4.4. Weiterhin wurde ein Fehler in der Regelung des Mode 4 beseitigt
    24.02.2009:Neue download version 0.11 behebt config bug von version 0.10
    19.04.2009:Neue download version 20090419 jetzt basierend auf radeon 6.12.2 und drm 2.4.9
    21.04.2009: Neue download version 20090421 jetzt mit weiteren Patches für xine-lib und xineliboutput plugin

  • Habe das Debian mal nachgebaut und alles nach deiner Anleitung gerichtet. Lies sich problemlos und schnell bauen. Allerdings bekommen ich auch mit


    Option "FrameRateVerbose" "2"


    Keine log einträge im X-server log. Kann das daran liegen, dass ich die Auflösung von 720x576 nicht setzen kann? Xrandr listet sie nicht unter "modes" und manuelles hinzufügen lässt sie dort auch nicht erscheinen.


    Gruß


  • Ja daran wird es liegen. Die Controller schaltet sich erst zu wenn die frame rate des video stream auf ~1Hz genau mit dem video mode übereinstimmt.
    Bitte poste doch mal deine xorg.conf sowie die Xorg.X.log.

  • Zitat

    Original von durchflieger
    [...]Getestet wurde bisher von mir mit einer X1550 (RV515) sowie von sparkie mit einer ATI 9100 IGP.
    Die Karten unterscheiden sich bezüglich der Xv-Ausgabe ziemlich fundamental.
    Die X1550 hat zur Videoausgabe AVIVO-Hardware die im aktuellen Trieber nur
    per textured video Ausgabe funktioniert. Die IGP hat eine ältere Videoausgabe-Architektur die wir einfach mal pre-AVIVO benannt haben. Hier erfolgt die Ausgabe über
    overlay video.[...]


    erst mal danke für die tolle arbeit - echt klasse, was sparkie geleistet hat und du grade beim "durchfliegen" machst :)


    was meinst du, wie's mit einem IGP x1250 aussieht? :schiel


    lt. wiki-radeon (--> klick) sollte das ein "R000-300" sein. "R200" sollte die 9100er sein - allerdings sieht's - wie du schon schreibst - mit den IGP mehr in richtung "abgespeckte versionen" aus.


    gruß, ciax

  • Hier mal ein Ausschnitt aus der Xorg.log der zeigt was der radeon Treiber zur Zeit grundsätzlich unterstützt. Jedoch ist damit noch nicht gesagt ob auch wirklich XV unterstützt wird.
    Definitiv gibt es noch keine Unterstützung für neuere Karten der Klasse HD2xxx - HD4xxx.
    An der wird aber seitens der Treiberentwickler gearbeitet so das hier irgendwann mal etwas zu erwarten ist.


  • Bin ein Stück weiter, aber wohl leider erstmal in ner Sackgasse. Habe jetzt festgestellt, dass mein LCD TV nur die "standart Auflösungen" wie 800x600, 1024x768 und 1280x1024 am VGA versteht. Damit bin ich wohl erstmal raus :)

  • Hi durchflieger,


    erst einmal herzlichen Glueckwunsch zum Release deines neuen Patches! Ich kenne ihn ja schon recht gut vom Testen in den vergangenen Wochen. Es ist beeindruckend, was du da alles an Funktionen eingebaut hast.


    Endlich ist fuer HDTV, ein entsprechendes Display vorrausgesetzt, kein Software-Deinterlacing mehr erforderlich. Das spart enorm an Rechenleistung. Vom Qualitaetsgewinn der Wiedergabe ganz zu schweigen.


    Das macht die Softdecoder/Budgetloesungen fuer HDTV jetzt noch wesentlich interessanter.


    Mein vga-sync-fields Patch wird insofern ueberfluessig. Fuer mich jedoch nicht, da er sich ausschliesslich auf SCART beschraenkt und sich somit recht gut fuer


    weitere Grundlagenforschung bezueglich Portierung der Idee auf weitere Hardware (z.B. Intel) eignet.



    durchflieger:
    eigentlich koenntest du noch SCART in die Titelzeile als Ergaenzung zu VGA/DVI/HDMI mit aufnehmen? Dann haben wir alle Anschluesse durch:)



    ciax

    Zitat

    Originally posted by ciax
    was meinst du, wie's mit einem IGP x1250 aussieht?


    laut
    http://en.wikipedia.org/wiki/A…series#Radeon_Xpress_1250
    ist es ein RS600 also noch recht neu. Mein IGP9100 ist mit RS300 hingegen recht alt. Deswegen habe ich da leider keine Erfahrungswerte.



    dortje

    Zitat

    Originally posted by dortje
    Habe jetzt festgestellt, dass mein LCD TV nur die "standart Auflösungen" wie 800x600, 1024x768 und 1280x1024 am VGA versteht. Damit bin ich wohl erstmal raus


    Nicht doch! Wenn sonst gar nichts mehr geht, dann hilft immer noch der Bau eines VGA2SCART Kabels:)


    - sparkie

  • Das ist mir wohl bewusst, aber leider unmöglich herzustellen. Ich wollte mein Glück erstmal mit VGA direkt probieren. Mal eine Verständnisfrage, würde das ganze nicht auch über S-Video gehen?


    Und zu dem Log im x-server output. Müsste das ganze nicht auch starten, wenn der Ausgang auf 720x576i läuft und ein Video ausgegeben wird, ohne dass es auf dem Display angezeigt wird (weil eben die Auflösung nicht unterstützt wird)? Das dürfte doch keinen unterschied machen, und dennoch anfangen die frame rates zu trimmen etc.


    Gruß

  • fuer nvidia waere tolli *traeum*

    kuifje
    asus m2n-vm | Athlon 5600 | Nvidia 9300GE | TT S2-3200
    yaVDR 0.4 | 1.7.21
    haddock
    asus p4pe | 2ghz | 3x DVB-S Budget | 2x500gb
    debian lenny 2.6.29.3 | e-tobi 1.7.0 | streamdev cvs | live


    <30.12.07 <igel>sid fuer den gewissen kick>
    <01.04.08 <igel>ich kann eh nix ausser debian pakete installiern>
    <15.12.09 igel hasst linux>
    <23.02.10 <igel> easyvdr is nur easy wenn es easy is>

  • Zitat

    Original von dortje
    Das ist mir wohl bewusst, aber leider unmöglich herzustellen. Ich wollte mein Glück erstmal mit VGA direkt probieren. Mal eine Verständnisfrage, würde das ganze nicht auch über S-Video gehen?


    Und zu dem Log im x-server output. Müsste das ganze nicht auch starten, wenn der Ausgang auf 720x576i läuft und ein Video ausgegeben wird, ohne dass es auf dem Display angezeigt wird (weil eben die Auflösung nicht unterstützt wird)? Das dürfte doch keinen unterschied machen, und dennoch anfangen die frame rates zu trimmen etc.


    Gruß


    Mit meiner X1550 gehen beliebige Auflösungen unabhängig davon was der Monitor per EDID meldet und auch tatsächlich darstellen kann. Bei der R500 Klasse lassen sich sogar horizontale Auflösungen pixelgenau einstellen so das z.B. auch 1366x768 geht (native Auflösung meines LCD). Bei den älteren Karten werden nur horizontale Auflösungen unterstützt die durch 8 teilbar sind.

  • Zitat

    Original von ciax
    was meinst du, wie's mit einem IGP x1250 aussieht? :schiel
    gruß, ciax


    Wenn es wie sparkie herausgefunden hat eine RS600 ist sieht es im Treiber gar nicht so schlecht aus. Wird dort 3D-mässig in die R300 Klasse eingestuft. Aber alles ohne Garantie!

  • Zitat

    Originally posted by durchflieger


    Solange nvidia keine entsprechenden technische Daten veröffentlicht wird es wohl auch ein Traum bleiben


    vielleicht hat jemand Lust herauszufinden, wie man bei nVidia den aktuellen Fieldstatus ermittelt und wie man die Laenge der Scanlines programmiert:D


    In den 50Hz Interrupt der nVidia bei 720x576@50i konnte ich mich immerhin schon mal reinhaengen.


    Andererseits liegt in vielen aelteren Rechnern ein AGP, neueren Rechnern ein PCIe x16 Slot brach.


    Wie geschaffen fuer eine Low-Profile Radeon Graka. Z.B. ATI RADEON X300 mit kleinem passiven Kuehlkoerper. Fuer ein paar Euro in der Elektro-Bucht.

  • Zitat

    Originally posted by cko


    Waere diese
    http://many-electronics.shops4…hop/index.php?artnr=14536
    OK?


    da ist zwar keine Abbildung dabei, aber ich fuerchte das ist die Falsche. Wie ich gesehen habe hat die PowerColor Version u.U. sogar 'nen Luefter drauf.


    Das hingegen waere eine Richtige fuer PCIe (am Beispiel SAPPHIRE):


    http://www.sapphiretech.com/en…phics_gallery.php?gpid=32
    bzw.
    http://www.sapphiretech.com/en/productfiles/32image1.jpg


    Aufpassen, es gibt diese Karten in verschiedenen Varianten: mit VGA oder DVI-I oder mit beidem.


    Es gibt sie auch mit kurzem Slotblech (LowProfile). Damit kann man die Karte auch in sehr kleinen Gehaeusen einsetzen.


    Einfach in der Bucht suchen nach 'ATI RADEON X300'.


    Da schwimmt z.Z. jede Menge Treibgut fuer zum Teil nur 6,17EUR+Porto (mit Rechnung + Garantie) herum!


    PS:
    ein Beispiel fuer die AGP LowProfile Version:
    http://www.sapphiretech.com/en/productfiles/61image1.jpg

  • ich habe meinen obigen Post mal noch mit ein paar Beispielen ergaenzt. Nein - ich bin kein Mitarbeiter von Sapphire :(


    Aber ich finde diese Karten recht brauchbar fuer unsere Zwecke, da sie kleine Abmessungen besitzen, rel. wenig Leistung verbraten und sehr guenstig zu haben sind.


    Ausserdem decken sie alle erforderlichen Schnittstellen sowohl zum Mainboard (AGP/PCIe) als auch zum Display (VGA/DVI/HDMI/RGB/SCART) ab.


    Wer also noch eine FF im System hat und sich ueber den fehlenden DVI-I oder HDMI aergert, nutzt die FF nur noch als Budget:D und betreibt die Video-Ausgabe ueber eine der obigen Grakas.

  • Hat schon jemand mit einer ATI Karte diesen Pacth unter Verwendung von HDTV angewandt?


    Wie verhält sich die CPU Last?
    Ist die Qualität viel besser?
    Also ohne Ruckeln ?


    mfg
    donulfo

    VDR#1: TT FF 1.3 | Duron 2600+ | 512MB RAM | easyVDR0.62 | VDR1.4.7 | DolbyDigital 5.1 per ac3dec |ATRIC IR-Einschalter | GraphLCD | NVRAM-wakeup | WakeOnCall über FritzBox | PicoAV Board 1.1 | Atmolight mit Ikea Diodern.
    VDR#2 (HDTV): yavdr 0.2 - Tevii S470 - Zotac ION ITX-F

  • Zitat

    Original von durchflieger


    Wenn es wie sparkie herausgefunden hat eine RS600 ist sieht es im Treiber gar nicht so schlecht aus. Wird dort 3D-mässig in die R300 Klasse eingestuft. Aber alles ohne Garantie!


    hi durchflieger,


    ... komme immer mit den ATI-internen (R/RS xyz) und offiziellen bezeichnungen durcheinander! auf der einen seite steht R000-300 auf 'ner anderen wieder RS600 :schiel -- sparkie und du werdet schon wissen, wo der einzuordnen ist.


    also, wenn doch tatsächlich auch der x1250 IGP unterstützt würde, muß ich das glatt einmal testen! eure beschreibungen sind einfach zu verlockend! ;) - ist nur grad ein bißchen viel los zuhause (--> nachwuchs :) ) - vielleicht könnte das noch vorab ein anderer übernehmen .. zB. "ollo" ? :P


    danke & grüße!


    ciax

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!