[UPnP/DLNA] Tester gesucht für Release-Candidates des neuen UPnP-Plugins V.1.0.0

  • Kommt beim Versuch den VDR mit dem Plugin zu starten (ohne subplugins).


    Das ist tatsächlich ein Bug: http://www.parashift.com/c++-f…t-order-on-first-use.html


    Kannst du mal den aktuellen Git-Stand testen?


    Medion Digitainer; AsRock B75 Pro3-M, Celeron G540; Kingston Value 4GB
    Samsung SpinPoint 250GB 2,5"; Samsung WriteMaster DVD-Brenner;
    TT-S2-6400, 2x TT-S2-1600, Ubuntu 12.04 mit YaVDR-Paketen. VDR 1.7.27, UPnP/DLNA-Plugin

  • Was ich jetzt nicht verstehe: kann man dann die Plugins noch separat vom Hauptplugin bauen? Ziel mit den Plugins soll es sein, dass Profiler später dynamisch entwickelt und separat vom Rest hinzugefügt werden können. Ist das mit deinem Makefile noch gewährleistet?

    Ja, im Moment noch nur fuer alle zusammen:

    Code
    make subplugins

    aber das kann man bestimmt noch ausbauen um einzelne nur zu bauen. Man muesste dennoch auch eine Abhaengigkeit zum "Haupt-Plugin" haben, wie ich den Code bisher verstanden habe, so das wenn bloss Subplugins gebaut werden, gewaehrleistet ist dass das "Haupt-Plugin" schon gebaut ist, ob im Sourcen-Tree oder schon im System installiert (fuer letztere Variante muesste man die Header ins System installieren, aehnlich wie die des VDR bei Gentoo eh' installiert werden, bei Gentoo braucht man naemlich nicht beim "emergen" eines jeden Plugins die kompletten VDR-Sourcen entpacken).
    Jetzt verstehe ich auch den Unterschied zwischen der Plugin-Version (VERSION) und der Version der Sub-Plugins-API (UPNPAPIVERSION). Also ich wuerde mir das noch angucken, weil ich an eine saubere Systematik der Makefiles in Hinsicht auf Gentoo interessiert bin.

  • Habs gefunden. Die Datenbank liegt im meinem fall im / Verzeichnis
    Ich häng sie mal dran.


    Also ...


    1. ist deine Datenbank leer. Vermutlich fehlen die Sub-Plugins.
    2. vermute ich ein Kompatibilitätsproblem seitens des TV. Ich glaube, dass er als Filter "class" statt "upnp:class" angibt, was eigentlich nicht erlaubt ist. Dazu brauche ich aber doch einen Wireshark-Trace. Du hast noch nie etwas mit Wireshark gemacht oder? Dann könnte es durchaus schwierig werden, da es entweder auf dem Rechner laufen muss, wo der VDR läuft oder über einen Hub zwischen TV und VDR angeschlossen sein muss.


    Hat jemand anders ähnliche Probleme?


    Medion Digitainer; AsRock B75 Pro3-M, Celeron G540; Kingston Value 4GB
    Samsung SpinPoint 250GB 2,5"; Samsung WriteMaster DVD-Brenner;
    TT-S2-6400, 2x TT-S2-1600, Ubuntu 12.04 mit YaVDR-Paketen. VDR 1.7.27, UPnP/DLNA-Plugin

  • Zu 1.


    Hier mal die ausgabe von ls -l /usr/lib/vdr/plugins/upnp

    Zitat

    root@freevdr:~# ls -l /usr/lib/vdr/plugins/upnp/
    insgesamt 120
    -rw-r--r-- 1 root root 67408 Okt 25 18:54 libupnp-Profiler-dvb-1.0.0.so.1.7.26
    -rw-r--r-- 1 root root 26224 Okt 25 18:54 libupnp-Provider-rec-1.0.0.so.1.7.26
    -rw-r--r-- 1 root root 22088 Okt 25 18:54 libupnp-Provider-vdr-1.0.0.so.1.7.26


    Aber evtl. hab ich was beim bauen verhauen!? Ich habe nähmlich probiert es zu debianisieren.


    zu 2. Nein hab noch nie was mit Wireshark gemacht

  • Kannst du mir mal ein vollständiges Log erstellen, also vom Start des VDR bis zu dem Punkt, wo du auf den Server zugreifen würdest?


    Medion Digitainer; AsRock B75 Pro3-M, Celeron G540; Kingston Value 4GB
    Samsung SpinPoint 250GB 2,5"; Samsung WriteMaster DVD-Brenner;
    TT-S2-6400, 2x TT-S2-1600, Ubuntu 12.04 mit YaVDR-Paketen. VDR 1.7.27, UPnP/DLNA-Plugin

  • Das ist tatsächlich ein Bug: http://www.parashift.com/c++-f…t-order-on-first-use.html


    Kannst du mal den aktuellen Git-Stand testen?


    Mache ich. Jetzt habe ich auch kapiert wo die Subplugins hin müssen, ich hatte nur im readme geschaut und das Projekt wiki übersehen.


    Wobei es aber imho doch sinniger wäre die Subplugins an der selben Stelle zu haben wie das upnp Plugin selber (das böse Plugin macht das ja genauso) Das würde auch die Installation vereinfachen.
    Weil, Pluginmakefiles installieren ja nicht ins Filesystem, das macht ja das vdr Makefile.


    cu

  • Hier mal der Log


    Gestartet wird der VDR so

    Code
    /usr/bin/vdr --vfat -v /home/video.00 -c /etc/vdr -L /usr/lib/vdr/plugins -Psetup -Psofthddevice -s -w alsa-driver-broken -Ptext2skin -Pdbus2vdr -Pepgsearch -Pxvdr -Pxmltv2vdr -Pstreamdev-server -Pmarkad -Pupnp -vvvvv -Pvompserver -Pskinpearlhd -Pgreytc -Pfavorites -r /usr/lib/vdr/vdr-recordingaction -s /usr/lib/vdr/vdr-shutdown.wrapper -E /var/cache/vdr/epg.data -u root -g /tmp -p 6419 -w 60 --lirc -l 3


    mfg

  • Das Log sagt mir, dass es nur ein Plugin gefunden hat, obwohl es 3 sein müssten. Das wundert mich schonmal. Eventuell begründet das den Rest, aber sicher bin ich mir nicht. Ich bau mal am Wochenende ein paar mehr Log-Meldungen ein, um dem Problem auf die Schliche zu kommen.


    Zitat


    Wobei es aber imho doch sinniger wäre die Subplugins an der selben Stelle zu haben wie das upnp Plugin selber (das böse Plugin macht das ja genauso) Das würde auch die Installation vereinfachen.


    Okay, ich kannte bisher keine Plugins, die ebenfalls Plugins anbinden. Ich kann das auch gerne so abbilden, dass die in einer Hierarchie-Ebene liegen. Das müsste dann in den Subplugins die Installation eigentlich identisch wie beim Hauptplugin darstellen, oder? Also zum Beispiel für den profiler:


    Code
    libupnp-$(PROFILE)-profiler.so: $(OBJS)
    	$(CXX) $(CXXFLAGS) $(LDFLAGS) -shared $(OBJS) $(LIBS) -o $@
    	@cp --remove-destination $@ $(VDRLIBDIR)/$@.$(APIVERSION)


    Medion Digitainer; AsRock B75 Pro3-M, Celeron G540; Kingston Value 4GB
    Samsung SpinPoint 250GB 2,5"; Samsung WriteMaster DVD-Brenner;
    TT-S2-6400, 2x TT-S2-1600, Ubuntu 12.04 mit YaVDR-Paketen. VDR 1.7.27, UPnP/DLNA-Plugin

    Einmal editiert, zuletzt von methodus ()

  • Hi,


    das Problem konnte ich endlich nachvollziehen nachdem ich die einzige relevante Stelle im Code, die den Misstand auch protokolliert hätte, gepatcht habe, dies auch zu tun, und zwar ins Logfile wohin jeder guckt und nicht auf cerr ;).


    methodus:
    Bitte übernehme diesen Logging-Patch , dann kann man nämlich im Log sehen, dass die Plugins zwar gefunden werden, aber deren Aufruf zu dlopen geht in die Hose, weil sie mit einem RPATH versehen werden der sie daran hindert, das Hauptplugin libvdr-upnp.so.1.X.X zu laden welches sie ja selber wiederum auch brauchen (da beisst sich wohl die Katze selber in den Schwanz, wa? - nun gut, ich kann schon verstehen dass die daraus auch Funktionalität brauchen). Um das Problem zu veranschaulichen, einfach mal ldd auf ein subplugin los lassen und die Ausgabe bezüglich libvdr-upnp.so.1.X.X beurteilen...


    Das Problem gibt es wohl bisher nicht, weil die Vdr-Plugins nur der VDR selber öffnet und der weiss ja woher, sie müssen nicht in einem standard LD_LIBRARY_PATH liegen. Im Internet gibt es reichlich Diskussionen über die RPATH / RUNPATH Problematik, wir sollten uns auf einen vernünftigen Lösungsansatz einigen...


    Gruß,
    Lucian

  • Ja, im Moment noch nur fuer alle zusammen:

    Code
    make subplugins

    aber das kann man bestimmt noch ausbauen um einzelne nur zu bauen. Man muesste dennoch auch eine Abhaengigkeit zum "Haupt-Plugin" haben, wie ich den Code bisher verstanden habe, so das wenn bloss Subplugins gebaut werden, gewaehrleistet ist dass das "Haupt-Plugin" schon gebaut ist, ob im Sourcen-Tree oder schon im System installiert (fuer letztere Variante muesste man die Header ins System installieren, aehnlich wie die des VDR bei Gentoo eh' installiert werden, bei Gentoo braucht man naemlich nicht beim "emergen" eines jeden Plugins die kompletten VDR-Sourcen entpacken).
    Jetzt verstehe ich auch den Unterschied zwischen der Plugin-Version (VERSION) und der Version der Sub-Plugins-API (UPNPAPIVERSION). Also ich wuerde mir das noch angucken, weil ich an eine saubere Systematik der Makefiles in Hinsicht auf Gentoo interessiert bin.

    methodus:
    So, die aktuelle Version des Makefile Patches erlaubt nun auch das Bauen einzelner Subplugins durch Aufrufen von make in deren entsprechenden Verzeichnissen, oder aller auf einmal (ohne Hauptplugin) wie vorhin schon gesagt, im Haupplugin-Verzeichnis.


    Gruß,
    Lucian


  • Das Problem hatte ich ohne folgende Zeile im Makefile: LIBS += -L$(LIBDIR) -Wl,-R$(LIBDIR) $(LIBDIR)/libvdr-upnp.so.$(APIVERSION)


    Ich habe dort das LIBDIR der Wirkumgebung angeben müssen. Das ist aber aus meiner Sicht richtig, oder etwa nicht? Ich linke doch gegen die SO, die im System vorliegt.


    Die Makefiles seh ich mir an, wobei ich wahrscheinlich etwas anders vorgehen werde. Der Ansatz mit dem Build der Plugins im Hauptmakefile gefällt mir jedenfalls.


    Medion Digitainer; AsRock B75 Pro3-M, Celeron G540; Kingston Value 4GB
    Samsung SpinPoint 250GB 2,5"; Samsung WriteMaster DVD-Brenner;
    TT-S2-6400, 2x TT-S2-1600, Ubuntu 12.04 mit YaVDR-Paketen. VDR 1.7.27, UPnP/DLNA-Plugin

  • Ich wollte mal das Plugin in Aktion sehen und habe testweise das Hauptplugin dahin gesymlinkt wo es beim Bauen war, damit die subplugins laden können...
    Als UPnP-Client habe ich jetzt erstmal nur XBMC, aber da geht erstmal nichts, und im VDR-Log sieht man zum Einen die Fehlermeldung mit dem Container with ID 'irgend eine GUID' not found und dass er ihn nicht updaten kann, und dann werden anscheinend tatsächlich die Aufnahmen von irgendwem gefunden, habe da nicht weiter im Code geforscht aber es kommen unzähig viele Meldungen das die Metadaten nicht gespeichert werden können, wo eigentlich soll diese DatenbankDatei liegen, muss sie schon exisitieren, wird sie erst angelegt?


    Noch zur Info, ich habe das Plugin gegen folgende Library-Versionen gebaut:

    Code
    dev-libs/tntdb-1.2 (mit sqlite support)
    dev-libs/tntnet-2.1
    dev-libs/cxxtools-2.1.1
    net-libs/libupnp-1.6.14
    dev-libs/boost-1.46.1-r1

    Wird denn wohl die libupnp-1.6.14 gerade noch so passen, wie finde ich es heraus?


    Gruß,
    Lucian

  • Das Problem hatte ich ohne folgende Zeile im Makefile: LIBS += -L$(LIBDIR) -Wl,-R$(LIBDIR) $(LIBDIR)/libvdr-upnp.so.$(APIVERSION)


    Ahhgh, ich glaube ich habe rausgefunden warum das Plugin bei Start hängt ;) $(LIBDIR)/libvdr-upnp.so.$(APIVERSION) ist doch nur temporär beim Bau vorhanden, beim VDR Start existiert es gar nicht mehr. Bei mir bleibt der VDR mit aktivierten Plugin kommentarlos beim Start hängen.


    Ferner scheint die relative Pfadangabe eh nicht zu funktionieren

    Code
    /usr/lib/vdr/plugins/upnp# ldd libupnp-dvb-profiler.so.1.0.0
            linux-gate.so.1 =>  (0xffffe000)
            ../../../../../lib/libvdr-upnp.so.1.6.0 => not found
            libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb76b3000)
            libm.so.6 => ../../../../../lib/i686/cmov/libm.so.6 (0xb768d000)
            libgcc_s.so.1 => ../../../../../lib/libgcc_s.so.1 (0xb766f000)
            libc.so.6 => ../../../../../lib/i686/cmov/libc.so.6 (0xb7528000)
            /lib/ld-linux.so.2 (0xb77c4000)



    BTW: Ein anderes Problem ist das der VDR nen Signal 6 bekommt (und dann einfach hängenbleibt) wenn der versucht die Datenbank zu erstellen, ich habe dann im Quellcode "metadata.db" durch "/tmp/metadata.db" ersetzt und dann ist er über diese Stelle rübergekommen. Ich gehe davon aus das das aktuelle Directory zufällig keine Schreibrechte für den vdr Nutzer hat.
    Hier wäre ein Kommandozeilenparameter für den Datenbankpfad super. Im Setupmenu ist er IMHO eh falsch platziert, wenn da ein User (der im Zweifel keinen root Zugang hat) was falsches einstellt startet der VDR ja nicht mehr und der Fehler lässt sich nicht mehr korrigieren.


    cu

  • Das Problem hatte ich ohne folgende Zeile im Makefile: LIBS += -L$(LIBDIR) -Wl,-R$(LIBDIR) $(LIBDIR)/libvdr-upnp.so.$(APIVERSION)


    Ich habe dort das LIBDIR der Wirkumgebung angeben müssen. Das ist aber aus meiner Sicht richtig, oder etwa nicht? Ich linke doch gegen die SO, die im System vorlieg

    Nun ja, das ist auch ok gegen bereits installierte Packages, aber momentan sind sowohl Hauptplugin als auch Subplugins erstmal ein Package, das Hauptplugin wird zuerst gebaut, aber liegt zumindest bei Gentoo welcher bevor das Package nicht komplett installiert wurde noch in der Sandbox und nicht im eigentlichen System (bei Neuinstallation, bei Upgrade wäre tatsächlich die Vorversion des Hauptplugins schon an der richtigen Stelle, wäre auch nicht sonderbar schlimm es so zu machen, ist aber nicht ganz OK.
    Ich denke, ich habe Dich so verstanden, Du würdest die Subplugins ohnehin separat "auslieferbar" machen, dann wäre es glaube ich sinnvoll tatschlich auch die Installation zu separieren, also erstmal nur Hauptplugin und (optional benötigte Includes, dann könnten subplugins ausserhalb der Sourcen, z.B. von Drittanbietern entwickelt werden) zu installieren, dann ist es im System, und danach einzeln die Subplugins als eigenständige Packages, auch wenn sie aus den glechen Sourcen kommen. Für Gentoo jedenfalls würde ich es so machen, dann würde sich auch das RPATH-Problem von selber lösen, die Makefiles würden noch um Einiges einfacher...


    Gruß,
    Lucian

  • So ist es. Ich muss bei mir auch die libvdr-upnp.so installieren, bevor ich den Rest bauen kann. Aber ich sehe das nicht als Problem. Alternativ könnte ich Klaus einen Patch in dessen PluginManager vorschlagen, dass das Linken gegen die libvdr-upnp.so obsolete werden würde.


    Vorschlag, wenn du schon die Makefiles separierst: Ich habe gesehen, dass du in den Plugin-Verzeichnissen nun ein .mk-File angelegt hast. Ich würde es so machen, dass das plugin.mk (bei dir Makefile.singleplugin) im Hauptplugin liegt und dort die ganzen allgemeinen Sachen enthalten sind und im Makefile des Subplugins inkludiert wird. Die Angaben im Makefile.mk stehen dann auch im Makefile des Subplugins. So gibt es nur zwei Makefiles statt drei.


    Zur Datenbank: Bug mit dem Pfad ist bekannt und behebe ich heute Nachmittag. Ist ein Fehler meinerseits. Die Fehler mit dem Einscannen muss ich mir dann auch mal ansehen. Die Radioaufnahmen werden noch nicht gescannt, dazu bin ich noch nicht gekommen. Kannst du mir dort sagen, ob das ausschließlich Audio-Datenströme sind? Ich müsste dann an der Stelle das passende Profil finden.Das wäre vermutlich irgendwas mit AAC oder so, keine Ahnung. Wie wird MPEG2-Audio kodiert?


    Medion Digitainer; AsRock B75 Pro3-M, Celeron G540; Kingston Value 4GB
    Samsung SpinPoint 250GB 2,5"; Samsung WriteMaster DVD-Brenner;
    TT-S2-6400, 2x TT-S2-1600, Ubuntu 12.04 mit YaVDR-Paketen. VDR 1.7.27, UPnP/DLNA-Plugin

  • So ist es. Ich muss bei mir auch die libvdr-upnp.so installieren, bevor ich den Rest bauen kann. Aber ich sehe das nicht als Problem. Alternativ könnte ich Klaus einen Patch in dessen PluginManager vorschlagen, dass das Linken gegen die libvdr-upnp.so obsolete werden würde.

    Ja, ich sehe es auch nicht als Problem, und mit Klaus kannst ja unabhängig davon den Patch nachträglich aushandeln, dann nimmst halt wenn es soweit ist das Linken gegen libvdr-upnp.so wieder heraus..


    Vorschlag, wenn du schon die Makefiles separierst: Ich habe gesehen, dass du in den Plugin-Verzeichnissen nun ein .mk-File angelegt hast. Ich würde es so machen, dass das plugin.mk (bei dir Makefile.singleplugin) im Hauptplugin liegt und dort die ganzen allgemeinen Sachen enthalten sind und im Makefile des Subplugins inkludiert wird. Die Angaben im Makefile.mk stehen dann auch im Makefile des Subplugins. So gibt es nur zwei Makefiles statt drei.

    Ok, ich kümmere mich dann um die Makefiles wahrscheinlich heute Abend, dann kannst Du Dich ja dem Code widmen ;) ...


    Zur Datenbank: Bug mit dem Pfad ist bekannt und behebe ich heute Nachmittag. Ist ein Fehler meinerseits. Die Fehler mit dem Einscannen muss ich mir dann auch mal ansehen. Die Radioaufnahmen werden noch nicht gescannt, dazu bin ich noch nicht gekommen. Kannst du mir dort sagen, ob das ausschließlich Audio-Datenströme sind? Ich müsste dann an der Stelle das passende Profil finden.Das wäre vermutlich irgendwas mit AAC oder so, keine Ahnung. Wie wird MPEG2-Audio kodiert?

    Ich habe alles nur Aufnahmen mit Bild und Ton, welcher meines Wissens bei allen AC3 und / oder MP2 sein sollte, manche noch im alten PES-Format...

  • PES-Aufnahmen muss ich skippen, weil die ich die nicht gescheit in ein DLNA-Profil gemappt bekomme. Das ist leider so. Wenn mir jemand sagt, wie ich aus PES MPEG-PS oder MPEG-TS bekomme, nur zu!


    Medion Digitainer; AsRock B75 Pro3-M, Celeron G540; Kingston Value 4GB
    Samsung SpinPoint 250GB 2,5"; Samsung WriteMaster DVD-Brenner;
    TT-S2-6400, 2x TT-S2-1600, Ubuntu 12.04 mit YaVDR-Paketen. VDR 1.7.27, UPnP/DLNA-Plugin

  • Moin!


    Wenn mir jemand sagt, wie ich aus PES MPEG-PS oder MPEG-TS bekomme, nur zu!


    Im Plugin pvrinput in der Datei reader.c sind ein paar Methoden, die aus dem PES der ivtv-Karten einen TS für den vdr erstellen.
    Da der Stream aber ein festes Video- und Audioformat hat, hab ich da einfach eine statische PAT/PMT benutzt. Das müsste dann also noch angepasst werden.
    Ist aber vielleicht eine Ausgangsbasis. Mit dem cPatPmtGenerator des vdr lässt sich das sicherlich auch weiter vereinfachen, pvrinput brauchte aber etwas Abwärtskompatibilität, weshalb das mit der festen PAT/PMT einfacher war.


    Lars.

  • Ich habe jetzt den Bug mit der Datenbank gefixt. Sie sollte jetzt automatisch im Config-Verzeichnis oder Resource-Verzeichnis (ab 1.7.30) liegen. Bitte prüft eure setup.conf, ob dort noch der falsche Eintrag drin stehen sollte.


    Wenn Zoolook die Anpassungen am Makefile gemacht hat, sollte das Bauen der Subplugins etwas einfacher sein, was noch ein Punkt auf der ToDo-Liste war. Danke schonmal.


    Medion Digitainer; AsRock B75 Pro3-M, Celeron G540; Kingston Value 4GB
    Samsung SpinPoint 250GB 2,5"; Samsung WriteMaster DVD-Brenner;
    TT-S2-6400, 2x TT-S2-1600, Ubuntu 12.04 mit YaVDR-Paketen. VDR 1.7.27, UPnP/DLNA-Plugin

Jetzt mitmachen!

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