[radio-1.1.0] RDS/Radiotext und AAC-Audio

  • Ich habe festgestellt, das das radio-plugin mit asprintf() arbeitet um den Radiotext zu speichern. Leider wird aber fast überall auf ein free() der nicht mehr benötigten Daten vergessen.

    VDR löst das sehr schön mit der cString-Klasse, die man auch in Plugins verwenden kann und sich dann nicht mehr um das free() kümmern muss

  • FireFly cStrings wären auch eine Möglichkeit. Da eine Radiotextzeile aber nur aus max. 64 Zeichen besteht und man die Anzahl der zu speichernden Texte selbst festlegt, habe ich im Extension-Patch von char* auf char-Arrays umgestellt und schreibe direkt in diese Buffer.

    Helmut

    HelmutB passed unfortunately away on July 21, 2022 ... RIP 🖤

  • Hier die Version 7. Ich habe nun einen Pat/Pmt Parser eingebaut, damit kann das Plugin externe RDS-Pids selbst erkennen und der VDR muß nicht mehr gepatched werden. Das "bitrate" diff von oben ist natürlich enthalten, und das Default für die verbosity ist von "1" auf "0" geändert - Radiotext Debuging müss nun mit "-v 1" aktiviert werden.

    Sonst ist kein weiterer Patch notwendig, der v6-Extension-Patch von Post #13 kann (oder sollte?) zusätzlich auch noch angewendet werden.

    Helmut

    PS: Ich habe mit vdr-2.5.6 und 2.4.7 getestet, vdr-2.2.0 sollte aber auch passen.

    Bekomme hier ein Fehler beim bauen des Plugins mit vdr-2.6.0 ....

    Edit: So klappt es:

    C
    /*
     * rdspatpmt.c: PAT section filter
     */
    
    - #include <vdr/libsi/descriptor.h>
    + #include <libsi/descriptor.h>
    #include "rdspatpmt.h"
    #include "radioaudio.h"
    
    #define PMT_SCAN_TIMEOUT  2000 // ms

    Gruß

    Uwe

    Hard- + Software Konfiguration:

    Matrix-Case: Matrix-ARM-Board + FF HD 6400 + Unicable

    Debian-Buster - vdr-2.5.6 - Plugins: dvbhddevice - targavfd - skinnopacity - osdteletext - epgsearch - markad


    RaspberryPi3b+
    raspbian - vdr-2.5.6 + device.patch

    Plugins: rpihddevice - skinnopacity - osdteletext - epgsearch - markad

    Tuner: USB DVBSky S960 DVB-S2 Tuner

    Am basteln:

    Pine H64 Modell B + Sundtek USB Dual DVB-S2 @Unicable

    RasberryOS - vdr-2.5.6 - Plugins: softhddevice-drm (rella) - skinnopacity - osdteletext - epgsearch

    ——

    RockPro64 Board mit softhddevice-drm mit DD Max-S8 (8Tuner) über Unicable auf armbian - vdr-2.5.6

    Plugins: softhddevice-drm (zillerbaer) - skinnopacity - epgsearch - osdteletext

    ————————————

    Am basteln:

    Compute Module 4 on IO-Board - FF-HD-6400 über PCIe Extender + Unicable

    RasberryOS - vdr-2.5.6 - Plugins: dvbhddevice - targavfd - skinnopacity - osdteletext - epgsearch - markad

    Edited once, last by Uwe (January 24, 2022 at 5:01 PM).

  • Hallo,

    PS: Ich habe mit vdr-2.5.6 und 2.4.7 getestet, vdr-2.2.0 sollte aber auch passen.

    hatte den gleichen Fehler im PPA.
    Nach anpassen der include #include <libsi/descriptor.h> Build mit VDR-2.2.0 im PPA Ok!

    Gruss

    Wolfgang

    Hard & Software

    DVB-S: Silverstone LC17 mit 8,4" TFT Display, ASRock ALiveNF6G, AMD X2 3800+ (35W),4GB, GT 630 - nVidia-387, SSD 64GB, 2TB, TeVii S470, SkyStar S2, Cinergy T RC USB, Kodi-18.0, FB X10 Medion-Scroll, "easyVDR 3.5 (14.04 LTS) - Kernel-4.8.12 - VDR 2.3.8"
    -----------------------------

    DVB-C: ATC-620, Asrock K7S41GX, AMD Geode NX 1750, 2GB, picoPSU, Samsung 500GB 1x 1TB, LDW-851S, DVB-C Fujitsu-Siemens FF, Cinergy 1200, Nova T USB, Atric Rev.4, "easyVDR 0.8 - 2.6.35.10 VDR 1.7.16 "
    -----------------------------

    Client_1: Evo N600c, "Puppy-Slacko 6.3" VDR 2.2.0 - FB X10 Medion_OR25V
    -----------------------------

    Client_2: Himbeere-P2 - MLD-5.4 / LibreELEC-9.0-Milhouse(Kodi-18.0) (PVR-VNSI)

    TT S2-6400 - saa716x kompilieren unter 20.04(Focal)

  • Danke für die Info!

    Ich habe pat.c aus vdr-2.5.6 als Vorlage genommen, vermutlich deshalb. Es hat bei mir aber weder ein einfaches make oder auch ein gentoo emerge nie Probleme damit gehabt. ich werde es aber auf jeden Fall ausbessern.

    Helmut

    Edit: Ich sehe gerade, dass in pat.c #include "libsi/descriptor.h"steht und frage mich, warum - und vor allem, wann ich das geändert habe :).

    HelmutB passed unfortunately away on July 21, 2022 ... RIP 🖤

    Edited once, last by HelmutB † (January 24, 2022 at 5:50 PM).

  • Mit #include "libsi/descriptor.hhabe ich keinen Erfolg.

    Bei mir sind nach einer VDR Installation die Headerdatein in /usr/include/vdr bzw. /usr/include/vdr/libsi zu finden, in den CFLAGS steht -I/usr/include, daher passt das <vdr/libsi/..> beim #include.

    Uwe Hast du die Header Dateien nur lokal im VDR Source-Verzeichnis? -I/home/pi/vdr/include führt dann zu den von make erstellten lokalen Verzeichnissen include/vdr und include/libsi. Darin sind nur Symlinks, die auf /home/pi/vdr zurückführen. Mit -I/home/pi sollte es aber funktionieren. wolfi.m vielleicht ist es bei dir ähnlich - kein installiertes "vdr-devel" Paket?

    Helmut

    HelmutB passed unfortunately away on July 21, 2022 ... RIP 🖤

  • Für opensuse musste ich es auch in #include "libsi/descriptor.h"abändern. Auch etliche andere Plugins nutzen das so:

    Code
    PLUGINS/src> grep -R "#include" *|grep libsi
    burn/scanner.c:#include <libsi/si.h>
    dvbhddevice/dvbhdffdevice.c:#include <libsi/si.h>
    epgsearch/conflictcheck.c:/*#include <libsi/si.h>*/
    vnsiserver/demuxer.c:#include <libsi/si.h>
    vnsiserver/videoinput.c:#include <libsi/section.h>
    vnsiserver/videoinput.c:#include <libsi/descriptor.h>
  • Hallo,

    wolfi.m vielleicht ist es bei dir ähnlich - kein installiertes "vdr-devel" Paket?

    build der Pakete erfolgt in Launchpad. ...vdr-dev ist als depends bei allen Plugins im file debian/control enthalten.

    Wie bei FireFly ist auch unter debian/ubuntu der Pfad libsi/descriptor.h

    Code
     wolfi@Ku-Aspire:~/Git/1_gitlab/five/v$ grep -rnwi './' -e 'descriptor.h'
    ./vdr-plugin-eepg-0.0.6pre.git20150215/dish.h:14:#include <libsi/descriptor.h>
    ./vdr-plugin-eepg-0.0.6pre.git20150215/eit2.h:4:#include <libsi/descriptor.h>
    ./vdr-plugin-eepg-0.0.6pre.git20150215/eepg.c:37:#include <libsi/descriptor.h>
    ./vdr-plugin-eepg-0.0.6pre.git20150215/dish.c:15://#include <libsi/descriptor.h>
    ./vdr-plugin-radio-1.1.0/rdspatpmt.c:5:#include <libsi/descriptor.h>
    ./vdr-plugin-vnsiserver-1.8.0/videoinput.c:37:#include <libsi/descriptor.h>
    ./vdr-plugin-xine-0.9.5+git20160102/vdr172remux.c:33:#include "libsi/descriptor.h"

    Gruss

    Wolfgang

    Hard & Software

    DVB-S: Silverstone LC17 mit 8,4" TFT Display, ASRock ALiveNF6G, AMD X2 3800+ (35W),4GB, GT 630 - nVidia-387, SSD 64GB, 2TB, TeVii S470, SkyStar S2, Cinergy T RC USB, Kodi-18.0, FB X10 Medion-Scroll, "easyVDR 3.5 (14.04 LTS) - Kernel-4.8.12 - VDR 2.3.8"
    -----------------------------

    DVB-C: ATC-620, Asrock K7S41GX, AMD Geode NX 1750, 2GB, picoPSU, Samsung 500GB 1x 1TB, LDW-851S, DVB-C Fujitsu-Siemens FF, Cinergy 1200, Nova T USB, Atric Rev.4, "easyVDR 0.8 - 2.6.35.10 VDR 1.7.16 "
    -----------------------------

    Client_1: Evo N600c, "Puppy-Slacko 6.3" VDR 2.2.0 - FB X10 Medion_OR25V
    -----------------------------

    Client_2: Himbeere-P2 - MLD-5.4 / LibreELEC-9.0-Milhouse(Kodi-18.0) (PVR-VNSI)

    TT S2-6400 - saa716x kompilieren unter 20.04(Focal)

  • Interessant. Ich habe gerade in vdr-epgsearch nachgesehen. #include <libsi/si.h>* ist so im Code, aber bei gentoo wird vor dem make dieses include durch ein eclass-script in vdr/libsigeändert.

    Code
    fix_vdr_libsi_include() {
        eqawarn "Fixing include of libsi-headers"
        local f
        for f; do
            sed -i "${f}" \
                -e '/#include/s:"\(.*libsi.*\)":<\1>:' \
                -e '/#include/s:<.*\(libsi/.*\)>:<vdr/\1>:'
        done
    }

    Das muss Distributionsabhängig sein. In Ubuntu z.B. liegen die include Dateien unter /usr/include/vdr und /usr/include/libsi.

    Wie es aussieht, ist damit für die Mehrheit <libsi/.....> richtig. Ich werde es so anpassen und mir für gentoo eine andere Lösung überlegen.

    Helmut

    HelmutB passed unfortunately away on July 21, 2022 ... RIP 🖤

  • Mit #include "libsi/descriptor.hhabe ich keinen Erfolg.

    Bei mir sind nach einer VDR Installation die Headerdatein in /usr/include/vdr bzw. /usr/include/vdr/libsi zu finden, in den CFLAGS steht -I/usr/include, daher passt das <vdr/libsi/..> beim #include.

    Uwe Hast du die Header Dateien nur lokal im VDR Source-Verzeichnis? -I/home/pi/vdr/include führt dann zu den von make erstellten lokalen Verzeichnissen include/vdr und include/libsi. Darin sind nur Symlinks, die auf /home/pi/vdr zurückführen. Mit -I/home/pi sollte es aber funktionieren. wolfi.m vielleicht ist es bei dir ähnlich - kein installiertes "vdr-devel" Paket?

    Helmut

    Hallo Helmut,

    erstmal, vielen Dank für den tollen Patch! :)

    Ja, ich habe aus Bequemlichkeit die Sourcen der Plugins in den Sourcen von VDR(git)... (~/vdr/PLUGINS/src), aber die Header werden jedes mal mit make install unter Debian auch ins "System" installiert.

    Hier befinden sich die speziellen Header aus dem Ordner "libsi", hier:

    Die restlichen Header befinden sich hier:

    Gruß

    Uwe

    Hard- + Software Konfiguration:

    Matrix-Case: Matrix-ARM-Board + FF HD 6400 + Unicable

    Debian-Buster - vdr-2.5.6 - Plugins: dvbhddevice - targavfd - skinnopacity - osdteletext - epgsearch - markad


    RaspberryPi3b+
    raspbian - vdr-2.5.6 + device.patch

    Plugins: rpihddevice - skinnopacity - osdteletext - epgsearch - markad

    Tuner: USB DVBSky S960 DVB-S2 Tuner

    Am basteln:

    Pine H64 Modell B + Sundtek USB Dual DVB-S2 @Unicable

    RasberryOS - vdr-2.5.6 - Plugins: softhddevice-drm (rella) - skinnopacity - osdteletext - epgsearch

    ——

    RockPro64 Board mit softhddevice-drm mit DD Max-S8 (8Tuner) über Unicable auf armbian - vdr-2.5.6

    Plugins: softhddevice-drm (zillerbaer) - skinnopacity - epgsearch - osdteletext

    ————————————

    Am basteln:

    Compute Module 4 on IO-Board - FF-HD-6400 über PCIe Extender + Unicable

    RasberryOS - vdr-2.5.6 - Plugins: dvbhddevice - targavfd - skinnopacity - osdteletext - epgsearch - markad

    Edited 3 times, last by Uwe (January 25, 2022 at 2:29 PM).

  • Uwe bei Dir (und auch bei allen anderen) passt die Installation. So ist sie von VDR vorgesehen. Gentoo dürfte mittlerweile die einzige Distribution sein, die libsi unter /usr/include/vdr ablegt (Debian hat es vor vielen jahren auch noch so gemacht -> [ANNOUNCE] VDR developer version 1.7.36)

    Im Anhang ein Patch der den VDR Include-Pfad berücksichtigt, und ein etwas "harter" Fix im Makefile für Gentoo.

    Kannst du testen, ob es Nebenwirkungen gibt.

    LG Helmut

  • Bei mir funktioniert dies nun sehr gut, wenn alles neu erstellt, sowie neu gebaut wird… 👍

    Hier mal die Ausgaben:

    Hard- + Software Konfiguration:

    Matrix-Case: Matrix-ARM-Board + FF HD 6400 + Unicable

    Debian-Buster - vdr-2.5.6 - Plugins: dvbhddevice - targavfd - skinnopacity - osdteletext - epgsearch - markad


    RaspberryPi3b+
    raspbian - vdr-2.5.6 + device.patch

    Plugins: rpihddevice - skinnopacity - osdteletext - epgsearch - markad

    Tuner: USB DVBSky S960 DVB-S2 Tuner

    Am basteln:

    Pine H64 Modell B + Sundtek USB Dual DVB-S2 @Unicable

    RasberryOS - vdr-2.5.6 - Plugins: softhddevice-drm (rella) - skinnopacity - osdteletext - epgsearch

    ——

    RockPro64 Board mit softhddevice-drm mit DD Max-S8 (8Tuner) über Unicable auf armbian - vdr-2.5.6

    Plugins: softhddevice-drm (zillerbaer) - skinnopacity - epgsearch - osdteletext

    ————————————

    Am basteln:

    Compute Module 4 on IO-Board - FF-HD-6400 über PCIe Extender + Unicable

    RasberryOS - vdr-2.5.6 - Plugins: dvbhddevice - targavfd - skinnopacity - osdteletext - epgsearch - markad

  • Uwe hat oben schon darauf hingewiesen:

    Code
    radioaudio.c:1962:22: warning: unused variable 'j' [-Wunused-variable]
     1962 |             for (int j = 0; !found && a[i]; i++)

    da und in den folgenden Zeilen muss i durch j ersetzt werden

    vdr-2.7.4

    softhddevice, dbus2vdr, dvd, epgsearch, femon, graphtftng, web, menuorg,
    osdteletext, radio, recsearch, satip, tvguide, vnsiserver
    ubuntu focal, yavdr-ansible, linux-5.15 ,AsRock J4105, CIne CT-V7 DVB-C

  • Ich habe inzwischen einen Klon des Radio-Plugins in https://github.com/siricco/vdr-plugin-radio angelegt, den AAC- und Extension-Patch übernommen und bin bei Version 9 angelangt.

    Die Commits bis zum Stand Version 8 sind in der Branch 1.1.0-aac zu finden, es ist mir aber nicht ganz gelungen alle Commits auch direkt in den git-Stand vom 15.7.2018 zu übernehmen, deshalb gibt es im Master einen Commit der alles Fehlende zur v8 abdeckt.

    Der aktuelle Stand kann über den Tag AAC_RDSv9als "tar.gz" heruntergeladen werden:

    https://github.com/siricco/vdr-pl…s/tag/AAC_RDSv9

    Und falls es wer brauchen kann - im Anhang nur das Diff zur Version 1.1.0.

    Helmut

  • Was für ein Ausgabedevice hast Du?

    Mit softhddevice kriege ich zwar bei Live-Radio das dafür konfigurierte Stillpicture angezeigt, aber nicht bei Wiedergabe einer Radioaufnahme. Ich hatte gehofft, damit folgendes Problem umgehen zu können:

    Wenn man im softhddevice-Plugin die Option "Black picture" aktiviert, startet die Wiedergabe der Radioaufzeichnung zwar mit einem Schwarzbild, aber sobald man in der Aufzeichnung "spult", kommt das Bild vom zuletzt aktiven TV-Sender.

    VDR1: Odroid N2+ mit CoreELEC und Ubuntu in chroot, 2x WinTV DualHD, Sandisk 2TB SSD

    VDR2: Tanix TX3 mit VDR*ELEC, WinTV DualHD, 500GB SSD

  • Ich verwende xineliboutput. Hier gibt es bei Live das Problem, dass sowohl mit PlayPes() als mit StillPicture() zwar das Bild angezeigt wird, xinliboutput dann aber den Ton unterdrückt. Deshalb muß ich das Hintergrundbild ganz abschalten.
    Ich habe es jetzt kurz getestet - bei der Wiedegabe von Aufnahmen habe ich auch kein Hintergrundbild, mit PlayPes() habe ich Ton, mit StillPicture() weder Ton noch Bild. Hast du beide Optionen ausprobiert?

    Ich habe bei der Bildausgabe nichts geändert - zumindest nicht wissentlich. Ich werde es mir aber ansehen.

    Helmut

    HelmutB passed unfortunately away on July 21, 2022 ... RIP 🖤

  • Das dürfte ein uraltes Problem sein, aber wenn es einer lösen kann, dann Du :)

    Mit StillPicture kriege ich auch Ton bei Wiedergabe von Radio-Aufzeichnungen. ClearOnSwitch und BlackPicture sind bei softhddevice aktiviert.

    VDR1: Odroid N2+ mit CoreELEC und Ubuntu in chroot, 2x WinTV DualHD, Sandisk 2TB SSD

    VDR2: Tanix TX3 mit VDR*ELEC, WinTV DualHD, 500GB SSD

  • das funktioniert!

    Nun ist die Frage, warum wurde es damals deaktiviert? Aus der HISTORY geht die Deaktivierung für replay nicht hervor.

    VDR1: Odroid N2+ mit CoreELEC und Ubuntu in chroot, 2x WinTV DualHD, Sandisk 2TB SSD

    VDR2: Tanix TX3 mit VDR*ELEC, WinTV DualHD, 500GB SSD

Participate now!

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