[Prototyp] RPI Ausgabeplugin

  • Na endlich ein Update :)

    Sitze schon die ganze Zeit auf heißen Kohlen ;)

    Werd's gleich mal kompilieren und testen.

    Gruß Patrick

    [size=8]* Meine NeverEndingProjects ;) *

    Meine VDR's

    1x Dell Optiplex GX620 VDR 2.2.0 / 4x DVB-S2 (DD Cine S2 Flex) / 1x Sundtek DVB S2 USB auf Debian Jessie als Headless-Streaming-Server
    4x RaspberryPi1/2/3 VDR 2.2.0 / rpihddevice-Frontend und KODI auf Raspbian Jessie eigenkonstruktion als Mediacenter und Streaming-Client


    vectra --- glasslike ---

  • Irgendwie hört sich das am analogen Ausgang mit mpeg-Ton jetzt wie Donald Duck mit Presslufthammer im Hintergrund an...

    Code
    Oct 14 23:14:02 archberry vdr[1698]: [30B blob data]
    Oct 14 23:14:02 archberry vdr[1698]: [1698] rpihddevice: set clock scale to 1,00 (65536)
    Oct 14 23:14:02 archberry vdr[1698]: [1698] rpihddevice: SetPlayMode(Audio/Video)
    Oct 14 23:14:02 archberry vdr[1698]: [1736] rpihddevice: SetClockState(eClockStateWaitForAudioVideo)
    Oct 14 23:14:02 archberry systemd[1]: Started Video Disk Recorder.
    Oct 14 23:14:03 archberry vdr[1698]: [1736] rpihddevice: set audio codec to MPG with 2 channels, 48000Hz
    Oct 14 23:14:03 archberry vdr[1698]: [1736] rpihddevice: set analog audio output format to PCM stereo
    Oct 14 23:14:03 archberry vdr[1698]: [1736] rpihddevice: set video codec to MPEG2!
    Oct 14 23:14:03 archberry vdr[1698]: [1712] rpihddevice: decoding video 720x576i


    https://dl.dropboxusercontent.com/u/960809/Raspb…erry_analog.mp3

    Bei digital-Ton ist es eher ein MG:


    https://dl.dropboxusercontent.com/u/960809/Raspberry/DD2.0.mp3

    Meine VDRs

    VDR 1: Point of View Ion-330-1, 2x Sundtek MediaTV Pro (DVB-C), Atric IR-Einschalter Rev.5, Ubuntu 18.04 (yavdr-ansible)
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    VDR 3: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 18.04 (yavdr-ansible), VDR 2.4.1, CIR-Empfänger
    Client 1: Raspberry Pi 2, Arch Linux ARM, VDR 2.3.8
    vdr-epg-daemon auf Cubietruck mit 32 GB SSD, Arch Linux ARM

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)

  • Also wenn ich im Setup das durchreichen des Digitaltons abstelle ist der Ton gut. Wenn man die Funktion jedoch aktiviert sind die Beispiele von seahawk1986 in Bezug auf die Tonqualität schon sehr passend.

    Gruß Patrick

    [size=8]* Meine NeverEndingProjects ;) *

    Meine VDR's

    1x Dell Optiplex GX620 VDR 2.2.0 / 4x DVB-S2 (DD Cine S2 Flex) / 1x Sundtek DVB S2 USB auf Debian Jessie als Headless-Streaming-Server
    4x RaspberryPi1/2/3 VDR 2.2.0 / rpihddevice-Frontend und KODI auf Raspbian Jessie eigenkonstruktion als Mediacenter und Streaming-Client


    vectra --- glasslike ---

  • Also wenn ich im Setup das durchreichen des Digitaltons abstelle ist der Ton gut. Wenn man die Funktion jedoch aktiviert sind die Beispiele von seahawk1986 in Bezug auf die Tonqualität schon sehr passend.

    Hmm... Also das kann ich nicht nachvollziehen. Scheint ja sowohl die Ausgabe über HDMI wie auch über den Analogausgang zu betreffen.

    Ich teste mit ProSieben und SRF1 HD und benutze media-video/libav-0.8.7. Ich habe auch keine solchen Meldungen im Log:

    Code
    Oct 14 23:22:43 archberry vdr[1698]: [mp3 @ 0x180ca50] Header missing
    Oct 14 23:22:43 archberry vdr[1698]: [ac3 @ 0x180ce20] frame sync error
    Oct 14 23:22:43 archberry vdr[1698]: [eac3 @ 0x180bca0] frame sync error
    Oct 14 23:22:43 archberry vdr[1698]: [dca @ 0x186e830] Not a valid DCA frame
    Oct 14 23:22:43 archberry vdr[1698]: [mp3 @ 0x180ca50] Header missing


    Diese Meldungen kommen sicher vom Durchtesten der einzelnen Codecs, wobei mp3 hier komischerweise zweimal auftaucht...

    Edit: Ich habe gerade gesehen, dass Marten im vompclient jeweils das flag CODEC_FLAG_TRUNCATED setzt - könnte das der Grund sein? Ich war der Ansicht dass dies nicht nötig sei, da ich ja ganze PES Pakete bearbeite...

    Gruss
    Thomas

    Edited once, last by reufer (October 15, 2013 at 6:39 AM).

  • Angenommen ich habe schon mal kompiliert aber im laufe der Jahre den Faden verloren, wo lese ich mich am Besten schlau wenn ich hier mitmachen möchte?

    Meine Konfiguration
    VDR


    - yavdr 0.4
    - Gigabyte G41M-ES2H
    - Core2Duo E6550
    - S2-6400
    - S2-1600
    - WD20EARS
    - Silverstone LC11
    - MediaMVP
    - Astra 19,2° + 28,2° (3 Diseqc Weichen)
    - TV Philips PFL7605

    Server


    - Openmediavault 1.0
    - Core i5 2400
    - S2-1600

    Client


    - yavdr 0.5
    - Pentium G630T
    - Intel DH67CFB3 ITX
    - Antec ISK 110
    - 8GB SSD

  • Quote

    " Statt die Audiodaten von Hand zu analysieren, teste ich einfach alle verfügbaren Deocder durch. Wenn einer mit den Daten was afangen kann -> voilà. Spricht etwas gegen dieses Konzept?


    Ja das spricht etwas dagegen, nicht immer ist der Beginn des Audiopackets am Anfang des PES Packets. Man muss daher einen Parser dazwischenschalten der die Framegrenzen des jeweiligen Formats findet.
    Sagt vdr dem devices nicht den Typ der Audiodaten? Wenn ja würde ich die Information verwenden.

    Quote


    Ich öffne gleich zu Begin in cAudioDecoder::Init() alle Codecs. Spricht performancemässig etwas dagegen, diese "offen" zu halten?


    Nein, da spricht nichts dagegen. Die Performance sollte eher besser werden dadurch.

    Quote

    AAC und DTS konnte ich mangels Testmaterial nicht testen. Wenn mir hier jemand ein paar Ausschnitte zur Verfügung stellen könnte, wäre das sehr fein.


    Die gibt es im deutschsprachigen Raum nicht. AAC wird in Großbritanien verwendet und DTS in den nordischen Ländern.

    Quote

    Für DTS und MPEG audio pass-through bin ich mir nicht sicher, ob die OMX-Parameter passen. Ich habe auch keine Beispiele im Netz gefunden, sowohl der vompclient wie auch der omxplayer unterstützen dies nicht."


    Hier sollte erstmal herausgefunden werden, ob die angeschlossenen Geräte das unterstützen. Mpeg audio geht wahrscheinlich nicht, ich hatte nichts gefunden. Aber bei beiden gilt, mein Fernseher setzt die HDMI Signale nicht auf SPDIF um, daher konnte ich das nicht testen und daher habe ich es nicht in vomp implementiert.

    Quote

    Diese Meldungen kommen sicher vom Durchtesten der einzelnen Codecs, wobei mp3 hier komischerweise zweimal auftaucht...

    Edit: Ich habe gerade gesehen, dass Marten im vompclient jeweils das flag CODEC_FLAG_TRUNCATED setzt - könnte das der Grund sein? Ich war der Ansicht dass dies nicht nötig sei, da ich ja ganze PES Pakete bearbeite...


    Leider machen das viele Sender sehr unterschiedlich. Die Audiopackete sind teilweise sehr zerstückelt über viele Pakete verteilt bei einige Sendern. Ich habe da es den unterschiedlichsten Ländern jeweils andere Aufteilungen gesehen. Daher ist der Code auch so komplex geworden.


    Marten

    vdr experimental, Femon, vdr live, acpi-wakeup, vompserver, undelete, epgsearch, vdr-burn, Raspberry Pi und Vompserver Windows Client (build from git)

  • Also was ich gerade positiv festgestellt habe ist das der Ton bei kurzen Bildrucklern sehr schön synchron bleibt ;)
    Beim 0.0.3 reicht ein kurzes ruckeln um den Ton völlig aus der Bahn zu werden. Sehr schön.
    Auch Aufnahmen werden jetzt synchron wiedergegeben.

    Gruß Patrick

    [size=8]* Meine NeverEndingProjects ;) *

    Meine VDR's

    1x Dell Optiplex GX620 VDR 2.2.0 / 4x DVB-S2 (DD Cine S2 Flex) / 1x Sundtek DVB S2 USB auf Debian Jessie als Headless-Streaming-Server
    4x RaspberryPi1/2/3 VDR 2.2.0 / rpihddevice-Frontend und KODI auf Raspbian Jessie eigenkonstruktion als Mediacenter und Streaming-Client


    vectra --- glasslike ---

  • Hi Marten

    Zitat
    " Statt die Audiodaten von Hand zu analysieren, teste ich einfach alle verfügbaren Deocder durch. Wenn einer mit den Daten was afangen kann -> voilà. Spricht etwas gegen dieses Konzept?


    Ja das spricht etwas dagegen, nicht immer ist der Beginn des Audiopackets am Anfang des PES Packets. Man muss daher einen Parser dazwischenschalten der die Framegrenzen des jeweiligen Formats findet.
    Sagt vdr dem devices nicht den Typ der Audiodaten? Wenn ja würde ich die Information verwenden.

    Vielen Dank für den Hinweis! Der VDR gibt zwar eine Id mit, aber was die genau bedeutet ist nirgens richtig dokumentiert. Oder ich war einfach zu doof zum suchen... Werde mir aber dazu nochmals den Code vom SoftHdDevice anschauen.

    Kann es sein, dass sich hier die libav und ffmpeg anders verhalten? Für mich ist dieses Gebiet recht neu, und ich habe mich für die libav entschieden, weil ich die problemlos unter Gentoo überskreuzkompillieren konnte...

    Die gibt es im deutschsprachigen Raum nicht. AAC wird in Großbritanien verwendet und DTS in den nordischen Ländern.

    Alles klar, das wusste ich nicht.

    Hier sollte erstmal herausgefunden werden, ob die angeschlossenen Geräte das unterstützen. Mpeg audio geht wahrscheinlich nicht, ich hatte nichts gefunden. Aber bei beiden gilt, mein Fernseher setzt die HDMI Signale nicht auf SPDIF um, daher konnte ich das nicht testen und daher habe ich es nicht in vomp implementiert.

    Das mache ich, und zwar in cRpiSetup::IsAudioFormatSupported() - mein Receiver erlaubt hier PCM und AC3 (von dem was ich bisher testen konnte), MPEG akzeptiert er nicht, weshalb hier auf dem Rpi decodiert wird.

    Leider machen das viele Sender sehr unterschiedlich. Die Audiopackete sind teilweise sehr zerstückelt über viele Pakete verteilt bei einige Sendern. Ich habe da es den unterschiedlichsten Ländern jeweils andere Aufteilungen gesehen. Daher ist der Code auch so komplex geworden.

    Ok, in dem Fall muss ich wohl die "Reste" zwischenspeichern, so wie es auch das SoftHdDevice macht...

    Gruss
    Thomas

  • Angenommen ich habe schon mal kompiliert aber im laufe der Jahre den Faden verloren, wo lese ich mich am Besten schlau wenn ich hier mitmachen möchte?


    Hi rollercontainer,

    das wird genau wie jedes andere VDR Plugin gebaut. Ist also nichts besonderes zu beachten.

    Claus

    MLD 6.5 mit vdr 2.7 - lirc yaUSBir - DD-Sat - SCR - XFX GeForce 9300 mit Intel E3200 - 2GB RAM - WD Green 12TB HDD - 22TB HDD - SanDisk 64GB SSD - Lian Li PC-C37B - Samsung LE40A559
    MLD 6.5 mit vdr 2.7 - Raspberry Pi 3 - rpihddevice
    MLD 5.5 mit Squeeze Play - Raspberry Pi 2 - 32GB SD - 7" Touch TFT

  • also ist auf dem rp vdr zu "installieren"?

    #S1: Gigabyte GA-H77M-D3H, Intel 1610 Celeron, 4GB RAM, Cine S2 6.5 + Duoflex S4, NVIDIA GT 630, IBM SSD 240GB, Atric IR Einschalter, DVD-Brenner mit easyvdr 3 oder MLD5
    #S2 (offline) POV MB-D510-MATX, 2GB, GT 220, TT 1600
    #C1: RPi3 MLD5.1


  • das wird genau wie jedes andere VDR Plugin gebaut. Ist also nichts besonderes zu beachten.

    Danke für deinen Versuch, aber das beantwortet nicht meine Frage. Ich stehe hier mit einem nackten wheezy und weiß nicht so recht wie ich weitermachen muss.

    Stichwörter würden mir schon reichen.

    Meine Konfiguration
    VDR


    - yavdr 0.4
    - Gigabyte G41M-ES2H
    - Core2Duo E6550
    - S2-6400
    - S2-1600
    - WD20EARS
    - Silverstone LC11
    - MediaMVP
    - Astra 19,2° + 28,2° (3 Diseqc Weichen)
    - TV Philips PFL7605

    Server


    - Openmediavault 1.0
    - Core i5 2400
    - S2-1600

    Client


    - yavdr 0.5
    - Pentium G630T
    - Intel DH67CFB3 ITX
    - Antec ISK 110
    - 8GB SSD

  • rollercontainer

    Ich habe das erst letzte Woche gemacht, ist ganz einfach:

    1. die source repositories für apt-get hinzufügen (/etc/apt/sources.d/*)
    2. "apt-get install build-essential" und "apt-get build-dep vdr"
    3. vdr sources besorgen und auspacken, ich habe die developer version direkt von Klaus gezogen
    4. die Plugins für streamdev und rpihddevice einspielen und die Versionnummern der directories entfernen
    5. im VDR directory einfach ein "make", dann u.U. ein "make plugins" und dann ein "make install"
    6. vdr starten :]

    Viele Erfolg, ollo

  • Danke für die Starthilfe!

    Was bei mir noch nachinstalliert werden musste: libavformat-dev und libavcodec-dev.

    Damit baut er schonmal ohne Fehler.

    Edit:
    Dachte ich. Es kommt zwar kein Fehler, aber auch kein rpi-Plugin raus.

    Meine Konfiguration
    VDR


    - yavdr 0.4
    - Gigabyte G41M-ES2H
    - Core2Duo E6550
    - S2-6400
    - S2-1600
    - WD20EARS
    - Silverstone LC11
    - MediaMVP
    - Astra 19,2° + 28,2° (3 Diseqc Weichen)
    - TV Philips PFL7605

    Server


    - Openmediavault 1.0
    - Core i5 2400
    - S2-1600

    Client


    - yavdr 0.5
    - Pentium G630T
    - Intel DH67CFB3 ITX
    - Antec ISK 110
    - 8GB SSD

  • Hi Marten

    Ich muss da nochmals nachhaken....

    Ja das spricht etwas dagegen, nicht immer ist der Beginn des Audiopackets am Anfang des PES Packets. Man muss daher einen Parser dazwischenschalten der die Framegrenzen des jeweiligen Formats findet.
    Sagt vdr dem devices nicht den Typ der Audiodaten? Wenn ja würde ich die Information verwenden.

    Ich glaube nun begriffen zu haben, wie die Codec-Erkennung im SoftHdDevice funktioniert. Aber egal welcher Codec gefunden wird, decodiert wird immer ab Anfang der Payload vom PES-Paket - genau gleich wie bei meiner Implementation.

    Zusammen mit dem Flag CODEC_FLAG_TRUNCATED und dem Zwischenspeichern der Restdaten sollte das doch eigentlich immer funktionieren... oder?

    Inzwischen habe ich auch herausgefunden, dass der VDR die Stream-Id mitgibt - aber diese sagt mir lediglich, ob es sich um MPEG-Audio oder "was anderes", also einen privaten Stream handelt.

    @Alle: Bei Audioproblemen wäre für mich hilfreich zu wissen, um welche Kanäle es sich handelt und welche avlib ihr verwendet, damit ich das Problem nachstellen kann.

    Gruss
    Thomas

  • @Alle: Bei Audioproblemen wäre für mich hilfreich zu wissen, um welche Kanäle es sich handelt und welche avlib ihr verwendet, damit ich das Problem nachstellen kann.


    Ich nutze ffmpeg 2.0.2 unter Arch Linux ARM. Die Soundprobleme habe ich auf allen Kanälen (Empfang über Kabel D) - wenn es dir hilft, kann ich dir gerne eine Aufnahme zukommen lassen.

    Meine VDRs

    VDR 1: Point of View Ion-330-1, 2x Sundtek MediaTV Pro (DVB-C), Atric IR-Einschalter Rev.5, Ubuntu 18.04 (yavdr-ansible)
    VDR 2: Acer Revo 3610, Pinnacle PCTV SAT 452e, Medion X10, yaVDR 0.6
    VDR 3: Intel DH67BL, Celeron 540, 4 GB Ram, POV Geforce GT 1030, Ubuntu 18.04 (yavdr-ansible), VDR 2.4.1, CIR-Empfänger
    Client 1: Raspberry Pi 2, Arch Linux ARM, VDR 2.3.8
    vdr-epg-daemon auf Cubietruck mit 32 GB SSD, Arch Linux ARM

    yaVDR-Dokumentation (Ceterum censeo enchiridia esse lectitanda.)


  • Ich nutze ffmpeg 2.0.2 unter Arch Linux ARM. Die Soundprobleme habe ich auf allen Kanälen (Empfang über Kabel D) - wenn es dir hilft, kann ich dir gerne eine Aufnahme zukommen lassen.

    Danke für die Info - ich werde es mal mit ffmpeg versuchen. Aber bei Bedarf komme ich gerne auf Dein Angebot zurück!

    BTW: Bei Gentoo ist ffmpeg-2.0.x hard masked: http://packages.gentoo.org/package/media-video/ffmpeg

    Gruss
    Thomas

  • Danke reufer fuer das neue Update.

    Habe schon sehnsuechtig drauf gewartet ;) Super arbeit die ihr hier leistet :)

    Habe ein kleines problem beim Kompiliren der 0.0.4 variante:

    In file included from /usr/include/libavutil/avutil.h:318:0,
    from /usr/include/libavutil/samplefmt.h:22,
    from /usr/include/libavcodec/avcodec.h:30,
    from audio.h:12,
    from setup.h:10,
    from rpihddevice.c:12:
    /usr/include/libavutil/common.h: In function 'int32_t av_clipl_int32_c(int64_t)':
    /usr/include/libavutil/common.h:168:47: error: 'UINT64_C' was not declared in this scope
    make: *** [rpihddevice.o] Error 1

    kann mir da jemand vielleicht helfen ?

    Alles auf dem aktuellen Raspbian image, vdr 1.7.28 aus dem repo.

    mit der 0.0.3 hat alles geklappt.

    Gruss,

    Franz

  • Ich musste zum kompilieren

    libavformat-dev
    libavcodec-dev

    Installieren.

    Probier's mal.

    Gruß Patrick

    [size=8]* Meine NeverEndingProjects ;) *

    Meine VDR's

    1x Dell Optiplex GX620 VDR 2.2.0 / 4x DVB-S2 (DD Cine S2 Flex) / 1x Sundtek DVB S2 USB auf Debian Jessie als Headless-Streaming-Server
    4x RaspberryPi1/2/3 VDR 2.2.0 / rpihddevice-Frontend und KODI auf Raspbian Jessie eigenkonstruktion als Mediacenter und Streaming-Client


    vectra --- glasslike ---

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!