Seite 1 von 1

Seife -> neutrino-mp für pingulux

Verfasst: Dienstag 6. November 2012, 13:41
von bazi98
@seife
Ich habe heute mal für den Pingulux(alt) ein Image gebaut aus deinen "neutrino-mp" dabei sind mir die folgenden Punkte aufgefallen
In den Video-Settings ist der beim pingulux nicht vorhandenen Scart-Anschluss genauer gesagt der Einstellpunkt ausgeblendet :) , dort ist noch die Überschrift (TV-Scart) übrig geblieben, die müsste in diesen Fall noch mit ausgeblendet werden.
Bild Bild

Dass LED/LCD-Menü fehlt bei mir komplett, dies wird auch nicht im Menü-Personalisieren angeboten,
Bild
es gibt zwar beim Pingulux nur ein "Mini_Display" aber auch das sollte zumindest eingeblendet und einstellbar sein.

Wäre schön wenn du die 2 Punkte auf deine Liste setzen würdest und bei Gelegenheit ins neutrino-mp übernehmen würdes.

Danke und Gruss
bazi

Re: Seife -> neutrino-mp für pingulux

Verfasst: Dienstag 6. November 2012, 20:33
von seife
Das mit dem SCART ist mir am Wochenende auch schon aufgefallen, aber die Dringlichkeit ist bisher jetzt eher "gering" :-)

Was willst du denn beim pingulux-display einstellen? Es gibt schon einen Grund, warum es dieses Menü nicht gibt :-)

Edit: das "TV-Scart" ist jetzt aus dem Menü raus.

Re: Seife -> neutrino-mp für pingulux

Verfasst: Mittwoch 7. November 2012, 06:14
von bazi98
seife hat geschrieben:Was willst du denn beim pingulux-display einstellen? Es gibt schon einen Grund, warum es dieses Menü nicht gibt :-)
Ich wollte für mich das LED/LCD-Menü, analog zu martiis Build, um das Untermenü GraphLCD erweitern, aber wenn das LCD/LED-Menü komplett durch die Hardwarecaps ausgeblendet ist kann dort auch meine geplante Erweiterung nicht angezeigt werden.
Auch gibt es beim Pingu ja auch die 2 verschieden farbigen LEDs und deren Steuerung wie z:B. bei den CST-Receivern ist in meinen Augen dort auch gut aufgeboben.

Code: Alles auswählen

 void CVfdSetup::showLedSetup(CMenuWidget *mn_led_widget)
  { 
        CMenuOptionChooser * mc; 
        mn_led_widget->addIntroItems(LOCALE_LEDCONTROLER_MENU);

         mc = new CMenuOptionChooser(LOCALE_LEDCONTROLER_MODE_TV, &g_settings.led_tv_mode, LEDMENU_OPTIONS, LEDMENU_OPTION_COUNT, true, this);
         mc->setHint("", LOCALE_MENU_HINT_LEDS_TV); 
         mn_led_widget->addItem(mc);
         mc = new CMenuOptionChooser(LOCALE_LEDCONTROLER_MODE_STANDBY, &g_settings.led_standby_mode, LEDMENU_OPTIONS, LEDMENU_OPTION_COUNT, true); 201
         mc->setHint("", LOCALE_MENU_HINT_LEDS_STANDBY);
         mn_led_widget->addItem(mc);
         mc = new CMenuOptionChooser(LOCALE_LEDCONTROLER_MODE_DEEPSTANDBY, &g_settings.led_deep_mode, LEDMENU_OPTIONS, LEDMENU_OPTION_COUNT, true);
         mc->setHint("", LOCALE_MENU_HINT_LEDS_DEEPSTANDBY);
         mn_led_widget->addItem(mc); 
         mc = new CMenuOptionChooser(LOCALE_LEDCONTROLER_MODE_RECORD, &g_settings.led_rec_mode, LEDMENU_OPTIONS, LEDMENU_OPTION_COUNT, true); 
         mc->setHint("", LOCALE_MENU_HINT_LEDS_RECORD); 
         mn_led_widget->addItem(mc); 
         mc = new CMenuOptionChooser(LOCALE_LEDCONTROLER_BLINK, &g_settings.led_blink, OPTIONS_OFF0_ON1_OPTIONS, OPTIONS_OFF0_ON1_OPTION_COUNT, true); 
         mc->setHint("", LOCALE_MENU_HINT_LEDS_BLINK);
         mn_led_widget->addItem(mc);
 }
 
