HW-Beschleunigung für h.264 mit VDPAU und Linux

  • Zitat

    Original von duc


    würd ich gerne mal probieren, wie genau muss ich das machen?
    bin zwar mittlerweile ziemlich fit was linux und vdr angeht, aber alles weiss ich auch noch nicht ;)


    Wenn du vor deinen Mplayer-Aufruf strace schreibst, dann werden alle system calls auf die Konsole gepustet. Das kannst Du dann auf grep pipen und
    z. B. nach open suchen.

    Code
    strace mplayer <mplayer options>  2>&1 |grep open


    Ich nenne das immer debuggen für Arme. Geht eben auch ohne Source-Code.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • um heraus zu finden, wo die VDPAU-Lib erwartet wird kann man auch mit


    Zitat

    ldd mplayer | grep -i vdpau


    herausfinden. Einfach den Pfad überprüfen...

    OpenSuse 11.0
    Intel Core 2 Duo E8500, GeForce 8500 GT, 4GB RAM
    Röhren TV 16:9 (Angeschlossen über S-Video)
    AV-Verstärker (Denon AVC-A1HD)
    Full-HD Beamer (Angeschlossen über HDMI)

  • Zitat

    Original von hddummy
    um heraus zu finden, wo die VDPAU-Lib erwartet wird kann man auch mit



    herausfinden. Einfach den Pfad überprüfen...


    Aber nur wenn die codecs dazu gelinkt wurden, was ich nicht glaube. Ich gehe eher davon aus, dass sie während der Laufzeit geladen werden, siehe

    Code
    man dlopen

    Deshalb wird ldd sie nicht finden.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • ups.. Ich habe nicht genau genug gelesen, du sprichst gar nicht von den codecs, sondern von einer library, dass die Codecs aber im selben Pfad wie
    die Library liegen halte ich für sehr unwahrscheinlich.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • problem gelöst, bzw. fehler gefunden.
    nachdem ich mit dem strace auch auf nichts verwertbares gekommen bin und auch ein make install nichts gebracht hat, bin ich irgendwie intuitiv vorgegangen und hab mir mal das verzeichnis .mplayer im home des users angeschaut. und siehe da, dort lag eine codecs.conf...
    ich hab das verzeichnis .mplaer einfach gelöscht, damit es neu angelegt wird und siehe da, die codecs waren alle vorhanden.

    Code
    easyVDR:~# mplayer -vc help | grep vdpau
    ffmpeg12vdpau ffmpeg    working   FFmpeg MPEG-1/2 (VDPAU)  [mpegvideo_vdpau]
    ffwmv3vdpau ffmpeg    problems  FFmpeg WMV3/WMV9 (VDPAU)  [wmv3_vdpau]
    ffvc1vdpau  ffmpeg    problems  FFmpeg WVC1 (VDPAU)  [vc1_vdpau]
    ffh264vdpau ffmpeg    working   FFmpeg H.264 (VDPAU)  [h264_vdpau]


    so ein blöder fehler, echt unglaublich.


    dann habe ich mal getestet, wie es denn jetzt so mit meiner hardware (Geforce 8200 Motherboard GPU) aussieht und funktioniert.
    MPEG: geht
    H.264: geht nicht
    WMV3: geht nicht


    wens interessiert, ich habe das ganze auch im nvidia forum gepostet, mal sehen was dabei rauskommt. notfalls investier ich halt noch nen fuffi und hol mir ne graka, die's kann.
    hier der link zum nvidiaforum:
    http://www.nvnews.net/vbulletin/showpost.php?p=1870727&postcount=253


    herzlichen dank euch allen bei der fehlersuche. das vdr portal und seine user sind einfach immer wieder klasse und eine grosse hilfe.


    frank

    Board: ASUS AT5IONT-I, 4 GB Ram
    DVB Karte: Tevii S480
    40 GB ssd als boot/systemplatte (2,5" Wechelrahmen, um auf einer anderen Platte ein Testsystem zu installieren)
    3x2TB hdd für /media
    Medion X10 Fernbedienung
    yaVDR 0.5
    Samsung UE46D5700

  • Komisch, in der VDR Mailing List <vdr@linuxtv.org> behauptet der Magnus Hörlin <magnus@alefors.se>
    das es bei ihm mit einer 8200 Onboard-Grafik funktioniert. Allerdings sagt er nur das er bei 1080p video
    eine CPU-Last von 3% hat. Er sagt nicht mit welchem codec.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • Zitat

    Original von gda
    Er sagt nicht mit welchem codec.


    Könnt ihr z.B. den big_buck_bunny_1080p_surround.avi mit einem der vdpau codecs abspielen?

    Code
    file /media/server/downloads/big_buck_bunny_1080p_surround.avi 
    /media/server/downloads/big_buck_bunny_1080p_surround.avi: RIFF (little-endian) data, AVI, 1920 x 1080, 24.00 fps, video: FFMpeg MPEG-4, audio: Dolby AC3 (5 channels, 48000 Hz)

    Bei mir klappt es mit keinem der vier Decoder. Bug oder Feature? Worunter fällt MPEG-4?


    PS. Ohne Angabe eines Codes klappt es, aber mit entsprechend hoher CPU-Last...

  • Zitat

    Original von hampelratte
    vdpau ist noch ziemlich buggy. Daher gibt es noch Probleme mit einigen Containerformaten. PRobier mal die Testdateien, die in der README angegeben sind. Damit sollte es gehen. Unterstützung für andere Dateien folgt dann hoffentlich bald.


    Die habe ich alle durch und teste sie auch bei jedem aktualisierten beta Treiber erneut. :]


  • Mit dlopen kenne ich mich nicht aus. Aber bei meinem mplayer hat es funktioniert. Wieso soll das auf anderen Systemen mit identischer Version anders aussehen ?
    "ldd" zeigt Libs incl. Pfade an die mittels linker dynamisch dazu gelinkt wurden.

    OpenSuse 11.0
    Intel Core 2 Duo E8500, GeForce 8500 GT, 4GB RAM
    Röhren TV 16:9 (Angeschlossen über S-Video)
    AV-Verstärker (Denon AVC-A1HD)
    Full-HD Beamer (Angeschlossen über HDMI)

  • Zitat

    Original von hddummy
    Mit dlopen kenne ich mich nicht aus. Aber bei meinem mplayer hat es funktioniert. Wieso soll das auf anderen Systemen mit identischer Version anders aussehen ?
    "ldd" zeigt Libs incl. Pfade an die mittels linker dynamisch dazu gelinkt wurden.


    Ich habe doch gar nichts anderes behauptet, natürlich zeigt ldd libs an die
    der Linker dynamisch dazu gelinkt hat, aber Libraries die eben nicht per linker dazu gelinkt werden, sondern erst während der Laufzeit vom Programm selbst
    per dlopen geladen werden, kann ldd eben nicht anzeigen und das wird sehr häufig bei Plugins und Codecs so gemacht. Deswegen konnte duc sein Problem ja auch durch das ändern der codecs.conf fixen, mplayer lädt eben nur die Libraries die da drin stehen. Ich hatte fälschlicherweise angenommen, dass Mplayer aller codecs lädt die in einem bestimmten Verzeichnis liegen. Ein ldd auf den VDR zeigt dir ja auch nicht die VDR-Plugins in deinem System an, obwohl das auch alles shared libraries sind.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • im nvidia forum musste ich nun erfahren, dass meine 8200 zu wenig speicher hat und bei WMV3 tatsächlich ein bug im treiber ist:

    Zitat


    Originally Posted by Stephen Warren View Post
    duc,


    H.264: You're running out of video memory allocating surfaces. You should have a BIOS option that allows you to control the amount of RAM to allocate to the GPU. Bump this up, and hopefully it'll work. Also, you could try hacking MPlayer to attempt to allocate fewer surfaces for reference frames if that doesn't work (libvo/vo_vdpau.c vdp_video_surface_create loop).


    VC-1/WMV 3: I think this is a bug. Let me look into it.


    schade nur, bei meinem ASUS M3N78 kann ich den speicher nicht erhöhen.
    ich werd jetzt mal versuchen mplayer zu patchen, damit er weniger speicher allociert.

    Board: ASUS AT5IONT-I, 4 GB Ram
    DVB Karte: Tevii S480
    40 GB ssd als boot/systemplatte (2,5" Wechelrahmen, um auf einer anderen Platte ein Testsystem zu installieren)
    3x2TB hdd für /media
    Medion X10 Fernbedienung
    yaVDR 0.5
    Samsung UE46D5700

  • Zitat

    Original von duc
    schade nur, bei meinem ASUS M3N78 kann ich den speicher nicht erhöhen.
    ich werd jetzt mal versuchen mplayer zu patchen, damit er weniger speicher allociert.


    Macht wahrscheinlich nicht sehr viel Sinn, aber du könntest ja mal den ASUS-Support um ein besseres BIOS bitten.
    Das kann ja nur ein BIOS-Problem sein, denn andere Boards mit dem Chipsatz schaffen ja 512 MB.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • duc


    Zu deiner Frage im NVIDIA-Forum auf was du NUM_VIDEO_SURFACES_H264
    setzen sollst, kann ich dir zwar keine Empfehlung geben, aber da
    die Fehlermeldung nach dem 12. vdp_video_surface_create kommt, würde
    ich also erstmal eine Zahl kleiner 12 versuchen.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • ja das deckt sich in etwa mit dem, was ich vor hatte. zum einen will ich versuchen bei ASUS ein BIOS update zu erwirken. ich denke auch, wenn es keine hardwaremässige beschränkung ist, sollte das drin sein.


    um das problem softwaremässig zu umschiffen, werd ich erst mal den mplayer patch probieren. rein aus'm bauch raus hätte ich den wert mal auf in etwa die hälfte gesetzt, 8 oder 9. ich hdenke, da muss ich ein wenig mit den werten spielen.


    frank

    Board: ASUS AT5IONT-I, 4 GB Ram
    DVB Karte: Tevii S480
    40 GB ssd als boot/systemplatte (2,5" Wechelrahmen, um auf einer anderen Platte ein Testsystem zu installieren)
    3x2TB hdd für /media
    Medion X10 Fernbedienung
    yaVDR 0.5
    Samsung UE46D5700

    Einmal editiert, zuletzt von duc ()

  • hmm, ich werd mir wohl doch ne graka kaufen müssen ;)
    ziemlich mühsam ist das alles. ich habe den wert geändert und ein wenig rumprobiert. es geht immer noch nicht, aber es kommen andere fehlermeldungen.
    wen es interessiert, der möge bitte den thread im nvidia forum mitverfolgen, ich mag nicht alles doppelt posten.


    frank

    Board: ASUS AT5IONT-I, 4 GB Ram
    DVB Karte: Tevii S480
    40 GB ssd als boot/systemplatte (2,5" Wechelrahmen, um auf einer anderen Platte ein Testsystem zu installieren)
    3x2TB hdd für /media
    Medion X10 Fernbedienung
    yaVDR 0.5
    Samsung UE46D5700

  • laut nvidia reichen aktuell 256MB nicht aus, um h264 zu decodieren.
    kann aber gut sein, dass das noch geändert wird.
    ausserdem habe ich bei asus einen change request gemacht, damit man im BIOS mehr shared memory einstellen kann. mal sehen, obs was bringt.


    frank

    Board: ASUS AT5IONT-I, 4 GB Ram
    DVB Karte: Tevii S480
    40 GB ssd als boot/systemplatte (2,5" Wechelrahmen, um auf einer anderen Platte ein Testsystem zu installieren)
    3x2TB hdd für /media
    Medion X10 Fernbedienung
    yaVDR 0.5
    Samsung UE46D5700

  • Zitat

    Original von duc
    hmm, ich werd mir wohl doch ne graka kaufen müssen ;)


    Nur welche? Es sieht so aus, als würde VC-1 nur mit der 9300 GS
    komplett unterstützt, aber die gibt es noch nicht. Angekündigt ist
    sie mit 256 MB, dann kann man nur hoffen dass sie sich auch noch shared
    memory holen kann, sonst reicht das für h264 wieder nicht.


    Gerald


    HP Proliant MicroServer Gen8, Xeon E3-1230, 12 GB RAM, 3xWD red 2TB im RAID 5, 2xSundtek MediaTV Home DVB-C/T, L4M TWIN-C/T, Ubuntu Server 14.04.1, Plex Media Server
    Samsung UE55H6470

  • das hier könnte eine sehr leckere kombination aus stromsparen+hdvideo werden...


    http://www.computerbase.de/new…idia-chipsatz_intel_atom/


    wenn möglich auf einem itx oder µatx board und stabilem nvidia treiber für linux ... *träum*

  • so, es gibt neuigkeiten. ich habe heute noche einmal gründlich in den BIOS settings rumgesucht und die stelle gefunden, wo man den shared memory einstellen kann. war bloss nicht im handbuch dokumentiert. der default wert stand auf 128MB, wundert mich also nicht, wenn der speicher nicht ausgereicht hat. hab den wert auf 512MB gestellt (entgegen der behauptung im handbuch geht das) und jetzt fluppts.


    allerdings nicht mit allen filmen, wie ich feststellen musste. es haben sich zwei fehlertypen rausgestellt, die ich im nvidia forum noch veröffentlichen werde, damit sie es fixen können.
    ansonsten ist mir aufgefallen, es geht nicht, wenn twinview aktiviert ist, dann spielt mplayer den film zwar ab, stellt aber nur eine grüne fläche dar. schade, weil ich twinview für graphtft brauche. aber das wird sich sicher noch ändern.


    ich habe dann noch versucht, das ganze aus vdr heraus zu starten, indem ich die mplayer.sh angepasst habe. das funktioniert leider auch nicht. ich denke, es ist aber nur eine frage der zeit, bis die erweiterungen in der xinelib enthalten sind. das ist auf alle fälle schon mal ein guter ansatz.


    die CPU langweilt sich während abspielen eines 1080p filmes bei 2-3% (mplayer). wenns jetzt noch ein intel atom 330 board mit dem nvidia 8200er chipsatz gäbe, dann wäre der stromspar HD-VDR perfekt und man könnte getrost auf eine FF HD karte verzichten. selber schuld, technotrend, ihr habt's verpennt.


    edit
    ich seh grad, mein vorredner hat ja schon sowas in der richtung bei nvidia entdeckt. wunderbar, ist also nur eine frage der zeit.
    edit


    frank

    Board: ASUS AT5IONT-I, 4 GB Ram
    DVB Karte: Tevii S480
    40 GB ssd als boot/systemplatte (2,5" Wechelrahmen, um auf einer anderen Platte ein Testsystem zu installieren)
    3x2TB hdd für /media
    Medion X10 Fernbedienung
    yaVDR 0.5
    Samsung UE46D5700

    Einmal editiert, zuletzt von duc ()

Jetzt mitmachen!

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