[ANNOUNCE] VDR Version 2.7.1 freigegeben

  • Eine Frage noch an kls: Ich werde aus der Beschreibung der Funktion cControl::Control nicht klug.

    Normalerweise schützt man eine kritische Ressource, die exklusiven Zugriff benötigt, wie etwa einen Datensatz während des Lesens oder Schreibens, mit einem Mutex. Das macht aber doch nur Sinn, wenn der Mutex im VDR global und für alle Zugriffe derselbe ist.

    Die Funktion cControl::Control nutzt aber lokale Mutexe, in jedem Plugin entweder einen globalen oder einen lokalen in jeder aufrufenden Funktion.

    Wenn ich die History ober richtig verstanden habe, dienen die Mutexe aber eher so etwas wie der "Entprellung"? Fragen über Fragen...

    Danke für ein paar klärende Worte

    Stefan

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.4 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • SHofmann Der Mutex ist ja auch für alle global und derselbe, nämlich "static cMutex cControl::mutex".

    Beim Aufruf von cControl::Control() wird lediglich ein cMutexLock mitgegeben, über das cControl seinen Mutex lockt:

    Code
    cControl *cControl::Control(cMutexLock &MutexLock, bool Hidden)
    {
      MutexLock.Lock(&mutex);
      return (control && (!control->hidden || Hidden)) ? control : NULL;
    }

    Der Aufrufer sorgt durch passende Lebensdauer des cMutexLock dafür, dass der Lock so lange bestehen bleibt, wie das Ergebnis von cControl::Control() benutzt wird.

  • Der Mutex ist ja auch für alle global und derselbe, nämlich "static cMutex cControl::mutex".

    Beim Aufruf von cControl::Control() wird lediglich ein cMutexLock mitgegeben, über das cControl seinen Mutex lockt:

    OK, dann habe ich die lokalen Mutexe ja offensichtlich völlig unnötigerweise erzeugt, weil diese gar nicht verwendet werden. War gestern wohl schon zu spät bzw. zu lange vor dem Rechner, schätze ich.


    Der Aufrufer sorgt durch passende Lebensdauer des cMutexLock dafür, dass der Lock so lange bestehen bleibt, wie das Ergebnis von cControl::Control() benutzt wird.

    Ich habe die Patches weiter oben entsprechend aktualisiert und dabei auch gleich die Prüfung der API-Version ergänzt.

    Schaut bitte nochmal drüber, ob sich da nicht doch noch der Fehlerteufel eingeschlichen hat…

    Danke & Grüße

    Stefan

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.4 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

    Edited 3 times, last by SHofmann (September 10, 2024 at 1:57 PM).

  • Ich habe die Patches weiter oben entsprechend aktualisiert

    So ganz glücklich bin ich mit dem Patch oben für epgsearch nocht nicht. Wie seahawk vorgeschlagen hat, sollte in switchtimer.c auch mit der startTime gesucht werden, aber besser so wie im alten GetEvent() erst mit der StartTime, da man ansonsten ja das Verhalten ändert:

  • Kaum ist man im Urlaub, schon gibt es eine neue VDR-Version mit Handlungsbedarf :) .

    Ich passe die git's "meiner" Plugins dann danach, ab Anfang Oktober, an.

    Grüße

    kamel5

    VDR 2.7.4: ASUS Prime X470-PRO, Ryzen 7 5700X, 64GB, 6TB HD, GT1030, Fedora 41 Kernel 6.13 X86_64, Devicebonding 2 x 1 auf 2, TT6400, DVBSky S952 V3

    Git-Repo: gitlab.com/kamel5

  • Wie seahawk vorgeschlagen hat, sollte in switchtimer.c auch mit der startTime gesucht werden, aber besser so wie im alten GetEvent() erst mit der StartTime

    Habe ich geändert und den alten Patch entsprechend ersetzt.

    Hardware: Antec NSK2480, Asus P8B75-M LX, Intel Core i5-3570T, 4 GB RAM, NVIDIA GT610, TT-Premium S2-6400, 128 GB SSD, 14 TB HDD, Pioneer BDR-207EBK
    Software: Ubuntu 22.04 LTS mit Kernel 6.8 und VDR 2.7.4 (mit offiziellen und eigenen Patches)
    Plugins: devstatus, dvbhddevice, dvd, dvdswitch, epgsearch, extrecmenu, recsearch, femon, live, markad, mlist, osdteletext, remote, screenshot, skinnopacity, streamdev, systeminfo, undelete, xineliboutput
    Addons: VDR Convert 0.1.0 (angepasst)

  • Läuft auf meinem Testsystem. Danke an kls und SHofmann für die Anpassungen.

    Mein VDR

    VDR1 Mediaportal mit QVT-Board, Intel 810 Chipsatz, Pentium III 1,1 Ghz, 256 Mb Ram, WDC WD5000AAKB, DVB-S TT 1.5, Nova-S, Digidish 33, Gentoo Kernel 2.6.31, VDR 1.4.7
    VDR2 Asrock M3N78D, AMD Phenom II X6 1055T, 8 Gb Ram, Geforce GTX 950, WinTV dualHD, Gentoo Kernel 5.10, VDR 2.6.0, softhddevice
    VDR3 MC-1200, GA-B85M-HD3, Celeron G1840, Quadro P400. 4G Ram, CineS2 6, DuoFlex S2, WinTV dualHD, Gentoo Kernel 5.10, VDR 2.6.0, softhddevice
    TV TX-37LZD85F, AV VSX-520D - Consono 35


    vdr-User-# 755 to_h264 chk_r vdr-transcode github

  • M-Reimer Weil du bzgl. APIVERSION == VDRVERSION mit "Sad" gestimmt hast: die Mechanismen bleiben ja alle erhalten, du kannst also jederzeit (auf eigene Gefahr) die APIVERSION wieder zurücksetzen, falls sich tatsächlich nichts am API geändert hat ;-).

    Das bringt mir exakt gar nichts denn ich kann nicht selbst bewerten ob sich was an der API geändert hat. Bisschen schade das die immer gleiche Diskussion immer wieder gebracht wird obwohl die "alten Hasen" mittlerweile echt wissen müssten wie das mit der APIVERSION funktioniert. Ich hätte mich auf die Diskussion gar nicht mehr eingelassen und nur noch einen alten Thread verlinkt wo das Thema schon durchgekaut wurde.

    Ich stimme aber zu das man die längst hätte stark von der VDR-Version abweichen lassen sollen. Dann wäre die Diskussion auch um gewesen. Hätte man z.B. einfach einstellig machen können und dann hochzählen. Immer wenn sich was an der API ändert eins draufaddieren. Die könnte dann von einem Versionsschritt zum nächsten auch z.B. um 2 oder 3 hochgezählt worden sein weil zwischendurch schon Änderungen ohne Version auf GIT gelandet sind die auch inkompatible Änderungen reinbringen. Die API hat mit der Version halt eigentlich gar nichts zu tun und muss sich weder an dieser orientieren noch vom Layout so aussehen.

    Edited 2 times, last by M-Reimer (September 10, 2024 at 11:24 PM).

  • M-Reimer ,

    Klaus hat diesen Vorschlag abgelehnt, und dafür 5 likes bekommen, unter anderem einen von Dir. Siehe

    kls
    February 25, 2023 at 9:39 PM

    Client1: ASUS P5QC, Dual Core 3G, Cine S2, Ext. Board von TBE, Xubuntu 20.04, VDR 2.6x

    Client2: RPI3

    Server: RPI4, Sundtek SkyTV Dual 2x

  • Die wenigen Plugins, die ich pflege, werden bald normal weiter laufen.

    Soweit ich sehe, ist 2.7.1 kein Show-Stopper, eher eine Art 'Reminder', dass man alte VDR Versionen irgendwann abwerfen muss.

    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

  • ja, und wer auf den 'reminder' nicht reagiert, zumindest innerhalb

    einer angemessenen frist, dessen plugin wird eliminiert

    außer jemand anderes pflegt es weiter

    https://www.minidvblinux.de/

    1x OctopusNet mit 8x DVB-C
    1x Raspberry 4 MLD 6.5 SATIP (softhddevice-drm )

    1x RockPi 4 MLD 6.5 SATIP (softhddevice-drm )

    1x Raspberry 3 mit SATIP MLD 5.4

    1x Raspberry 2 mit STAIPMLD 6.5

    1x Raspberry 1 (staubt gerade so vor sich hin) ;)
    1x ODROID N2+ mit SATIP MLD 6.5

    1x ODROID N2 L mit SATIP MLD 6.5

    1x Zotac CI327 MLD 6.5 SATIP (softhddevice)

  • Soweit mit Build-Fehlern:

    • cecremote

    CEC Remote Plugin ist mit der Version 1.5.1 gefixt: [ANNOUNCE] CEC Remote Plugin 1.5.1

    VDR 2.6.5 Kodi 18.6-Leia
    Debian GNU/Linux 12, Thermaltake DH102, ASUS PRIME N100I-D, CineS2 V6.5.
    Plugins:
    radio v1.1.0-6-g468280f , trayopenng 1.0.2, fritzbox 1.5.3, cdplayer 1.2.4, femon v2.4.0-GIT-d366856, menuorg 0.5.2, extrecmenung v2.0.4, streamdev-server v0.6.3, cecremote 1.5.1, osd2web 0.3.2, softhddevice v2.0.6-GIT97e825d

  • In remux.c warnt gcc-Version 14.1.0

    remux.c:1764ff

    Code
      for (int i = 0; i < sps_max_sub_layers_minus1; i++ ) {
         sub_layer_profile_present_flag[i] = GetBit(); // sub_layer_profile_present_flag[i]
         sub_layer_level_present_flag[i] = GetBit();   // sub_layer_level_present_flag[i]
         }

    gcc erkennt nicht, dass sps_max_sublayers_minus1 von 0..7 geht.

    remux.c:1746

    Code
    --  int sps_max_sub_layers_minus1 = GetBits(3); // sps_max_sub_layers_minus1
    ++  int sps_max_sub_layers_minus1 = min(GetBits(3), 7U); // sps_max_sub_layers_minus1
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler
    Display Spoiler


    to spoil
    verderben
    beschädigen
    plündern
    behindern
    berauben
    vereiteln
    rauben
    zerstören [fig.] [verderben, verunstalten]
    vergällen
    verhageln [fig.]

Participate now!

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