Also bei "caps.display_type = HW_DISPLAY_LED_NUM;" wäre es sinnvoll zumindest den LED-Teil in diesen Menü anzubieten und es nicht generell bei diesen LCD-Typ abzuschalten, es per Standard im Personalize-Menü auszublenden könnte man immer noch :wink:
Frage:
Ist durch den Codeabschnitt nicht auch irrtümlich bei der CST ZEE die LED-Steuerung nicht verfügbar ?

Code: Alles auswählen

hw_caps_t *get_hwcaps(void) {
	static int initialized = 0;
	static hw_caps_t caps;
	if (initialized)
		return ∩︀
	caps.has_fan = (cs_get_revision() < 8);
	caps.has_HDMI = 1;
	caps.has_SCART = (cs_get_revision() != 10);
	caps.has_SCART_input = 0;
	caps.has_YUV_cinch = 1;
	caps.can_shutdown = (cs_get_revision() > 7);
	caps.can_cec = 1;
	caps.display_type = HW_DISPLAY_LINE_TEXT;
	caps.display_xres = 12;
	caps.display_yres = 0;
	caps.can_set_display_brightness = 1;
	strcpy(caps.boxvendor, "Coolstream");
	if (cs_get_revision() < 8)
		strcpy(caps.boxname, "HD1");
	else if (cs_get_revision() == 10)
		strcpy(caps.boxname, "ZEE");
	else
		strcpy(caps.boxname, "NEO");
	initialized = 1;
	return &caps;
}
oder habe ich dies jetzt falsch verstanden ?

ps: danke für den Fix beim Video-Menü

Re: Seife -> neutrino-mp für pingulux

Verfasst: Mittwoch 7. November 2012, 08:55
von seife
Ich bin der Meinung, dass neutrino nicht zu wenig Einstellmöglichkeiten hat, sondern eher zu viele ;-)
Die LEDs jetzt noch einstellbar zu machen, halte ich für übertrieben.

Die korrekte Lösung für dein Problem ist, wenn ein Display vorhanden ist, das über die hw_caps zu signalisieren und dann das Menü entsprechend einzublenden.

Momentan ist das übrigens nicht über die hw_caps ausgeblendet, sondern über cs_get_revision() > 7, aber das müsste natürlich auch mal gefixt werden.

Und noch genauer: schon das Displaymenü ist momentan dadurch ausgeblendet, dass alle nicht-Coolstream displaytreiberklassen (inklusive Tripledragon) momentan "has_lcd = false" setzen, weil es einfach nichts zu konfigurieren gibt: die Tripledragon hat zwar ein gutes Display, aber man kann die Helligkeit nicht einstellen und die defaulteinstellung für den Kontrast hat noch keinerlei Beschwerden hervorgerufen, also warum das einstellbar machen? Bei der dbox war das wohl auch nur deswegen nötig, weil die Streuung der verschiedenen Modelle so gross war. Die anderen Displays haben auch nichts, was man einstellen könnte: bei SPARK, egal ob LED oder VFD habe ich es nicht geschafft, die Helligkeit einzustellen, obwohl zumindest das LED display das kann, und bei der AZbox gibt es auch nicht wirklich was, das man einstellen wollen würde.

Das nächste Problem wäre, dass dieses Menü, wenn man denn doch was einstellen wollen würde, doch sehr hardwarespezifisch wäre, was man über die hwcaps abbilden müsste. Ich habe eigentlich nicht vor, noch weitere #ifdefs in den Code aufzunehmen, wenn es sich irgendwie vermeiden lässt, mein Ziel ist, das alles dynamisch zur Laufzeit zu bestimmen, damit der Code einigermassen wartbar bleibt und den Code so zu halten, dass er auf möglichst vielen Plattformen mit minimalem Wartungsaufwand funktioniert.

