[Announce] softhddevice mit mmal Ausgabe

  • Hallo,


    auf github liegt ein softhddevice fork der mit mmal umgehen kann. Es gibt keine X Abhängigkeiten mehr. Vorraussetzung ist FFmpeg aus dem git. Diese Version gibt notwendige Informationen zum Deinterlacing weiter. Einen pull request habe ich gestellt, mal sehen ob er angenommen wird.


    In der config.txt habe ich mit hdmi_mode= 31 1080p 50Hz fest eingestellt. In der runvdr starte ich mit

    Code
    1. -P "softhddevice -a hw:0,0 -c Master -v mmal" \


    Es kann jede beliebige Soundausgabe die einen Alsa oder OSS Treiber hat benutzt werden. Geschrieben und getestet habe ich auf einem Raspi 2 mit einem Hifiberry Amp.
    Für Gentoo User liegen ebuilds bei.


    Gruß zille


    Edit: Es kann auch das FFmpeg git benutzt werden.


    Edit 2: Mein Patch ist ab FFmpeg-3.2 integriert. Damit ist die git Version nicht mehr notwendig.

  • Möchtest Du eventuell noch sagen, was "mmal" ist? Sonst muss ich mal google befragen. Bringt das was für nicht-ARMs?

    - Client1: Thermaltake DH 102 mit 7" TouchTFT * Debian Stretch/vdr-2.4.0/graphtft/MainMenuHooks-Patch * Zotac H55-ITX WiFi * Core i3 540 * 4GB RAM ** Zotac GT630 * 1 TB System HDD * 4 GB RAM * Harmony 900 * satip-Plugin

    - Client2: Alfawise H96 Pro Plus * KODI
    - Server: Intel Pentium G3220 * DH87RL * 16GB RAM * 4x4TB 3.5" WD RED + 1x500GB 2.5" * satip-Plugin
    - SAT>IP: Inverto iLNB

  • OSS Treiber - gibts das überhaupt noch in der Praxis?

  • ... wenn ich mal interessehalber fragen darf - was ist denn der Mehrwert gegenüber dem rpihddevice plugin?

    Rpihddevice kann nur über HDMI und die eingebaute "Soundkarte" Sound ausgeben. Die Linuxschnittstelle Alsa wird nicht benutzt. Ein USB-Soundkarte, Hifiberry oder ein Convolver kann nich benutzt werden. Diese Beschränkungen fallen mit softhddevice weg. Alsa wird voll unterstützt.


    Gruss Zille

  • @zille:


    Ich finde die Idee sehr gut. Zum Compilieren musste ich einige Pfade und zusätzliche Bibliotheken ins Makefile eintragen. Beim Start allerdings crasht das Plugin:



    Mein Test war allerdings ohne externe Soundkarte, sondern nur Karte 0: ALSA [bcm2835 ALSA], Gerät 1: bcm2835 ALSA [bcm2835 IEC958/HDMI].


    Gruß,
    beta

  • Zum Compilieren musste ich einige Pfade und zusätzliche Bibliotheken ins Makefile eintragen.

    Hallo Beta,


    was hast Du nachgetragen? Irgendwo habe ich mal gelesen das Biblioteken unter /opt liegen sollen. Gentoo hat die unter /lib liegen. Welche Distri hast Du im Einsatz?


    Edit:

    Code
    1. libavutil.so.54


    Du benutzt auch eine falsche ffmpeg Version. Die Version aus meinem Git ist notwendig!


    Gruss zille.

  • Hallo Zille,


    folgende Einträge im Makefile:


    Code
    1. _CFLAGS += $(shell pkg-config --cflags libavcodec) -L/opt/vc/lib -L/usr/lib/arm-linux-gnueabihf
    2. LIBS += -lrt -lmmal -lmmal_core -lvcos -lxcb -lxcb-icccm -lvchostif -lbcm_host $(shell pkg-config --libs libavcodec
    3. )


    und


    Code
    1. INCLUDES += -I/opt/vc/include -I/opt/vc/include/interface/vcos/pthreads -I/opt/vc/interface/vmcs_host/linux -I/opt/
    2. vc/include/interface/vmcs_host/linux


    Dazu in video.c zweiVariablen einkommentieren, da ich sonst undefined symbols hatte.
    Ich nutze Debian (neueste Firmware und neuester Kernel).


    Edit: Der Crash ist unabhängig von der ffmpeg-Version. Wenn ich Deine unter /usr/local/lib mit LD_LIBRARY_PATH verwende, gibts einen Crash an derselben Stelle.


    Edit2: Die einkommentierten Variablen sind VideoZoomModes und VideoSetGeometry.


    Gruß,
    beta

  • @zille:


    Wer lesen kann, ist klar im Vorteil. Es funktioniert in der Tat mit Deiner ffmpeg-Version. Ich hatte den library-Path in der falschen Reihenfolge im Makefile, d.h. er hat immer die falsche eingebunden. Da ändert dann auch ein LD_LIBRARY_PATH nichts dran...


    Jetzt scheint es zu funktionieren. Sorry wegen der Verwirrung.


    Gruß,
    beta

  • Da hast Du bissel viel rein geschrieben.

    Code
    1. INCLUDES += -I /opt/vc/include -I /opt/vc/lib


    Es sollte nur der Pfad zu include und den libs fehlen. Der Rest sollte stimmen. Probierst Du es noch einmal oder soll ich es erst aufs Git schieben? Hab hier leider kein Debian hier. Kannst Du mir einen link geben?

  • Hallo Zille,


    ich konnte heute Nachmittag nur remote testen und da sah erst einmal alles gut aus. Vor dem TV sitzend stelle ich jetzt aber fest, dass der Ton funktioniert, aber kein Bild kommt. Die Distribution ist die raspbian von der raspberry foundation web seite...


    Gruß,
    beta

  • Moin,


    ich will jetzt nicht stänkern, aber laut hier kann man per dtparam in der config.txt zumindest für den onboard Sound ALSA aktivieren (von mir ungetestet).

    Code
    1. Name: <The base DTB>
    2. Info: Configures the base Raspberry Pi hardware
    3. Load: <loaded automatically>
    4. Params:
    5. audio Set to "on" to enable the onboard ALSA audio interface (default "off")


    Gruß, ollo

  • So, jetzt rennt es auch unter Raspbian. Im git liegt das neue Makefile. Unter Gentoo ging es auch mit dem alten weil ein Gentoo Entwickler die Linkeroption --if-needed weggelassen hat. Beim Installieren ist mir aufgefallen das FFmeg mit:

    Code
    1. ./configure --prefix=/usr --libdir=/usr/lib --shlibdir=/usr/lib --docdir=/usr/share/doc/ffmpeg-9999/html --mandir=/usr/share/man --enable-shared --enable-mmal +persönliche Einstellungen

    installiert werden sollte. Wichtig ist --enable-mmal.


    Beta, Danke für Deine Hinweise!


    Gruss zille

  • @Zille:
    Erstmals ein riesiges DANKE für diese Arbeit, denn so kann aus einem PI2 VDR bei mir zu Hause auch noch was werden! :-)


    Ist für MMAL Kernel > 4.4.0 notwendig?



    Mit freundlichen Grüßen,
    z421 :)

  • ich will jetzt nicht stänkern, aber laut hier kann man per dtparam in der config.txt zumindest für den onboard Sound ALSA aktivieren (von mir ungetestet).


    Machst du aber. ;) - Keine Sorge, wir werden dir den Sinn von mmal unter softhddevice erläutern:


    Ja, man kann Ton am Raspberry über Alsa ausgeben, das ist richtig. Aber omxplayer & Ton über Alsa geht nicht (wirklich [1]).
    Omxplayer läuft über OpenMax, und OpenMax hat keinen Alsa Output. Das heißt, OpenMax gibt Bild und Ton direkt an den Grafiktreiber weiter, und der teilt dann Bild und Ton auf. Das ist aber nicht Alsa basierend. Somit kann man unter Verwendung von Omxplayer den Ton nur über a) HDMI oder b) dem On-Board-Analog Ausgang abspielen.
    Das führt wiederrum dazu, dass man HifiBerry, USB-Soundkarten usw. nicht mit hardwarebeschleunigter Video-Wiedergabe über OpenMax verwenden kann.


    Im Kodi z.B. kann man dazu mmal & alsa verwenden. Unter dem rpihddevice, welches zur Ausgabe von Bild & Ton auf den omxplayer zurückgreift, geht das aber nicht.


    Zu dem Thema gibt's einiges an Lesestoff, problematisch ist bei einer Ausgabe des Tons über Alsa & Bild über OpenMax, dass man A/V sync bekommt. Es gibt aber (habe ich in dunkler Erinnerung) irgenwo einen (Alpha)-Patch für OpenMax der das Feature Alsa Output in einer OpenMax implementation hinzufügt. Doch (leider) wurde der Patch nicht weiterverfolgt.


    https://github.com/huceke/omxplayer/issues/36
    [1]http://forum.kodi.tv/showthread.php?tid=174502