FireFly
Vielen Dank für die Arbeit.
Die Fehlermeldung "Transfer-Mode kann nicht gestartet werden" sehe ich seit Beginn der Nutzung des SatIP Plugins in regelmäßigen Abständen. Da hilft immer nur ein Neustart des VDR.
Ich bin gespannt, wie sich der VDR jetzt verhält. Von gestern bis heute liefen alle Aufnahmen fehlerfrei.
Posts by Jarod
-
-
Vergiss meine Frage... Wer lesen kann ist klar im Vorteil. Hab die Doku hier gefunden.
-
Warum also nicht einfach ein "cRecordingInfo" ohne const? Weil dann in allen Skins, die das "Errors()" nutzen wollen, das "const cRecordingInfo" geändert werden müsste.
Jetzt hassu mich abgehängt... Bestehen die Skins nicht ausschließlich aus XML und SVG/PNG Files? Gibt es auch welche, die ihren eigenen C++-Code mitbringen? Hast du mal ein Beispiel, an dem ich sehen kann, wo etwas anzupassen wäre?
-
Das ist eine Funktion, die mit VDR-2.5.4 neu eingeführt wurde.
Bis VDR-2.5.3 sollte es keine Probleme beim Übersetzen geben.
Die Lösung für dieses Problem gibt es hier:
Ich hab mir das diff aus obigem Thread angesehen und verstehe nicht, warum ihr das so gelöst habt.
Wenn ich das richtig sehe, dann wird "cRecordingInfo" nur nicht mehr als "const" deklariert seit Version 2.5.2.siehe "git diff 2.5.1 2.5.2 recording.h":
Diff
Display Morediff --git a/recording.h b/recording.h index 6f26f2f6..217adea9 100644 --- a/recording.h +++ b/recording.h @@ -4,7 +4,7 @@ * See the main source file 'vdr.c' for copyright information and * how to reach the author. * - * $Id: recording.h 5.1 2020/12/26 15:49:01 kls Exp $ + * $Id: recording.h 5.3 2021/01/19 20:38:28 kls Exp $ */ #ifndef __RECORDING_H @@ -74,8 +74,6 @@ private: char *fileName; cRecordingInfo(const cChannel *Channel = NULL, const cEvent *Event = NULL); bool Read(FILE *f); - void SetData(const char *Title, const char *ShortText, const char *Description); - void SetAux(const char *Aux); public: cRecordingInfo(const char *FileName); ~cRecordingInfo(); @@ -93,6 +91,8 @@ public: bool Write(FILE *f, const char *Prefix = "") const; bool Read(void); bool Write(void) const; + void SetData(const char *Title, const char *ShortText, const char *Description); + void SetAux(const char *Aux); }; class cRecording : public cListObject { @@ -150,7 +150,7 @@ public: ///< Returns the full path name to the recording directory, including the ///< video directory and the actual '*.rec'. For disk file access use. const char *Title(char Delimiter = ' ', bool NewIndicator = false, int Level = -1) const; - const cRecordingInfo *Info(void) const { return info; } + cRecordingInfo *Info(void) const { return info; } const char *PrefixFileName(char Prefix); int HierarchyLevels(void) const; void ResetResume(void) const; @@ -421,6 +421,10 @@ public: #define RUC_EDITINGRECORDING "editing" #define RUC_EDITEDRECORDING "edited" #define RUC_DELETERECORDING "deleted" +#define RUC_RENAMEDRECORDING "renamed" // same directory, only the base name is changed +#define RUC_MOVEDRECORDING "moved" // different directory (and maybe base name), or "copy" to other filesystem + delete original (triggers copying->copied->deleted) +#define RUC_COPYINGRECORDING "copying" +#define RUC_COPIEDRECORDING "copied" class cRecordingUserCommand { private:
Wie schon gesagt, meine C++ Kenntnissen sind nicht so prall. Deswegen möchte ich gern verstehen, warum ihr die "int Error" declaration in recordings.h patched habt, anstatt der eigentlichen Stelle mit "const cRecordingInfo *info = recording->Info();" im Plugin? Obendrein habt ihr noch den Aufruf "errors = info->Errors();" mit nem precompiler "#if" versehen?. Warum das?
Grüße
Jarod
-
...weil meine C++ Kenntnisse eher spärlich gesät sind und ich genau das wusste/konnte. Dein Vorschlag kompiliert und scheint zu funktionieren. Danke, hab wieder was gelernt.
In meiner Version sieht man allerdings aufgrund welcher VDR Version hier etwas angepasst werden musste.
Wie es am Ende in den Code kommt und für alle nutzbar wird, ist mir ziemlich Schnuppe.... -
Mit VDR größer Version 2.5.2 bekomme ich beim Kompilieren des skindesigner Plugins folgende Fehlermeldung:
Code
Display Morecoreengine/viewdetail.c: In member function 'virtual bool cViewDetailRec::Parse(bool)': coreengine/viewdetail.c:679:31: error: passing 'const cRecordingInfo' as 'this' argument discards qualifiers [-fpermissive] errors = info->Errors(); ^ In file included from /usr/local/src/vdr-2.5.4/include/vdr/skins.h:18:0, from /usr/local/src/vdr-2.5.4/include/vdr/osdbase.h:15, from coreengine/../services/epgsearch.h:31, from coreengine/viewdetail.h:4, from coreengine/viewdetail.c:1: /usr/local/src/vdr-2.5.4/include/vdr/recording.h:92:7: note: in call to 'int cRecordingInfo::Errors()' int Errors(void) { return errors; } ^~~~~~ coreengine/viewelementsdisplaymenu.c: In member function 'virtual bool cVeDmDetailheaderRec::Parse(bool)': coreengine/viewelementsdisplaymenu.c:1234:31: error: passing 'const cRecordingInfo' as 'this' argument discards qualifiers [-fpermissive] errors = info->Errors(); ^ In file included from /usr/local/src/vdr-2.5.4/include/vdr/skins.h:18:0, from /usr/local/src/vdr-2.5.4/include/vdr/osdbase.h:15, from /usr/local/src/vdr-2.5.4/include/vdr/menuitems.h:15, from /usr/local/src/vdr-2.5.4/include/vdr/plugin.h:14, from coreengine/globals.h:14, from coreengine/viewelement.h:11, from coreengine/viewelementsdisplaymenu.h:4, from coreengine/viewelementsdisplaymenu.c:1: /usr/local/src/vdr-2.5.4/include/vdr/recording.h:92:7: note: in call to 'int cRecordingInfo::Errors()' int Errors(void) { return errors; } ^~~~~~ coreengine/listelements.c: In member function 'virtual bool cLeMenuRecordings::Parse(bool)': coreengine/listelements.c:2062:27: error: passing 'const cRecordingInfo' as 'this' argument discards qualifiers [-fpermissive] errors = info->Errors(); ^ In file included from /usr/local/src/vdr-2.5.4/include/vdr/skins.h:18:0, from /usr/local/src/vdr-2.5.4/include/vdr/osdbase.h:15, from /usr/local/src/vdr-2.5.4/include/vdr/menuitems.h:15, from /usr/local/src/vdr-2.5.4/include/vdr/plugin.h:14, from coreengine/globals.h:14, from coreengine/viewelement.h:11, from coreengine/listelements.h:4, from coreengine/listelements.c:1: /usr/local/src/vdr-2.5.4/include/vdr/recording.h:92:7: note: in call to 'int cRecordingInfo::Errors()' int Errors(void) { return errors; }
Es sind noch weitere Stellen, aber immer der gleiche Fehler.
Mit vdr-2.4.6 kommt noch kein Fehler.
Vermutlich liegt es an der Änderung hier in der recording.h vom vdr in Version 2.5.2:
Diff@@ -150,7 +153,7 @@ public: ///< Returns the full path name to the recording directory, including the ///< video directory and the actual '*.rec'. For disk file access use. const char *Title(char Delimiter = ' ', bool NewIndicator = false, int Level = -1) const; - const cRecordingInfo *Info(void) const { return info; } + cRecordingInfo *Info(void) const { return info; } const char *PrefixFileName(char Prefix); int HierarchyLevels(void) const; void ResetResume(void) const;:q
Ich hoffe, dass der Patch hier das Ganze korrigiert und auch ein paar falsche "if defined" entfernt:
Diff
Display Morediff --git a/coreengine/listelements.c b/coreengine/listelements.c index 10d4837..fcfde42 100644 --- a/coreengine/listelements.c +++ b/coreengine/listelements.c @@ -2017,7 +2017,11 @@ bool cLeMenuRecordings::Parse(bool forced) { ADD_TOKEN_MR1(TOKEN_LMR_IT); const cEvent *event = NULL; - const cRecordingInfo *info = usedRecording->Info(); +#if defined (APIVERSNUM) && (APIVERSNUM >= 20502) + cRecordingInfo *info = recording->Info(); +#else + const cRecordingInfo *info = recording->Info(); +#endif if (!info) { delete[] recName; @@ -2058,9 +2062,7 @@ bool cLeMenuRecordings::Parse(bool forced) { } int errors = -1; -#if defined (APIVERSNUM) && (APIVERSNUM >= 20504) errors = info->Errors(); -#endif // do the same stuff as in cCeMenuRecordings::Parse() (part 2) ADD_TOKEN_MR2(TOKEN_LMR_IT, TOKEN_LMR_ST); @@ -2244,7 +2246,11 @@ bool cCeMenuRecordings::Parse(bool forced) { ADD_TOKEN_MR1(TOKEN_CMR_IT); const cEvent *event = NULL; - const cRecordingInfo *info = usedRecording->Info(); +#if defined (APIVERSNUM) && (APIVERSNUM >= 20502) + cRecordingInfo *info = recording->Info(); +#else + const cRecordingInfo *info = recording->Info(); +#endif if (!info) return true; event = info->GetEvent(); @@ -2278,9 +2284,7 @@ bool cCeMenuRecordings::Parse(bool forced) { } int errors = -1; -#if defined (APIVERSNUM) && (APIVERSNUM >= 20504) errors = info->Errors(); -#endif // do the same stuff as in cLeMenuRecordings::Parse() (part 2) ADD_TOKEN_MR2(TOKEN_CMR_IT, TOKEN_CMR_ST); diff --git a/coreengine/viewdetail.c b/coreengine/viewdetail.c index 56910d3..4786856 100644 --- a/coreengine/viewdetail.c +++ b/coreengine/viewdetail.c @@ -668,16 +668,18 @@ bool cViewDetailRec::Parse(bool forced) { tokenContainer->AddStringToken((int)eDmDetailedRecST::name, recording->Name()); tokenContainer->AddIntToken((int)eDmDetailedRecIT::cutted, recording->IsEdited()); +#if defined (APIVERSNUM) && (APIVERSNUM >= 20502) + cRecordingInfo *info = recording->Info(); +#else const cRecordingInfo *info = recording->Info(); +#endif if (info) { tokenContainer->AddStringToken((int)eDmDetailedRecST::epgname, info->Title()); tokenContainer->AddStringToken((int)eDmDetailedRecST::shorttext, info->ShortText()); tokenContainer->AddStringToken((int)eDmDetailedRecST::description, info->Description()); tokenContainer->AddIntToken((int)eDmDetailedRecIT::framesPerSecond, info->FramesPerSecond()); - int errors = -1; -#if defined (APIVERSNUM) && (APIVERSNUM >= 20504) + int errors = -1; errors = info->Errors(); -#endif tokenContainer->AddIntToken((int)eDmDetailedRecIT::errors, errors); const cEvent *event = info->GetEvent(); if (event) { diff --git a/coreengine/viewelementsdisplaymenu.c b/coreengine/viewelementsdisplaymenu.c index 24240a7..d7c0c11 100644 --- a/coreengine/viewelementsdisplaymenu.c +++ b/coreengine/viewelementsdisplaymenu.c @@ -557,7 +557,11 @@ void cVeDmCurrentschedule::ParseFromRecording(const cRecording *recording) { string recFolder = ""; RecName(recFullName, recName, recFolder); tokenContainer->AddStringToken((int)eDMCurrentscheduleST::title, recName.c_str()); +#if defined (APIVERSNUM) && (APIVERSNUM >= 20502) + cRecordingInfo *info = recording->Info(); +#else const cRecordingInfo *info = recording->Info(); +#endif if (info) tokenContainer->AddStringToken((int)eDMCurrentscheduleST::subtitle, info->ShortText()); tokenContainer->AddIntToken((int)eDMCurrentscheduleIT::duration, recording->LengthInSeconds() / 60); @@ -988,7 +992,12 @@ bool cVeDmLastrecordings::Parse(bool forced) { #endif string recName = ""; string recSeriesName = ""; +#if defined (APIVERSNUM) && (APIVERSNUM >= 20502) + cRecordingInfo *recInfo = recording->Info(); +#else const cRecordingInfo *recInfo = recording->Info(); +#endif + if (recInfo) { recName = recInfo->Title() ? recInfo->Title() : ""; if (recInfo->Title() && recInfo->ShortText()) { @@ -1224,15 +1233,17 @@ bool cVeDmDetailheaderRec::Parse(bool forced) { tokenContainer->Clear(); tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::name, recording->Name()); +#if defined (APIVERSNUM) && (APIVERSNUM >= 20502) + cRecordingInfo *info = recording->Info(); +#else const cRecordingInfo *info = recording->Info(); +#endif if (info) { tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::epgname, info->Title()); tokenContainer->AddStringToken((int)eDmDetailedHeaderRecST::shorttext, info->ShortText()); tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::framesPerSecond, info->FramesPerSecond()); int errors = -1; -#if defined (APIVERSNUM) && (APIVERSNUM >= 20504) errors = info->Errors(); -#endif tokenContainer->AddIntToken((int)eDmDetailedHeaderRecIT::errors, errors); const cEvent *event = info->GetEvent(); if (event) {
-
-
Hallo zusammen,
seit gestern habe ich den Kathrein Exip418 bei mir in Betrieb.
Leider nutzt der VDR (2.4.6) nur ein Frontend im Zusammenspiel mit dem SatIP Plugin (aktuelles Git(1ad0a81d16eb5d44f1abd932a41ae79789ff4d34)).
Der Versuch etwas aufzunehmen während man einen anderen Sender schaut, schlägt fehlt. Der Life Sender wird angezeigt, der Tansponder auf dem man aufnehmen möchte bekommt kein Lock.
Im Log de VDR finde sich Folgendes, wenn die Aufnahme fehlschlägt.QuoteMay 16 10:13:06 server vdr[27764]: [27788] SATIP-ERROR: Detected invalid status code 503: rtsp://10.6.66.242/ [device 1]
May 16 10:13:06 server vdr[27764]: [27788] SATIP-ERROR: Connect failed [device 1
Auf der Weboberfläche des Exip418 sieht man auch, dass nur der 1. Tuner genutzt wird. Solange ich nichts aufnehmen möchte, kann ich problemlos jeden FTA-Sender auf Astra 19.2E empfangen.
Das SatIP-Plugin habe ich wie folgt gestartet:Quote[satip]
-d 4
-s 10.6.66.242:554|DVBS2-4|KATHREIN SatIP Server
-p 4000-4007
Beim Exip418 habe ich die Tuner unter "Tuner Settings" auf "Dynamic" gestellt. Und das LNB Setting auf "Quattro/Quad". (Der Exip418 hat die FW 1.1.0)
Wenn ich auf einem Transponder aufnehme und auf einen anderen schalte, dann sieht das im SatIP Plugin so aus:
Was mache ich falsch?
Danke schon mal.
Jarod
-
-
Hi,
vor ein paar Tagen habe ich meine beiden VDRs von 2.2.0 auf 2.4.0 angehoben. Der VDR, in dem die Sat-Karten stecken, tut klaglos seinen Dienst.
Leider macht mir der RPI3 Sorgen. Der VDR darauf stürtzt mir seit dem reproduzierbar ab.
Beim RPI sind 3 Plugins geladen, der vdr-2.4.0 selbst ist ungepatcht. Das hier ist meine Konfig:
Code
Display Morecat /etc/vdr/conf.d/0* [vdr] --no-kbd -v /mnt/grave/video-new -l 3 -w 20 -i 1 -c /etc/vdr -L /usr/vdr/lib [streamdev-client] [rpihddevice] [cecremote]
Alle Plugins stammen von https://github.com/vdr-projects/
Der VDR auf dem RPI startet auf NDR2(Radio). Nach dem Starten habe ich keinen Ton. Beim ersten Umschalten auf einen neuen Sender passiert nichts. Es erscheint kein Bild und im Log steht Folgendes:Code
Display MoreMay 11 21:39:59 vdr64 vdr: [22023] SVDRP vdr64 < 127.0.0.1:46468 client connection accepted May 11 21:39:59 vdr64 vdr: [22023] SVDRP vdr64 > 127.0.0.1:46468 server created May 11 21:39:59 vdr64 vdr: [22023] switching to channel 10 S19.2E-1-1089-12040 (SUPER RTL) May 11 21:39:59 vdr64 vdr: [cecremote] Primary device, Channel Switch 0 t May 11 21:39:59 vdr64 vdr: [cecremote] Not primary device, Channel Switch 0 f May 11 21:39:59 vdr64 vdr: [22022] cStreamDevice::GetTSPacket: GetChecked: NOTHING (0) May 11 21:40:00 vdr64 vdr: [cecremote] Not primary device, Channel Switch 10 f May 11 21:40:00 vdr64 vdr: [22024] device 1 TS buffer thread ended (pid=22001, tid=22024) May 11 21:40:00 vdr64 vdr: [22022] buffer stats: 8592 (0%) used May 11 21:40:00 vdr64 vdr: [22022] device 1 receiver thread ended (pid=22001, tid=22022) May 11 21:40:00 vdr64 vdr: [22079] device 1 receiver thread started (pid=22001, tid=22079, prio=high) May 11 21:40:00 vdr64 vdr: [cecremote] Primary device, Channel Switch 10 t May 11 21:40:00 vdr64 vdr: [cecremote] TV : SUPER RTL May 11 21:40:00 vdr64 vdr: [22023] SVDRP vdr64 < 127.0.0.1:46468 connection closed May 11 21:40:00 vdr64 vdr: [22023] SVDRP vdr64 < 127.0.0.1:46468 server destroyed May 11 21:40:00 vdr64 vdr: [22080] device 1 TS buffer thread started (pid=22001, tid=22080, prio=high) May 11 21:40:01 vdr64 vdr: [22014] rpihddevice: set HDMI audio output format to 2ch PCM, 48.0kHz May 11 21:40:01 vdr64 vdr: [22079] rpihddevice: set video codec to MPEG2 May 11 21:40:01 vdr64 vdr: [22013] rpihddevice: video stream started 720x576@50i, PAR=64/45 May 11 21:40:01 vdr64 vdr: [22013] rpihddevice: display PAR=1,000, setting video render PAR=64/45 May 11 21:40:09 vdr64 vdr: [22079] ERROR: 1 TS packet(s) not accepted in Transfer Mode May 11 21:40:09 vdr64 vdr: [22014] rpihddevice: set HDMI audio output format to 2ch PCM, 48.0kHz
Beim zweiten Versuch umzuschalten hängt sich der VDR dann wie folgt auf:
Code
Display MoreMay 11 21:40:18 vdr64 vdr: [22023] SVDRP vdr64 < 127.0.0.1:46470 client connection accepted May 11 21:40:18 vdr64 vdr: [22023] SVDRP vdr64 > 127.0.0.1:46470 server created May 11 21:40:18 vdr64 vdr: [22023] switching to channel 15 S19.2E-1-1093-28437 (NDR 2) May 11 21:40:19 vdr64 vdr: [22080] i/o throttle activated, count = 1 (tid=22080) May 11 21:40:20 vdr64 vdr: [22080] buffer usage: 70% (tid=22079) May 11 21:40:20 vdr64 vdr: [22080] buffer usage: 80% (tid=22079) May 11 21:40:20 vdr64 vdr: [22080] buffer usage: 90% (tid=22079) May 11 21:40:21 vdr64 vdr: [22080] buffer usage: 100% (tid=22079) May 11 21:40:32 vdr64 wpa_supplicant[975]: wlan0: Failed to initiate sched scan May 11 21:40:36 vdr64 vdr: [22021] cStreamdevFilters::Action(): stream disconnected ? May 11 21:40:36 vdr64 vdr: [22006] ERROR: streamdev-client: Failed reading reply to 'ADDF 48 2 255' from 192.168.3.42:2004: Connection timed out May 11 21:40:36 vdr64 vdr: [22021] ERROR: streamdev-client: Failed sending command 'ABRT 2' to 0.0.0.0:0: Connection timed out May 11 21:40:36 vdr64 vdr: [22020] device 1 TS buffer thread ended (pid=22001, tid=22020) May 11 21:40:36 vdr64 vdr: [22021] buffer stats: 97948 (9%) used May 11 21:40:36 vdr64 vdr: [22021] StreamdevFilters::Action() ended May 11 21:40:36 vdr64 vdr: [22021] streamdev-client: sections assembler thread ended (pid=22001, tid=22021) May 11 21:40:37 vdr64 vdr: [22001] PANIC: watchdog timer expired - exiting!
Um den Streamdev-Server als Ursache auszuschließen, habe ich auf dem RPI3 den vdr-2.2.0 wieder angeworfen. Er läuft ohne Probleme und liefert Bild und Ton bei jedem Sender.
Für Vorschläge zum Einkreisen des Problems wäre ich mehr als dankbar.
Danke schon mal.
Jarod
-
Hi,
du müsstest Dir noch die scr.conf an dein Unikabel Switch anpassen. Der Rest macht der Switch...
Danke für die schnelle Antwort.
Das Anpassen der src.conf ist ja der mehr oder weniger triviale Teil...
Mir fehlt(e) das Verständnis, woher der VDR weiß, wie er welchen Satelliten auswählt.
Mir ist von der EN 50494 ein Draft aus 2006 in die Hände gefallen und dort steht beschrieben, dass die SCIF-Einheit für 2 Satelliten 8 Bänke hat. Wobei der 1. Satellit über die Bänke 0-3 und der 2. über die Bänke 4-7 angesprochen wird.
Ich vermute also mal, dass das die Bänke 0-7 den S[0-7] Einträgen der diseqc.conf entsprechen. (Wissen tue ich es aber nicht...)
Der Draft sagt, dass die Bits 7-5 des 1. Datenblocks die Scheibe auswählen, auf der das gewünschte Signal gesendet werden soll. Wenn ich das richtig verstehe, wird darüber also eine der 8 festen Frequenzen ausgewählt.
Mit den Bits 4-2 gibt man die Bank an, die man nutzen möchte. Also entsprechen die Werte 0-3 den Banken des 1. Satelliten und die Werte 4-7 den Banken des 2. Satelliten (Bank 0-3 Sat1:VL,Sat1VH,Sat1HL,Sat1HH & Bank 4-7: Sat2:VL,Sat2VH,Sat2HL,Sat2HH).
In den beiden letzten Bits 0-1 plus den 8 Bits vom nachfolgenden Datenblock 2 wird dann der berechnete Wert für die gewünschte Frequenz untergebracht.
Jetzt weiß ich zwar, wie es funktionieren sollte, aber immer noch nicht 100%, wie der VDR die Zuordnung macht.
kls Kannst Du vielleicht kurz etwas dazu sagen?
-
Hallo zusammen,
ich bin am Überlegen meine Schüssel, die 19.2°O und 28.2°O empfängt, vom Dach in den Garten zu ziehen.
Um keine 8 Kabel von der Schüssel in den Keller ziehen zu müssen, würde ich gern auf eine Einkabel-Lösung umsteigen.
Von Kathrein gibt es den EXR 1981. Dieser kann 2 Satelliten empfangen und auf Einkabel umsetzten.
Zum Thema Konfiguration bin ich im Wiki ich über Folgendes gestolpert.
http://www.vdr-wiki.de/wiki/in…_.28programmers_only...29
Kann es sein, dass ich in der sources.conf einfach nur folgendes Eintragen muss?
CodeS19.2E 11700 V 9750 t V W10 S0 [E0 10 5A 00 00] W10 v S19.2E 99999 V 10600 t V W10 S1 [E0 10 5A 00 00] W10 v S19.2E 11700 H 9750 t V W10 S2 [E0 10 5A 00 00] W10 v S19.2E 99999 H 10600 t V W10 S3 [E0 10 5A 00 00] W10 v S28.2E 11700 V 9750 t V W10 S4 [E0 10 5A 00 00] W10 v S28.2E 99999 V 10600 t V W10 S5 [E0 10 5A 00 00] W10 v S28.2E 11700 H 9750 t V W10 S6 [E0 10 5A 00 00] W10 v S28.2E 99999 H 10600 t V W10 S7 [E0 10 5A 00 00] W10 v
Woher weiß der VDR dann aber welcher der beiden Einträge der Satellit auf Pos. A bzw Pos. B ist? Leitet er das aus den Nummern S1-S8 ab?
Danke schon mal im Voraus.
Jarod -
Funktioniert es denn mit anderen Skindesigner Skins?
Ja leider...
Deswegen glaube ich langsam, ich bin zu doof dafür...Les das Wiki doch mal komplett durch, auch wenn du der Meinung bist, du brauchst das nicht
Ich kann Dir versichern, ich lese seit einigen Tagen nichts Anderes mehr. Meine Frau ist schon verstimmt, weil ich mich ihrer Meinung nach zu sehr in die Sache reinsteigere...
Ich werde vermutlich erst nächste Woche dazu kommen wieder was zu machen.
Und nochmal Danke für die vielen nützlichen Tips.
Jarod
-
Soweit ich mich erinnere, kann das auch irgendwie das Aufzeichnungsmenü ersetzen.
Es hätte ja so einfach sein können... Kannst Du mir einen Schups in die Richtung geben, in der ich suchen muss, damit ich das RecMenu anpassen kann?
Das Öffnen des Timer Menüs klapp mal und mal stürzt der VDR ab. Wenn es allerdings auf geht, zeigt es auch was an...Das Problem mit der unterschiedlichen Größe der Elemente in den 3 Menüs hab ich in den Griff bekommen :-). Eine Nacht drüber schlafen und Dein Tip hat geholfen.
Eine Frage noch... Wie kann man einen colorbutton übermalen, oder ausblenden, der keinen Wert in {red,green,yellow,blue} hat?
Sowas hier funktioniert leider nichtCode<drawimage condition="not{red} ++ {red1}" x="0" y="0" cache="true" imagetype="skinpart" path="buttonsHideRed" align="left" width="385" height="74" />
Edit: habs selber herausgefunden. So gehts:Code<drawimage condition="empty{red} ++ {red1}" x="0" y="0" cache="true" imagetype="skinpart" path="buttonsHideRed" align="left" width="385" height="74" />
Hier noch meine aktuelle Version: newanthra-0.2.tar.bz2
Danke schon mal.
-
Hi,
seit ein paar Tagen bin ich drauf und dran die alte anthra1920FS_ea in Richtung Skindesigner zu portieren.
Bis jetzt ist das Einzige, was wirklich gut aussieht die displaychannels.xml. Der Rest bereitet mir leichte Kopfschmerzen. Ich habe mir das skindesigner Plugin von hier gezogen: git://projects.vdr-developer.org/vdr-plugin-skindesigner und mit skinskeleton als Grundlage angefangen. Zum besseren Verständnis habe ich mir die simplex Skin geschnappt und ausprobiert, wie was funktioniert...
Ich nutze vdr-2.2.0 mit folgendem Aufruf auf einem RPI2Code/usr/local/src/vdr-2.2.0-eepg/vdr -v /video0 -l 3 -w 15 -c /etc/vdr -L /usr/vdr/lib -E /video0/epg.data -P 'rpihddevice --display=5' \ -Psvdrpservice -Premotetimers -Premoteosd -Pfemon -Pstreamdev-client -Pskinsoppalusikka -Ptext2skin \ -P 'skindesigner -s /etc/vdr/plugins/skindesigner/skins'
Wie gesagt, versuche ich die anthra Skin Schritt für Schritt zu portieren. Ein paar Menüpunkte sind schon verwendbar. Beim Anwählen anderer stürzt der VDR sogar ab.
Als Erstes verstehe ich nicht, warum die listitems meiner Skin in unterschiedlichen Menüs unterschiedlich groß sind. Definiert sind 18 Items bei jeweils gleicher Höhe. Im MainMenu passt die Größe. Im Setup werden sie etwas größer und unter OSD werden sie richtig klein.
Damit könnte ich ja fast noch leben...
Was ich allerdings gar nicht begreife, ist die Tatsache, dass nichts von dem, was ich in displaymenurecordings.xml eintrage, angezeigt wird. Es kommt immer der einzig passende Eintrag aus der displaymenudefault.xml. Was mache ich falsch?Ich hänge meine Bemühungen hier mal an und hoffe mir kann jemand helfen: newanthra.tar.bz2
Danke schon mal im Voraus.
Jarod
-
da würde ich eher sagen, dass die anderen sich nicht "brav" sondern falsch verhalten
Wieso kümmert sich skindesigner dann nur um links und oben und nicht im Breite und Höhe? Entweder ganz oder gar nicht wäre da meine Devise...PS: ich würde dir raten, gleich mit relativen Positionsangaben zu arbeiten... Falls noch nicht getan, rate ich dir auch, mal das Wiki zu lesen, da steht eine Menge informatives
Das mit dem relativ ist sicher nett, bedeutet aber auch ein wenig Mehrarbeit. Mit % zu arbeiten finde ich recht ungenau. 1% sind schon 19 bzw 10 Pixel ...
Bei der Skin, die ich hier habe, sind 19 Pixel bei machen Texten schon mehr als ungenau. (siehe Screenshot)
Oder ist bei der %-Angabe auch ein Wert mit einem Vielfachen von 0.052% möglich?Was das Wiki angeht, da war ich schon ein oder zweimal...
Danke nochmal.
Jarod
-
hast du in den OSD Einstellungen vom VDR einen Rand definiert? Das wird vom Skindesigner berücksichtigt. Um das OSD komplett nutzen zu können, musst du im OSD Menü x = 0, y = 0, Breite = 100%, Höhe = 100% eingestellt haben.
Na wenn das nicht hinterhältig ist... Kein anderes OSD Plugin hat sich daran je gestört, sondern immer brav skaliert. Ich habs auf 0%,0%,100%,100% gestellt und siehe da, es paßt.
Danke vielmals.
Jarod
-
Hallo zusammen,
nachdem ich mich nun damit abgefunden habe, daß text2skin auf dem RPI2 nicht mehr laufen wird, habe ich damit begonnen, meine Liebslingsskin (anthra1920FS_ea) in Richtung Skindesigner zu portieren (aktuelle GIT Version).
Bis jetzt habe ich mich erst einmal nur an displaychannel.xml herangewagt. Die Kanalinfo im OSD sollte jetzt eigentlich fast so aussehen, wie im text2skin. Leider tut sie das nicht. Das gesamte OSD ist noch rechts unten verschoben.
Kann mir jemand sagen, was ich falsch gemacht habe?
Das Ganze habe ich aus dem skinskeleton Verzeichnis erstellt, indem ich die Daten aus der alten Skin mehr oder weniger kopiert habe.Anbei ein Screenshot und das TGZ mit den aktuellen Daten.
Im Screenshot habe ich oben einfach ein Rechteck bei 0,0 eingefügt, das 1920 breit und 176 hoch ist.Woher aber kommt die Verschiebung?
Ich bin für jeden Tip dankbar.Jarod
-
Ich werfe hier auch gerne nochmal meine Skins flat und flatPlus in die Runde. Besonders flat ist sehr ressourcenschonend.
Ich denke, dass ich alle Skins für den Skindesigner jetzt ausprobiert habe. Leider ist keine so elegant, lightweight und übersichtlich wie die "anthra1920FS_ea".
Wenn ich die Zeit hätte, würde ich mir die Arbeit machen sie zu portieren.Da dem leider nicht so ist, nutze ich am RPI einfach skinsoppalusikka. Die ist zwar noch spartanischer, aber sie läuft und ist schnell. LCARS ist noch ganz schick und flink, wenn man DrawTimers(); unter void cSkinLCARSDisplayMenu::Flush(void) auskommentiert (ich benutze das remotetimers plugin).
Jarod
-
Das Problem müsste also in text2skin gefixt werden.
Erstmal Danke Thomas.
Irgendwie ist mir Deine Antwort vor ein paar Wochen durch die Lappen gegangen. Ich hab sie heute erst gelesen.Eine einfache (allerdings langsame) Möglichkeit gibt es noch. Ändert man in der screen.h das "#define DIRECTBLIT" in ein "#undef DIRECTBLIT" dann sind die Bilder wieder da. Leider macht es aber das text2skin genau so unbrauchbar wie das Ausschalten GPU Unterstützung.
Für mehr reichen meine Programmierkenntnisse leider nicht aus.Ich würde mich sehr freuen, falls es jemanden gibt, dem (wie mir) an dem alten Plugin liegt und der das Zeichnen der Bitmaps umschreiben könnte.
Danke schon mal...