HDTV CoreAVC / xine-lib 1.2 / dshowserver on linux 64Bit

  • Tach Team,


    Nach ewigen Versuchen habe ich hier nun eine funtionierende Variante des Windows Codecs CoreAVC laufen, der eine alternative zur ffmpeg decodierung von h264 darstellt.
    Gleich vorneweg, ruckelfrei ist das Ganze auch nicht, aber deutlich besser als der derzeitige ffmpg Stand.


    Der Reihe nach, folgendes System soll das Ziel sein :


    - amd 64Bit
    - vdr (hier 1.5.14 ) mit S2 h264 Fähigkeit
    - Ausgabe über vdr-xine in Xine
    - Videodekodierung via xine-lib 1.2 , dshowserver und CoreAVC 1.8


    Vorteile :
    - skalliert über mehrere CPUs ( macht ffmpeg derzeit nicht )
    - bessere Bildqualität, ruckelfreier als ffmpeg :)


    Nachteile :
    - externer Direct Show Server, Windows Closed Source Filter
    - Kostenpflichtiger Codec


    Ich betrachte das ganze als zwar funtionierend, aber nicht der Weißheit letzter Schluß.


    Die schritte im Einzelnen ( hier nur die Coreavc und dshowserver relevanten Dinge )


    1. CoreAVC besorgen, z.b: hier :
    http://www.coreavc.com/


    2. installation mittels wine


    3. Nach Installation kommt die Datei "YOUR_HOME/.wine/drive_c/Programme/CoreCodec/CoreAVC Professional Edition/CoreAVCDecoder.ax" nach "/usr/lib/win32/CoreAVCDecoder.ax"


    4. dshowserver als vorkompiliertes binary von hier herunterladen :
    http://coreavc-for-linux.googl…r-ia32-r63-gentoo.tar.bz2


    5. enthaltene binarys " dshowserver" + "registercodec" entpacken nach /usr/bin


    6. registrieren des Codecs mit :

    Code
    mkdir YOUR_HOME/.mplayer/
    export REGISTRY=$HOME/.mplayer/registry32
    registercodec -r $REGISTRY -k "HKLM\\Software\\CoreCodec\\CoreAVC Pro\\Serial" -v "55555-55555-CORE-55555-55555"


    Statt der vielen 5en kommt der 15$ teure Key rein.


    7. testen auf funtionierenden dshowserver mit :

    Code
    dshowserver -c CoreAVCDecoder.ax -s 1280x720 -g 09571a4b-f1fe-4c60-9760de6d310c7c31 -b 12 -f 0x34363248 -o 0x30323449


    sollte bringen :

    Code
    No id specified, assuming test mode
    Opening device
    Called unk_IsDebuggerPresent
    len: 992
    ProductVersion: 1.8.0
    Decoder supports the following YUV formats: YUY2 UYVY YV12 I420
    Decoder is capable of YUV output (flags 0x2b)
    Setting fmt
    Starting
    Initialization is complete


    8. dshowserver decoder plugin for xine-lib von Petri Hintukainen herunterladen und übersetzen, setzt natürlich eine funktionierende xine-lib1.2 vorraus
    http://phivdr.dyndns.org/vdr/x…ne_2008-08-04-phi.tar.bz2
    alternativ : http://rapidshare.de/files/405…08-08-04-phi.tar.bz2.html


    Die Übersetzung kann außerhalb des xine-lib tree's erfolgen

    Code
    make


    9. kopieren und ausführbar machen der eben erstellten xineplug_decode_dshowserver.so

    Code
    xineplug_decode_dshowserver.so --> /usr/local/lib/xine/plugins/2.0/xineplug_decode_dshowserver.so


    10. Aufruf von xine ( via vdr-xine als Ausgabe vom vdr )

    Code
    nice --10  /usr/bin/xine -V xv --post vdr_video --post vdr_audio --post upmix_mono --post vdr --verbose=2  vdr:/tmp/vdr-xine/stream#demux:mpeg_pes


    gibt folgende Terminal Ausgabe :



    Quellen :
    http://code.google.com/p/coreavc-for-linux/
    http://phivdr.dyndns.org/vdr/xine-lib/dshowserver/


    Wie siehts aus ?


    [Blockierte Grafik: http://img100.imageshack.us/img100/6394/cpuloadpremierehdcx6.th.jpg]


    [Blockierte Grafik: http://img201.imageshack.us/img201/7708/viewdiscoveryhdix8.th.jpg]


    [Blockierte Grafik: http://img201.imageshack.us/img201/6915/viewdiscoveryhd2ny6.th.jpg]


    ich sach ma, Compiler ON


    Grüße vom Alex

    Wer Rechtschreibfehler findet, darf sie behalten


    Meine Konfiguration :


    Ion 2, 2 x S2 3600, 4 Gig Ram, OS : Kubuntu 12.04 LTS, Kernel 3.2.0-40-generic , x86_64, vdr.2.0.1 ( yavdr-testing ) , vdr-xine 0.9.4 ( yavdr-testing ) , xine-lib 1.2 ( yavdr-testing )

    Einmal editiert, zuletzt von faup ()

  • Danke für Einleitung, wird ihn in kommenden Tage testen.

  • Schöne Anleitung. Funktioniert bei mir jetzt grundsätzlich auch. Leider ist 1080i hier bei mir immer noch nicht ruckelfrei. Hat die Parametrierung für CoreAVC in der Registry, wie sie im Googgle Wiki für V1.7 beschrieben ist, auch bei V1.8 noch Gültigkeit? Ich würde gerne den deinterlacer abschalten.

  • Zitat

    Original von durchflieger
    Parametrierung für CoreAVC in der Registry, wie sie im Googgle Wiki für V1.7 beschrieben ist, auch bei V1.8 noch Gültigkeit? Ich würde gerne den deinterlacer abschalten.


    Hallo durchflieger,


    ich habe die Cheats mal mit der Version 1.8 ausprobiert, aber keine wirkliche Veränderung festgestellt, heißt, den Deinterlacer hab ich nicht abgeschaltet bekommen.


    Problemlos sollte aber auch die Version 1.7 in oben beschriebener Anleitung laufen, damit könnten die Cheats dann funktionieren.


    Grüße vom Alex

    Wer Rechtschreibfehler findet, darf sie behalten


    Meine Konfiguration :


    Ion 2, 2 x S2 3600, 4 Gig Ram, OS : Kubuntu 12.04 LTS, Kernel 3.2.0-40-generic , x86_64, vdr.2.0.1 ( yavdr-testing ) , vdr-xine 0.9.4 ( yavdr-testing ) , xine-lib 1.2 ( yavdr-testing )

  • Moin faup,


    bei mir klappt das ganze nicht, ich habe für ganz kurz audio, das bild bleibt schwarz.


    Danach gehen auch nicht HD Sender nicht mehr, hilft nur nen X Neustart.


    Xine-lib ist hg checkout von heute.


  • Hallo faup,


    danke für die tolle Anleitung, lief hier auf einer Lenny/Sid i386 Testinstallation mit dem VDR 1.7.0 auf Anhieb!


    Zumindest die fast exakt gleichmäßige Kernauslastung auf dem overclocked (4x 3,17Ghz) QuadCore hier ist beeindruckend, wenn man ffmpeg gewöhnt ist!


    Allerdings läuft das Bild leider auch nicht 100% ruckelfrei, obwohl alle 4 Kerne zwischen 10% - 40% rumhängen. (bei ffmpeg ist einer zwischen 40-100% und es ruckelt bei 100% manchmal auch).


    Zwischendrin "haken" die Bewegungen innerhalb des Bildes oder das Bild friert gelegentlich ganz ein für kurze Zeit.
    Ursachen kann man nur mutmaßen, ob das nun daran liegt, dass es sich eigentlich um einen Windows-Codec handelt, dass die Verteilung auf 4 Kerne "zu" multithreaded ist, der CodecAVC selber noch verbesserungswürdig ist usw...


    Außerdem funktioniert das auf der Testinstallation hier nur gut mit "vdr-xine",sprich dem "xine" plugin, welches dann direkt aus der "xine-ui" gestartet wird. (siehe deine Anleitung).


    Das "xineliboutput" plugin (starten über vdr-sxfe) stürzt nach kurzer Zeit nach dem Umschalten auf nen HD-Sender ab mit einigen "fifo buffer full" Meldungen. Ich schätze hier dauert es einfach zu lange, bis dekodierte Daten kommen (das dauert nämlich zieeemlich lange). Evtl. lässt sich hier auch was an der Buffergröße drehn.


    Zu guter letzt habe ich aber mit dem "xine"-Plugin einen kleinen grünen Rand an der unteren Kante des Bildes, das stürzt jedoch in keinem Fall ab und funktioniert soweit ordentlich.


    Fazit: Das Ganze läuft bei mir irgendwie "anders" als ffmpeg, aber nicht wirklich besser. Für Leute, bei denen ein einzelner Kern unter ffmpeg momentan bei weitem zu schwach für HDTV ist, evtl. eine lohnende Alternative.


    Werde mir jetzt noch die Sache mit dem Deinterlacer anschaun. Auf den ersten Blick macht das CoreAVC das Deinterlacing ja selber, zumindest seh ich bei deaktiviertem TvTime deinterlacer auf 1080i nix interlaced.... oder?


    grüße,
    cyberjunk

  • Hi,


    auch von mir herzlichen Dank.
    Bei mir läuft es jetzt fast Perfekt, 40-80% "GLEICHMÄßIGE" Auslastung auf beiden Cores.
    Ab und zu Miniruckler und am Anfang dauert es 2-5 Sek. bis ein Bild kommt.
    Sonst läuft es aber sauber und stabil unter Lenny.
    Unter easyVDR kommt leider ein Seg fault des dshowservers


    Ach ja, v1.7 läuft bei mir wesentlich besser als die v1.8 von CoreAVC


    ffmpeg, xine-lib, xineliboutput alles CVS bzw. hg


    Eingebunden in xineliboutput per -l sxfe -V xv
    in setup.conf muss noch folgendes rein
    xineliboutput.Video.Decoder.H264 = dshowserver

    Lifesystem easyVDR 0.602, VDR 1.4.7 mit diversen eigenen Erweiterungen Testysystem Debian Lenny VDR 1.7.0 HD mit CoreAVC v1.7 H264 Decoder, beides mit 2.6.26.5 Kernel, DVB Mantis Multiproto Teiber Gehäuse Silverstone LC16M, Mainboard ASUS M3A78 PRO (780G), RAM 2GB, CPU AMD Athlon64 4850e, GFX Nvidia 7300GS (hoffe vorübergehend), Blu-ray HD Combo Laufwerk LG GGC-H20L , HDD 640GB 3,5" Samsung SpinPoint F1, 1 x TT FF v1.6 inkl. AVBoard v1.3, 1 x Skystar2 v2.7, 1x Skystar HD2

  • Zitat

    Original von nepumuk
    ...
    Eingebunden in xineliboutput per -l sxfe -V xv
    in setup.conf muss noch folgendes rein
    xineliboutput.Video.Decoder.H264 = dshowserver


    Hmm ich habe eigentlich auch den aktuellen cvs Stand des xineliboutput. Die Option "dshowserver" kennt "xineliboutput.Video.Decoder.H264" gar nicht. Ist diese Einstellung bei dir wirklich notwendig damit es läuft? Oder hast du eine besondere Version?


    Bei mir läuft es mit xineliboutput ein paar Sekunden (CoreAVC V1.7 und V1.8 getestet) dann bricht es ab. Unter xine-ui läuft es besser. Auslastung der beiden Cores sehr gleichmäßig aber immer mit 80%. Wiedergabe ist durchweg mit Rucklern.
    Das Ändern der Parametrierung des CoreAVCDecoder.ax zeigt auch nicht wirklich Wirkung. Offenbar kommt 1080i Material aber mit 25Hz Framerate am Decoderausgang raus so dass hier wohl standardmäßig das Deinterlacing ausgeschaltet ist bzw. einfaches Weave passiert.

  • Zitat

    Original von durchflieger


    Hmm ich habe eigentlich auch den aktuellen cvs Stand des xineliboutput. Die Option "dshowserver" kennt "xineliboutput.Video.Decoder.H264" gar nicht. Ist diese Einstellung bei dir wirklich notwendig damit es läuft? Oder hast du eine besondere Version?


    es wollte erst mit dshowserver nicht laufen, hab dann diesen Parameter hier im Forum irgendwo gelesen, zwischenzeitlich hatte ich aber auch in der xine config mit den decoder priorities gespielt, dann gings aufeinmal
    Ne ganz normale cvs Version

    Lifesystem easyVDR 0.602, VDR 1.4.7 mit diversen eigenen Erweiterungen Testysystem Debian Lenny VDR 1.7.0 HD mit CoreAVC v1.7 H264 Decoder, beides mit 2.6.26.5 Kernel, DVB Mantis Multiproto Teiber Gehäuse Silverstone LC16M, Mainboard ASUS M3A78 PRO (780G), RAM 2GB, CPU AMD Athlon64 4850e, GFX Nvidia 7300GS (hoffe vorübergehend), Blu-ray HD Combo Laufwerk LG GGC-H20L , HDD 640GB 3,5" Samsung SpinPoint F1, 1 x TT FF v1.6 inkl. AVBoard v1.3, 1 x Skystar2 v2.7, 1x Skystar HD2

  • @odintg
    probiers mal mit dshowserver-r46. Der soll zwar angeblich nicht klappen, tuts aber trotzdem. Dafür geht r63 bei mir nicht. System ist Debian lenny.

  • Hab es auch gerade mal ausprobiert. Mit V1.8.5.0 von CoreAVC gibts aber einen SegFault - eine Lösung des Problems ist HIER zu finden.


    Gruss
    Marcus

    My VDRs:

  • Hallo


    Nutzt hier jemand den CoreAVC noch? Bin als ATI Benutzer mit xvba noch nicht wirklich zufrieden, also fällt GPU Entfaltung von H.264 im Moment noch weg. Daher bleibt für Olympia die Alternative CPU Entfaltung mit oder ohne CoreAVC/ libxine-2.


    Wie stabil läuft der Coreavc Code unter Linux und wird er überhaupt noch von jemandem hier verwendet?


    ... wär dankbar für ein kurzes Feedback, Danke!

    MSI P6NGM-FD | ASROCK A785GXH | Grafik: GeForce 9400GT| DVB-S2 Karten: Twinhan VP 1041 & Skystar HD

Jetzt mitmachen!

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