Gleichzeitig will ich mich aber auch nicht unnötig weit vom Neutrino-HD code entfernen, eben wegen dem Wartungsaufwand. Es ist so schon aufwändig genug, bei jedem merge aufzupassen, dass möglichst nur die guten features gemerged werden, aber die Bugs draussen bleiben.
Natürlich ist "crossplattform" genau das, was im Neutrino-HD nicht gewünscht ist, aber deswegen habe ich ja mein eigenes Projekt.

Generell habe ich mir über externe Displays auch schon Gedanken gemacht, aber das würde halt wirklich einen grösseren Umbau im Neutrino bedeuten. Es gibt ja nicht nur dieses Pearl-Display (das es ja gar nicht mehr gibt...) sondern wenn, dann müsste das universell sein, mit beliebigen Auflösungen und Farbtiefen etc.
Meine Idee dazu war eher, das an einen externen daemon abzugeben, der dann über einen IPC-mechanismus (sei es nun D-Bus oder einfach ein Socket) vom neutrino Informationen darüber bekommt was er anzeigen soll, und das dann macht. Also der bekommt dann nur "Modus=TV, sendungsfortschritt=23/45, Lautstärke=55%, Kanalname=zdf_neo, kanal_id=0xabcdef01 epg_kurz='tolle sendung', epg_lang='Das ist eine ganz tolle Sendung, und man muss die unbedingt sehen'" und macht aus diesen Daten dann was. Wenn da ein 10Zoll Android-Tablett dranhängt, dann kann er von mir aus aus dem EPG-Titel in der IMDB den Filminhalt abfragen und anzeigen, wenn nur ein kleines dbox-Display dranhängt, dann macht er halt eine dbox-like anzeige draus.

Der Vorteil wäre, dass der ganze Displayabhängige Code in den display-Daemon kommt und neutrino relativ sauber bliebe, eigentlich wären das nur ein paar hooks und ein paar zusätzliche Methoden in der CVFD-Klasse, um halt an verschiedenen Stellen im Neutrino den aktuellen Status abzugreifen.
Der Nachteil ist: es muss jemand machen, und da ich bisher ziemlichg genau alleine am neutrino-mp arbeite, ist das halt in der Priorität nicht ganz so hoch :-)
Displayhardware habe ich schon, ein dbox-like display an einem Arduino als "displaycontroller", man könnte auch einfach dbox-Displays benutzen. Der Vorteil gegenüber Pearl & Co: das zeug ist zwar ein wenig teurer (ein Display inkl. Controller würde so auf ca 25€ kommen), aber dafür langfristig lieferbar. Für die dreamboxen gab es doch auch mal so ein Addon-display, was dann aber von den Pearl-Rahmen überrollt wurde wenn ich mich recht erinnere.

Re: Seife -> neutrino-mp für pingulux

