Die Änderung funktioniert.
Posts by wirbel
-
-
Einverstanden, sammeln wir compiler Warnungen.
-
Ich bin ja noch bei gcc 7.5.0, da kommt diese Warnung nicht.
Gibt es vielleicht eine Möglichkeit, dem Compiler zu sagen "An dieser Stelle brauchst du nicht zu prüfen, ich *weiß*, dass das OK ist"?
Die Warnung generell abzuschalten ist sicher nicht ratsam, denn es kann durchaus Fälle geben, wo sie Sinn macht...
Bestimmt.
Mein Vorschlag bestand aus 9 Ascii Zeichen, ein '#pragma ' sind bereits sieben. [Edit: 8 Zeichen.]
-
Sag einfach nein und gut ist.
-
Der compiler checkt nur mehr als früher.
Ein bug in gcc ist das kaum, es macht ja Sinn arrays auf Überlauf zu prüfen.
-
In remux.c warnt gcc-Version 14.1.0
Code
Display MoreCC remux.o remux.c: In Elementfunktion »void cH265Parser::ParseSequenceParameterSet()«: remux.c:1765:40: Warnung: Schreiben von 1 Byte in eine Region der Größe 0 [-Wstringop-overflow=] 1765 | sub_layer_profile_present_flag[i] = GetBit(); // sub_layer_profile_present_flag[i] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~ remux.c:1743:11: Anmerkung: an Offset 8 des Zielobjekts »sub_layer_profile_present_flag« der Größe 8 1743 | uint8_t sub_layer_profile_present_flag[8]; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ remux.c:1766:38: Warnung: Schreiben von 1 Byte in eine Region der Größe 0 [-Wstringop-overflow=] 1766 | sub_layer_level_present_flag[i] = GetBit(); // sub_layer_level_present_flag[i] | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~ remux.c:1744:11: Anmerkung: an Offset 8 des Zielobjekts »sub_layer_level_present_flag« der Größe 8 1744 | uint8_t sub_layer_level_present_flag[8]; | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
remux.c:1764ff
Codefor (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
-
Wichtig werden auch die Randbedingungen, das hier wären zB meine
- Display
* matt (indoor + outdoor) oder eher farbenfroher und dafür spiegelnd (indoor only)
* transportables Gerät oder eher stationär
* Schriftgröße (großer oder kleiner Bildschirm; je größer die Auflösung, dest kleiner per default die Schriften), ist ne Altersfrage..
- Akkulaufzeit
* transportabel -> lange, einige Stunden
* stationär -> eher Nebensache
* Intel oder AMD (welche Anwendung?)
** Intel: höhere Leistungsaufnahme bei Last, aber sparsam im Idle
** AMD: etwa dreifach höhere Leistungsaufnahme im Idle (auch das geht auf den Akku), dafür halbe Aufnahme unter Last
- Gewicht
* transportabel - leicht (kostet meist mehr, nervt weniger)
* stationär -> entscheiden nach Preis/Größe
- Preis
* 500-750
* 750 - 1000
* 1000+
- Falls Linux nicht ankommt, benötigt Fallback zu Windows möglich? (sorry für die Frage...)
* Win11 kann mit Tricks sich anfühlen wie ein Win10 oder Win7 und es gibt Möglichkeiten ohne MS Account
* auch dabei wäre Hilfe möglich..
- beleuchtete Tastatur? Ein Feature was bei mir alle Rechner mittlerweile haben..
SSD, Speicher, OS lassen sich meist anpassen auf die Bedürfnisse.
offtopic: Kurioserweise bin ich am Ende bei einem Acer Gaming-Laptop gelandet, obwohl hier keiner Zeit für Spiele hat. Trotzdem gute Wahl..
-
Vielleicht mal auf dedizierten Linux-Shops umsehen, so etwas wie Tuxedo oder ähnlich.
Die Frage ist ja auch, ob man mit dem installierten linux warm wird.
-
Edit: Wobei ich absolut keinen Überblick habe ob es tatsächlich noch relevante Plugins mit altem Makefile gibt.
@admins: bitte in einen extra Thread..
-
@Wirbels fork: Der satip fork wird noch eine gute Weile aktuell bleiben, soweit ich kann.
-
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.
-
{VDR,API}VERSION werden vom Makefile aus config.h extrahiert, das muss also ein String sein.
Ist kein Macro, was für compile time Vergleiche verwendet werden kann, wird überall nur als ein const char* verwendet.
#define VDRVERSION VdrVersion()
#define APIVERSION ApiVersion()
const char* VdrVersion(void) { /* using VDRVERSNUM */ (..) }
const char* ApiVersion(void) { /* using APIVERSNUM */ (..) }
-
Mir wäre DEPRECATED_FOO_BAR ohne default lieber, Plugin maintainer/Entwickler hätten sofort die Info und nicht erst Jahre später. Da waren Änderungen von 2.4.2 bei..
#ifdef DEPRECATED_FOO_BAR
/* deprecated: see 2.4.2:HISTORY */
(..)
#endif
-
[optional]
{VDR,API}VERSION könnte entfallen und durch Funktionen ersetzt werden, die aus {VDR,API}VERSNUM diese strings generieren.
Kein Grund, das zur compile time zu ermitteln, weil "ist ein String, damit sind Abfragen wie" (..) "nicht möglich.". Dann aber möglichst auch vom uppercase weg, um von macros/defines zu unterscheiden.
[/optional]
Was ich btw. nicht verstehe, wenn sich denn die API von 2.6.9 zu 2.7.1 so gar nicht geändert hat, wie können so viele Plugins 'fail to compile'? Ist es nicht eher doch so, dass die API hätte erhöht werden müssen, weil eben jene convenience macros nun weg sind? (Zusatzfrage, hätten die nicht per default einen build verhindern sollen, sobald etwas deprecated ist?)
Und würden nicht all diese Plugins vom 2.6.9, wenn denn nicht neu gebaut weil kompatibel zu 2.7.1, irgendwann einen segfault bringen müssen?
-
Nennt sich HISTORY ;-).
9986 Zeilen. 595501 Bytes. Keine Alternative.
-
Wie wäre es mit einer Datei 'DEPRECATED' mit Infos zu jeder Stelle des Codes, dem Zeitpunkt ab wann das markiert wurde und der vorgeschlagenen Alternative?
-
Soweit mit Build-Fehlern:
- cecremote: https://launchpadlibrarian.net…dr5~noble_BUILDING.txt.gz
- channelscan: https://launchpadlibrarian.net…dr7~noble_BUILDING.txt.gz
- eepg: https://launchpadlibrarian.net…dr7~noble_BUILDING.txt.gz
- epg2vdr ( horchi https://launchpadlibrarian.net…dr6~noble_BUILDING.txt.gz
- epgsearch: https://launchpadlibrarian.net…dr4~noble_BUILDING.txt.gz
- extrecmenu: https://launchpadlibrarian.net…dr4~noble_BUILDING.txt.gz
- femon: https://launchpadlibrarian.net…dr1~noble_BUILDING.txt.gz
- fritzbox: https://launchpadlibrarian.net…dr5~noble_BUILDING.txt.gz
- graphlcd: https://launchpadlibrarian.net…dr5~noble_BUILDING.txt.gz
- hbbtv: https://launchpadlibrarian.net…dr8~noble_BUILDING.txt.gz
- image: https://launchpadlibrarian.net…dr5~noble_BUILDING.txt.gz
- karoke: https://launchpadlibrarian.net…r12~noble_BUILDING.txt.gz
- altes live: https://launchpadlibrarian.net…r12~noble_BUILDING.txt.gz
- neues live von MarkusE: https://launchpadlibrarian.net…dr1~noble_BUILDING.txt.gz
- mp3: https://launchpadlibrarian.net…r12~noble_BUILDING.txt.gz
- mpv von lnj : https://launchpadlibrarian.net…dr1~noble_BUILDING.txt.gz
- altes radio: https://launchpadlibrarian.net…r34~noble_BUILDING.txt.gz
- neues radio (mit Anpassungen von HelmutB: https://github.com/siricco/vdr-plugin-radio) : https://launchpadlibrarian.net…r12~noble_BUILDING.txt.gz
- restfulapi: https://launchpadlibrarian.net…r11~noble_BUILDING.txt.gz
- scraper2vdr: https://launchpadlibrarian.net…dr5~noble_BUILDING.txt.gz
- skindesigner: https://launchpadlibrarian.net…dr6~noble_BUILDING.txt.gz (die davon abhängenden Plugins habe ich noch nicht bauen können)
- suspendoutput: https://launchpadlibrarian.net…r31~noble_BUILDING.txt.gz
- tvguide: https://launchpadlibrarian.net…dr7~noble_BUILDING.txt.gz
- tvscraper: https://launchpadlibrarian.net…dr1~noble_BUILDING.txt.gz
- vompserver: https://launchpadlibrarian.net…dr7~noble_BUILDING.txt.gz
- wirbelscan: https://launchpadlibrarian.net…dr8~noble_BUILDING.txt.gz
- xmltv2vdr: https://launchpad.net/~seahawk…ea03da9-0yavdr5~noble.dsc
Also einiges zu tun ...
Wenn ich auf die Liste von Seahawk so schaue, dann ist weniger das Problem, dass Teile des Codes deprecated werden oder später entfernt werden, als dass eher diese Information nicht ankommt. Gerade auch, weil Zeit überall knapp ist.
-
Ich glaube, die Änderung ist nur ein Teil der Lösung und es gibt Details, die wir nicht wissen oder nicht gefragt haben.
Auf jeden Fall wurde wohl die channels.conf beim Probieren irgendwann aktualisiert, es gibt Timer auf verschlüsselten S*y Kanälen und Emergency Exit ist im Setup aktiv.
Timer startet auf Kanal mit Caid != 0 -> kein Cam verfügbar -> Emergency Exit -> alle Aufzeichnungen werden unterbrochen
Was die ÖR in HD betrifft, sollten die nur unterbrochen werden, wenn ein anderer timer parallel den Emergency Exit erzwingt.
-
Du könntest ja mal absichtlich das Aktualisieren der Caids unterbinden:
channels.c:461ff
Code
Display Morebool cChannel::SetCaIds(const int *CaIds) { if (caids[0] && caids[0] <= CA_USER_MAX) return false; // special values will not be overwritten ++ /* if (IntArraysDiffer(caids, CaIds)) { char OldCaIdsBuf[MAXCAIDS * 5 + 10]; // 5: 4 digits plus delimiting ',', 10: paranoia char NewCaIdsBuf[MAXCAIDS * 5 + 10]; IntArrayToString(OldCaIdsBuf, caids, 16); IntArrayToString(NewCaIdsBuf, CaIds, 16); if (Number()) dsyslog("changing caids of channel %d (%s) from %s to %s", Number(), name, OldCaIdsBuf, NewCaIdsBuf); for (int i = 0; i <= MAXCAIDS; i++) { // <= to copy the terminating 0 caids[i] = CaIds[i]; if (!CaIds[i]) break; } modification |= CHANNELMOD_CA; return true; } ++ */ return false; }
-
Code
[16360] changing pids of channel 1 (*Sky Sport B*undesliga) from 255+255=2:0;260=@106:0:32 to 255+255=27:0;258=qab@106,260=qac@106:0:32 [16360] changing caids of channel 1 (*Sky Sport B*undesliga) from 0 to 9C4,98C,98D,9F0
Was genau schickt mir die Kopfstation hier? Die Channelliste oben bekomme ich nur initial, wenn ich z.B. per scan und initialTuningData auf den entsprechenden Frequenzen suche.
Deine "Kopfstation" sendet falsche DVB-SI Daten und behauptet der Kanal wäre verschlüsselt.
Der erste Eintrag ist gewollt und normal.
Die PID 255 (video) transportiert anstelle von MPEG-2 auf einmal H264, und es gibt neue Audio Spuren.
Der zweite Eintrag markiert den Kanal als verschlüsselt, so dass VDR ab sofort versucht ein CAM für die CA-IDs (common access) zu finden. Da es keines gibt, versucht VDR ohne erst gar nicht aufzuzeichnen oder live TV darzustellen davon.
Würde deine Kopfstation korrekt arbeiten, würde sie die CAT (common access table) aus dem TS Datenstrom herausfiltern.