[ANNOUNCE] vdr-span-0.0.1

  • Hallo Portal,


    endlich habe ich mich mal aufgerafft und ein Plugin geschrieben, das die Darstellung eines bzw. mehrerer Spectrum Analyzer ermöglicht. Es dient als Vermittler zwischen VDR-Plugins, die "(PCM-)Datenquellen" und/oder "Visualisierungs-Clients" sind.


    Zwar hat _Frank_ schon so etwas ähnlich gemacht, aber da ich keine Soundkarte im VDR-Rechner habe, konnte ich seinen Ansatz nicht benutzen.
    Und weil bald im Wohnzimmer der CD-Player durch den alleinigen Einsatz eines VDR ersetzt werden soll, muss natürlich auch die Visualisierung der Musik mit dabei sein (eigentlich gedacht für's graphlcd, aber das dauert wohl noch ein wenig).
    Erster Testkandidat ist das mp3ng-plugin von Morone als Datenquelle und es ist auch direkt für Visualisierung zuständig (das lcdproc-plugin habe ich auch schon angetestet und probeweise zur Visualisierung genutzt).


    Auszug aus der README:

    Zu finden ist es auf http://lcr.vdr-developer.org/


    Da es die erste Version ist, möchte ich alle bitten, Nachsicht zu üben, falls der VDR sich mal beendet, während "visualisiert" wird. Aber ich denke, dass ich viele Fehler bereits behoben habe - aber man weiss ja nie, wo sich noch einer versteckt - irgendwo, wo ich während der Tests nicht hingekommen oder dran gedacht habe.
    Sollte doch mal was schief gehen, meldet dies bitte. :]


    Ein paar Infos, die sich bereits angesammelt haben, ab hier.


    So, ich hoffe, dass ich nichts Wichtiges vergessen habe und nun viel Spaß!


    Viele Grüße
    Chriss


    Edit: Visualisierungsclient-Versionen zum Testen - Benutzung auf eigene Gefahr und evtl. mit ein paar Anpassarbeiten vor dem Kompilieren:
    [ANNOUNCE] vdr-span-0.0.1
    [ANNOUNCE] vdr-span-0.0.1

    Einmal editiert, zuletzt von theonlychriss ()

  • Und weil's so schön ist, cdda läuft damit nun auch als Datenquelle.


    Viele Grüße
    Chriss


    Edit: Patch erneuert, wegen bösem C++-Anfänger-Fehler

    Dateien

    Einmal editiert, zuletzt von theonlychriss ()

  • Moin.


    Ich habe mir mal dein Plugin gezogen und instaliert. Als fftw3 habe ich die Version 3.1.2-1 verwendet. Beim Starten mit diesem Plugin gibts aber ein:


    Code
    *** glibc detected *** double free or corruption (!prev): 0x081e0ec0 ***


    gdb Backtrace meldet dazu:




    irgendwelche Tipps?

    VDR(Via Epia M-10000, 512MB, 2xNexus-s, 120GB&160GB&160GB Samsung SpinPoint, NEC 1300 DVD+-R/RW, IR-Kit, VFD Noritake)
    Gehäuse: Eigenbau (s.o.)

  • Wow !


    Tolle Sache !


    Ich würde es gerne testen, allerdings benutze ich mittlerweile Gentoo und möchte es mir nicht durch "von Hand" kompilieren zerschiessen und bin immer noch zu blöd um Ebuilds zu erstellen ... sorry ! (Allerdings wüsste ich jetzt auch nicht, wie ich ein Plugin ohne Ebuild unter Gentoo installiere ...).


    Trotzdem, schönes Feature !


    Krösi

    Silverstone C16M -- AMD ATHLON XP 2000 -- Elitegroup K7S5A -- 256 MB DDR -- 450GB
    Hauppauge Nexus DVB-s, Nova DVB-t, PVR 150 -- Gentoo 2.6.24 -- DVD-Laufwerk

  • kroesi: Keine Panik, ein ebuild kommt auch noch - obwohl es nicht schwer ist, auch ohne solches ein Plugin zu installieren ;)


    sn123py: Hmmm, ich verwende fftw-3.0.1 (bei Gentoo die als stable markierte Version), dann schaue ich mal, was bei höheren Versionen passiert - melde mich dann wieder.


    Viele Grüße
    Chriss

  • Für Gentoo'ler ein vorab-ebuild - ich melde es noch hd_brummy, damit es auch offiziell wird.


    Viele Grüße
    Chriss


    Edit: Tippfehler im ebuild gefixt.

    Dateien

    Einmal editiert, zuletzt von theonlychriss ()

  • Irre !


    Das geht ja schnell hier ! Werde es am WE testen !!


    Danke :D


    Ich habe bei meinem ersten VDR unter Suse die Plugins nur von Hand kompiliert ! Aber bei Gentoo wüsste ich noch nicht einmal, in welches verzeichnis ich die Sourcen packen müsste, und nach langer Pause läuft mein VDR endlich wieder rund ! Ich will halt nichts mehr kaputtmachen ... ;)


    Krösi

    Silverstone C16M -- AMD ATHLON XP 2000 -- Elitegroup K7S5A -- 256 MB DDR -- 450GB
    Hauppauge Nexus DVB-s, Nova DVB-t, PVR 150 -- Gentoo 2.6.24 -- DVD-Laufwerk

  • Der Fehler "glibc: ..double free or corruption.." kommt bei dir durch den
    "delete sa" Aufruf im Destructor von cPluginSpan in span.c .


    Das VDR erst garnet startet liegt auch in span.c in
    bool cPluginSpan::ProcessArgs(...)
    dort musst du "return true" und nicht "return false" setzen.


    und in cPluginSpan::Service

    Code
    ...
    ..
    			while ( client == clients.Get(i) )
    			{
    				if ( 0 == client->Compare( ((Span_GetBarHeights_v1_0*)(Data))->name) )
    				{
    					found = true;
    					break;
    ..
    ..


    habe ich den Code etwas umgeaendert.. if ( 0 ==client.. ??? )

  • Hi sn123py,


    hat lange gedauert, aber jetzt weiss ich, was Du meinst.
    Sehr komisch, es liegt meinen Nachforschungen nach wirklich in der fftw-library.
    Wenn ich den fftw-plan rausnehme, passieren diese Fehler nicht (Fehler beim Anlegen und Löschen der FFTW-Struktur/-Objektes fftw_plan).


    Habe jetzt mal die aktuellste unter Gentoo verfügbare Version installiert (fftw-3.1.2) und auch die alte (fftw-3.0.1) nochmal gegengetestet. Das Verhalten ist gleich X(.
    Ich habe bei meinen Tests immer nur mit dem Startscript für den VDR gearbeitet, da bekommt man derlei Fehler nicht angezeigt. Gut, wieder was gelernt - daher vielen Dank an Dich!
    Teilweise ist der VDR beim Starten per

    Code
    vdr -u vdr --watchdog=60 --config=/etc/vdr --epgfile=/video/epg.data --log=3 --video=/video0 --port=2001 --lirc --vfat --record=/usr/lib/vdr/bin/vdrrecord-gate.sh --grab=/samba/chriss --shutdown=/video/commands/vdrshutdown.sh --plugin=span

    direkt abgedüst - lapidar "Speicherzugriffsfehler". Meist wurde aber alles normal geladen und nur beim CTRL-C auf der Konsole kam Deine Fehlermeldung.
    Mit valgrind habe ich wie gesagt dann gesehen, dass beim Erstellen des fftw_plans einige Unsauberheiten auftreten. Da ich (noch) nicht der Profi im Debuggen bin, vielleicht kann ja jemand damit mehr anfangen.


    Leider habe ich keine Lösung, aber Du hast mich drauf gebracht, das (wohl doch sehr) aufwendige Anlegen des fftw_plans nicht im Konstruktor des Plugins sondern erst in Start() des Plugins zu machen.
    Tja, trotz dieser Fehler läuft das Plugin (immer noch) 1A. Das ist das Einzige, was ich an Positivem dazu sagen kann.


    Ich habe die Downloaddatei ersetzt. Evtl. hilft Dir ja die "neue Version" so weit, dass der VDR damit startet.


    Viele Grüße
    Chriss

  • @Morone: Vielen Dank! Ich habe mittlerweile jedoch an diesen if-Konstrukten schon was geändert. Sry, aber lade Dir bitte die neue Datei runter.
    Das mit dem "return true;" habe ich nun auch geändert, thx a lot!


    Viele Grüße
    Chriss

  • Hab bis heute nacht noch aufnahmen laufen, ich kann aber ab morgen früh wieder testen .. - ich melde mich dann ...

    VDR(Via Epia M-10000, 512MB, 2xNexus-s, 120GB&160GB&160GB Samsung SpinPoint, NEC 1300 DVD+-R/RW, IR-Kit, VFD Noritake)
    Gehäuse: Eigenbau (s.o.)

  • theonlychriss:
    Als kleine "Nachhilfe" zum Debuggen: Immer wenn gedebuggt werden muss, schmeiss alle -O aus dem Makefile raus und setze -g zu den CXXFLAGS - dann erkennt man auch wo er abstürzt, will heissen aus den lustigen Hexwerten werden aussagekräftige Namen.
    Was den Segmentation fault angeht: ulimit -c unlimited vor dem VDR Start bringt ihn dazu, bei jenem Fehler ein coredump zu machen, wenn man sich da mit gdb vdr core reinschaltet sieht man über den bt Befehl auch wo es gekracht hat.


    Mit den reinen Zahlenwerten respektive "???" kann selbst ein Vollprofi nichts anfangen ;)

  • Hallo LordJaxom,


    supi, danke - da hätte ich auch selber drauf kommen müssen, d'oh. Werde ich, in der aufnahmefreien Zeit, versuchen!


    sn123py: Danke, jeder "Tester" ist Gold wert!


    Viele Grüße
    Chriss

  • so, die neue Version compiliert und startet - allerdings habe ich jetzt noch einen Knoten im Kopf: Wie bekomme ich das Spektrum in den mp3-Player? Ich muss doch sicher mp3ng patchen, oder? wo finde ich den patch dafür?


    fragen über fragen :)

    VDR(Via Epia M-10000, 512MB, 2xNexus-s, 120GB&160GB&160GB Samsung SpinPoint, NEC 1300 DVD+-R/RW, IR-Kit, VFD Noritake)
    Gehäuse: Eigenbau (s.o.)

  • Hallo sn123py,


    sehr schön! Ich habe mittlerweile auch schon den Fehler lokalisiert und bin dabei, ihn zu beheben. Die Auswirkungen ziehen sich leider durch's "ganze Spektrum", daher dauert's noch ein wenig.


    pssst, den Patch gibt's da: [NIKOLAUS?] mp3ng - The next next generation.


    Wenn Du möchtest, kann ich hier auch meine angepasste Version des mp3ng-Plugins hinstellen - ist aber ein wenig Gentoo-Spezifika-verseucht und basiert wohl auch nicht auf der neuesten Version.


    Viele Grüße
    Chriss

  • hm, ich habe hier mp3ng-0.0.9a, und der patch passt nicht wirklich dazu ... auf mp3ng.c gibt es nur rejects, und die stelle, wo es matchen *könnte* existiert dort nicht ...


    ist meine mp3ng zu alt oder zu neu?


    ps: achja, das span-plugin führt dazu, dass nur jeder 2-3te Startversuch des VDR erfoglreich ist. Zwischendurch greift der immer wieder ins Klo (core dump).

    VDR(Via Epia M-10000, 512MB, 2xNexus-s, 120GB&160GB&160GB Samsung SpinPoint, NEC 1300 DVD+-R/RW, IR-Kit, VFD Noritake)
    Gehäuse: Eigenbau (s.o.)

    Einmal editiert, zuletzt von sn123py ()

  • Hi sn123py,


    sodele - unter http://lcr.vdr-developer.org/downloads/ findest Du "meine" mp3ng-Version. Du musst aber leider selber dafür sorgen, dass die Bilder an die richtigen Stellen kommen und dass das Makefile für Dich passt - aber das sollte nicht so schwer sein. Nochmal weise ich darauf hin, dass dort ein paar Gentoo-Spezifika drin sind, die evtl. nicht zu jedem System passen, sich aber finden lassen (mir fallen wirklich nur das Makefile und die Bilder, ganz unten in player-mp3.c ein - soll nicht heissen, dass es evtl. doch mehr sind ?().
    Im Prinzip sind nur 2 Stellen wichtig (ein paar kleinere ergeben sich dann daraus automatisch, da wird man vom Compiler drauf gestossen):
    1. In mp3ng.c am Ende von "void cMP3Control::ShowProgress(bool open, bool bigWin)" vor dem "Flush()" kommt das "Getten" der Frequenz-Daten.
    2. In player-mp3.c in "void cMP3Player::Action(void)" direkt nach dem "int w=out->Output(p,pc,SOF);" das "Setten" der PCM-Daten.
    Mal sehen, wann Morone die Veröffentlichung seiner offiziellen mp3ng-Version mit SA-Visualisierung bekannt gibt - dann gibt's den ersten Client, der wirklich massentauglich ist.


    Außerdem habe ich - dank der "Nachhilfe" von LordJaxom :applaus - die Fehler behoben, die zum "glibc: ..double free or corruption.." führten. Zumindest habe ich die Meldungen nicht mehr bekommen und valgrind beschwert sich nicht mehr über "das Geschreibsel" außerhalb der erlaubten Grenzen. Und bei meinen Tests, bei denen ich wirklich oft den VDR samt span- und mp3ng-Plugin (und lcdproc) neu gestartet habe, gab es keine Abstürze mehr.


    @all: Ich denke (hoffe), dass es das letzte Mal war, dass ich die Datei neu hochladen und ersetzen musste; damit es endlich eine "Basis" gibt und dann der normale Versionsturnus losgehen kann.
    Daher ist ein erneutes Herunterladen von vdr-span-0.0.1 sinnvoll.


    Viele Grüße
    Chriss

    Einmal editiert, zuletzt von theonlychriss ()

  • Zitat

    Außerdem habe ich - dank der "Nachhilfe" von LordJaxom - die Fehler behoben, die zum "glibc: ..double free or corruption.." führten.


    Yo , sieht bisher gut aus...


    Von mir wird es so schnell nix geben (mp3ng) . Ich habe es zwar fast
    komplett eingebaut und man kann zwischen verschiedenen
    "Visualzations" ;) waehlen aber das muss noch alles eingerueckt werden,
    Alle MpegCover passen net mehr und ob es auf 2MB Karte laeuft ist
    auch noch fraglich, da ich das Coverbild/SA auf 128x128 vergroessert
    habe um LEDs vorzutaeuschen, dementspechend auch die 4bit Area. ;)
    Vielleicht hau ich es mal provisorisch! in 0.0.9a rein ,damit auch andere es testen koennen, wenn es sonst keiner macht.

  • Ich stelle es mal rein , damit manch einer ueberhaupt was zum Testen hat.
    Weder empfehle ich nen Produktiveinsatz noch grossartige Weitergabe.
    Das "Alpha" steht da net umsonst. ;)
    Getestet nur auf 4MB Karten und nur um sich mal anzuschauen , was
    theonlychriss da ueberhaupt gemacht hat.
    Installation wie gehabt , nur muss mp3ng-sa-bg in den richtigen Ordner kopiert
    werden bzw. der ganze Ordner mp3ng nochmal zu ..etc/plugin/mp3ng


    http://www.glaserei-franz.de/V…mp3ng-0.0.10_alpha.tar.gz


    Soll keiner kommen , stuerzt hier ab ..das funzt net..weiss ich selber...

  • Hi,


    habe grade mal versucht diese Version für Linvdr (ich weiß, du kannst es wahrscheinlich nicht mehr hören ?() anzupassen, aber an einer stelle bleibt er hängen:

    Code
    g++ -g -O2 -Wall -Woverloaded-virtual "-D__user=" -D_GNU_SOURCE -lImlib2 -c -D_GNU_SOURCE -DVDRVERSNUM=10402 -DHAVE_IMLIB2 -DHAVE_ICONPATCH -DHAVE_SNDFILE -DHAVE_VORBISFILE -I../../../include  commands.c
    commands.c: In method `enum eOSState cMP3UpdateWebStreams::Execute()':
    commands.c:195: no matching function for call to `cCommand::Execute (bool)'
    ../../../include/vdr/config.h:98: candidates are: const char * cCommand::Execute(const char * = 0)
    make[1]: *** [commands.o] Error 1


    Ne Idee? Will's mir ja nur mal anschauen!


    Danke und Gruß


    Toxic

    Registrierter VDR-User #1275


    VDR-Server: Proxmox 7.1 - LXC Container - Debian 11.5 - eTobi-VDR 2.6.0

    DVB-Hardware: Digital Devices - Cine S2 V5.5 und V6

    VDR-Clients: FireTV Sticks 2 bis 4K Max und Kodi 19.4

    Einmal editiert, zuletzt von Toxic-Tonic ()

Jetzt mitmachen!

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