Verfasst: Mittwoch 7. November 2012, 09:24
von bazi98
@seife,
danke für deine Erklärungen, da werde ich für mich etwas herum basteln damit ich es wie bei martii hin bekomme :( .

Bei Gelegenheit kannst Du mal in der infoviewer_bb.cpp in den Zeilen 499 und 546 die Einträge "case 1088:" in "case 1080:" abändern dann klappt auch wieder die Res.-Anzeige in der Infobar bei den Services die z.B. eine Auflösung von 1920x1080 fahren wie zB. ARTE HD auf Hotbird.

edit: thx. für die rasche Änderung :D

Re: Seife -> neutrino-mp für pingulux

Verfasst: Mittwoch 7. November 2012, 10:56
von schufti
nö, hier heißt die Devise: beides muß sein. Leider gibt's (zumindest einen) Billigsender, die 1088 verwenden....

Re: Seife -> neutrino-mp für pingulux

Verfasst: Mittwoch 7. November 2012, 10:59
von bazi98
@schufti,
keine Angst seife, hat es auch so gemacht

Code: Alles auswählen

--- a/src/gui/infoviewer_bb.cpp
+++ b/src/gui/infoviewer_bb.cpp
@@ -497,6 +497,7 @@
 				icon_name = NEUTRINO_ICON_RESOLUTION_1920;
 				break;
 			case 1088:
+			case 1080:
 				icon_name = NEUTRINO_ICON_RESOLUTION_1080;
 				break;
 			case 1440:



@@ -539,28 +540,12 @@
 		}
 		if (g_settings.infobar_show_res == 1) {//show simple resolution icon on infobar
 			videoDecoder->getPictureInfo(xres, yres, framerate);
-			switch (yres) {
-			case 1920:
-			case 1440:
-			case 1280:
-			case 1088:
-			case 720:
+			if (yres > 576)
 				icon_name = NEUTRINO_ICON_RESOLUTION_HD;
-				break;
-			case 704:
-			case 576:
-			case 544:
-			case 528:
-			case 480:
-			case 382:
-			case 352:
-			case 288:
+			else if (yres > 0)
 				icon_name = NEUTRINO_ICON_RESOLUTION_SD;
-				break;
-			default:
+			else
 				icon_name = NEUTRINO_ICON_RESOLUTION_000;
-				break;
-			}
 		}
 	}
 	showBBIcons(CInfoViewerBB::ICON_RES, icon_name);
Das es einen Service mit 1088 gibt ist mir noch gar nicht aufgefallen, welcher ist es denn?

Re: Seife -> neutrino-mp für pingulux

Verfasst: Mittwoch 7. November 2012, 12:50
von schufti
habe ich jetzt auch nicht mehr im Kopf, aber das selbe Thema wurde schonmal in martiis Ableger durchgekaut und dort fand dann die Doppellösung mit Verweis auf den Sender Eingang ins git ... ev. erinnert er sich ja noch. Habe noch nicht herausgefunden ob/wie man in commit notes suchen kann....

p.s.: ein quote des commits ist unnötig, da reicht ein link darauf...

Re: Seife -> neutrino-mp für pingulux

Verfasst: Mittwoch 7. November 2012, 13:16
von martii
Die 1088 Zeilen haben ihren Ursprung in der blockweisen (16x16px) Kodierung bei MPEG2. Inwiefern das heute noch eine Rolle spielt, weiss ich nicht. Vielleicht liefern manche Decoder den Wert zurück ...

Re: Seife -> neutrino-mp für pingulux

Verfasst: Donnerstag 8. November 2012, 08:50
von bazi98
@seife,
ich habe mit meinen Pingulux noch etwas weiter getestet,
Bild
telnet und ftp sind ja so wie so aktiv und werden trotzdem mit "aus" angezeigt und der Menüpunkt ist nicht per Gui einstellbar.
wenn ich manuell die Flagdateien in /var/etc/ anlege werden die entsprechenden Punkte (z.B. telnet) mit "ein" angezeigt aber ansonsten tut sich nichts :-?

Re: Seife -> neutrino-mp für pingulux

Verfasst: Donnerstag 8. November 2012, 09:38
von seife
Ja, das Menü habe ich wohl vergessen auszublenden. Das wird vermutlich bei mir nie eine Funktion haben, zumindest nicht, vor ich da entsprechende Infrastruktur im Basissystem drin habe (irgendwas chkconfig-mässiges). So wie das im neutrino-Code implementiert ist, treibt es einem wirklich extremst das Wasser in die Augen... Flagdateien -- sowas geht ja garnicht... :-)

Re: Seife -> neutrino-mp für pingulux

Verfasst: Donnerstag 8. November 2012, 10:01
von bazi98
@Seife,
soll ich aktuell also in der network_setup.cpp lokal das #include <gui/network_service.h> mit // auskommentieren oder willst du dies zentral bei dir im Git machen?

Re: Seife -> neutrino-mp für pingulux

Verfasst: Donnerstag 8. November 2012, 11:01
von seife
Das kommt drauf an, wie dringend du das brauchst. Solche eher kosmetischen Sachen sind bei mir nicht ganz so hoch priorisiert. Ich muss erst noch rausfinden, was beim merge am Wochenende an Mist mit reingekommen ist, der wieder raus muss... :-)